Skip to main content

nodebpy

Run Tests

Build node trees in Blender more elegantly with Python code. Geometry Nodes, Shader Nodes and Compositor nodes are all fully supported, with type hints and IDE auto-completion throughout.

pip install nodebpy

A text-based version of nodes should bring the convenience of writing code with IDE auto-completion, type hinting, with overall compactness and readability, while staying as close as possible to what building a node tree via the GUI feels like.

from nodebpy import geometry as g

with g.tree("AnotherTree", collapse=True) as tree:
    rotation = (
        g.RandomValue.vector(min=-1, seed=2)
        >> g.AlignRotationToVector()
        >> g.RotateRotation(rotate_by=g.AxisAngleToRotation(angle=0.3))
    )

    _ = (
        tree.inputs.integer("Count", 10)
        >> g.Points(position=g.RandomValue.vector(min=-1))
        >> g.InstanceOnPoints(instance=g.Cube(), rotation=rotation)
        >> g.SetPosition(
            position=g.Position() * 2.0 + (0, 0.2, 0.3),
            offset=(0, 0, 0.1),
        )
        >> g.RealizeInstances()
        >> g.InstanceOnPoints(g.Cube(), instance=...)
        >> tree.outputs.geometry("Instances")
    )

  • Every node is a typed class named after the node it creates — 'Random Value' becomes g.RandomValue() — and node subtypes are class methods: g.RandomValue.vector().
  • Trees are built inside a with g.tree(...): context; instantiating a node class adds it to the current tree, and the tree's interface is declared with tree.inputs.* / tree.outputs.*.
  • Nodes are linked with the >> operator, which picks the most compatible socket pair automatically (much like Node Wrangler's Alt + Right Click drag) — or address sockets explicitly through the .i.* / .o.* accessors.
  • Python's arithmetic, comparison and boolean operators create the matching Math / VectorMath / Compare / BooleanMath nodes: g.Value(1.0) * 2 + (0, 0, 1).
  • Existing node trees — including ones wired up by hand in the GUI — can be exported back to nodebpy source with to_python().

Documentation

Guides and the full node reference live at bradyajohnston.github.io/nodebpy:

Like databpy, this project started as an internal tool inside molecularnodes before being broken out into its own robustly typed and tested package.

Contributing

Development setup, running the tests and regenerating the node classes (most of src/nodebpy/nodes/ is auto-generated by the gen/ package) are covered in CONTRIBUTING.md.

Metadata

Release files for nodebpy 520.26.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nodebpy 520.26.0
File Size Uploaded
nodebpy-520.26.0.tar.gz 431.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nodebpy 520.26.0
File Interpreter ABI Platform
nodebpy-520.26.0-py3-none-any.whl Python 3 none any Details

Total release size: 908.7 kB

Release files / nodebpy-520.26.0.tar.gz

Download URL nodebpy-520.26.0.tar.gz
Size 431.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9d492d70fec01a7c569963fe548250dd88f1f5e49e7f1a7ddb2d8163953cde28
BLAKE2b-256 checksum
How to use checksums
a956c670be9fe076fc3d88893e8cab0c50606d15e0296e167b72c277a795adaa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release files / nodebpy-520.26.0-py3-none-any.whl

Download URL nodebpy-520.26.0-py3-none-any.whl
Size 476.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
45c65e914d9e20894e40610cc6197a7727be45916549037463f11d2c6015756b
BLAKE2b-256 checksum
How to use checksums
1005a6f6200ef63e944eed6fc22c3ac9b89e57c3ef5910c4bb4343b71976248c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

520.26.0 This release

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page