jsonmodels icon indicating copy to clipboard operation
jsonmodels copied to clipboard

no deepcopy

Open user706 opened this issue 7 years ago • 1 comments

"Bug": copy.deepcopy is not possible.

from jsonmodels import models, fields, validators
import copy

class A(models.Base):
    x = fields.IntField(required=True)

a1 = A(x = 1)
a2 = copy.deepcopy(a1)
print(a1.x)
print(a2.x)                # fails in this line

user706 avatar Jul 10 '18 11:07 user706

Here's a hack, that adds a function __deepcopy__ to class models.Base:

from jsonmodels import models, fields, validators
import copy

def deepcopy( self, memo ):
    return self.__class__(**self.to_struct())

models.Base.__deepcopy__ = deepcopy

class A(models.Base):
    x = fields.IntField(required=True)

a1 = A(x = 1)
a2 = copy.deepcopy(a1)
print(a1.x)
print(a2.x)
assert a1 == a2

user706 avatar Jul 10 '18 11:07 user706