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, 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

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.3.tar.gz (7.2 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.3-py3-none-any.whl (55.6 kB view details)

Uploaded Python 3

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

Hashes for zabob_houdini-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5a1108096c10296c2c9e28a98e1bf2e5c30a45f543857e2e957afa6162a2bcd3
MD5 0aef542165b92b2baa0ce02d88346336
BLAKE2b-256 61a2ca459d688e2098def6c8f595e490eb9d8410fc5e8890b367dcfe7e82d0fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for zabob_houdini-0.1.3.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.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

Hashes for zabob_houdini-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0e0121360084c20d81170dfba47d4ff18373e9ab2fc132a1b1f99221350f0909
MD5 ef47208a113d6a92171b2fb06345649e
BLAKE2b-256 1f3f428d346ebd6c73b6f271c93fe5e7fbd9f5d3373c1678a019a1f1a92f48ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for zabob_houdini-0.1.3-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