Iterable Enums
This example demonstrates how to work with iterable enums in the True-Core enums and toolkits module.
Example Code
Iterable Enums Example
1"""
2Examples of iterable, iterator, and generator enum types.
3"""
4
5from typing import Iterator
6
7from true.enums_toolkits import IterableEnum, IteratorEnum
8
9
10def demo_iterable_enum():
11 """Demonstrate IterableEnum usage."""
12 print("=== Iterable Enum ===")
13
14 class Sequences(IterableEnum):
15 FIBONACCI = [1, 1, 2, 3, 5, 8, 13]
16 SQUARES = [1, 4, 9, 16, 25]
17 PRIMES = [2, 3, 5, 7, 11]
18
19 print("Sequence values:")
20 print(f" {Sequences.FIBONACCI}: {Sequences.FIBONACCI}")
21 print(f" {Sequences.SQUARES}: {Sequences.SQUARES}")
22
23 # Demonstrate type validation
24 print("\nTrying to create invalid IterableEnum...")
25 try:
26 class Invalid(IterableEnum):
27 NOT_ITERABLE = 42 # Not an iterable
28 except Exception as e:
29 print(f"Error: {e}")
30
31
32#
33def create_counter(start: int, end: int) -> Iterator[int]:
34 """Create a simple counter iterator."""
35 current = start
36 while current <= end:
37 yield current
38 current += 1
39
40
41#
42def demo_iterator_enum():
43 """Demonstrate IteratorEnum usage."""
44 print("\n=== Iterator Enum ===")
45
46 class Counters(IteratorEnum):
47 SMALL = create_counter(1, 5)
48 MEDIUM = create_counter(1, 10)
49 LARGE = create_counter(1, 15)
50
51 #
52 # Note: Iterators can only be consumed once
53 print("Counter ranges:")
54 print(f" {Counters.SMALL}: {list(Counters.SMALL)}")
55 print(f" {Counters.MEDIUM}: {list(Counters.MEDIUM)}")
56
57
58if __name__ == "__main__":
59 demo_iterable_enum()
60 demo_iterator_enum()
61 # demo_generator_enum()
62 # demo_combined_usage()
Key Features
Iteration Support - Forward iteration - Reverse iteration - Value filtering
Sequence Operations - Index access - Slicing - Length calculation
Advanced Features - Custom iterators - Iteration order - Conditional iteration