| Viewing file:  test_selected.py (3.14 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#!/usr/bin/env python#
 # Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
 # Copyright (c) 2008-2016 California Institute of Technology.
 # Copyright (c) 2016-2023 The Uncertainty Quantification Foundation.
 # License: 3-clause BSD.  The full license text is available at:
 #  - https://github.com/uqfoundation/dill/blob/master/LICENSE
 """
 testing some selected object types
 """
 
 import dill
 dill.settings['recurse'] = True
 
 verbose = False
 
 def test_dict_contents():
 c = type.__dict__
 for i,j in c.items():
 #try:
 ok = dill.pickles(j)
 #except Exception:
 #  print ("FAIL: %s with %s" % (i, dill.detect.errors(j)))
 if verbose: print ("%s: %s, %s" % (ok, type(j), j))
 assert ok
 if verbose: print ("")
 
 def _g(x): yield x;
 
 def _f():
 try: raise
 except Exception:
 from sys import exc_info
 e, er, tb = exc_info()
 return er, tb
 
 class _d(object):
 def _method(self):
 pass
 
 from dill import objects
 from dill import load_types
 load_types(pickleable=True,unpickleable=False)
 _newclass = objects['ClassObjectType']
 # some clean-up #FIXME: should happen internal to dill
 objects['TemporaryFileType'].close()
 objects['TextWrapperType'].close()
 objects['BufferedRandomType'].close()
 objects['BufferedReaderType'].close()
 objects['BufferedWriterType'].close()
 objects['FileType'].close()
 del objects
 
 # getset_descriptor for new-style classes (fails on '_method', if not __main__)
 def test_class_descriptors():
 d = _d.__dict__
 for i in d.values():
 ok = dill.pickles(i)
 if verbose: print ("%s: %s, %s" % (ok, type(i), i))
 assert ok
 if verbose: print ("")
 od = _newclass.__dict__
 for i in od.values():
 ok = dill.pickles(i)
 if verbose: print ("%s: %s, %s" % (ok, type(i), i))
 assert ok
 if verbose: print ("")
 
 # (__main__) class instance for new-style classes
 def test_class():
 o = _d()
 oo = _newclass()
 ok = dill.pickles(o)
 if verbose: print ("%s: %s, %s" % (ok, type(o), o))
 assert ok
 ok = dill.pickles(oo)
 if verbose: print ("%s: %s, %s" % (ok, type(oo), oo))
 assert ok
 if verbose: print ("")
 
 # frames, generators, and tracebacks (all depend on frame)
 def test_frame_related():
 g = _g(1)
 f = g.gi_frame
 e,t = _f()
 _is = lambda ok: ok
 ok = dill.pickles(f)
 if verbose: print ("%s: %s, %s" % (ok, type(f), f))
 assert not ok
 ok = dill.pickles(g)
 if verbose: print ("%s: %s, %s" % (ok, type(g), g))
 assert _is(not ok) #XXX: dill fails
 ok = dill.pickles(t)
 if verbose: print ("%s: %s, %s" % (ok, type(t), t))
 assert not ok #XXX: dill fails
 ok = dill.pickles(e)
 if verbose: print ("%s: %s, %s" % (ok, type(e), e))
 assert ok
 if verbose: print ("")
 
 def test_typing():
 import typing
 x = typing.Any
 assert x == dill.copy(x)
 x = typing.Dict[int, str]
 assert x == dill.copy(x)
 x = typing.List[int]
 assert x == dill.copy(x)
 x = typing.Tuple[int, str]
 assert x == dill.copy(x)
 x = typing.Tuple[int]
 assert x == dill.copy(x)
 x = typing.Tuple[()]
 assert x == dill.copy(x)
 x = typing.Tuple[()].copy_with(())
 assert x == dill.copy(x)
 return
 
 
 if __name__ == '__main__':
 test_frame_related()
 test_dict_contents()
 test_class()
 test_class_descriptors()
 test_typing()
 
 |