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/PyFlow.git@master

Latest release version

pip install git+https://github.com/wonderworks-software/PyFlow.git@release

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!

Comments
  • [WIP] conda-forge package

    [WIP] conda-forge package

    I would like to add pyflow to conda-forge. Therefor dependencies needs to be added first.

    • [x] enum: seems to be included in python (python3.7)

    • [x] qt.py https://anaconda.org/conda-forge/qt.py

    • [x] blinker: https://anaconda.org/conda-forge/blinker

    • [x] docutils: https://anaconda.org/conda-forge/docutils

    • [x] nine: https://github.com/conda-forge/staged-recipes/pull/8917

    • [x] add pyrr: https://github.com/conda-forge/pyrr-feedstock

    • [ ] pyflow:

      • [x] needs to have a setup.py https://github.com/IlgarLunin/PyFlow/pull/49
      • [ ] add to pypi: https://github.com/IlgarLunin/PyFlow/issues/13
      • [x] add conda-forge package
    opened by looooo 17
  • Can you make a more detailed installation guide?

    Can you make a more detailed installation guide?

    Including what the requirements are, how to install them, how to install PyFlow and solve common problems such as QT-Binding etc. That would be awesome! And I would recommend this to people once I am able to run it, this thing looks wonderful :)

    opened by SametAhmetSahin 14
  • Fix for OS X and unix command line to launch external editor.

    Fix for OS X and unix command line to launch external editor.

    Quotes around file name in OS X comman line doesn't work. Popen works better with list of parameters. Found solution here. https://docs.python.org/3.4/library/subprocess.html
    17.5.1.2. Popen Constructor

    This PR is not tested with Windows.

    opened by Kmanfi 7
  • Fixes drop on wire issues

    Fixes drop on wire issues

    The Pyflow documentation describes the drop on wire functionality. However, this does not work in the current version. This commit fixes the problem by making additions to the mouseReleaseEvent of the BlueprintCanvas class.

    opened by j8sr0230 6
  • How to create a flow that runs on CLI

    How to create a flow that runs on CLI

    According to the root documents, it seems that you used a "main" console node which accepts CLI input for the program execution (Boxed in red). In this example, your program accepts "lhs" and "rhs" as arguments for your program. I would like to achieve the same effect. image

    My question specifically is how do you create this "main" node which can accept inputs from CLI. Is this a custom node that you have created? If so would you mind uploading the steps required to create this node? I am unable to find this "main" node within the NodeBox.

    Any help would be appreciated, thank you.

    opened by Berttwm 5
  • TypeError: You need a shiboken-based type

    TypeError: You need a shiboken-based type

    Installation issue:

    When I try to run the "maya_launcher.py", I get: # Error: TypeError: file line 15: You need a shiboken-based type. #

    Can I get some clarification? What am I missing here?

    Not very familiar with these modules, so I don't know how basic that might be.

    Thanks.

    opened by ghost 5
  • Cannot edit pythonNode

    Cannot edit pythonNode

    I am unable to use the edit option in the python node. When I click on 'edit', no python editor/console appears. Am I missing some further configuration? All other nodes work properly.

    PyFlow version: v2.0.1

    opened by sbalot 4
  • `clock` is depricated and doesn't exist in python 3.8

    `clock` is depricated and doesn't exist in python 3.8

    clock is deprecated and doesn't exist in Python 3.8 so I get this error.

    C:\Users\mtst\Documents\softwares\PyFlow-master
    λ pyflow
    Traceback (most recent call last):
      File "C:\Users\mtst\Documents\softwares\PyFlow-master\pyflow.py", line 17, in <module>
        from PyFlow.App import PyFlow
      File "C:\Users\mtst\Documents\softwares\PyFlow-master\PyFlow\App.py", line 23, in <module>
        from time import clock
    ImportError: cannot import name 'clock' from 'time' (unknown location)
    

    The same issue discussed here: https://github.com/PyTables/PyTables/issues/744

    opened by mtst99 4
  • issue creating compound by collapsing

    issue creating compound by collapsing

    1. I had to click ctrl to show the corresponding menu on right click. Not sure if this is wanted.
    2. There is a traceback printed and the collapsed node is missing the pins.
    [ERROR 16:37:55]: 'NoneType' object has no attribute 'description'
    Traceback (most recent call last):
    File "/home/k/projects/PyFlow/PyFlow/App.py", line 352, in mainLoop
    self.graphManager.get().Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Core/GraphManager.py", line 141, in Tick
    graph.Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Core/GraphBase.py", line 278, in Tick
    node.Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 97, in Tick
    self.syncPins()
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 71, in syncPins
    self.onGraphInputPinCreated(outPin)
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 158, in onGraphInputPinCreated
    self.pinExposed.send(subgraphInputPin)
    File "/home/k/conda/envs/pyflow3/lib/python3.7/site-packages/blinker/base.py", line 267, in send
    for receiver in self.receivers_for(sender)]
    File "/home/k/conda/envs/pyflow3/lib/python3.7/site-packages/blinker/base.py", line 267, in 
    for receiver in self.receivers_for(sender)]
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UINodeBase.py", line 1386, in _createUIPinWrapper
    grpItem = PinGroup(self, rawPin.direction, rawPin.group)
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 434, in __init__
    super(PinGroup, self).__init__(owningNode, None)
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 120, in __init__
    self.setToolTip(self._rawPin.description)
    AttributeError: 'NoneType' object has no attribute 'description'
    [ERROR 16:37:55]: 'PinGroup' object has no attribute 'expanded'
    Traceback (most recent call last):
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 555, in paint
    if not self.expanded:
    AttributeError: 'PinGroup' object has no attribute 'expanded'
    [ERROR 16:37:55]: 'NoneType' object has no attribute 'description'
    Traceback (most recent call last):
    File "/home/k/projects/PyFlow/PyFlow/App.py", line 352, in mainLoop
    self.graphManager.get().Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Core/GraphManager.py", line 141, in Tick
    graph.Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Core/GraphBase.py", line 278, in Tick
    node.Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 97, in Tick
    self.syncPins()
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 71, in syncPins
    self.onGraphInputPinCreated(outPin)
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 158, in onGraphInputPinCreated
    self.pinExposed.send(subgraphInputPin)
    File "/home/k/conda/envs/pyflow3/lib/python3.7/site-packages/blinker/base.py", line 267, in send
    for receiver in self.receivers_for(sender)]
    File "/home/k/conda/envs/pyflow3/lib/python3.7/site-packages/blinker/base.py", line 267, in 
    for receiver in self.receivers_for(sender)]
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UINodeBase.py", line 1386, in _createUIPinWrapper
    grpItem = PinGroup(self, rawPin.direction, rawPin.group)
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 434, in __init__
    super(PinGroup, self).__init__(owningNode, None)
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 120, in __init__
    self.setToolTip(self._rawPin.description)
    AttributeError: 'NoneType' object has no attribute 'description'
    [ERROR 16:37:55]: 'PinGroup' object has no attribute 'expanded'
    Traceback (most recent call last):
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 555, in paint
    if not self.expanded:
    AttributeError: 'PinGroup' object has no attribute 'expanded'
    [ERROR 16:37:55]: 'NoneType' object has no attribute 'description'
    Traceback (most recent call last):
    File "/home/k/projects/PyFlow/PyFlow/App.py", line 352, in mainLoop
    self.graphManager.get().Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Core/GraphManager.py", line 141, in Tick
    graph.Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Core/GraphBase.py", line 278, in Tick
    node.Tick(deltaTime)
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 97, in Tick
    self.syncPins()
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 80, in syncPins
    self.onGraphOutputPinCreated(inPin)
    File "/home/k/projects/PyFlow/PyFlow/Packages/PyFlowBase/Nodes/compound.py", line 197, in onGraphOutputPinCreated
    self.pinExposed.send(subgraphOutputPin)
    File "/home/k/conda/envs/pyflow3/lib/python3.7/site-packages/blinker/base.py", line 267, in send
    for receiver in self.receivers_for(sender)]
    File "/home/k/conda/envs/pyflow3/lib/python3.7/site-packages/blinker/base.py", line 267, in 
    for receiver in self.receivers_for(sender)]
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UINodeBase.py", line 1392, in _createUIPinWrapper
    grpItem = PinGroup(self, rawPin.direction, rawPin.group)
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 434, in __init__
    super(PinGroup, self).__init__(owningNode, None)
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 120, in __init__
    self.setToolTip(self._rawPin.description)
    AttributeError: 'NoneType' object has no attribute 'description'
    [ERROR 16:37:55]: 'PinGroup' object has no attribute 'expanded'
    Traceback (most recent call last):
    File "/home/k/projects/PyFlow/PyFlow/UI/Canvas/UIPinBase.py", line 555, in paint
    if not self.expanded:
    AttributeError: 'PinGroup' object has no attribute 'expanded'
    
    bug 
    opened by looooo 4
  • create package

    create package

    Would it be possible to provide this library in form of a python-package? I am asking because FreeCAD is very interested in this project and people already forking PyFlow, but I guess it would be of more benefit for both project if PyFlow would be provided as a package and can be extended/used by external modules/packages.

    opened by looooo 4
  • Running on Jupyter Notebook

    Running on Jupyter Notebook

    Is it possible to run in Jupyter Notebook? I am using libraries that work in Jupyter Notebook to plot some data science results.

    Python 3.7.1 on Windows

    opened by smh1988 3
  • error on running pyflow command

    error on running pyflow command

    Command I ran : pyflow

    Error I got :

    Qt.py [warning]: ImportError(QtCore): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtGui): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtHelp): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtMultimedia): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtNetwork): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtOpenGL): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtPrintSupport): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtSql): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtSvg): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtTest): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtWidgets): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtX11Extras): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtXml): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtXmlPatterns): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Qt.py [warning]: ImportError(QtUiTools): /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: undefined symbol: k5_sname_compare, version krb5_3_MIT
    Traceback (most recent call last):
      File "/home/hemang/anaconda3/bin/pyflow", line 5, in <module>
        from PyFlow.Scripts import main
      File "/home/hemang/anaconda3/lib/python3.8/site-packages/PyFlow/Scripts/__init__.py", line 23, in <module>
        from PyFlow.App import PyFlow
      File "/home/hemang/anaconda3/lib/python3.8/site-packages/PyFlow/App.py", line 29, in <module>
        from Qt import QtGui
      File "/home/hemang/anaconda3/lib/python3.8/site-packages/Qt.py", line 1925, in <module>
        _install()
      File "/home/hemang/anaconda3/lib/python3.8/site-packages/Qt.py", line 1903, in _install
        our_submodule = getattr(Qt, name)
    AttributeError: partially initialized module 'Qt' has no attribute 'QtGui' (most likely due to a circular import)
    

    https://hjLabs.in

    opened by hemangjoshi37a 0
  • Passing on development?

    Passing on development?

    @IlgarLunin, there seems to be some need to keep this wonderful project alive and also some recent momentum to maintain and develop a fork (e.g. here).

    Since you mentioned in #106, that you stopped working on it (which is really a pity, because this is some fabulous piece of software!), would you be prepared to pass on the development? I believe, this is always a better choice than to start a fork (with a new name etc ets), which often causes confusion and upgrading problems.

    What do you think?

    opened by sphh 0
  • Parameters without Input Pin

    Parameters without Input Pin

    Is there a way to create a property for a node that allows me to set the value of a parameter without needing to create an Input Pin. I really need something that is set once upon construction and doesn't need to be updated again. Having Input Pins makes it unfriendly for the flow based DSL I am trying to create.

    opened by dhimnsen 0
  • packaging

    packaging

    Question

    Is there a way to install this tool via apt or snap ? It will be really hopful if this tool could be installed without first installing python

    Suggetion

    I think this will open chances for working with internal python, venv, external servers or docker container or work as a flowchart drawing software - this will be helpful in many cases such as designing APIs it would be one of the best FlowChart editors ever I would recommend you publish it to either apt ppa or snap store

    I seek for

    A multipurpose visual node editor similer to that used in blender but as a separate software and could be used as a mind mapping, API designing and graph printing/exporting I ended with this repo which is awosome however the fact that its just for python programming I'm not famillier with neither PPAs nor Qt stack but I hope my suggestion would be noticed

    notice

    When I tried to install it via pip, python 3.8 code complained of circular import via master also did time.clock from release seems this app is need for code review to go with 3.8+

    opened by AbdelazizSharaf001 0
  • qt.qpa.plugin: Could not load the Qt platform plugin

    qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "" even though it was found.

    Hello, despite having installed all requirements, I get the following error when running pyflow

    qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "" even though it was found.
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    
    Available platform plugins are: direct2d, minimal, offscreen, windows.
    

    What do I have to install?

    opened by sambaPython24 0
  • when use python2,  there is a serialization and deserialization error,due to unstable initialization order of class members in python2

    when use python2, there is a serialization and deserialization error,due to unstable initialization order of class members in python2

    class PinOptions(Flag):
        ArraySupported = auto() 
        DictSupported = auto()
        Dynamic = auto()
    

    like this, in python2. this time PinOptions.Dynamic.value may is 2, next time may is 4. it caused some serialization and deserialization error.

    i am poor in english,can you understand me .

    opened by tooinlove 0
Owner
null
Lumen provides a framework for visual analytics, which allows users to build data-driven dashboards from a simple yaml specification

Lumen project provides a framework for visual analytics, which allows users to build data-driven dashboards from a simple yaml specification

HoloViz 120 Jan 4, 2023
The visual framework is designed on the idea of module and implemented by mixin method

Visual Framework The visual framework is designed on the idea of module and implemented by mixin method. Its biggest feature is the mixins module whic

LEFTeyes 9 Sep 19, 2022
Bar Chart of the number of Senators from each party who are up for election in the next three General Elections

Congress-Analysis Bar Chart of the number of Senators from each party who are up for election in the next three General Elections This bar chart shows

null 11 Oct 26, 2021
Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python 564 Jan 3, 2023
Make visual music sheets for thatskygame (graphical representations of the Sky keyboard)

sky-python-music-sheet-maker This program lets you make visual music sheets for Sky: Children of the Light. It will ask you a few questions, and does

null 21 Aug 26, 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

null 1 Dec 28, 2021
This is a small program that prints a user friendly, visual representation, of your current bsp tree

bspcq, q for query A bspc analyzer (utility for bspwm) This is a small program that prints a user friendly, visual representation, of your current bsp

nedia 9 Apr 24, 2022
The windML framework provides an easy-to-use access to wind data sources within the Python world, building upon numpy, scipy, sklearn, and matplotlib. Renewable Wind Energy, Forecasting, Prediction

