Nodezator's logo
Nodezator: multi-purpose visual node editor for the Python programming language
pip install nodezator, then run the nodezator command

Features

Function and resulting node

Custom nodes from functions

Know how to define a function? Then you already know how to define a node! Just provide a function and the app turns it into a node for you. You can use a builtin function, one from a third-party module and even classes work as well. In fact, as long as it is a callable object, it can be turned into a node.

Node layout in Nodezator

Node layout edition

Once you have your nodes ready, you can combine them into layouts. Node editing in Nodezator provides users with basic operations like creating, moving, deleting and duplicating nodes.

Nodes showing different widgets

Many widgets to choose from

Lots of widgets to make your nodes really powerful and versatile. Widgets to edit strings, numbers (integers and floats), option menus, checkbuttons, image previews, font previews, hold and edit text/code, hold and edit colors, etc.

Nodezator app with node layout and pie chart

Custom data visualization

The pygame-ce library used for Nodezator's GUI allows developers to easily access the screen and control the main loop, meaning custom viewer nodes can be easily developed, allowing total control of how your data is displayed.

Dialog for exporting node layout as Python

Export node layouts as Python code

Worried that including node editing in your pipeline will make your work too dependent on the node editor? No need to worry, because your node layouts can be 100% exported back to pure Python code.

Dialog for exporting node layout as image

Export node layouts as image

The node layouts can also be exported into other useful formats like .svg, .html (svg tag embedded in .html document) or .png.

Nodezator GUI with nodes from Python builtins, standard library and other special useful operations.

Useful nodes out of the box

In addition to allowing you to define your own nodes, Nodezator also includes many nodes out of the box. Many builtin functions/classes and standard library functions are already present as nodes. This means you already have access from the beginning to useful operations like creation of dictionaries, lists, itertools functions, etc. There are also special nodes that perform specific actions like loading and saving of text files, json files, Python literals, etc.

Nodezator GUI showing a data node

Data nodes

Nodezator also provides data nodes, which can hold any widget you want and then have that value passed to the argument(s) of one or more nodes, allowing you to edit the value solely on the data node's widget. In addition to that, you can pick whichever widget you want among the existing ones, making you able to provide many different kinds of data.

Nodezator GUI with mouse clicking the option to execute the graph in the menubar.

Node layout execution

Nodezator gives you control over graph execution by providing additional options. Among the possible things to do is to track the time of execution of the whole graph as well as that of individual nodes and to execute the graph in the context of a custom standard outpupt stream, so that the app can catch and display output on the GUI that otherwise you only be printed in the command line.

Nodezator interface showing operator nodes

Operator nodes

Operators in Python go well beyond their role in mathematical operations, since they can be overloaded. This gives them new meaning, making them more versatile. Moreover, there are also other kinds of operators, like logical operators and others used for comparison. Because of that, Nodezator comes with special operator nodes out of the box.

Nodezator GUI showing a redirect node.

Redirect nodes

Nodezator also provides redirect nodes to help you simplify/organize your node layouts.

Nodezator GUI with text viewer showing node source with syntax highlighting

Node source view

Taking a look at the source code of a node is handy to inspect how exactly some operation is carried. Nodezator allows you to quickly visualize the source of a node.

Nodezator GUI showing user preferences.

User preferences and internationalization

Nodezator provides a user preferences form which allows you to set your preferences. Among the preferences, you can also choose the language you speak. Nodezator comes with both English and Brazilian Portuguese, but at the moment Brazilian Portuguese support is limited. We welcome contributions from people willing to add their own languages as well.

Nodezator GUI with text editor showing Python code with syntax highlighting

Text/code editor

Nodezator also comes with a builtin text/code editor. It can be used to write text, code, Python literals, json data, etc., just any kind of text. It also provides line numbering and Python syntax highlighting. Rather than a feature per se, though, the text editor is more of a convenience provided for you in the Nodezator app, since it doesn't replace a full-fledged text/code editor. It is great for simple/quick edits though.