Skip to main content

renderflow

Official Python client for the RenderFlow API.

Installation

pip install pulze-renderflow

The package has no dependencies — the whole client is standard library. That is a feature, not an accident: drop the folder on sys.path and it works inside a DCC's bundled Python (Maya, Houdini, Nuke, VRED), where installing anything is a fight.

Quick start

import renderflow as rf

farm = rf.connect()                     # the local service on 127.0.0.1:44442
# farm = rf.connect("https://rf.studio.lan:44442", api_key="rf_...")

for job in farm.jobs.get_jobs(status="working").data:
    print(job.name, job.status)

connect() falls back to the environment for each argument it isn't given: RENDERFLOW_URL for the address, RENDERFLOW_API_KEY for the key (the same variable rfcli reads). With neither, it talks to the service on this machine — which needs no credential, and is how a DCC plugin on a workstation submits.

Finding the operation you want

Operations are grouped by tag and named after the API document's operationId, so a route reads the same here, in the TypeScript SDK, in rfcli and in the MCP tools:

farm.tags()                 # every group: jobs, nodes, pools, schedule, ...
dir(farm.jobs)              # every operation in one: get_jobs, create_job, stop_job, ...
help(farm.jobs.get_jobs)    # the operation's own documentation, generated from the document
you want you write
GET /jobs farm.jobs.get_jobs()
GET /jobs/{id} farm.jobs.get_job(id)
POST /jobs farm.jobs.create_job(body=...)
POST /jobs/{id}/stop farm.jobs.stop_job(id)
GET /nodes farm.nodes.get_nodes()

Submitting a job

A recipe — type plus a file and the flat per-DCC fields — is the short way in; the service expands it into the step tree:

job = farm.jobs.create_job(body={
    "type": "blender.render",
    "file": "//share/scenes/shot_010.blend",
    "frame": "1-100",
    "pool_id": "...",
})

print(job.id, job.status)
farm.jobs.stop_job(job.id)

Bodies are plain dicts; answers read with dot access (job.name, page.data) and hand back the raw payload via .to_dict().

Models

Typed names for every request and response schema live in renderflow.models, and your editor reads them from models.pyi — autocomplete and type checking with nothing to install:

from renderflow.models import MayaRenderRecipe

recipe: MayaRenderRecipe = {"type": "maya.render", "file": "//share/scenes/hero.mb", "host": {"name": "maya"}}
farm.jobs.create_job(body=recipe)

At runtime a model is a dict — the wire is JSON and the service validates.

Errors

A refused call raises renderflow.wire.ApiError, carrying the status and the service's own message — str(error) is the sentence an operator should read.

How this package is built

There is no generated client. renderflow/wire.py binds operations off the OpenAPI document at runtime, and the document ships inside the package as renderflow/openapi.json — a committed copy of the service's openapi.public.json. An operation added to the API arrives here the moment that copy is refreshed:

python scripts/generate.py     # copies ../../service/openapi.public.json + rewrites models.pyi

models.pyi is written by datamodel-code-generator, a dev-only tool — never a dependency of the package.

Metadata

Release files for pulze-renderflow 2.0.7

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

Source distribution (sdist)

Source distribution for pulze-renderflow 2.0.7
File Size Uploaded
pulze_renderflow-2.0.7.tar.gz 74.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pulze-renderflow 2.0.7
File Interpreter ABI Platform
pulze_renderflow-2.0.7-py3-none-any.whl Python 3 none any Details

Total release size: 145.2 kB

Release files / pulze_renderflow-2.0.7.tar.gz

Download URL pulze_renderflow-2.0.7.tar.gz
Size 74.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ef28f26722a3b29fff06c68d69819305586945392225b9fff7dbef5a9e7903eb
BLAKE2b-256 checksum
How to use checksums
b745fc9066194cbea7575078ad4e8dcf87b7ad241cc881ac14de0ef9954e5338
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.8

Release files / pulze_renderflow-2.0.7-py3-none-any.whl

Download URL pulze_renderflow-2.0.7-py3-none-any.whl
Size 70.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dd5648a0123b6ead6c01621bccf31108e4d1881cbb62ea0b6a23f59c41eff7f1
BLAKE2b-256 checksum
How to use checksums
7ea1b8e664249002bd409ec4dcc60ac3474b51ce4a8c5edbaa4af8be22610428
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.8

Release history Release notifications | RSS feed

2.0.16

2 release files

2.0.9

2 release files

2.0.8

2 release files

This release

2.0.7 This release

2 release files

1.3.0

2 release files

1.2.7

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.2

2 release files

1.2.1

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