cursus.api.factory.field_extractor

Field Requirement Extraction Utilities

This module provides utilities for extracting field requirements from Pydantic configuration classes. The extracted requirements are returned as simple dictionaries that are easy to print and use in interactive configuration workflows.

Key Functions: - extract_field_requirements: Extract field requirements from Pydantic class - extract_non_inherited_fields: Extract only non-inherited fields from derived class - print_field_requirements: Print field requirements in user-friendly format - get_field_type_string: Convert field type annotation to readable string

extract_field_requirements(config_class)[source]

Extract field requirements directly from Pydantic V2 class definition.

Parameters:

config_class (Type[BaseModel]) – Pydantic V2 model class to extract fields from

Returns:

{

‘name’: str, # Field name ‘type’: str, # Field type as string ‘description’: str, # Field description from Pydantic Field() ‘required’: bool, # True for required fields, False for optional ‘default’: Any # Default value (only for optional fields)

}

Return type:

List of field requirement dictionaries with format

extract_field_constraints(config_class, field_name)[source]

Return the closed-value constraint for one field, or None if unconstrained.

Prefers the DRIFT-PROOF Literal/Enum annotation; falls back to scraping the allowed = {...} set from the field’s @field_validator source (the common cursus pattern). Shape: {allowed_values: [...], case_sensitive: bool, source: 'literal'|'validator'}.

extract_non_inherited_fields(derived_class, base_class)[source]

Extract fields from derived class that are not inherited from base class.

Parameters:
  • derived_class (Type[BaseModel]) – The derived Pydantic V2 model class

  • base_class (Type[BaseModel]) – The base Pydantic V2 model class to exclude fields from

Returns:

List of field requirement dictionaries for non-inherited fields only

Return type:

List[Dict[str, Any]]

print_field_requirements(requirements)[source]

Print field requirements in user-friendly format.

Parameters:

requirements (List[Dict[str, Any]]) – List of field requirement dictionaries

get_field_type_string(annotation)[source]

Convert field type annotation to readable string.

Parameters:

annotation (Any) – Type annotation from Pydantic field

Returns:

Human-readable string representation of the type

Return type:

str

categorize_field_requirements(requirements)[source]

Categorize field requirements into required and optional groups.

Parameters:

requirements (List[Dict[str, Any]]) – List of field requirement dictionaries

Returns:

Dictionary with ‘required’ and ‘optional’ keys containing respective field lists

Return type:

Dict[str, List[Dict[str, Any]]]

validate_field_value(field_req, value)[source]

Basic validation of field value against field requirement.

Parameters:
  • field_req (Dict[str, Any]) – Field requirement dictionary

  • value (Any) – Value to validate

Returns:

True if value is valid for the field, False otherwise

Return type:

bool