pyebus.types module
Type Engine.
- class pyebus.types.Type[source]
Bases:
object
Abstract Type.
- property comment
Get Comment on allowed values.
- class pyebus.types.EnumType(values)[source]
Bases:
Type
Enumeration of values.
Pure integer values are passed through, as they have an unknown coding.
>>> t = EnumType(('on', 'auto', 'off')) >>> t EnumType(('on', 'auto', 'off')) >>> t.values ('on', 'auto', 'off') >>> t.comment 'on, auto, off'
>>> t.encode('auto') 'auto' >>> t.encode(5) '5' >>> t.encode('5') '5' >>> t.encode('super') Traceback (most recent call last): ... ValueError: Unknown value 'super'. Allowed values are on, auto, off. >>> t.encode(None) '-'
>>> t.decode('-') is None True >>> t.decode('auto') 'auto' >>> t.decode('7') 7 >>> t.decode('super') Traceback (most recent call last): ... ValueError: Unknown value 'super'. Allowed values are on, auto, off.
- property values
Enumeration Values.
- property comment
Get Comment on allowed values.
- class pyebus.types.StrType(length=None)[source]
Bases:
Type
String with optional maximum length.
>>> t = StrType() >>> t StrType() >>> t.length is None True >>> t.encode('a string') 'a string' >>> t.decode('a string') 'a string' >>> t.comment is None True
With length:
>>> t = StrType(10) >>> t StrType(length=10) >>> t.length 10 >>> t.encode('a string') 'a string' >>> t.decode('a string') 'a string' >>> t.encode('a very long string') Traceback (most recent call last): ... ValueError: a very long string exceeds maximum length 10. >>> t.decode('a very long string') Traceback (most recent call last): ... ValueError: a very long string exceeds maximum length 10. >>> t.comment 'Up to 10 characters'
- property length
Length.
- property comment
Get Comment on allowed values.
- class pyebus.types.HexType(length=None)[source]
Bases:
Type
Space Separated Hex Value with an optional length in number of Bytes.
>>> t = HexType() >>> t.length is None True >>> t HexType() >>> t.decode('11 22 FF') (0x11, 0x22, 0xFF) >>> t.encode('0x11 0x22 0xFF') '11 22 FF' >>> t.encode('11 22 FF') '11 22 FF' >>> t.encode((0x11, 0x22, 0xFF)) '11 22 FF' >>> t.comment 'Hex Bytes'
With length:
>>> t = HexType(3) >>> t HexType(length=3) >>> t.length 3 >>> t.decode('11 22 FF') (0x11, 0x22, 0xFF) >>> t.decode('11 22') Traceback (most recent call last): ... ValueError: Hex value 11 22 has not expected length of 3 >>> t.encode((0x11, 0x22, 0xFF)) '11 22 FF' >>> t.encode((0x11, 0x22)) Traceback (most recent call last): ... ValueError: Hex value (17, 34) has not expected length of 3 >>> t.comment '3 Hex Bytes'
- property length
Width.
- property comment
Get Comment on allowed values.
- class pyebus.types.IntType(min_, max_, divider=None)[source]
Bases:
Type
Integer in the range of [min_, max_] with granularity of 1 / divider.
>>> t = IntType(-4, 3) >>> t IntType(-4, 3) >>> t.min_ -4 >>> t.max_ 3 >>> t.divider is None True >>> t.frac is None True >>> t.comment 'Integer within [-4:3]'
>>> t.decode('2') 2 >>> t.decode('-') is None True >>> t.decode('7') Traceback (most recent call last): ... ValueError: Value 7 exceeds upper limit of 3 >>> t.decode('-5') Traceback (most recent call last): ... ValueError: Value -5 deceeds lower limit of -4
>>> t.encode('2') 2 >>> t.encode(2) 2 >>> t.encode(None) '-' >>> t.encode(7) Traceback (most recent call last): ... ValueError: Value 7 exceeds upper limit of 3 >>> t.encode(-5) Traceback (most recent call last): ... ValueError: Value -5 deceeds lower limit of -4
With divider:
>>> t = IntType(-4, 3, divider=2) >>> t IntType(-4, 3, divider=2) >>> t.min_ -4 >>> t.max_ 3 >>> t.divider 2 >>> t.frac 0.5 >>> t.comment 'Float within [-4:3] with 0.5 fraction'
>>> t.decode('2') 2.0 >>> t.decode('-') is None True >>> t.decode('7') Traceback (most recent call last): ... ValueError: Value 7.0 exceeds upper limit of 3 >>> t.decode('-5') Traceback (most recent call last): ... ValueError: Value -5.0 deceeds lower limit of -4
>>> t.encode(2) 2.0 >>> t.encode(None) '-' >>> t.encode(7) Traceback (most recent call last): ... ValueError: Value 7.0 exceeds upper limit of 3 >>> t.encode(-5) Traceback (most recent call last): ... ValueError: Value -5.0 deceeds lower limit of -4
- property min_
Lower Limit.
- property max_
Upper Limit.
- property divider
Divider.
- property frac
Fraction.
- property comment
Get Comment on allowed values.
- class pyebus.types.BoolType[source]
Bases:
Type
Boolean Type.
>>> t = BoolType() >>> t BoolType() >>> t.comment '0 or 1'
>>> t.decode('0') False >>> t.decode('1') True >>> t.decode('-') is None True
>>> t.encode(0) 0 >>> t.encode(1) 1 >>> t.encode('0') 0 >>> t.encode('1') 1 >>> t.encode('false') 0 >>> t.encode('true') 1 >>> t.encode('FALSE') 0 >>> t.encode('TRUE') 1 >>> t.encode(None) '-' >>> t.encode('blub') Traceback (most recent call last): ... ValueError: blub is not a valid boolean
- property comment
Get Comment on allowed values.
- class pyebus.types.FloatType[source]
Bases:
Type
Floating Type.
>>> t = FloatType() >>> t FloatType() >>> t.comment 'Float' >>> t.decode('-') is None True >>> t.decode('0') 0.0 >>> t.decode('1.456') 1.456
>>> t.encode(15.6) '15.6' >>> t.encode(None) '-'
- property comment
Get Comment on allowed values.
- class pyebus.types.DateType[source]
Bases:
Type
Date Type.
>>> import datetime >>> t = DateType() >>> t DateType() >>> t.comment 'DAY.MONTH.YEAR'
>>> t.decode('30.12.2020') datetime.date(2020, 12, 30) >>> t.decode('-.-.-') is None True
>>> t.encode('30.12.2020') '30.12.2020' >>> t.encode(datetime.date(2020, 12, 30)) '30.12.2020' >>> t.encode(None) '-.-.-'
- property comment
Get Comment on allowed values.
- class pyebus.types.TimeType[source]
Bases:
Type
Time.
>>> t = TimeType() >>> t TimeType() >>> t.comment 'HOUR:MINUTE:SECOND' >>> t.decode('23:59:59') Time(23, 59, 59) >>> t.decode('-:-:-') is None True >>> t.encode('23:59:59') '23:59:59' >>> t.encode(Time(23, 59, 59)) '23:59:59' >>> t.encode(None) '-:-:-'
- property comment
Get Comment on allowed values.
- class pyebus.types.HourMinuteType(minres=None)[source]
Bases:
TimeType
Time.
- Keyword Arguments:
minres – Minute Resolution
>>> t = HourMinuteType() >>> t HourMinuteType() >>> t.minres is None True >>> t.comment 'HOUR:MINUTE' >>> t.decode('23:59') HourMinute(23, 59) >>> t.decode('-:-') is None True >>> t.encode('23:59') '23:59' >>> t.encode(HourMinute(23, 59)) '23:59' >>> t.encode(None) '-:-'
With Minimum Resolution
>>> t = HourMinuteType(minres=10) >>> t HourMinuteType(minres=10) >>> t.minres 10 >>> t.comment 'HOUR:MINUTE with 10min granularity' >>> t.decode('23:50') HourMinute(23, 50) >>> t.decode('-:-') is None True >>> t.decode('23:51') Traceback (most recent call last): ... ValueError: Minute of 23:51 must be multiple of 10 >>> t.encode('23:50') '23:50' >>> t.encode(HourMinute(23, 50)) '23:50' >>> t.encode(HourMinute(23, 52)) Traceback (most recent call last): ... ValueError: Minute of 23:52 must be multiple of 10 >>> t.encode(None) '-:-'
- property minres
Minute Resolution.
- property comment
Get Comment on allowed values.
- class pyebus.types.DateTimeType[source]
Bases:
Type
Date Time.
>>> t = DateTimeType() >>> t DateTimeType() >>> t.comment 'DAY.MONTH.YEAR HOUR:MINUTE:SECOND' >>> t.decode('30.12.2020 23:59:59') DateTime(2020, 12, 30, 23, 59, 59) >>> t.decode('-.-.- -:-:-') is None True >>> t.encode('30.12.2020 23:59:59') '30.12.2020 23:59:59' >>> t.encode(DateTime(2020, 12, 30, 23, 59, 59)) '30.12.2020 23:59:59' >>> t.encode(None) '-.-.- -:-:-'
- property comment
Get Comment on allowed values.
- class pyebus.types.WeekdayType[source]
Bases:
Type
Weekday Type.
>>> t = WeekdayType() >>> t.comment '' >>> t.decode('a') 'a' >>> t.encode('a') 'a'
- property comment
Get Comment on allowed values.
- class pyebus.types.PinType[source]
Bases:
Type
Pin.
>>> t = PinType() >>> t.comment '' >>> t.decode('a') 'a' >>> t.encode('a') 'a'
- property comment
Get Comment on allowed values.
- class pyebus.types.DateTime[source]
Bases:
datetime
DateTime.
>>> t = DateTime(2020, 12, 31, 23, 59, 59) >>> t DateTime(2020, 12, 31, 23, 59, 59) >>> str(t) '31.12.2020 23:59:59'
- class pyebus.types.Time[source]
Bases:
time
Time.
>>> t = Time(23, 59, 59) >>> t Time(23, 59, 59) >>> str(t) '23:59:59'