Basic Enum Registry Usage

This example demonstrates the basic usage of the enum registry module.

Example Code

Basic Enum Registry Usage Example
  1"""
  2Basic usage examples of the EnumRegistry class.
  3"""
  4
  5from enum import Enum
  6
  7from true.enum_registry import EnumRegistry, EnumMetadata, auto
  8
  9
 10# Define some example enums
 11class Colors(Enum):
 12    RED = "red"
 13    GREEN = "green"
 14    BLUE = "blue"
 15
 16
 17class Sizes(Enum):
 18    SMALL = auto()
 19    MEDIUM = auto()
 20    LARGE = auto()
 21
 22
 23class Priorities(Enum):
 24    LOW = 1
 25    MEDIUM = 2
 26    HIGH = 3
 27
 28
 29def demo_basic_creation():
 30    """Demonstrate basic EnumRegistry creation and inspection."""
 31    print("=== Basic EnumRegistry Creation ===")
 32
 33    # Create registry with multiple enums
 34    registry = EnumRegistry([Sizes, Priorities])
 35
 36    print(f"Total members: {len(registry)}")
 37    print("\nRegistered enum classes:")
 38    for enum_class in registry.enum_classes:
 39        print(f"- {enum_class.__name__}")
 40
 41    print("\nAll members:")
 42    for member, metadata in registry:
 43        print(f"- {member} = {metadata}")
 44
 45
 46def demo_metadata():
 47    """Demonstrate working with enum metadata."""
 48    print("\n=== Enum Metadata ===")
 49
 50    # Create registry with metadata
 51    metadata = EnumMetadata(
 52        description="Color values",
 53        tags={"warm", "cool"}
 54    )
 55
 56    registry = EnumRegistry({Colors: metadata})
 57    print(registry)
 58    # Add metadata for specific members
 59    registry.set_member_metadata(
 60        Colors.RED,
 61        description="Primary red color",
 62        tags={"primary", "warm"},
 63        aliases=["crimson", "scarlet"]
 64    )
 65    print()
 66
 67    # # Display metadata
 68    print("Registry metadata:")
 69    print(f"Colors description: {registry.metadata[Colors].description}")
 70    print(f"Colors tags: {registry.metadata[Colors].tags}")
 71
 72    print("\nRED member metadata:")
 73    red_metadata = registry.get_member_metadata(Colors.RED)
 74    print(f"Description: {red_metadata}")
 75    print(f"Tags: {red_metadata}")
 76    print(f"Aliases: {red_metadata}")
 77
 78
 79def demo_member_access():
 80    """Demonstrate different ways to access enum members."""
 81    print("\n=== Member Access ===")
 82
 83    registry = EnumRegistry([Colors, Sizes, Priorities])
 84
 85    # Access by name
 86    print("Access by name:")
 87    red = registry.values.by(value="red")
 88    print(red)
 89    print(f"Found member: {red[0].name} = {red[0].value}")
 90
 91    # Search by pattern
 92    print("\nSearch by pattern:")
 93    medium_members = registry.names.search("MEDIUM")
 94    print(medium_members)
 95    for member in medium_members:
 96        print(f"Found member: {member.name} = {member.value}")
 97    #
 98    # # Filter by value type
 99    print("\nFilter by value type:")
100    filtered_registry = registry.filter.by_predicate(lambda member: isinstance(member.value, str))
101    print(filtered_registry)
102
103
104if __name__ == "__main__":
105    # demo_basic_creation()
106    demo_metadata()
107    demo_member_access()

Key Features

  1. Enum Registration - Register enums with the registry - Access registered enums by name - Automatic enum type validation

  2. Enum Lookup - Look up enums by name - Get all registered enums - Check if an enum is registered

  3. Basic Operations - Register new enums - Retrieve registered enums - Remove enums from registry