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!

Geocoding library for Python.

geopy geopy is a Python client for several popular geocoding web services. geopy makes it easy for Python developers to locate the coordinates of addr

geopy 3.8k Jan 02, 2023
A gui application to visualize various sorting algorithms using pure python.

Sorting Algorithm Visualizer A gui application to visualize various sorting algorithms using pure python. Language : Python 3 Libraries required Tkint

Rajarshi Banerjee 19 Nov 30, 2022
Productivity Tools for Plotly + Pandas

Cufflinks This library binds the power of plotly with the flexibility of pandas for easy plotting. This library is available on https://github.com/san

Jorge Santos 2.7k Dec 30, 2022
Param: Make your Python code clearer and more reliable by declaring Parameters

Param Param is a library providing Parameters: Python attributes extended to have features such as type and range checking, dynamically generated valu

HoloViz 304 Jan 07, 2023
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
Data aggregated from the reports found at the MCPS COVID Dashboard into a set of visualizations.

Montgomery County Public Schools COVID-19 Visualizer Contents About this project Data Support this project About this project Data All data we use can

James 3 Jan 19, 2022
`charts.css.py` brings `charts.css` to Python. Online documentation and samples is available at the link below.

charts.css.py charts.css.py provides a python API to convert your 2-dimension data lists into html snippet, which will be rendered into charts by CSS,

Ray Luo 3 Sep 23, 2021
Open-questions - Open questions for Bellingcat technical contributors

Open questions for Bellingcat technical contributors These are difficult, long-term projects that would contribute to open source investigations at Be

Bellingcat 234 Dec 31, 2022
A small timeseries transformation API built on Flask and Pandas

#Mcflyin ###A timeseries transformation API built on Pandas and Flask This is a small demo of an API to do timeseries transformations built on Flask a

Rob Story 84 Mar 25, 2022
Smoking Simulation is an app to simulate the spreading of smokers and non-smokers, their interactions and population during certain amount of time.

Smoking Simulation is an app to simulate the spreading of smokers and non-smokers, their interactions and population during certain

Bohdan Ruban 5 Nov 08, 2022
Type-safe YAML parser and validator.

StrictYAML StrictYAML is a type-safe YAML parser that parses and validates a restricted subset of the YAML specification. Priorities: Beautiful API Re

Colm O'Connor 1.2k Jan 04, 2023
UNMAINTAINED! Renders beautiful SVG maps in Python.

Kartograph is not maintained anymore As you probably already guessed from the commit history in this repo, Kartograph.py is not maintained, which mean

1k Dec 09, 2022
A Python Library for Self Organizing Map (SOM)

SOMPY A Python Library for Self Organizing Map (SOM) As much as possible, the structure of SOM is similar to somtoolbox in Matlab. It has the followin

Vahid Moosavi 497 Dec 29, 2022
๐Ÿ—พ Streamlit Component for rendering kepler.gl maps

streamlit-keplergl ๐Ÿ—พ Streamlit Component for rendering kepler.gl maps in a streamlit app. ๐ŸŽˆ Live Demo ๐ŸŽˆ Installation pip install streamlit-keplergl

Christoph Rieke 39 Dec 14, 2022
Make scripted visualizations in blender

Scripted visualizations in blender The goal of this project is to script 3D scientific visualizations using blender. To achieve this, we aim to bring

Praneeth Namburi 10 Jun 01, 2022
GD-UltraHack - A Mod Menu for Geometry Dash. Specifically a MegahackV5 clone in Python. Only for Windows

GD UltraHack: The Mod Menu that Nobody asked for. This is a mod menu for the gam

zeo 1 Jan 05, 2022
Make sankey, alluvial and sankey bump plots in ggplot

The goal of ggsankey is to make beautiful sankey, alluvial and sankey bump plots in ggplot2

David Sjoberg 156 Jan 03, 2023
Generate visualizations of GitHub user and repository statistics using GitHub Actions.

GitHub Stats Visualization Generate visualizations of GitHub user and repository statistics using GitHub Actions. This project is currently a work-in-

Aditya Thakekar 1 Jan 11, 2022
Chem: collection of mostly python code for molecular visualization, QM/MM, FEP, etc

chem: collection of mostly python code for molecular visualization, QM/MM, FEP,

5 Sep 02, 2022
Sparkling Pandas

SparklingPandas SparklingPandas aims to make it easy to use the distributed computing power of PySpark to scale your data analysis with Pandas. Sparkl

366 Oct 27, 2022