fix: enforce strict_map_key with object_pairs_hook

This commit is contained in:
Thomas Kowalski 2026-05-11 08:42:33 +02:00
parent 0d600a3328
commit e24d5de5ef
No known key found for this signature in database

View file

@ -518,9 +518,15 @@ class Unpacker:
self._unpack(EX_SKIP)
return
if self._object_pairs_hook is not None:
ret = self._object_pairs_hook(
(self._unpack(EX_CONSTRUCT), self._unpack(EX_CONSTRUCT)) for _ in range(n)
)
def _gen():
for _ in range(n):
key = self._unpack(EX_CONSTRUCT)
if self._strict_map_key and type(key) not in (str, bytes):
raise ValueError("%s is not allowed for map key" % str(type(key)))
yield key, self._unpack(EX_CONSTRUCT)
ret = self._object_pairs_hook(_gen())
else:
ret = {}
for _ in range(n):