PyFlow is a general purpose visual scripting framework for python

Overview

Overview

PyFlow is a general purpose visual scripting framework for python.

State

Base structure of program implemented, such things as packages discovery, input customization, exporters, base classes for entities and tools.

You can completely remove nodes and tools that ships by default and start your own library from scratch.

You can evaluate programs without running user interface.

We have simple CLI interface and setup.py script.

Expectedly, we faced problems with our runtime execution model, it is good for certain types of tasks despite it is slow. Also, complicated flow control requires cycles handling.

For example current for loop node implementation doesn't work well with any kind of delay stuff in it's body. Of course it can be solved by adding more logic to loop processing, but we don't know exactly how to make it efficient yet.

Road map

We will add new types of graphs (undirected graphs, trees) and algorithms to work with those structures.

Code generation is probably the future of PyFlow.

We are going to implement more building blocks. Functions - which unlike subgraphs will have single definition and multiple entry points across the program. Objects - very important concept of programming in general, object will have own methods, access levels and variables. Events and delegates - similar to ue4.

Application presets and api for writing own presets. Templates like in any IDE (shader, command line tool, software installer, etc.).

Documentation updates.

User interface improvements and new tools to enhance user experience.

We want to have most python standard library wrapped into a nodes!

Installation

Manual

  1. Clone or download repository.

  2. Install requirements for your use case.

    requirement lists can be found under PyFlow/requirements

  3. To run the program in standalone mode, run pyflow.py. It can be found in the root folder of repository.

Or using pip

Latest development version. Contains latest features

pip install git+https://github.com/wonderworks-software/[email protected]

Latest release version

pip install git+https://github.com/wonderworks-software/[email protected]

After package is installed, you can invoke pyflow.exe on windows or pyflow on unix OS. Program is located inside PATH/TO/PYTHON/Scripts.

Features overview

  • Modular

    Add own node sets, pins, shelf tools, dock tools, preferences widgets, data exporters/importers

  • Easy integration

    PyFlow is a normal python program. It can run under any python environment

  • Python3 and 2 support

  • Logic and UI are separated

    Main logic elements (Node and Pin) has non gui representation, so programs can be evaluated without GUI

  • Subgraphs

    Collapse parts of graphs into subgraphs

    collapseToCompound

  • Watch what is going on

    collapseToCompound

  • Expose properties from subgraphs

    Any node can share it's properties with owning sub graph node

    collapseToCompound

  • Subgraphs import/export

    Share subgraphs with others

    compoundIO

    If compound node was exported to some package, it will appear in node box

    compoundIO

  • Python node

    Write whatever code directly into a node

    pythonNode

  • Python node import/export

    Share python nodes with others

    pythonNode

    If python node was exported to some package, it will appear in node box

    pythonNode

  • Fast node generation from functions

    Single decorator to expose node from function

    pythonNode pythonNode

  • Package loading from arbitrary locations

    Packages can be loaded from provided list of directories. It can be your development folder or folder in network drive inside your studio

  • Graph commenting

    • Comment node

      commentNode

    • Sticky node

      stickyNode

  • Custom input system

    If you got used to specific keymap of your software of choice, you can easily remap PyFlow input actions

    input

  • Drop on wire

    Automatically сonnect the node by dragging it onto the wire

    input

  • Photoshop-like history

    Easy to use powerful undo system

    history

    By a single line call

    historyApi

  • Property view

    Modify node and pins attributes using property panels

    historyApi

  • Variables

    Save arbitrary data into a variables

    historyApi

  • Editable shareable themes

    Create and share themes with others

    historyApi

  • Data importers/exporters

    Editor data can be exported/imported to/from arbitrary format

  • Command line interface

    cmdHelp

    Exported programs can be edited and evaluated from command line without gui

    cmdAddition cmdHelp

  • Convenient wires interaction

    wiresConnect

  • Wire styles

    wiresConnect

    wiresConnect

    wiresConnect

  • Node deprecation flag

    Tell users to update their programs

    deprecated deprecated

  • Widgets library

    • Sliders

      Custom Houdini style sliders, value draggers, ramp widgets

      historyApi

    • Properties framework

      Custom widgets for property panels. Collapsible categories, search field

    • Input framework

      Custom widgets for mouse, keyboard capture

  • Plugin wizards framework

    Generate package template to start development. Or create own wizard for your module

  • Easy configuration files framework

    While adding own modules you probably want to have some configuration data. We provide easy to use api for this

And more..

Getting Started

We have documentation

Contributing

See CONTRIBUTING.md

Versioning

We use a semantic versioning policy.

Authors

See also the list of contributors who participated in this project.

Discussion

Join us to our discord channel and ask anything related to project!

Render tokei's output to interactive sunburst chart.

Render tokei's output to interactive sunburst chart.

134 Dec 15, 2022
Create SVG drawings from vector geodata files (SHP, geojson, etc).

SVGIS Create SVG drawings from vector geodata files (SHP, geojson, etc). SVGIS is great for: creating small multiples, combining lots of datasets in a

Neil Freeman 78 Dec 09, 2022
Draw interactive NetworkX graphs with Altair

nx_altair Draw NetworkX graphs with Altair nx_altair offers a similar draw API to NetworkX but returns Altair Charts instead. If you'd like to contrib

Zachary Sailer 206 Dec 12, 2022
A Python library for plotting hockey rinks with Matplotlib.

Hockey Rink A Python library for plotting hockey rinks with Matplotlib. Installation pip install hockey_rink Current Rinks The following shows the cus

24 Jan 02, 2023
Analytical Web Apps for Python, R, Julia, and Jupyter. No JavaScript Required.

Dash Dash is the most downloaded, trusted Python framework for building ML & data science web apps. Built on top of Plotly.js, React and Flask, Dash t

Plotly 17.9k Dec 31, 2022
Plot and save the ground truth and predicted results of human 3.6 M and CMU mocap dataset.

Visualization-of-Human3.6M-Dataset Plot and save the ground truth and predicted results of human 3.6 M and CMU mocap dataset. human-motion-prediction

Gaurav Kumar Yadav 5 Nov 18, 2022
Decision Border Visualizer for Classification Algorithms

dbv Decision Border Visualizer for Classification Algorithms Project description A python package for Machine Learning Engineers who want to visualize

Sven Eschlbeck 1 Nov 01, 2021
A small collection of tools made by me, that you can use to visualize atomic orbitals in both 2D and 3D in different aspects.

Orbitals in Python A small collection of tools made by me, that you can use to visualize atomic orbitals in both 2D and 3D in different aspects, and o

Prakrisht Dahiya 1 Nov 25, 2021
Python library that makes it easy for data scientists to create charts.

Chartify Chartify is a Python library that makes it easy for data scientists to create charts. Why use Chartify? Consistent input data format: Spend l

Spotify 3.2k Jan 04, 2023
Fastest Gephi's ForceAtlas2 graph layout algorithm implemented for Python and NetworkX

ForceAtlas2 for Python A port of Gephi's Force Atlas 2 layout algorithm to Python 2 and Python 3 (with a wrapper for NetworkX and igraph). This is the

Bhargav Chippada 227 Jan 05, 2023
Simulation du problème de Monty Hall avec Python et matplotlib

Le problème de Monty Hall C'est un jeu télévisé où il y a trois portes sur le plateau de jeu. Seule une de ces portes cache un trésor. Il n'y a rien d

ETCHART YANG 1 Jan 06, 2022
Sprint planner considering JIRA issues and google calendar meetings schedule.

Sprint planner Sprint planner is a Python script for planning your Jira tasks based on your calendar availability. Installation Use the package manage

Apptension 2 Dec 05, 2021
A filler visualizer built using python

filler-visualizer 42 filler のログをビジュアライズしてスポーツさながら楽しむことができます! Usage (標準入力でvisualizer.pyに渡せばALL OK) 1. 既にあるログをビジュアライズする $ ./filler_vm -t 3 -p1 john_fill

Takumi Hara 1 Nov 04, 2021
Python package for hypergraph analysis and visualization.

The HyperNetX library provides classes and methods for the analysis and visualization of complex network data. HyperNetX uses data structures designed to represent set systems containing nested data

Pacific Northwest National Laboratory 304 Dec 27, 2022
HW 02 for CS40 - matplotlib practice

HW 02 for CS40 - matplotlib practice project instructions https://github.com/mikeizbicki/cmc-csci040/tree/2021fall/hw_02 Drake Lyric Analysis Bar Char

13 Oct 27, 2021
A research of IT labor market based especially on hh.ru. Salaries, rate of technologies and etc.

hh_ru_research Проект реализован в учебных целях анализа рынка труда, в особенности по hh.ru Input data В качестве входных данных используются сериали

3 Sep 07, 2022
A pandas extension that solves all problems of Jalai/Iraninan/Shamsi dates

Jalali Pandas Extentsion A pandas extension that solves all problems of Jalai/Iraninan/Shamsi dates Features Series Extenstion Convert string to Jalal

51 Jan 02, 2023
2D maze path solver visualizer implemented with python

2D maze path solver visualizer implemented with python

SS 14 Dec 21, 2022
The repository is my code for various types of data visualization cases based on the Matplotlib library.

ScienceGallery The repository is my code for various types of data visualization cases based on the Matplotlib library. It summarizes the code and cas

Warrick Xu 2 Apr 20, 2022
The Python ensemble sampling toolkit for affine-invariant MCMC

emcee The Python ensemble sampling toolkit for affine-invariant MCMC emcee is a stable, well tested Python implementation of the affine-invariant ense

Dan Foreman-Mackey 1.3k Jan 04, 2023