cursus.step_catalog.script_discovery

Script file auto-discovery for the unified step catalog system.

This module implements script file discovery from both core package and workspace directories, with workspace prioritization support for interactive runtime testing.

class ScriptInfo(script_name, step_name, script_path, workspace_id, framework=None)[source]

Bases: object

Information about a discovered script.

class ScriptAutoDiscovery(package_root, workspace_dirs=None, priority_workspace_dir=None)[source]

Bases: object

Script file auto-discovery with workspace prioritization support.

Follows the same pattern as ConfigAutoDiscovery and BuilderAutoDiscovery for consistency within the step catalog system.

discover_script_files(project_id=None)[source]

Discover all script files from package and workspaces with prioritization.

Parameters:

project_id (str | None) – Optional project ID for workspace-specific discovery

Returns:

Dictionary mapping script names to ScriptInfo objects

Return type:

Dict[str, ScriptInfo]

load_script_info(script_name)[source]

Load script information for a specific script with workspace-aware discovery.

Parameters:

script_name (str) – Name of the script to load info for

Returns:

ScriptInfo object or None if not found

Return type:

ScriptInfo | None

discover_scripts_from_dag(dag)[source]

Discover scripts referenced in a DAG with intelligent node-to-script mapping.

Parameters:

dag – PipelineDAG object

Returns:

Dictionary mapping script names to ScriptInfo objects

Return type:

Dict[str, ScriptInfo]

discover_scripts_from_config_instances(loaded_configs)[source]

Discover scripts from already-loaded config instances with definitive validation.

This method provides config-based script discovery that eliminates phantom scripts by only discovering scripts that have actual entry points defined in config instances.

Parameters:

loaded_configs (Dict[str, Any]) – Dictionary mapping step names to config instances (from load_configs)

Returns:

Dictionary mapping script names to ScriptInfo objects

Return type:

Dict[str, ScriptInfo]

discover_scripts_from_dag_and_configs(dag, loaded_configs)[source]

Discover scripts using both DAG nodes and loaded config instances for definitive validation.

This method combines DAG-based filtering with config-based validation to eliminate phantom scripts and provide accurate script discovery.

Parameters:
  • dag – PipelineDAG object

  • loaded_configs (Dict[str, Any]) – Dictionary mapping step names to config instances

Returns:

Dictionary mapping script names to ScriptInfo objects

Return type:

Dict[str, ScriptInfo]

get_script_info(script_name)[source]

Get information about a script.

Parameters:

script_name (str) – Name of the script

Returns:

Dictionary with script information or None if not found

Return type:

Dict[str, Any] | None

list_available_scripts()[source]

List all available script names.

Returns:

List of script names that have been discovered

Return type:

List[str]

get_discovery_stats()[source]

Get discovery statistics.

Returns:

Dictionary with discovery statistics

Return type:

Dict[str, Any]