Implement object_pairs_hook

This commit is contained in:
Joel Nothman 2012-09-23 19:37:28 +10:00
parent b06ed8eb75
commit 77942514db
5 changed files with 61 additions and 22 deletions

View file

@ -26,6 +26,16 @@ def test_decode_hook():
unpacked = unpackb(packed, object_hook=_decode_complex)
eq_(unpacked[1], 1+2j)
def test_decode_pairs_hook():
packed = packb([3, {1: 2, 3: 4}])
prod_sum = 1 * 2 + 3 * 4
unpacked = unpackb(packed, object_pairs_hook=lambda l: sum(k * v for k, v in l))
eq_(unpacked[1], prod_sum)
@raises(ValueError)
def test_only_one_obj_hook():
unpackb('', object_hook=lambda x: x, object_pairs_hook=lambda x: x)
@raises(ValueError)
def test_bad_hook():
packed = packb([3, 1+2j], default=lambda o: o)

View file

@ -111,10 +111,9 @@ def test_odict():
seq = [(b'one', 1), (b'two', 2), (b'three', 3), (b'four', 4)]
od = odict(seq)
assert_equal(unpackb(packb(od)), dict(seq))
# After object_pairs_hook is implemented.
#def pair_hook(seq):
# return seq
#assert_equal(unpackb(packb(od), object_pairs_hook=pair_hook), seq)
def pair_hook(seq):
return seq
assert_equal(unpackb(packb(od), object_pairs_hook=pair_hook), seq)
if __name__ == '__main__':