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!

A Jupyter - Three.js bridge

pythreejs A Python / ThreeJS bridge utilizing the Jupyter widget infrastructure. Getting Started Installation Using pip: pip install pythreejs And the

Jupyter Widgets 844 Dec 27, 2022
Altair extension for saving charts in a variety of formats.

Altair Saver This packge provides extensions to Altair for saving charts to a variety of output types. Supported output formats are: .json/.vl.json: V

Altair 85 Dec 09, 2022
EPViz is a tool to aid researchers in developing, validating, and reporting their predictive modeling outputs.

EPViz (EEG Prediction Visualizer) EPViz is a tool to aid researchers in developing, validating, and reporting their predictive modeling outputs. A lig

Jeff 2 Oct 19, 2022
Declarative statistical visualization library for Python

Altair http://altair-viz.github.io Altair is a declarative statistical visualization library for Python. With Altair, you can spend more time understa

Altair 8k Jan 05, 2023
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
Python support for Godot 🐍🐍🐍

Godot Python, because you want Python on Godot ! The goal of this project is to provide Python language support as a scripting module for the Godot ga

Emmanuel Leblond 1.4k Jan 04, 2023
Example Code Notebooks for Data Visualization in Python

This repository contains sample code scripts for creating awesome data visualizations from scratch using different python libraries (such as matplotli

Javed Ali 27 Jan 04, 2023
Simple python implementation with matplotlib to manually fit MIST isochrones to Gaia DR2 color-magnitude diagrams

Simple python implementation with matplotlib to manually fit MIST isochrones to Gaia DR2 color-magnitude diagrams

Karl Jaehnig 7 Oct 22, 2022
Learn Data Science with focus on adding value with the most efficient tech stack.

DataScienceWithPython Get started with Data Science with Python An engaging journey to become a Data Scientist with Python TL;DR Download all Jupyter

Learn Python with Rune 110 Dec 22, 2022
Tandem Mass Spectrum Prediction with Graph Transformers

MassFormer This is the original implementation of MassFormer, a graph transformer for small molecule MS/MS prediction. Check out the preprint on arxiv

Röst Lab 13 Oct 27, 2022
GitHubPoster - Make everything a GitHub svg poster

GitHubPoster Make everything a GitHub svg poster 支持 Strava 开心词场 扇贝 Nintendo Switch GPX 多邻国 Issue

yihong 1.3k Jan 02, 2023
Squidpy is a tool for the analysis and visualization of spatial molecular data.

Squidpy is a tool for the analysis and visualization of spatial molecular data. It builds on top of scanpy and anndata, from which it inherits modularity and scalability. It provides analysis tools t

Theis Lab 251 Dec 19, 2022
A small script written in Python3 that generates a visual representation of the Mandelbrot set.

Mandelbrot Set Generator A small script written in Python3 that generates a visual representation of the Mandelbrot set. Abstract The colors in the ou

1 Dec 28, 2021
Write python locally, execute SQL in your data warehouse

RasgoQL Write python locally, execute SQL in your data warehouse ≪ Read the Docs · Join Our Slack » RasgoQL is a Python package that enables you to ea

Rasgo 265 Nov 21, 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
Use Perspective to create the chart for the trader’s dashboard

Task Overview | Installation Instructions | Link to Module 3 Introduction Experience Technology at JP Morgan Chase Try out what real work is like in t

Abdulazeez Jimoh 1 Jan 22, 2022
Rockstar - Makes you a Rockstar C++ Programmer in 2 minutes

Rockstar Rockstar is one amazing library, which will make you a Rockstar Programmer in just 2 minutes. In last decade, people learned C++ in 21 days.

4k Jan 05, 2023
Comparing USD and GBP Exchange Rates

Currency Data Visualization Comparing USD and GBP Exchange Rates This is a bar graph comparing GBP and USD exchange rates. I chose blue for the UK bec

5 Oct 28, 2021
📊 Extensions for Matplotlib

📊 Extensions for Matplotlib

Nico Schlömer 519 Dec 30, 2022
A simple code for plotting figure, colorbar, and cropping with python

Python Plotting Tools This repository provides a python code to generate figures (e.g., curves and barcharts) that can be used in the paper to show th

Guanying Chen 134 Jan 02, 2023