From 4cc824526b1a6ef83647c27521ac1795173a3f63 Mon Sep 17 00:00:00 2001 From: jan Date: Sun, 17 Apr 2022 19:04:13 -0700 Subject: [PATCH] fix deepcopy for locked shapes --- masque/shapes/arc.py | 3 ++- masque/shapes/circle.py | 3 ++- masque/shapes/ellipse.py | 3 ++- masque/shapes/path.py | 3 ++- masque/shapes/polygon.py | 3 ++- masque/shapes/text.py | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/masque/shapes/arc.py b/masque/shapes/arc.py index fbde98d..b928981 100644 --- a/masque/shapes/arc.py +++ b/masque/shapes/arc.py @@ -201,7 +201,8 @@ class Arc(Shape, metaclass=AutoSlots): def __deepcopy__(self, memo: Dict = None) -> 'Arc': memo = {} if memo is None else memo - new = copy.copy(self).unlock() + new = copy.copy(self) + Shape.unlock(new) new._offset = self._offset.copy() new._radii = self._radii.copy() new._angles = self._angles.copy() diff --git a/masque/shapes/circle.py b/masque/shapes/circle.py index 505f009..b0ddf6d 100644 --- a/masque/shapes/circle.py +++ b/masque/shapes/circle.py @@ -80,7 +80,8 @@ class Circle(Shape, metaclass=AutoSlots): def __deepcopy__(self, memo: Dict = None) -> 'Circle': memo = {} if memo is None else memo - new = copy.copy(self).unlock() + new = copy.copy(self) + Shape.unlock(new) new._offset = self._offset.copy() new._annotations = copy.deepcopy(self._annotations) new.set_locked(self.locked) diff --git a/masque/shapes/ellipse.py b/masque/shapes/ellipse.py index a018a79..52eabda 100644 --- a/masque/shapes/ellipse.py +++ b/masque/shapes/ellipse.py @@ -131,7 +131,8 @@ class Ellipse(Shape, metaclass=AutoSlots): def __deepcopy__(self, memo: Dict = None) -> 'Ellipse': memo = {} if memo is None else memo - new = copy.copy(self).unlock() + new = copy.copy(self) + Shape.unlock(new) new._offset = self._offset.copy() new._radii = self._radii.copy() new._annotations = copy.deepcopy(self._annotations) diff --git a/masque/shapes/path.py b/masque/shapes/path.py index 44d18de..c2dd3fb 100644 --- a/masque/shapes/path.py +++ b/masque/shapes/path.py @@ -191,7 +191,8 @@ class Path(Shape, metaclass=AutoSlots): def __deepcopy__(self, memo: Dict = None) -> 'Path': memo = {} if memo is None else memo - new = copy.copy(self).unlock() + new = copy.copy(self) + Shape.unlock(new) new._offset = self._offset.copy() new._vertices = self._vertices.copy() new._cap = copy.deepcopy(self._cap, memo) diff --git a/masque/shapes/polygon.py b/masque/shapes/polygon.py index c3a8a6a..84c2f47 100644 --- a/masque/shapes/polygon.py +++ b/masque/shapes/polygon.py @@ -110,7 +110,8 @@ class Polygon(Shape, metaclass=AutoSlots): def __deepcopy__(self, memo: Optional[Dict] = None) -> 'Polygon': memo = {} if memo is None else memo - new = copy.copy(self).unlock() + new = copy.copy(self) + Shape.unlock(new) new._offset = self._offset.copy() new._vertices = self._vertices.copy() new._annotations = copy.deepcopy(self._annotations) diff --git a/masque/shapes/text.py b/masque/shapes/text.py index 4e94d84..5e3bedb 100644 --- a/masque/shapes/text.py +++ b/masque/shapes/text.py @@ -106,7 +106,8 @@ class Text(RotatableImpl, Shape, metaclass=AutoSlots): def __deepcopy__(self, memo: Dict = None) -> 'Text': memo = {} if memo is None else memo - new = copy.copy(self).unlock() + new = copy.copy(self) + Shape.unlock(new) new._offset = self._offset.copy() new._mirrored = copy.deepcopy(self._mirrored, memo) new._annotations = copy.deepcopy(self._annotations)