cursus.registry.hybrid¶
Phase 3: Simplified Local Registry Infrastructure
This module provides the core hybrid registry system components for Phase 3 implementation. Focuses on essential functionality with reduced redundancy.
Architecture: - utils.py: Simple function-based utilities - models.py: Pydantic data models - manager.py: Unified registry manager - setup.py: Workspace initialization utilities
- class StepDefinition(*, name, registry_type, config_class=None, spec_type=None, sagemaker_step_type=None, builder_step_name=None, description=None, framework=None, job_types=<factory>, workspace_id=None, override_source=None, priority=100, compatibility_tags=<factory>, framework_version=None, environment_tags=<factory>, conflict_resolution_strategy=ResolutionStrategy.WORKSPACE_PRIORITY, metadata=<factory>)[source]¶
Bases:
BaseModelEnhanced step definition with registry metadata using Pydantic V2 and enum validation.
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'frozen': False, 'str_strip_whitespace': True, 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- registry_type: RegistryType¶
- conflict_resolution_strategy: ResolutionStrategy¶
- class ResolutionContext(*, workspace_id=None, preferred_framework=None, environment_tags=<factory>, resolution_mode=ResolutionMode.AUTOMATIC, resolution_strategy=ResolutionStrategy.WORKSPACE_PRIORITY)[source]¶
Bases:
BaseModelContext for step resolution and conflict resolution using Pydantic V2 and enum validation.
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'frozen': False, 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- resolution_mode: ResolutionMode¶
- resolution_strategy: ResolutionStrategy¶
- class StepResolutionResult(*, step_name, resolved, selected_definition=None, reason=None, conflicting_definitions=<factory>, source_registry, resolution_strategy, workspace_id=None, conflict_detected=False, conflict_analysis=None, errors=<factory>, warnings=<factory>, resolution_metadata=<factory>, **extra_data)[source]¶
Bases:
BaseModelResult of step conflict resolution using Pydantic V2.
- model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': False, 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- selected_definition: StepDefinition | None¶
- conflicting_definitions: List[StepDefinition]¶
- conflict_analysis: ConflictAnalysis | None¶
- class RegistryValidationResult(*, is_valid, registry_type='unknown', issues=<factory>, errors=<factory>, warnings=<factory>, step_count=0, **extra_data)[source]¶
Bases:
BaseModelResults of registry validation using Pydantic V2.
- model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': False, 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class ConflictAnalysis(*, step_name, conflicting_definitions=<factory>, resolution_strategies=<factory>, recommended_strategy=None, impact_assessment=None, conflicting_sources, resolution_strategy, workspace_context=None, conflict_type='name_conflict', **extra_data)[source]¶
Bases:
BaseModelAnalysis of a step name conflict using Pydantic V2.
- model_config: ClassVar[ConfigDict] = {'extra': 'allow', 'frozen': False, 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- conflicting_definitions: List[StepDefinition]¶
- class UnifiedRegistryManager(core_registry_path=None, workspaces_root=None)[source]¶
Bases:
objectUnified registry manager that consolidates all registry operations.
Replaces CoreStepRegistry, LocalStepRegistry, and HybridRegistryManager with a single, efficient manager that eliminates redundancy while maintaining all functionality.
- create_legacy_step_names_dict(workspace_id=None)[source]¶
Create legacy STEP_NAMES dictionary for backward compatibility with caching.
- get_all_step_definitions(workspace_id=None)[source]¶
Get all step definitions with caching for performance optimization.
- get_local_only_definitions(workspace_id)[source]¶
Get only local and override definitions for a workspace (not core).
- get_step(step_name, context=None)[source]¶
Get a step definition with simple workspace priority resolution.
- Parameters:
step_name (str) – Name of the step to retrieve
context (ResolutionContext | None) – Resolution context for workspace handling
- Returns:
StepResolutionResult containing the resolved step and metadata
- Return type:
- get_step_definition(step_name, workspace_id=None)[source]¶
Get a step definition by name, with optional workspace context.
- Parameters:
- Returns:
StepDefinition if found, None otherwise
- Return type:
StepDefinition | None
- reload_core_registry()[source]¶
Re-snapshot the core registry from
step_names_base.STEP_NAMESand drop caches.Called after an external step-pack merges rows into
step_names_base(seecursus.registry.step_names.refresh_registry()) so the manager’s_core_stepssnapshot and its legacy/definition caches reflect the plugin steps. Additive by construction — it re-reads the (already package-first-merged) base table.
- CoreStepRegistry¶
alias of
UnifiedRegistryManager
- LocalStepRegistry¶
alias of
UnifiedRegistryManager
- HybridRegistryManager¶
alias of
UnifiedRegistryManager
- load_registry_module(file_path)[source]¶
Load registry module from file.
- Parameters:
file_path (str) – Path to the registry file
- Returns:
Loaded module object
- Raises:
RegistryLoadError – If module loading fails
- Return type:
- from_legacy_format(step_name, step_info, registry_type='core', workspace_id=None)[source]¶
Convert legacy STEP_NAMES format to StepDefinition.
- Parameters:
- Returns:
StepDefinition object
- Return type:
- to_legacy_format(definition)[source]¶
Convert StepDefinition to legacy STEP_NAMES format using field list.
- Parameters:
definition (StepDefinition) – StepDefinition object
- Returns:
Legacy format dictionary
- Return type:
- convert_registry_dict(registry_dict, registry_type='core', workspace_id=None)[source]¶
Convert a complete registry dictionary to StepDefinition objects.
- validate_registry_data(registry_type, step_name, workspace_id=None)[source]¶
Validate registry data using direct validation functions.
- Parameters:
- Returns:
True if valid
- Raises:
ValueError – If validation fails
- Return type:
- format_step_not_found_error(step_name, workspace_context=None, available_steps=None)[source]¶
Format step not found error messages using generic formatter.
- format_registry_load_error(registry_path, error_details)[source]¶
Format registry loading error messages using generic formatter.
Modules