Skip to content

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Image KNIME® - KNIME PYTHON EXTENSION TEMPLATE

CI Code Quality Check Extension Bundling

This repository is maintained by the KNIME Team Rakete.

It provides a template for creating KNIME Python extensions.

Contents

This repository contains a template KNIME Python Extensions. The code is organized as follows:

.
├── icons
│   └── icon.png
├── src
│   ├── __init__.py
│   └── extension.py
├── demo
│   └── Example_with_Python_node.knwf
├── tests
│   ├── conftest.py
│   └── test_extension.py
├── knime.yml
├── pixi.toml
├── config.yml
│── LICENSE.TXT
└── README.md

Instructions

You can find instructions on how to work with our code or develop python extensions for KNIME Analytics Platform in the KNIME documentation:

Minimal Instructions to create a KNIME Python extension

Prerequisites:

Instructions:

  1. Clone this repository or use it as a template (click on the green "Use this template" button):
  2. Edit knime.yml - provide your metadata, license, ...
  3. Modify the src/extension.py file or add further files to implement your own logic. Note that every py file equivalent to one node needs to be imported in the init.py file.
  4. Install the python environment:
    pixi install
    This will install the Python environment as defined in the pixi.toml file. If you leave this file unchanged, the Python environment that is installed will have the needed KNIME packages installed per default (knime-python-versions).
  5. (Optional) Add python packages to the environment with the following command, or by manually editing the pixi.toml file:
    pixi add <package_name>
    Note that you have to run the pixi install command again after manually editing the pixi.toml file.
  6. Install the extension in debug mode in your KNIME Analytics Platform by running the following command:
    pixi run register-debug-in-knime
    
    Previously this step required modifying the config.ymland knime.ini files manually. This improvement will allow you to select your KNIME Analytics Platform installation and append the -Dknime.python.extension.debug_knime_yaml_list=<path/to/your/knime.yml> argument automatically to the according knime.ini file. You can now test your extension in the KNIME Analytics Platform (e.g. demo workflow).
  7. Bundle your extension:
    pixi run build
    or if you want the extension's local update site in a specific location (default is ./local_update_site):
    pixi run build dest=<path_to_your_update_site>
  8. Install the update site in KNIME via
    File > Install KNIME Extensions... > Available Software Sites > Add... 
    and enter the path to your update site (by default ./local_update_site). After that, you can install your extension.
  9. To publish on KNIME Hub, follow the KNIME Hub documentation.

For detailed instructions on how to create a KNIME Python extension, please refer to the KNIME Python Extension documentation.

Unit tests

Unit tests live in tests/ and run with pytest:

pixi run test

The coverage task additionally produces a JUnit report (pytest-results.xml) and a coverage report (coverage.xml):

pixi run coverage

The KNIME Jenkins build auto-detects this setup (a pixi test environment providing a coverage task) and runs it on every build, publishing the test results to Jenkins and the coverage to SonarQube. Failing tests mark the build UNSTABLE. The output file names and the test/coverage names are the contract with the build — keep them if you want CI to pick your tests up. Adjust the --cov=... targets in pixi.toml when your sources live outside src/, and keep .coveragerc (it makes coverage paths machine-independent).

Note that after adding or changing test dependencies you must run pixi lock and commit the updated pixi.lock — the CI runs with --frozen --locked.

Code formatting

Format the sources with Ruff:

pixi run format

Ruff and debugpy live in the dev feature, not in the default environment. The default environment is what pixi run build bundles into the extension, so keep development tooling out of it and add such packages with pixi add --feature dev <package>.

Join the Community

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages