Skip to content

fix(examples): camera-python-effects's processors take a config class instead of keyword parameters #2239

Description

@tato123

What & why

examples/camera-python-effects's processors still take their configuration as keyword parameters on __init__. Since v0.21.0 (#2226), @processor refuses that signature at decoration, so importing the processor module raises and the example no longer starts.

This is the consumer backlog the agent-readable-processor-catalog change owes at ship (docs/plan/changes/archive/2026-09-13-agent-readable-processor-catalog.md). Per docs/plan/ARCHITECTURE.md §Consumers, a converted consumer's breakage is filed at that consumer and never blocks the engine change.

Design

Each processor below takes one config parameter annotated with a config class, and reads its values off that object. The config class is a dataclass whose fields are today's keyword parameters with their defaults, or a TypedDict. rt.add(..., config={...}) in the app stays as it is: the helper builds the config class from the dict. examples/camera-virtual-camera/processors/shader_effect.py (ShaderEffectConfig) is the in-tree model.

  • examples/camera-python-effects/src/camera_python_effects/processors/crt_film_grain.pyCrtFilmGrain(barrel_curve, scanline_intensity, chromatic_aberration, grain_intensity, grain_speed, vignette_intensity, brightness)
  • examples/camera-python-effects/src/camera_python_effects/processors/cyberpunk_avatar.pyCyberpunkAvatar(scene_width, scene_height, detection_confidence, pose_model_path)
  • examples/camera-python-effects/src/camera_python_effects/processors/lerobot_recorder.pyLeRobotRecorder(dataset_root, repo_id, fps, episode_seconds, task, record_stylized) (dataset_root is required, so its field has no default)
  • examples/camera-python-effects/src/camera_python_effects/processors/neon_overlay_source.pyNeonOverlaySource(width, height)

Done means

  • Every processor above declares def __init__(self, config: <ConfigClass>), and no @processor class in the example takes a keyword parameter.
  • The example starts against the published wheel and reaches a running graph.

Validation shape

A fresh uv sync in the example, then run it as its README says. The processor modules import without a decoration refusal and the graph reaches Running.

Needs the physical rig?

GPU, camera

Non-derivable notes

Examples pin the published wheel, so validation needs a release carrying #2226 and #2228 (v0.22.0 or later). A local maturin develop is undone by uv sync.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions