Skip to main content

A simple API for creating Houdini node graphs programmatically

Project description

Zabob Banner

Zabob-Houdini

Tests PyPI

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 connections
  • chain() - 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

# Create immutable node definitions
geo_node = node("/obj", "geo", name="mygeometry")
box_node = node(geo_node, "box", name="mybox")
transform_node = node(geo_node, "xform", name="mytransform", _input=box_node)

# Or create a processing chain (also immutable)
processing_chain = chain(
    node(geo_node, "box"),
    node(geo_node, "xform"),
    node(geo_node, "subdivide")
)

# These definitions are cached and can be reused safely
same_geo = geo_node.create()  # Returns the same hou.Node instance
another_chain = processing_chain.create()  # Reuses cached nodes

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

Documentation

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

zabob_houdini-0.1.2.tar.gz (7.1 MB view details)

Uploaded Source

Built Distribution

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

zabob_houdini-0.1.2-py3-none-any.whl (47.4 kB view details)

Uploaded Python 3

File details

Details for the file zabob_houdini-0.1.2.tar.gz.

File metadata

  • Download URL: zabob_houdini-0.1.2.tar.gz
  • Upload date:
  • Size: 7.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zabob_houdini-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8bf9b53a017040c33c29395a67f3e2fed20b79362656640065963578ab9aa2d3
MD5 a6bdacb9309b91259a4d9d02c27b60f2
BLAKE2b-256 0a8d860627d09d71fc2c9ae22d45a3c2875494a536dcc32d69d3e677d1b2c289

See more details on using hashes here.

Provenance

The following attestation bundles were made for zabob_houdini-0.1.2.tar.gz:

Publisher: publish.yml on BobKerns/zabob-houdini

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zabob_houdini-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: zabob_houdini-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 47.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zabob_houdini-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c2e233db8821afbed17737e80a037d30167881571178626214e7fff8db30c025
MD5 510a629a8107f7b60b00304ad6d0f8ca
BLAKE2b-256 b898cab83de2ddc93d59ac3a7dc95694ceebd5011886e4c786f357b9df9523d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for zabob_houdini-0.1.2-py3-none-any.whl:

Publisher: publish.yml on BobKerns/zabob-houdini

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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