From 25c9e591cb2da05f2948394bf1919f65a3676af6 Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Fri, 13 Dec 2019 21:16:43 -0800 Subject: [PATCH] shapes: unlock before modifying during deepcopy --- 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 49c8fbe..467db98 100644 --- a/masque/shapes/arc.py +++ b/masque/shapes/arc.py @@ -165,10 +165,11 @@ class Arc(Shape): def __deepcopy__(self, memo: Dict = None) -> 'Arc': memo = {} if memo is None else memo - new = copy.copy(self) + new = copy.copy(self).unlock() new._offset = self._offset.copy() new._radii = self._radii.copy() new._angles = self._angles.copy() + new.locked = self.locked return new def to_polygons(self, diff --git a/masque/shapes/circle.py b/masque/shapes/circle.py index f9b2192..8816787 100644 --- a/masque/shapes/circle.py +++ b/masque/shapes/circle.py @@ -58,8 +58,9 @@ class Circle(Shape): def __deepcopy__(self, memo: Dict = None) -> 'Circle': memo = {} if memo is None else memo - new = copy.copy(self) + new = copy.copy(self).unlock() new._offset = self._offset.copy() + new.locked = self.locked return new def to_polygons(self, diff --git a/masque/shapes/ellipse.py b/masque/shapes/ellipse.py index 7fe2c66..0d8f084 100644 --- a/masque/shapes/ellipse.py +++ b/masque/shapes/ellipse.py @@ -104,9 +104,10 @@ class Ellipse(Shape): def __deepcopy__(self, memo: Dict = None) -> 'Ellipse': memo = {} if memo is None else memo - new = copy.copy(self) + new = copy.copy(self).unlock() new._offset = self._offset.copy() new._radii = self._radii.copy() + new.locked = self.locked return new def to_polygons(self, diff --git a/masque/shapes/path.py b/masque/shapes/path.py index 7062fd5..b31c5c5 100644 --- a/masque/shapes/path.py +++ b/masque/shapes/path.py @@ -171,11 +171,12 @@ class Path(Shape): def __deepcopy__(self, memo: Dict = None) -> 'Path': memo = {} if memo is None else memo - new = copy.copy(self) + new = copy.copy(self).unlock() new._offset = self._offset.copy() new._vertices = self._vertices.copy() new._cap = copy.deepcopy(self._cap, memo) new._cap_extensions = copy.deepcopy(self._cap_extensions, memo) + new.locked = self.locked return new @staticmethod diff --git a/masque/shapes/polygon.py b/masque/shapes/polygon.py index 02ac891..3bbaeec 100644 --- a/masque/shapes/polygon.py +++ b/masque/shapes/polygon.py @@ -91,9 +91,10 @@ class Polygon(Shape): def __deepcopy__(self, memo: Dict = None) -> 'Polygon': memo = {} if memo is None else memo - new = copy.copy(self) + new = copy.copy(self).unlock() new._offset = self._offset.copy() new._vertices = self._vertices.copy() + new.locked = self.locked return new @staticmethod diff --git a/masque/shapes/text.py b/masque/shapes/text.py index 2d082d5..63ff2e1 100644 --- a/masque/shapes/text.py +++ b/masque/shapes/text.py @@ -94,9 +94,10 @@ class Text(Shape): def __deepcopy__(self, memo: Dict = None) -> 'Text': memo = {} if memo is None else memo - new = copy.copy(self) + new = copy.copy(self).unlock() new._offset = self._offset.copy() new._mirrored = copy.deepcopy(self._mirrored, memo) + new.locked = self.locked return new def to_polygons(self,