test_registered.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env python
  2. #
  3. # Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
  4. # Copyright (c) 2022-2024 The Uncertainty Quantification Foundation.
  5. # License: 3-clause BSD. The full license text is available at:
  6. # - https://github.com/uqfoundation/dill/blob/master/LICENSE
  7. """
  8. test pickling registered objects
  9. """
  10. import dill
  11. from dill._objects import failures, registered, succeeds
  12. import warnings
  13. warnings.filterwarnings('ignore')
  14. def check(d, ok=True):
  15. res = []
  16. for k,v in d.items():
  17. try:
  18. z = dill.copy(v)
  19. if ok: res.append(k)
  20. except:
  21. if not ok: res.append(k)
  22. return res
  23. fails = check(failures)
  24. try:
  25. assert not bool(fails)
  26. except AssertionError as e:
  27. print("FAILS: %s" % fails)
  28. raise e from None
  29. register = check(registered, ok=False)
  30. try:
  31. assert not bool(register)
  32. except AssertionError as e:
  33. print("REGISTER: %s" % register)
  34. raise e from None
  35. success = check(succeeds, ok=False)
  36. try:
  37. assert not bool(success)
  38. except AssertionError as e:
  39. print("SUCCESS: %s" % success)
  40. raise e from None
  41. import builtins
  42. import types
  43. q = dill._dill._reverse_typemap
  44. p = {k:v for k,v in q.items() if k not in vars(builtins) and k not in vars(types)}
  45. diff = set(p.keys()).difference(registered.keys())
  46. try:
  47. assert not bool(diff)
  48. except AssertionError as e:
  49. print("DIFF: %s" % diff)
  50. raise e from None
  51. miss = set(registered.keys()).difference(p.keys())
  52. try:
  53. assert not bool(miss)
  54. except AssertionError as e:
  55. print("MISS: %s" % miss)
  56. raise e from None