| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- exit()
- from pickle import dumps, loads, _wrap, _unwrap
- def test(x):
- y = dumps(x)
- # print(y.decode())
- ok = x == loads(y)
- if not ok:
- _0 = _wrap(x)
- _1 = _unwrap(_0)
- print('='*50)
- print(_0)
- print('-'*50)
- print(_1)
- print('='*50)
- assert False
- test(1)
- test(1.0)
- test("hello")
- test(True)
- test(False)
- test(None)
- test([1, 2, 3])
- test((1, 2, 3))
- test({1: 2, 3: 4})
- class Foo:
- def __init__(self, x, y):
- self.x = x
- self.y = y
- def __eq__(self, __value: object) -> bool:
- if not isinstance(__value, Foo):
- return False
- return self.x == __value.x and self.y == __value.y
-
- def __repr__(self) -> str:
- return f"Foo({self.x}, {self.y})"
-
- test(Foo(1, 2))
- test(Foo([1, True], 'c'))
- from linalg import vec2
- test(vec2(1, 2))
- a = {1, 2, 3, 4}
- test(a)
- a = bytes([1, 2, 3, 4])
- test(a)
- a = [1, 2]
- d = {'k': a, 'j': a}
- c = loads(dumps(d))
- assert c['k'] is c['j']
- assert c == d
- # test circular references
- from collections import deque
- a = deque([1, 2, 3])
- test(a)
- a = [int, float, Foo]
- test(a)
|