windml Build status : The importance of wind in smart grids with a large number of renewable energy resources is increasing. With the growing infrastr

Computational Intelligence Group 125 Dec 24, 2022
LabGraph is a a Python-first framework used to build sophisticated research systems with real-time streaming, graph API, and parallelism.

LabGraph is a a Python-first framework used to build sophisticated research systems with real-time streaming, graph API, and parallelism.

MLH Fellowship 7 Oct 5, 2022
📊📈 Serves up Pandas dataframes via the Django REST Framework for use in client-side (i.e. d3.js) visualizations and offline analysis (e.g. Excel)

???? Serves up Pandas dataframes via the Django REST Framework for use in client-side (i.e. d3.js) visualizations and offline analysis (e.g. Excel)

wq framework 1.2k Jan 1, 2023
An XLSX spreadsheet renderer for Django REST Framework.

drf-renderer-xlsx provides an XLSX renderer for Django REST Framework. It uses OpenPyXL to create the spreadsheet and returns the data.

The Wharton School 166 Dec 1, 2022
Log visualizer for whirl-framework

Lumberjack Log visualizer for whirl-framework Установка pip install -r requirements.txt Как пользоваться python3 lumberjack.py -l <путь до лога> -o <

Vladimir Malinovskii 2 Dec 19, 2022
The implementation of the paper "HIST: A Graph-based Framework for Stock Trend Forecasting via Mining Concept-Oriented Shared Information".

