Skip to content

Commit 357e9e9

Browse files
gh-106602: [Enum] Add __copy__ and __deepcopy__ (GH-106666)
1 parent e4b88c1 commit 357e9e9

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

Lib/enum.py

+6
Original file line numberDiff line numberDiff line change
@@ -1218,6 +1218,12 @@ def __hash__(self):
12181218
def __reduce_ex__(self, proto):
12191219
return self.__class__, (self._value_, )
12201220

1221+
def __deepcopy__(self,memo):
1222+
return self
1223+
1224+
def __copy__(self):
1225+
return self
1226+
12211227
# enum.property is used to provide access to the `name` and
12221228
# `value` attributes of enum members while keeping some measure of
12231229
# protection from modification, while still allowing for an enumeration

Lib/test/test_enum.py

+8
Original file line numberDiff line numberDiff line change
@@ -804,9 +804,17 @@ def test_copy(self):
804804
TE = self.MainEnum
805805
copied = copy.copy(TE)
806806
self.assertEqual(copied, TE)
807+
self.assertIs(copied, TE)
807808
deep = copy.deepcopy(TE)
808809
self.assertEqual(deep, TE)
810+
self.assertIs(deep, TE)
809811

812+
def test_copy_member(self):
813+
TE = self.MainEnum
814+
copied = copy.copy(TE.first)
815+
self.assertIs(copied, TE.first)
816+
deep = copy.deepcopy(TE.first)
817+
self.assertIs(deep, TE.first)
810818

811819
class _FlagTests:
812820

Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add __copy__ and __deepcopy__ in :mod:`enum`

0 commit comments

Comments
 (0)