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

  1. Iteration Support - Forward iteration - Reverse iteration - Value filtering

  2. Sequence Operations - Index access - Slicing - Length calculation

  3. Advanced Features - Custom iterators - Iteration order - Conditional iteration