cursus.steps.configs.config_label_ruleset_generation_step¶
Label Ruleset Generation Step Configuration
This module implements the configuration class for the Label Ruleset Generation step using the three-tier design pattern for optimal user experience and maintainability.
- class ComparisonOperator(*values)[source]¶
-
Supported comparison operators for rule conditions.
Categories: - Comparison: equals, not_equals, gt, gte, lt, lte - Collection: in_collection, not_in_collection - String: contains, not_contains, starts_with, ends_with, regex_match - Null: is_null, is_not_null
- EQUALS = 'equals'¶
- NOT_EQUALS = 'not_equals'¶
- GT = '>'¶
- GTE = '>='¶
- LT = '<'¶
- LTE = '<='¶
- IN = 'in'¶
- NOT_IN = 'not_in'¶
- CONTAINS = 'contains'¶
- NOT_CONTAINS = 'not_contains'¶
- STARTS_WITH = 'starts_with'¶
- ENDS_WITH = 'ends_with'¶
- REGEX_MATCH = 'regex_match'¶
- IS_NULL = 'is_null'¶
- IS_NOT_NULL = 'is_not_null'¶
- class RuleCondition(*, field=None, operator=None, value=None, all_of=None, any_of=None, none_of=None)[source]¶
Bases:
BaseModelSingle condition in a rule.
Supports nested logical operators (all_of, any_of, none_of) and leaf conditions with field comparisons using validated operators.
All fields are optional (Tier 2) but mutually exclusive validation ensures conditions are either leaf (field/operator/value) or logical (all_of/any_of/none_of).
- operator: ComparisonOperator | None¶
- all_of: List[RuleCondition] | None¶
- any_of: List[RuleCondition] | None¶
- none_of: List[RuleCondition] | None¶
- validate_condition_structure()[source]¶
Validate that condition is either a leaf or a logical operator.
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class LabelConfig(*, output_label_name, output_label_type, label_values, label_mapping, default_label, evaluation_mode='priority', sparse_representation=True)[source]¶
Bases:
BaseModelPydantic model for label configuration with multi-label support.
Supports three modes via output_label_type: - ‘binary’: Single binary column - ‘multiclass’: Single multiclass column - ‘multilabel’: Multiple columns (new)
Follows three-tier design: - Tier 1: Required user inputs - Tier 2: Optional user inputs with defaults
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class FieldConfig(*, required_fields, field_types, optional_fields=<factory>)[source]¶
Bases:
BaseModelPydantic model for field configuration.
Defines the schema of fields that can be referenced in rules.
Follows three-tier design: - Tier 1: Required user inputs - Tier 2: Optional user inputs with defaults
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class RuleDefinition(*, name, priority, conditions, output_label, enabled=True, description='')[source]¶
Bases:
BaseModelPydantic model for a single rule definition.
Defines a classification rule with conditions and output label. The rule_id is auto-generated and should not be provided by users.
Follows three-tier design: - Tier 1: Required user inputs - Tier 2: Optional user inputs with defaults - Tier 3: Derived fields (private, auto-generated)
- conditions: RuleCondition¶
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)¶
This function is meant to behave like a BaseModel method to initialize private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
- Parameters:
self (BaseModel) – The BaseModel instance.
context (Any) – The context.
- class RulesetDefinitionList(*, rules)[source]¶
Bases:
BaseModelPydantic model for a list of rule definitions with validation.
Ensures rule IDs are unique and provides utility methods.
- rules: List[RuleDefinition]¶
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class LabelRulesetGenerationConfig(*, author, bucket, role, region, service_name, pipeline_version, model_class='xgboost', current_date=<factory>, framework_version='2.1.0', py_version='py310', source_dir=None, enable_caching=False, use_secure_pypi=False, max_runtime_seconds=172800, project_root_folder, processing_instance_count=1, processing_volume_size=500, processing_instance_type_large='ml.m5.4xlarge', processing_instance_type_small='ml.m5.2xlarge', use_large_processing_instance=False, skip_volume_kms=None, processing_source_dir=None, processing_entry_point='label_ruleset_generation.py', processing_script_arguments=None, processing_framework_version='1.2-1', label_config, rule_definitions, ruleset_configs_path='ruleset_configs', enable_field_validation=True, enable_label_validation=True, enable_logic_validation=True, enable_rule_optimization=True, **extra_data)[source]¶
Bases:
ProcessingStepConfigBaseConfiguration for Label Ruleset Generation step using three-tier design.
This step validates and optimizes user-defined classification rules for transparent, maintainable rule-based label mapping in ML training pipelines.
Tier 1: Essential user inputs (required) Tier 2: System inputs with defaults (optional) Tier 3: Derived fields (private with property access)
- label_config: LabelConfig¶
- rule_definitions: RulesetDefinitionList¶
- property resolved_ruleset_configs_path: str | None¶
Get resolved absolute path for ruleset configurations.
Uses effective_source_dir from base class for consistency.
- Returns:
Absolute path to ruleset configs directory, or None if not configured
- Raises:
ValueError – If ruleset_configs_path is set but source directory cannot be resolved
- generate_ruleset_config_bundle()[source]¶
Generate complete ruleset configuration bundle.
Creates JSON files for non-None configurations in the configured ruleset_configs_path: - label_config.json (if label_config is not None) - field_config.json (if field_config is not None) - ruleset.json (if rule_definitions is not None)
Only generates files for configurations that are provided.
- Raises:
ValueError – If ruleset_configs_path is not configured
- get_public_init_fields()[source]¶
Override get_public_init_fields to include ruleset-specific fields.
- Returns:
Dictionary of field names to values for child initialization
- Return type:
Dict[str, Any]
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'allow', 'protected_namespaces': (), 'validate_assignment': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_post_init(context, /)¶
This function is meant to behave like a BaseModel method to initialize private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
- Parameters:
self (BaseModel) – The BaseModel instance.
context (Any) – The context.
- load_rules_from_json(json_data)[source]¶
Load rules from JSON string with validation.
- Parameters:
json_data (str) – JSON string containing rule definitions
- Returns:
Validated RulesetDefinitionList
- Raises:
ValueError – If JSON is invalid or rules don’t validate
pydantic.ValidationError – If rule data doesn’t match schema
- Return type: