3. Enums (constants)

Intead of arbitrary hex numbers we prefer using properly typed enums. They are a bit longer to write, but the benefits (clarity and type safety) are worth it.

Re-export from the async library.

class trainlib.enums.ButtonPress(value)

Bases: enum.IntEnum

An enumeration.

SHORT = 1
LONG = 2
class trainlib.enums.ColorSensor(value)

Bases: enum.IntEnum

Color sensor identification.

FRONT = 1
BACK = 2
class trainlib.enums.MovementDirection(value)

Bases: enum.IntEnum

An enumeration.

CURRENT = 0
FORWARD = 1
BACKWARD = 2
STOP = 3
INVERT = 4
class trainlib.enums.SnapColorValue(value)

Bases: enum.IntFlag

Single snap color.

to_rgb_bytes() Tuple[int, int, int]

Convert the color’s value to 3 bytes (0-255) to form an RGB tuple.

classmethod random(including_black: bool = True)

Return a random color.

BLACK = 0
RED = 1
GREEN = 2
BLUE = 4
YELLOW = 3
MAGENTA = 5
CYAN = 6
WHITE = 7
UNKNOWN = 8
class trainlib.enums.SpeedLevel(value)

Bases: enum.IntEnum

An enumeration.

STOP = 0
LEVEL1 = 1
LEVEL2 = 2
LEVEL3 = 3
class trainlib.enums.SteeringDecision(value)

Bases: enum.IntFlag

An enumeration.

NONE = 0
LEFT = 1
RIGHT = 2
STRAIGHT = 4
STEER = 3
ALL = 7
class trainlib.enums.StopDrivingFeedbackType(value)

Bases: enum.IntEnum

Used only with train.stopDriving() function.

NONE = 0
MOVEMENT_STOP = 1
END_ROUTE = 2