Enum Registry Module
The enum registry module provides a sophisticated framework for managing and combining multiple Enum classes with advanced functionality.
Key Components
Warning
When defining enum values, always use true.enum_registry.auto() instead of enum.auto().
Using enum.auto() from the standard library can cause crashes and unexpected behavior.
Correct usage:
from true.enum_registry import auto
class MyEnum(Enum):
VALUE_1 = auto() # Correct
VALUE_2 = auto() # Correct
Incorrect usage:
from enum import auto # Do not use this!
class MyEnum(Enum):
VALUE_1 = auto() # Will cause crashes
VALUE_2 = auto() # Will cause crashes
EnumRegistry: Main registry class for managing multiple Enum classesEnumMapping: Base class for enum mappings with caching supportEnumData: TypedDict for enum metadataEnumStats: Statistics about the enum registryBaseMetadata: Base class for metadataEnumMetadata: Enhanced metadata for enum members
Classes
EnumRegistry
- class true.enum_registry.EnumRegistry(enums=None, duplication=False)[source]
A sophisticated class for combining and managing multiple Enum classes with advanced functionality. Supports arithmetic operations between CombineEnums instances and Enum classes.
Features: - Combines multiple Enum classes into a single manageable entity - Supports arithmetic operations (addition, subtraction, etc.) - Supports iteration, comparison, and membership testing - Provides value validation and duplicate detection - Includes serialization/deserialization capabilities - Implements custom string representations - Supports advanced filtering and query operations
- Parameters:
enums (Iterable[Type[Enum]]) – Collection of Enum classes to combine
duplication (bool, optional) – Whether to allow duplicate values. Defaults to False.
- property metadata: EnumMetadata
Returns the metadata associated with the enum registry.
- _create_filtered_instance(members)[source]
Helper method to create new instance from filtered members.
- Return type:
- statistics()[source]
Get comprehensive statistics about the registry :returns: An EnumStats dataclass instance :rtype: EnumStats
- merge(*combine_enums)[source]
Merge multiple CombineEnums instances into a new instance.
- Return type:
- __add__(other)[source]
Add another CombineEnums instance or Enum class to this instance. Returns a new CombineEnums instance containing members from both operands.
- Parameters:
other (
Union[EnumRegistry,Type[Enum]]) – Another CombineEnums instance or Enum class- Returns:
A new instance containing combined members
- Return type:
- Raises:
IncompatibleTypesError – If other is not a CombineEnums instance or Enum class
- __sub__(other)[source]
Subtract another CombineEnums instance or Enum class from this instance. Returns a new CombineEnums instance containing members only from this instance.
- Parameters:
other (
Union[EnumRegistry,Type[Enum]]) – Another CombineEnums instance or Enum class- Returns:
A new instance containing remaining members
- Return type:
- Raises:
IncompatibleTypesError – If other is not a CombineEnums instance or Enum class
- format_debug()[source]
Comprehensive debug representation showing all internal state.
Returns a detailed multi-line string showing: - All enum classes - All members with their values - Value mappings - Statistics
- Return type:
- __radd__(other)
Add another CombineEnums instance or Enum class to this instance. Returns a new CombineEnums instance containing members from both operands.
- Parameters:
other (
Union[EnumRegistry,Type[Enum]]) – Another CombineEnums instance or Enum class- Returns:
A new instance containing combined members
- Return type:
- Raises:
IncompatibleTypesError – If other is not a CombineEnums instance or Enum class
- __rsub__(other)
Subtract another CombineEnums instance or Enum class from this instance. Returns a new CombineEnums instance containing members only from this instance.
- Parameters:
other (
Union[EnumRegistry,Type[Enum]]) – Another CombineEnums instance or Enum class- Returns:
A new instance containing remaining members
- Return type:
- Raises:
IncompatibleTypesError – If other is not a CombineEnums instance or Enum class
EnumMapping
EnumStats
EnumMetadata
- class true.enum_registry.EnumMetadata(description='', tags=None, deprecated=False, created_at=None, modified_at=None, *, aliases=None, category='', extra=<factory>)[source]
Metadata for enum members
- __init__(description='', tags=None, deprecated=False, created_at=None, modified_at=None, *, aliases=None, category='', extra=<factory>)
Exceptions
Examples
Basic Usage
from true.enum_registry import EnumRegistry
from enum import Enum
# Define enums
class UserStatus(Enum):
ACTIVE = "active"
INACTIVE = "inactive"
SUSPENDED = "suspended"
class OrderStatus(Enum):
PENDING = "pending"
PROCESSING = "processing"
SHIPPED = "shipped"
# Register enums
registry = EnumRegistry([UserStatus, OrderStatus])
# Or use decorator
@registry.dregister
class Priority(Enum):
LOW = 1
MEDIUM = 2
HIGH = 3
Advanced Features
# Arithmetic operations
combined = registry + another_registry
filtered = registry - excluded_registry
common = registry.intersect(other_registry)
# Filtering and querying
high_priority = registry.by_value_type(int)
active_states = registry.by_prefix("ACTIVE")
custom_filter = registry.by_predicate(lambda x: x.value > 1)
# Metadata management
registry.set_member_metadata(UserStatus.ACTIVE,
description="Active user state",
tags={"user", "state"})
# Statistics and debug info
stats = registry.statistics()
debug_info = registry.format_debug()
# Serialization
data = registry.to_dict()
Type Checking
def process_task(priority: int) -> None:
if priority not in registry:
raise ValueError(f"Invalid priority: {priority}")
if priority == Priority.HIGH:
print("Processing high priority task")
elif priority == Priority.MEDIUM:
print("Processing medium priority task")
else:
print("Processing low priority task")