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
Enum Registration - Register enums with the registry - Access registered enums by name - Automatic enum type validation
Enum Lookup - Look up enums by name - Get all registered enums - Check if an enum is registered
Basic Operations - Register new enums - Retrieve registered enums - Remove enums from registry