Hi everyone,
I’d also like to share my experience using the (somewhat new) ability to develop KNIME Nodes in pure Python. Result of this effort can be found on GitHub for the moment
TLDR: The ability to develop KNIME nodes in Python requires much less boilerplate code than the Java counterpart. At the moment this “simplified” interface comes with some limitations which I hope will be addressed in future versions.
The general impression of the new functionality is quite good. Although the API documentation could be more verbose at one point or the other the general use of the Python interface was fairly straightforward. Implementing a node purely in Python required much less boilerplate code than in Java. However, this abstraction comes at the cost of reduced flexibility (and functionality): There’s little to no option to adjust details of the configuration interface (besides grouping), use of FlowVariables is not completely implemented (only variables within data connections can be used and not the dedicated FlowVariable Ports). Also as of now it is not possible to exchange data other than table between the Python nodes and the “regular” nodes.
Don’t get me wrong. While that might sound like a lot of drawbacks and limitations this new integration opens the large ecosystem of Python libraries for data wrangling which can be easily exploited for KNIME with a few lines of Python code. I am really looking forward to the future development of this interface.
This brings me to my feature whishlist
- I miss the “OTHER” category which would be perfect for the Apprise notification nodes
- It would be great if there was an option to specify a multiline text input field
- Some more details in the documentation would be helpful but I could figure everything I need for my rather simple nodes. This might automatically get better with more OpenSource Python nodes available which one can learn from
- An interface between the various KNIME port types and Python would be great. I’d like to be able to transfer images from Java to Python for further processing (or am I missing something here?)
- Fully functional FlowVariable ports
- Last but not least and fairly obvious a better (full) integration of the FlowVariables for configuring nodes would be great for more versatile configuration options