Files @ f13124540331
Branch filter:

Location: light9/light9/newtypes.py

drewp@bigasterisk.com
factor out typedValue, add many tests, and fail to get it to work
import decimal
from typing import NewType, Tuple, Type, TypeVar, Union, cast

from rdflib import URIRef
from rdflib.term import Node

ClientType = NewType('ClientType', str)
ClientSessionType = NewType('ClientSessionType', str)
Curve = NewType('Curve', URIRef)
OutputUri = NewType('OutputUri', URIRef)  # e.g. dmxA
DeviceUri = NewType('DeviceUri', URIRef)  # e.g. :aura2
DeviceClass = NewType('DeviceClass', URIRef)  # e.g. :Aura
DmxIndex = NewType('DmxIndex', int)  # 1..512
DmxMessageIndex = NewType('DmxMessageIndex', int)  # 0..511
DeviceAttr = NewType('DeviceAttr', URIRef)  # e.g. :rx
EffectClass = NewType('EffectClass', URIRef)  # e.g. effect:chase
EffectAttr = NewType('EffectAttr', URIRef)  # e.g. :chaseSpeed
NoteUri = NewType('NoteUri', URIRef)
OutputAttr = NewType('OutputAttr', URIRef)  # e.g. :xFine
OutputValue = NewType('OutputValue', int)  # byte in dmx message
Song = NewType('Song', URIRef)
UnixTime = NewType('UnixTime', float)

VT = TypeVar('VT', float, int, str)  # remove
HexColor = NewType('HexColor', str)
VTUnion = Union[float, int, HexColor]  # rename to ValueType
DeviceSetting = Tuple[DeviceUri, DeviceAttr,
                      # currently, floats and hex color strings
                      VTUnion]

# Alternate output range for a device. Instead of outputting 0.0 to
# 1.0, you can map that range into, say, 0.2 to 0.7
OutputRange = NewType('OutputRange', Tuple[float, float])