]> Cypherpunks repositories - keks.git/commitdiff
Slight optimisation, reduce calls to .keys()
authorSergey Matveev <stargrave@stargrave.org>
Sat, 30 Nov 2024 19:26:04 +0000 (22:26 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sat, 30 Nov 2024 19:38:56 +0000 (22:38 +0300)
pyac/pyac.py

index 39b22d488beeba1771eb4af65462ac44d96cdfca9c8d4c2560786e4c515dc8f5..be55f31d928c0dba8acf81e37a193e4c8dfac0d188a2bd7ef932e47824bb27b6 100755 (executable)
@@ -217,11 +217,13 @@ def dumps(v):
         return dumps({i: None for i in v})
     if isinstance(v, dict):
         raws = [_byte(TagMap)]
-        if not all(isinstance(k, str) for k in v.keys()):
+        keys = v.keys()
+        if not all(isinstance(k, str) for k in keys):
             raise ValueError("map keys can be only strings")
-        for k in sorted(v.keys(), key=LenFirstSort):
-            if len(k) == 0:
-                raise ValueError("map keys can not be empty")
+        keys = sorted(keys, key=LenFirstSort)
+        if (len(keys) > 0) and len(keys[0]) == 0:
+            raise ValueError("map keys can not be empty")
+        for k in keys:
             raws.append(dumps(k))
             raws.append(dumps(v[k]))
         raws.append(_byte(TagEOC))