You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Enso-Bot/venv/Lib/site-packages/dill/tests/test_recursive.py

86 lines
2.1 KiB
Python

import dill
from functools import partial
from dill._dill import PY3, OLDER
_super = super
class obj1(object):
def __init__(self):
super(obj1, self).__init__()
class obj2(object):
def __init__(self):
_super(obj2, self).__init__()
class obj3(object):
super_ = super
def __init__(self):
obj3.super_(obj3, self).__init__()
def test_super():
assert dill.copy(obj1(), byref=True)
assert dill.copy(obj1(), byref=True, recurse=True)
#assert dill.copy(obj1(), recurse=True) #FIXME: fails __main__.py
assert dill.copy(obj1())
assert dill.copy(obj2(), byref=True)
assert dill.copy(obj2(), byref=True, recurse=True)
#assert dill.copy(obj2(), recurse=True) #FIXME: fails __main__.py
assert dill.copy(obj2())
assert dill.copy(obj3(), byref=True)
assert dill.copy(obj3(), byref=True, recurse=True)
#assert dill.copy(obj3(), recurse=True) #FIXME: fails __main__.py
assert dill.copy(obj3())
def get_trigger(model):
pass
class Machine(object):
def __init__(self):
self.child = Model()
self.trigger = partial(get_trigger, self)
self.child.trigger = partial(get_trigger, self.child)
class Model(object):
pass
def test_partial():
assert dill.copy(Machine(), byref=True)
assert dill.copy(Machine(), byref=True, recurse=True)
if not OLDER:
assert dill.copy(Machine(), recurse=True)
assert dill.copy(Machine())
class Machine2(object):
def __init__(self):
self.go = partial(self.member, self)
def member(self, model):
pass
class SubMachine(Machine2):
def __init__(self):
_super(SubMachine, self).__init__()
#super(SubMachine, self).__init__() #XXX: works, except for 3.1-3.3
def test_partials():
assert dill.copy(SubMachine(), byref=True)
assert dill.copy(SubMachine(), byref=True, recurse=True)
#if not OLDER: #FIXME: fails __main__.py
# assert dill.copy(SubMachine(), recurse=True)
assert dill.copy(SubMachine())
if __name__ == '__main__':
#print(('byref','_super','_recurse','_memo','_stop','OLDER'))
test_super()
test_partial()
test_partials()