cursus.step_catalog.sdk_bindings

Lazy SAIS-SDK step-class bindings for the registry-walk builder materializer (FZ 31e1d3g3 Phase A2).

The 4 SDK-delegation steps (CradleDataLoading / RedshiftDataLoading / Registration / DataUploading) route through SDKDelegationHandler, which needs an sdk_step_class knob — a live SAIS *Step CLASS OBJECT. That reference is genuine code, not serializable to .step.yaml (it is the documented exception, see data_uploading.step.yaml and RegistrySection.requires), so the generic _synthesize_builder skips these steps and defers to this module.

Each binding is a LAZY thunk doing a LOCAL import — never module-level — so importing this module is free and offline-safe. The SAIS import (and thus any failure when the SDK is absent) happens only when a binding is actually called, which is only when an SDK step’s builder is materialized in the SAIS environment. This is exactly why the 4 steps stay offline-undiscoverable and match the closure gate’s _SDK_DELEGATION_STEPS carve-out.

The carve-out membership is authored data: a step belongs here iff its .step.yaml declares registry.requires: secure_ai_sandbox_workflow_python_sdk. A conformance gate asserts the two sets are equal (no drift between this binding table and the YAML).

SDK_STEP_CLASS_THUNKS: Dict[str, Callable[[], Type]] = {'CradleDataLoading': <function _cradle_data_loading_step>, 'DataUploading': <function _data_uploading_step>, 'RedshiftDataLoading': <function _redshift_data_loading_step>, 'Registration': <function _mims_model_registration_step>}

STEP_NAME -> lazy thunk returning the SAIS *Step class to inject as the sdk_step_class knob. Mirrors the HANDLER_KNOBS = {"sdk_step_class": <SAISClass>} the hand-written SDK shells carry.

is_sdk_delegation_step(step_name)[source]

True iff step_name is materialized via this SDK-binding path (not the generic synthesizer).

resolve_sdk_step_class(step_name)[source]

Return the SAIS *Step class for an SDK-delegation step (lazy local import).

Raises KeyError if the step is not an SDK-delegation step, and the underlying ImportError if the SAIS SDK is absent — the caller (the materializer) only invokes this in the SAIS env.