test_dataclasses.py 890 B

1234567891011121314151617181920212223242526272829303132333435
  1. #!/usr/bin/env python
  2. #
  3. # Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
  4. # Author: Anirudh Vegesana (avegesan@cs.stanford.edu)
  5. # Copyright (c) 2022-2024 The Uncertainty Quantification Foundation.
  6. # License: 3-clause BSD. The full license text is available at:
  7. # - https://github.com/uqfoundation/dill/blob/master/LICENSE
  8. """
  9. test pickling a dataclass
  10. """
  11. import dill
  12. import dataclasses
  13. def test_dataclasses():
  14. # Issue #500
  15. @dataclasses.dataclass
  16. class A:
  17. x: int
  18. y: str
  19. @dataclasses.dataclass
  20. class B:
  21. a: A
  22. a = A(1, "test")
  23. before = B(a)
  24. save = dill.dumps(before)
  25. after = dill.loads(save)
  26. assert before != after # classes don't match
  27. assert before == B(A(**dataclasses.asdict(after.a)))
  28. assert dataclasses.asdict(before) == dataclasses.asdict(after)
  29. if __name__ == '__main__':
  30. test_dataclasses()