The HIST framework for stock trend forecasting The implementation of the paper "HIST: A Graph-based Framework for Stock Trend Forecasting via Mining C

Wentao Xu 111 Jan 3, 2023
Active Transport Analytics Model (ATAM) is a new strategic transport modelling and data visualization framework for Active Transport as well as emerging micro-mobility modes

{ATAM} Active Transport Analytics Model Active Transport Analytics Model (“ATAM”) is a new strategic transport modelling and data visualization framew

Peter Stephan 0 Jan 12, 2022
Simple plotting for Python. Python wrapper for D3xter - render charts in the browser with simple Python syntax.

PyDexter Simple plotting for Python. Python wrapper for D3xter - render charts in the browser with simple Python syntax. Setup $ pip install PyDexter

D3xter 31 Mar 6, 2021
A Python Binder that merge 2 files with any extension by creating a new python file and compiling it to exe which runs both payloads.

Update ! ANONFILE MIGHT NOT WORK ! About A Python Binder that merge 2 files with any extension by creating a new python file and compiling it to exe w

Vesper 15 Oct 12, 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 5, 2023
Interactive Data Visualization in the browser, from Python

Bokeh is an interactive visualization library for modern web browsers. It provides elegant, concise construction of versatile graphics, and affords hi

Bokeh 17.1k Dec 31, 2022
Cartopy - a cartographic python library with matplotlib support

Cartopy is a Python package designed to make drawing maps for data analysis and visualisation easy. Table of contents Overview Get in touch License an

null 1.2k Jan 1, 2023