ret = []
v = v[1:]
while True:
- i, v = loads(v, sets=sets)
+ i, v = loads(v, sets=sets, leapsecUTCAllow=leapsecUTCAllow)
if i == _EOC:
break
ret.append(i)
if len(k) == 0:
raise DecodeError("empty key")
raise DecodeError("unsorted keys")
- i, v = loads(v, sets=sets)
+ i, v = loads(v, sets=sets, leapsecUTCAllow=leapsecUTCAllow)
if i == _EOC:
raise DecodeError("unexpected EOC")
ret[k] = i
with self.assertRaises(ValueError) as err:
dumps(set((123,)))
self.assertEqual(str(err.exception), "set can contain only strings")
+
+ def test_sets_are_passed_through_containers(self) -> None:
+ test = {"deep": [{"in map": [set(("foo", "bar"))]}]}
+ encoded = dumps(test)
+ decoded, tail = loads(encoded, sets=True)
+ self.assertEqual(decoded, test)
from hypothesis import given
from hypothesis.strategies import datetimes
+from pyac import _byte
from pyac import DecodeError
from pyac import dumps
from pyac import Leapsecs
loads(bytes.fromhex("188000000065195F65"))
self.assertEqual(str(err.exception), "reserved TAI64 value is in use")
+ def test_leapsecUTCAllow_is_passed_through_containers(self) -> None:
+ leaped = _byte(TagTAI64) + (Leapsecs[8] + TAI64Base).to_bytes(8, "big")
+ raw, _ = loads(leaped)
+ self.assertIsInstance(raw, Raw)
+ decoded, _ = loads(leaped, leapsecUTCAllow=True)
+ self.assertIsInstance(decoded, datetime)
+ decoded, _ = loads(dumps([raw]), leapsecUTCAllow=True)
+ self.assertIsInstance(decoded[0], datetime)
+ decoded, _ = loads(dumps({"try that": [raw]}), leapsecUTCAllow=True)
+ self.assertIsInstance(decoded["try that"][0], datetime)
+
class TestTAI64N(TestCase):
@given(datetimes(), junk_st)