]> Cypherpunks repositories - keks.git/commitdiff
Move external-TAI64 specific constant out
authorSergey Matveev <stargrave@stargrave.org>
Wed, 20 Nov 2024 13:51:04 +0000 (16:51 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 20 Nov 2024 13:51:04 +0000 (16:51 +0300)
pyac/pyac.py

index 27c8a3d3b90e1ce932bac9888ad1a86fa64584de68a26f0a5ce477b6e8a3eef9..3567155ef985b26d1e0322c04fd5b82143f483e897189d185eb34573a9a52536 100755 (executable)
@@ -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):