{"id":25175930,"url":"https://github.com/pedroCabrera/PyFlow","last_synced_at":"2025-10-24T10:31:21.303Z","repository":{"id":30402198,"uuid":"116792233","full_name":"pedroCabrera/PyFlow","owner":"pedroCabrera","description":"Visual scripting framework for python","archived":false,"fork":false,"pushed_at":"2025-01-29T16:06:58.000Z","size":173672,"stargazers_count":2623,"open_issues_count":30,"forks_count":331,"subscribers_count":93,"default_branch":"master","last_synced_at":"2025-01-29T23:07:19.146Z","etag":null,"topics":["dataflow-programming","framework","pyflow","pyside2","python","qt","subgraphs"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pedroCabrera.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"patreon":"pyflow"}},"created_at":"2018-01-09T09:05:27.000Z","updated_at":"2025-01-29T16:37:46.000Z","dependencies_parsed_at":"2024-02-11T16:43:16.382Z","dependency_job_id":"298a568b-20a9-4645-9791-8056e7e14a37","html_url":"https://github.com/pedroCabrera/PyFlow","commit_stats":{"total_commits":1704,"total_committers":24,"mean_commits":71.0,"dds":0.5246478873239437,"last_synced_commit":"8b998efe36fbbf1cde05ac29b5c6be0adb969551"},"previous_names":["pedrocabrera/pyflow","wonderworks-software/pyflow"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedroCabrera%2FPyFlow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedroCabrera%2FPyFlow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedroCabrera%2FPyFlow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedroCabrera%2FPyFlow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pedroCabrera","download_url":"https://codeload.github.com/pedroCabrera/PyFlow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237393069,"owners_count":19302721,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dataflow-programming","framework","pyflow","pyside2","python","qt","subgraphs"],"created_at":"2025-02-09T13:01:48.936Z","updated_at":"2025-10-24T10:31:21.297Z","avatar_url":"https://github.com/pedroCabrera.png","language":"Python","readme":"# Overview\n\n**PyFlow** is a general purpose visual scripting framework for python.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"PyFlow/UI/resources/PyFlow.png\"\u003e\u003c/p\u003e\n\n## State\n\nBase structure of program implemented, such things as packages discovery,\ninput customization, exporters, base classes for entities and tools.\n\nYou can completely remove nodes and tools that ships by default \nand start your own library from scratch.\n\nYou can evaluate programs without running user interface.\n\nWe have simple CLI interface and setup.py script.\n\nExpectedly, we faced problems with our runtime execution model,\nit is good for certain types of tasks despite it is slow. Also, complicated flow\ncontrol requires cycles handling.\n\nFor example current for loop node implementation\ndoesn't work well with any kind of `delay` stuff in it's body. Of course it can be solved by adding\nmore logic to loop processing, but we don't know exactly how to make it efficient yet.\n\n## Road map\n\nWe will add new types of graphs (undirected graphs, trees)\nand algorithms to work with those structures.\n\nCode generation is probably the future of PyFlow.\n\nWe are going to implement more building blocks.\n**Functions** - which unlike subgraphs will have single definition and multiple\nentry points across the program.\n**Objects** - very important concept of programming in general, object will have own methods,\naccess levels and variables.\n**Events and delegates** - similar to ue4.\n\nApplication presets and api for writing own presets. Templates like in any IDE (shader, command line tool, software installer, etc.).\n\nDocumentation updates.\n\nUser interface improvements and new tools to enhance user experience.\n\nWe want to have most python standard library wrapped into a nodes!\n\n## Installation\n\n### Manual\n\n1. Clone or download repository.\n\n2. Install requirements `requirements.txt`\n\n3. To run the program in standalone mode, run `pyflow.py`. It can be found in the root folder of repository.\n\n### Or using pip\n\nLatest development version. Contains latest features\n\n```bash\npip install git+https://github.com/pedroCabrera/PyFlow.git@master\n```\n\nLatest release version\n\n```bash\npip install git+https://github.com/pedroCabrera/PyFlow.git@release\n```\n\nAfter package is installed, you can invoke `pyflow.exe` on windows or `pyflow` on unix OS.\nProgram is located inside `PATH/TO/PYTHON/Scripts`.\n\n## Features overview\n\n* **Modular**\n\n    *Add own node sets, pins, shelf tools, dock tools, preferences widgets, data exporters/importers*\n\n* **Easy integration**\n\n    *PyFlow is a normal python program. It can run under any python environment*\n\n* **Python3 and 2 support**\n* **Logic and UI are separated**\n\n    *Main logic elements (Node and Pin) has non gui representation, so programs can be evaluated without GUI*\n\n* **Subgraphs**\n\n    *Collapse parts of graphs into subgraphs*\n\n    ![collapseToCompound](https://i.imgur.com/axtvF2L.gif)\n\n* **Watch what is going on**\n\n    ![collapseToCompound](https://i.imgur.com/vPYz8vh.gif)\n\n* **Expose properties from subgraphs**\n\n    *Any node can share it's properties with owning sub graph node*\n\n    ![collapseToCompound](https://i.imgur.com/7dxUq52.gif)\n\n* **Subgraphs import/export**\n\n    *Share subgraphs with others*\n\n    ![compoundIO](https://i.imgur.com/ss0pvRJ.gif)\n\n    *If compound node was exported to some package, it will appear in node box*\n\n    ![compoundIO](https://i.imgur.com/vfSnRyN.gif)\n\n* **Python node**\n\n    *Write whatever code directly into a node*\n\n    ![pythonNode](https://i.imgur.com/k9eHIZY.gif)\n\n* **Python node import/export**\n\n    *Share python nodes with others*\n\n    ![pythonNode](https://i.imgur.com/SPEkwbX.gif)\n\n    *If python node was exported to some package, it will appear in node box*\n\n    ![pythonNode](https://i.imgur.com/DofVLfz.gif)\n\n* **Fast node generation from functions**\n\n    *Single decorator to expose node from function*\n\n    ![pythonNode](https://i.imgur.com/3lhthXt.png)\n    ![pythonNode](https://i.imgur.com/9PPFrMP.png)\n\n* **Package loading from arbitrary locations**\n\n    *Packages can be loaded from provided list of directories. It can be your development folder or folder in network drive inside your studio*\n\n* **Graph commenting**\n  * Comment node\n\n    ![commentNode](https://i.imgur.com/6DZZlY9.gif)\n\n  * Sticky node\n\n    ![stickyNode](https://i.imgur.com/DFeMiCp.gif)\n\n* **Custom input system**\n\n    *If you got used to specific keymap of your software of choice, you can easily remap PyFlow input actions*\n\n    ![input](https://i.imgur.com/ViVJNcn.gif)\n\n* **Drop on wire**\n\n    *Automatically сonnect the node by dragging it onto the wire*\n\n    ![input](https://i.imgur.com/5kuPPJa.gif)\n\n* **Photoshop-like history**\n\n    *Easy to use powerful undo system*\n\n    ![history](https://i.imgur.com/HmeIoI7.gif)\n\n    *By a single line call*\n\n    ![historyApi](https://i.imgur.com/XlHwAwq.png)\n\n* **Property view**\n\n    *Modify node and pins attributes using property panels*\n\n    ![historyApi](https://i.imgur.com/CWLjUwN.gif)\n\n* **Variables**\n\n    *Save arbitrary data into a variables*\n\n    ![historyApi](https://i.imgur.com/vij0Xux.gif)\n\n* **Editable shareable themes**\n\n    *Create and share themes with others*\n\n    ![historyApi](https://i.imgur.com/NTxhkJI.gif)\n\n* **Data importers/exporters**\n\n    *Editor data can be exported/imported to/from arbitrary format*\n\n* **Command line interface**\n\n    ![cmdHelp](https://i.imgur.com/Hi02T9a.png)\n\n    *Exported programs can be edited and evaluated from command line without gui*\n\n    ![cmdAddition](https://i.imgur.com/L49OuWa.png)\n    ![cmdHelp](https://i.imgur.com/5IMWaqx.png)\n\n* **Convenient wires interaction**\n\n  ![wiresConnect](https://i.imgur.com/RTrAX2G.gif)\n\n* **Wire styles**\n\n  ![wiresConnect](https://i.imgur.com/qVqAaL6.gif)\n\n  ![wiresConnect](https://i.imgur.com/WKkO2cZ.gif)\n\n  ![wiresConnect](https://i.imgur.com/ZIXI09T.png)\n\n* **Node deprecation flag**\n\n    *Tell users to update their programs*\n\n    ![deprecated](https://i.imgur.com/Yjck578.png)\n    ![deprecated](https://i.imgur.com/WZ0yW4X.png)\n\n* **Widgets library**\n  * Sliders\n\n    *Custom Houdini style sliders, value draggers, ramp widgets*\n\n    ![historyApi](https://i.imgur.com/iL25sxN.png)\n\n  * Properties framework\n\n    *Custom widgets for property panels. Collapsible categories, search field*\n\n  * Input framework\n\n    *Custom widgets for mouse, keyboard capture*\n\n* **Plugin wizards framework**\n\n    *Generate package template to start development. Or create own wizard for your module*\n\n* **Easy configuration files framework**\n\n    *While adding own modules you probably want to have some configuration data. We provide easy to use api for this*\n\nAnd more..\n\n## Getting Started\n\nWe have [documentation](https://pyflow.readthedocs.io/en/latest/)\n\n## Contributing\n\nSee `CONTRIBUTING.md`\n\n## Versioning\n\nWe use a [semantic versioning](http://semver.org/) policy.\n\n## Authors\n\n* **Ilgar Lunin** - [Ilgar Lunin](https://github.com/IlgarLunin)\n* **Pedro Cabrera** - [Pedro Cabrera](https://github.com/pedroCabrera)\n\nSee also the list of [contributors](https://github.com/pedrocabrera/PyFlow/contributors) who participated in this project.\n\n## Discussion\n\nJoin us to our [discord channel](https://discord.gg/SwmkqMj) and ask anything related to project!\n","funding_links":["https://patreon.com/pyflow"],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FpedroCabrera%2FPyFlow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FpedroCabrera%2FPyFlow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FpedroCabrera%2FPyFlow/lists"}