Slice

The slice operation selects a subset of values from a parent state, similar to Python list slicing.

Using Index Notation

The most convenient way is Python’s slice syntax:

from statetracker import Manager, State

with Manager():
    A = State(num_values=10, name="A")

    B = A[2:5]   # Values 2, 3, 4
    C = A[::2]   # Even values: 0, 2, 4, 6, 8
    D = A[::-1]  # Reversed: 9, 8, 7, ..., 0
    E = A[3]     # Single value: 3

    print(f"B (A[2:5]) has {B.num_values} values")
    print(f"C (A[::2]) has {C.num_values} values")
    print(f"D (A[::-1]) has {D.num_values} values")
    print(f"E (A[3]) has {E.num_values} values")
B (A[2:5]) has 3 values
C (A[::2]) has 5 values
D (A[::-1]) has 10 values
E (A[3]) has 1 values

Using slice()

The slice() function provides the same functionality:

from statetracker import slice

with Manager():
    A = State(num_values=10, name="A")

    B = slice(A, start=2, stop=5)  # Values 2, 3, 4
    C = slice(A, step=2)           # Even values

    print(f"B has {B.num_values} values")
    print(f"C has {C.num_values} values")
B has 3 values
C has 5 values