From: Sergey Matveev Date: Wed, 20 Nov 2024 13:51:04 +0000 (+0300) Subject: Move external-TAI64 specific constant out X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b6fad6c05b91c4f5629904daa7452e0de454b1683cabba18eeace7028f4eaf5b;p=keks.git Move external-TAI64 specific constant out --- diff --git a/pyac/pyac.py b/pyac/pyac.py index 27c8a3d..3567155 100755 --- a/pyac/pyac.py +++ b/pyac/pyac.py @@ -160,7 +160,7 @@ def utc2tai(secs): secs += Leapsecs1972 + diff if secs in Leapsecs: secs += 1 - return secs + TAI64Base + return secs def dumps(v): @@ -176,7 +176,7 @@ def dumps(v): raise NotImplementedError("no FLOAT* support") if isinstance(v, datetime): secs = int(v.replace(tzinfo=timezone.utc).timestamp()) - secs = utc2tai(secs) + secs = utc2tai(secs) + TAI64Base if v.microsecond == 0: return _byte(TagTAI64) + secs.to_bytes(8, "big") return ( @@ -247,7 +247,6 @@ def tai2utc(secs, leapsecUTCAllow=False): :returns: UTC seconds, or None of TAI equals to leap second """ - secs -= TAI64Base diff = 0 for leapsec in Leapsecs: if secs < leapsec: @@ -306,7 +305,7 @@ def loads(v, sets=False, leapsecUTCAllow=False): asecs = int.from_bytes(v[1+8+4:1+8+4+4], "big") if asecs > 999999999: raise DecodeError("too many attoseconds") - secs = tai2utc(secs, leapsecUTCAllow) + secs = tai2utc(secs - TAI64Base, leapsecUTCAllow) if secs is None: return Raw(v[0], v[1:1+l]), v[1+l:] if (abs(secs) > (1 << 60)) or (asecs > 0) or ((nsecs % 1000) > 0):