_EOC = object()
+_floats = {TagFloat16: 2, TagFloat32: 4, TagFloat64: 8, TagFloat128: 16, TagFloat256: 32}
+_tais = {TagTAI64: 8, TagTAI64N: 12, TagTAI64NA: 16}
def loads(v, sets=False):
if len(v) < 1+16:
raise NotEnoughData(1+16)
return UUID(bytes=v[1:1+16]), v[1+16:]
- floats = {TagFloat16: 2, TagFloat32: 4, TagFloat64: 8, TagFloat128: 16, TagFloat256: 32}
- if v[0] in floats:
- l = floats[v[0]]
+ if v[0] in _floats:
+ l = _floats[v[0]]
if len(v) < 1+l:
raise NotEnoughData(1+l)
return Raw(v[0], v[1:1+l]), v[1+l:]
- tais = {TagTAI64: 8, TagTAI64N: 12, TagTAI64NA: 16}
- if v[0] in tais:
- l = tais[v[0]]
+ if v[0] in _tais:
+ l = _tais[v[0]]
if len(v) < 1+l:
raise NotEnoughData(1+l)
secs = int.from_bytes(v[1:1+8], "big")
@multitable @columnfractions .5 .5
-@item 1970-01-01 TAI @tab @code{18 4000000000000000}
-@item 1970-01-01 UTC @tab @code{18 400000000000000A}
+@item 1970-01-01 00:00:00 TAI @tab @code{18 4000000000000000}
+@item 1970-01-01 00:00:00 UTC @tab @code{18 400000000000000A}
@item 1969-12-31 23:59:59 TAI @tab @code{18 3FFFFFFFFFFFFFFF}
+@item 1992-06-02 08:07:09 TAI @tab @code{18 400000002A2B2C2D}
+@item 1992-06-02 08:06:43 UTC @tab @code{18 400000002A2B2C2D}
@item 1997-10-03 18:15:19 TAI @tab @code{18 4000000034353637}
@item 1997-10-03 18:14:48 UTC @tab @code{18 4000000034353637}
-@item 2024-10-01 12:39:07 UTC @tab @code{18 4000000066FC17C0}
-@item 2024-10-01 12:39:07 UTC 123456 μs @tab @code{19 4000000066FC17C0075BCA00}
+@item 2024-11-20 12:19:08 921772500ns UTC @tab @code{19 40000000673DD3E136F121D4}
@end multitable