Registry and pipelines#

Pipeline registry#

Pipelines are registered by kind and name.

from argdigest import register_pipeline

@register_pipeline(kind="feature", name="feature.base")
def feature_base(obj, ctx):
    if not hasattr(obj, "feature_id"):
        raise ValueError("Missing feature_id")
    return obj

Recommended rule design:

  • small and composable,

  • deterministic (no hidden global state),

  • explicit error messages.

Argument digester registry#

Argument digesters can be registered with a decorator:

from argdigest import argument_digest

@argument_digest("selection")
def digest_selection(selection, caller=None, syntax=None):
    return selection

Alternatively, digesters can be discovered from a module or package by name (digest_<argument>).

Execution order#

When both systems are enabled in @arg_digest:

  1. Argument digesters run first.

  2. Pipeline rules run on the digested values.

This order is contractual and should remain stable.