A simple API for creating Houdini node graphs programmatically
Project description
Zabob-Houdini
A simple Python API for creating Houdini node graphs programmatically.
What is Zabob-Houdini?
Zabob-Houdini provides a clean, Pythonic interface for building Houdini node networks. Instead of manually creating nodes and wiring connections, you can describe your node graph declaratively and let Zabob handle the details.
Key Features:
- Declarative API: Describe what you want, not how to build it
- Immutable Objects: Node and chain definitions are immutable for safety and caching
- Automatic Connections: Wire nodes together with simple syntax
- Chain Support: Create linear processing pipelines easily
- Type Safety: Full type hints for modern Python development
- Flexible: Works in Houdini scripts, shelf tools, and HDAs
📚 Complete API Documentation - Comprehensive reference for all functions, classes, and methods
Quick Start
Zabob-Houdini provides two main functions:
node()- Create individual nodes with automatic connectionschain()- Create linear sequences of connected nodes
Both return immutable objects that use .create() to instantiate the actual Houdini nodes.
Why Immutability?
Safety: Once defined, node configurations can't be accidentally modified, preventing bugs from unexpected changes.
Caching: Immutable objects can be safely cached and reused, improving performance when creating complex node networks.
Predictability: The same node definition always creates the same result, making code easier to reason about and debug.
Templates: Node definitions serve as reusable templates for creating networks, allowing the same pattern to be instantiated multiple times.
Circular References: Immutable definitions enable circular node graphs by allowing nodes to reference each other before instantiation (feature planned for future release).
Example Usage
from zabob_houdini import node, chain, context
# Create a geometry container and organize nodes with context
with context(node("/obj", "geo", "mygeometry")) as ctx:
# Create nodes within the context
box_node = ctx.node("box", "mybox")
transform_node = ctx.node("xform", "mytransform", _input=box_node)
# Or create a processing chain using context nodes
processing_chain = ctx.chain("mybox", "mytransform", ctx.node("subdivide"))
# These definitions are cached and can be reused safely
processing_chain.create() # Creates entire dependency tree
For complete examples including multi-output connections, chain indexing, type narrowing, and advanced patterns, see the API Documentation.
Installation from PyPI
Once published, users can install with:
# First ensure hython is on your path.
# This is a requirement for all usage.
# Then:
mkdir zabob-houdini
cd zabob-houdini
# Using uv (recommended)
uv venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows (Command Prompt)
# .venv\Scripts\Activate.ps1 # Windows (PowerShell)
uv add zabob-houdini
# Using pip
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows (Command Prompt)
# .venv\Scripts\Activate.ps1 # Windows (PowerShell)
pip install zabob-houdini
# Install into Houdini:
zabob-houdini install-package
# Validate:
zabob-houdini validate
For Houdini Integration
# In Houdini's Python shell, shelf tools, or HDAs
from zabob_houdini import node, chain, context
Documentation
- API Documentation: Complete reference for all functions, classes, and methods
- Command Line Interface: CLI reference and usage guide
- Development Guide: Setup, testing, and contribution guidelines
- PyPI Setup: Publishing and release information
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zabob_houdini-0.1.3.tar.gz.
File metadata
- Download URL: zabob_houdini-0.1.3.tar.gz
- Upload date:
- Size: 7.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a1108096c10296c2c9e28a98e1bf2e5c30a45f543857e2e957afa6162a2bcd3
|
|
| MD5 |
0aef542165b92b2baa0ce02d88346336
|
|
| BLAKE2b-256 |
61a2ca459d688e2098def6c8f595e490eb9d8410fc5e8890b367dcfe7e82d0fe
|
Provenance
The following attestation bundles were made for zabob_houdini-0.1.3.tar.gz:
Publisher:
publish.yml on BobKerns/zabob-houdini
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zabob_houdini-0.1.3.tar.gz -
Subject digest:
5a1108096c10296c2c9e28a98e1bf2e5c30a45f543857e2e957afa6162a2bcd3 - Sigstore transparency entry: 703830380
- Sigstore integration time:
-
Permalink:
BobKerns/zabob-houdini@de6657b9acff36c8c0ed34cb4e554e53754b70d5 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/BobKerns
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@de6657b9acff36c8c0ed34cb4e554e53754b70d5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zabob_houdini-0.1.3-py3-none-any.whl.
File metadata
- Download URL: zabob_houdini-0.1.3-py3-none-any.whl
- Upload date:
- Size: 55.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e0121360084c20d81170dfba47d4ff18373e9ab2fc132a1b1f99221350f0909
|
|
| MD5 |
ef47208a113d6a92171b2fb06345649e
|
|
| BLAKE2b-256 |
1f3f428d346ebd6c73b6f271c93fe5e7fbd9f5d3373c1678a019a1f1a92f48ff
|
Provenance
The following attestation bundles were made for zabob_houdini-0.1.3-py3-none-any.whl:
Publisher:
publish.yml on BobKerns/zabob-houdini
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zabob_houdini-0.1.3-py3-none-any.whl -
Subject digest:
0e0121360084c20d81170dfba47d4ff18373e9ab2fc132a1b1f99221350f0909 - Sigstore transparency entry: 703830408
- Sigstore integration time:
-
Permalink:
BobKerns/zabob-houdini@de6657b9acff36c8c0ed34cb4e554e53754b70d5 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/BobKerns
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@de6657b9acff36c8c0ed34cb4e554e53754b70d5 -
Trigger Event:
push
-
Statement type: