Flow-based visual scripting for Python
This release incorporates substantial changes made over the past 1.5 years, mainly concerning a remake of ryvencore fixing some substantial flaws and correctness issues in the original design, refined API methods, and a better user experience. This should be considered a new edition of Ryven, which includes many breaking changes to previous versions. Please take a look at the README for up-to-date instructions and examples.
I may add some more detailed instructions for porting old node packages if I find time and there's significant demand. The guide on the website was removed, instead the README provides more detailed instructions, there is a new wiki page, and some example packages are provided in the example nodes directory.
This release brings mainly large architectural changes. Ryven is at this point more a platform than just an application. See also the new README for additional info about current state.
While the alpha release of Ryven 3 had native support for macros (/subgraphs/whatever you might call them), I decided to remove them, for the following reasons:
So, I'm not really 'removing' possibilities here, but I think it makes more sense to focus on the nodes for the particular use case and design the system on that level accordingly. I might publish macros with configuration options as nodes package at some point, but it doesn't need to be part of Ryven itself.
v3.0-alpha
nodes and projectsTo bring your v3.0-alpha
node packages to v3.1
from NENV import ...
/from NWENV import ...
to from ryven.NENV import ...
/from ryven.NWENV import ...
Node.set_state
from def set_state(self, data: dict):
to def set_state(self, data: dict, version):
version
fields with values like 'v0.0.1'
to your nodes. the version
parameter in set_state
will reflect the node version under which the loaded node was saved (None
if not set), so you can use it to provide backwards compatibility and translate older versions of nodes to new ones to ensure old projects can be loadedTo bring your v3.0-alpha
projects to v3.1
Complete Ryven remake Over the past 6 monts I've been abstracting away underlying frameworks reimplementing the core functionality of the software which led to a complete remake of Ryven itself. Ryven 3 is a completely new software (no backwards compatibility to Ryven 2).
Most important change regarding Ryven is the new packages system. The NodeManager has been removed completely, the new nodes system is very different, much simpler and more scalable. Ryven 3 includes small exmaple projects and some default nodes. The new website now has a complete guide.
The underlying frameworks are ryvencore
(backend) and ryvencore-qt
(frontend), the repository is here. ryvencore
and ryvencore-qt
are completely separated, which brings a whole lot of improvements, see ryvencore-qt and the website for more details.
Ryven Console is now "officially" supported. Once you created a flow in Ryven, if all nodes you used are compatible with Ryven Console (meaning they run without their GUI/widgets), you can then run the flow in Ryven Console, without any GUI. This way you can run intensive data processing tasks with much higher performance. Further changes:
requirements.txt
file for all libraries to run Ryven and the example projects, so it's also convenient to set up a virtual environment now.Ryven now includes a complete integrated python interpreter.
This is going to be one of the major features in the future, the possibilities are endless.
Some major additions and improvements, besides better examples/nodes. In particular:
The release also includes a prototype for a new tool (currently referred to as Ryven Console) to run a Ryven flow on the console, completely without GUI dependencies, with much higher performance which might become important for larger performance-intensive data processing tasks.
One major internal change: the default imports in custom NodeInstances and their widgets aren't done manually anymore. There are now two env files that automatically import all requirements when Ryven is running. This is much better as it ensures that the import list is always up to date. I updated all existing nodes' imports.
They work for data as well as execution connections. In exec mode, they also serve as sequence nodes, so you can dynamically add exec outputs that get executed from top to bottom sequentially.
Using a new viewport update mode feature you can now make a flow update the views of nodes when they get updated, even if the flow isn't fully finished with the current execution. That's really useful for larger pure data flows doing data processing (like in the OpenCV example, try it there). Furthermore, Flows now have their own settings which get saved and loaded to and from project files to choose an algorithm mode and the new viewport update mode. Also, I added a small 'bubble sort' example and some basic nodes (there are still quite a few missing, though).