Skip to main content

A modern node based python editor and REPL for physics, education, and data analysis

Project description

ROON

A node bsed editor for python using with a modern svelte frontend UI with. Goals of the project:

  • Generate vanilla python
  • Full language coverage
  • Efficient keyboard driven UI
  • Look good

Installation and use

python -m pip install roon

then run with:

python -m roon

Use Meta+Shift+P to access command prompt

Commands

  • :n: all nodes that can be inserted into the graph have :n in the title for quick search. Nodes can be searched for by name or module
  • Source2Nodes: Convert the source in the editor window into a node and insert it into the graph - source must contain function definitions or no nodes will be generated

Development

Svelte Application

Uses rollup + svelte For development (live reload etc.):

npm run dev

For a production build:

npm run build

Note: the .env file is used to set the python backend:

PYTHON_BACKEND=auto

Options are: auto, pyodide, pywebview, jupyter - but pywebview is the primary target with others to be implemented later. Pyodide works for a fully browser based implementation, but the filesystem (needed for any real data analysis) is only supported in chrome and edge.

Make sure that production builds for the python package are setup with pywebview - because it takes some time for the js bridge to fully load, the automatic detection of the backend is slower than being set directly.

note: the svelte app is setup to write out the build files to a custom directory for integration with python app (in the roon/static/ directory) instead of the standard public. So you need to symlink to make development builds available in browser (if you want to work in the browser)

ln -s roon/static/svelte/public public

Python application

Use makefile for installing development builds and for building the package for publication

dev-build:
	python -m pip install --editable .

build:
	python -m build

We use twine to publish the pypi package (use Makefile target check and publish) Twine uses authentication in $HOME/.pypirc for pushing to PyPi.

ROADMAP

ISSUES:

- [x] Inserting two of the same node type sometimes crashes
- [x] Fix widgets - all widget values are passed as string arguments
- [x] Node insertion position (based on mouse) is wrong - off screen

FEATURES:

  • minimap
  • resizable nodes + widgets
  • hotkeys for inserting nodes
  • view node source
  • import nodes from libs directly from (numpy) or provide wrapper
  • comment out nodes
  • dynamic nodes: dictionaries and kwargs etc.
  • viewer nodes for plots etc.
  • pause python execution for input (view plots one at a time...)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roon-0.5.1.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roon-0.5.1-py3-none-any.whl (777.3 kB view details)

Uploaded Python 3

File details

Details for the file roon-0.5.1.tar.gz.

File metadata

  • Download URL: roon-0.5.1.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.18

File hashes

Hashes for roon-0.5.1.tar.gz
Algorithm Hash digest
SHA256 8977fdec24eb9679e8146ac2674d91bc3d8f4bd7609f0de5bfda8310b997ee7e
MD5 ed4daed95bfbeea42bd14da5fa5dba35
BLAKE2b-256 05b68b5c9b303b887c1ee1285dfd4373384d0119f00d0e1c960a7158be59c77d

See more details on using hashes here.

File details

Details for the file roon-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: roon-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 777.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.18

File hashes

Hashes for roon-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f882d12e63e3abc9e28542f39c411977e5a9aed476ccc3f1aadfa0c66db2f0a5
MD5 236a2f6596c180d9ab19755a67aff7cf
BLAKE2b-256 6deb5c4de931c6568c76df6ff07cfcec94c050750d32f4c929552290639a4289

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page