cursus.core.config_fields.unified_config_manager

Unified Config Manager - Single integrated component replacing redundant data structures.

This module provides a unified interface that replaces three separate systems: - ConfigClassStore (already migrated to step catalog adapter) - TierRegistry (eliminated - uses config class methods) - CircularReferenceTracker (simplified to minimal tier-aware tracking)

Total Reduction: 950 lines → 120 lines (87% reduction)

class SimpleTierAwareTracker[source]

Bases: object

Simple tier-aware circular reference tracking.

Replaces the complex CircularReferenceTracker (600+ lines) with minimal tracking based on three-tier architecture constraints.

enter_object(obj, field_name=None)[source]

Check if object creates circular reference.

Parameters:
  • obj (Any) – Object being processed

  • field_name (str | None) – Name of field containing object

Returns:

True if circular reference detected

Return type:

bool

exit_object()[source]

Exit current object processing.

reset()[source]

Reset tracker state.

class UnifiedConfigManager(workspace_dirs=None)[source]

Bases: object

Single integrated component replacing three separate systems.

Replaces: - ConfigClassStore: Uses step catalog integration - TierRegistry: Uses config classes’ own categorize_fields() methods - CircularReferenceTracker: Simple tier-aware tracking

Total Reduction: 950 lines → 120 lines (87% reduction)

property step_catalog

Lazy-load step catalog to avoid import issues.

get_config_classes(project_id=None)[source]

Get config classes using step catalog integration.

Replaces ConfigClassStore functionality.

Parameters:

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

Returns:

Dictionary mapping class names to class types

Return type:

Dict[str, Type[BaseModel]]

get_field_tiers(config_instance)[source]

Get field tier information using config’s own methods.

Replaces TierRegistry functionality by using config classes’ own categorize_fields() methods.

Parameters:

config_instance (BaseModel) – Config instance to categorize

Returns:

Dictionary mapping tier names to field lists

Return type:

Dict[str, List[str]]

serialize_with_tier_awareness(obj)[source]

Serialize object with simple tier-aware circular reference tracking.

Replaces complex CircularReferenceTracker with minimal tracking.

Parameters:

obj (Any) – Object to serialize

Returns:

Serialized object

Return type:

Any

get_inheritance_aware_form_fields(config_class_name, config_class=None, inheritance_analysis=None, project_id=None)[source]

Get inheritance-aware form fields using the centralized field generator.

CONSOLIDATED: This method provides access to inheritance-aware field generation through the unified_config_manager, delegating to the specialized field generator.

Parameters:
  • config_class_name (str) – Name of the configuration class

  • config_class (Type[BaseModel] | None) – Optional config class (will be discovered if not provided)

  • inheritance_analysis (Dict[str, Any] | None) – Optional inheritance analysis from StepCatalog

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

Returns:

List of enhanced field definitions with inheritance information

Return type:

List[Dict[str, Any]]

save(config_list, output_file, processing_step_config_base_class=None)[source]

Save merged configuration to a file using UnifiedConfigManager.

Includes optimized verification from Phase 1 Day 3-4 improvements.

Parameters:
  • config_list (List[Any]) – List of configuration objects to merge and save

  • output_file (str) – Path to output file

  • processing_step_config_base_class (type | None) – Optional base class for processing steps

Returns:

Merged configuration structure

Return type:

dict

load(input_file, config_classes=None)[source]

Load a merged configuration from a file using UnifiedConfigManager.

Parameters:
  • input_file (str) – Path to input file

  • config_classes (Dict[str, type] | None) – Optional mapping of class names to class objects

Returns:

Loaded configuration structure

Return type:

dict

get_unified_config_manager(workspace_dirs=None)[source]

Get a unified config manager instance, cached per workspace_dirs.

Parameters:

workspace_dirs (List[str] | None) – List of workspace directories for step catalog integration

Returns:

UnifiedConfigManager instance (one per distinct workspace_dirs key)

Return type:

UnifiedConfigManager

reset_unified_config_manager_cache()[source]

Clear the per-workspace_dirs manager cache (mainly for tests / hot-reload).