cursus.validation.script_testing.script_input_resolver

Script Input Resolution Pattern Adaptation

This module adapts step builder input resolution patterns for script testing, providing contract-based path mapping and logical name transformation using existing cursus infrastructure patterns.

Key Features: - Direct adaptation of StepBuilder._get_inputs() patterns for script testing - Contract-based path mapping using existing step catalog infrastructure - Logical name to actual path transformation - Same validation patterns as step builders - Maximum component reuse from existing cursus infrastructure

resolve_script_inputs_using_step_patterns(node_name, spec, resolved_dependencies, step_catalog)[source]

Script input resolution adapted from StepBuilder._get_inputs() patterns.

DIRECT ADAPTATION of step builder input resolution logic for script testing. This function mirrors the same patterns used in step builders for input resolution, providing consistent behavior between pipeline steps and script testing.

Parameters:
  • node_name (str) – Name of the script/node

  • spec (StepInterface) – Step specification with dependencies and outputs

  • resolved_dependencies (Dict[str, str]) – Dictionary of resolved dependency paths

  • step_catalog (StepCatalog) – Step catalog for contract loading

Returns:

Dictionary mapping logical dependency names to actual script input paths

Return type:

Dict[str, str]

Example

>>> spec = step_catalog.load_spec_class('DataPreprocessing')
>>> resolved_deps = {'training_data': '/data/input/train.csv'}
>>> script_inputs = resolve_script_inputs_using_step_patterns(
...     'DataPreprocessing', spec, resolved_deps, step_catalog
... )
>>> print(script_inputs)
{'training_data': '/data/input/train.csv'}
adapt_step_input_patterns_for_scripts(node_name, inputs, step_catalog)[source]

Adapt step builder input patterns for script testing.

DIRECT ADAPTATION of step builder input resolution patterns. This function provides the same input validation and transformation patterns used in step builders, ensuring consistency across the system.

Parameters:
  • node_name (str) – Name of the script/node

  • inputs (Dict[str, Any]) – Dictionary of input data to process

  • step_catalog (StepCatalog) – Step catalog for specification and contract loading

Returns:

Dictionary mapping logical names to actual script input paths

Raises:

ValueError – If specification or contract not found, or required inputs missing

Return type:

Dict[str, str]

Example

>>> inputs = {'training_data': '/data/train.csv', 'model_config': '/config/model.json'}
>>> script_inputs = adapt_step_input_patterns_for_scripts(
...     'XGBoostTraining', inputs, step_catalog
... )
>>> print(script_inputs)
{'training_data': '/data/train.csv', 'model_config': '/config/model.json'}
validate_script_input_resolution(node_name, script_inputs, step_catalog)[source]

Validate script input resolution using step builder validation patterns.

This function applies the same validation logic used in step builders to ensure script inputs are properly resolved and valid.

Parameters:
  • node_name (str) – Name of the script/node

  • script_inputs (Dict[str, str]) – Dictionary of resolved script inputs

  • step_catalog (StepCatalog) – Step catalog for specification loading

Returns:

True if validation passes, False otherwise

Return type:

bool

Example

>>> script_inputs = {'training_data': '/data/train.csv'}
>>> is_valid = validate_script_input_resolution(
...     'DataPreprocessing', script_inputs, step_catalog
... )
>>> print(is_valid)
True
get_script_input_resolution_summary(node_name, script_inputs, step_catalog)[source]

Generate a summary of script input resolution for debugging and monitoring.

Parameters:
  • node_name (str) – Name of the script/node

  • script_inputs (Dict[str, str]) – Dictionary of resolved script inputs

  • step_catalog (StepCatalog) – Step catalog for specification loading

Returns:

Dictionary with resolution summary information

Return type:

Dict[str, Any]

Example

>>> script_inputs = {'training_data': '/data/train.csv', 'config': '/config/model.json'}
>>> summary = get_script_input_resolution_summary(
...     'XGBoostTraining', script_inputs, step_catalog
... )
>>> print(summary['total_inputs'])
2
transform_logical_names_to_actual_paths(logical_inputs, node_name, step_catalog)[source]

Transform logical dependency names to actual file paths using contract patterns.

This function applies the same logical-to-actual path transformation used in step builders, ensuring consistent path resolution across the system.

Parameters:
  • logical_inputs (Dict[str, str]) – Dictionary mapping logical names to paths

  • node_name (str) – Name of the script/node

  • step_catalog (StepCatalog) – Step catalog for contract loading

Returns:

Dictionary mapping logical names to actual file paths

Return type:

Dict[str, str]

Example

>>> logical_inputs = {'training_data': '/container/input/data'}
>>> actual_paths = transform_logical_names_to_actual_paths(
...     logical_inputs, 'DataPreprocessing', step_catalog
... )
>>> print(actual_paths)
{'training_data': '/opt/ml/input/data/training_data.csv'}