cursus.registry.interface_registry_loader

Interface-derived step registry loader — the SOLE source of the step-name registry.

This module derives the step-name registry table from the per-step .step.yaml interface files (the “full Vector 3” end-state: the registry IS the interface files). As of the FZ 31e1/31e1f Final Phase (2026-06-28) the standalone registry/step_names.yaml table was DELETED — step_names_base.STEP_NAMES is built by build_registry_from_interfaces() with no external fallback, and a golden snapshot (tests/registry/step_names_registry_snapshot.json) gates drift.

Derivation rules (per the 31e1a field spec):
  • spec_type = the canonical step name (it is == step_type for every row)

  • config_class = "<Name>Config" by convention, unless overridden

  • builder_step_name = "<Name>StepBuilder" by convention, unless overridden

  • sagemaker_step_type = irreducible; read from the .step.yaml registry: block

  • description = irreducible prose; read from the .step.yaml registry: block

Steps with no .step.yaml interface (abstract bases Base / Processing and the builder-less HyperparameterPrep) come from the small _EXTRAS map.

build_registry_from_interfaces(interfaces_dir=None, fallback=None)[source]

Derive the STEP_NAMES table from the .step.yaml interface files.

Parameters:
  • interfaces_dir (Path | None) – directory of *.step.yaml files (defaults to the package’s steps/interfaces).

  • fallback (Dict[str, Dict[str, str]] | None) – DEPRECATED transition-window arg (the legacy step_names.yaml table). It is no longer supplied by the package — every .step.yaml now carries a registry: block, so derivation is self-sufficient. Retained only so an external caller can still pass a table; None (the default) uses the interface blocks + _EXTRAS alone.

Returns:

{config_class, builder_step_name, spec_type, sagemaker_step_type, description}}`` — the same shape get_step_names() returns.

Return type:

``{canonical_name