Skip to content

Commit d2105a1

Browse files
[3.12] gh-120361: Add nonmember test with enum flags inside to test_enum (GH-120364) (#120512)
gh-120361: Add `nonmember` test with enum flags inside to `test_enum` (GH-120364) * gh-120361: Add `nonmember` test with enum flags inside to `test_enum` (cherry picked from commit 7fadfd8) Co-authored-by: Nikita Sobolev <[email protected]>
1 parent 1834453 commit d2105a1

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

Doc/library/enum.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ Data Types
517517

518518
``Flag`` is the same as :class:`Enum`, but its members support the bitwise
519519
operators ``&`` (*AND*), ``|`` (*OR*), ``^`` (*XOR*), and ``~`` (*INVERT*);
520-
the results of those operators are members of the enumeration.
520+
the results of those operations are (aliases of) members of the enumeration.
521521

522522
.. method:: __contains__(self, value)
523523

Lib/test/test_enum.py

+21
Original file line numberDiff line numberDiff line change
@@ -1455,6 +1455,27 @@ class SpamEnum(Enum):
14551455
spam = nonmember(SpamEnumIsInner)
14561456
self.assertTrue(SpamEnum.spam is SpamEnumIsInner)
14571457

1458+
def test_using_members_as_nonmember(self):
1459+
class Example(Flag):
1460+
A = 1
1461+
B = 2
1462+
ALL = nonmember(A | B)
1463+
1464+
self.assertEqual(Example.A.value, 1)
1465+
self.assertEqual(Example.B.value, 2)
1466+
self.assertEqual(Example.ALL, 3)
1467+
self.assertIs(type(Example.ALL), int)
1468+
1469+
class Example(Flag):
1470+
A = auto()
1471+
B = auto()
1472+
ALL = nonmember(A | B)
1473+
1474+
self.assertEqual(Example.A.value, 1)
1475+
self.assertEqual(Example.B.value, 2)
1476+
self.assertEqual(Example.ALL, 3)
1477+
self.assertIs(type(Example.ALL), int)
1478+
14581479
def test_nested_classes_in_enum_with_member(self):
14591480
"""Support locally-defined nested classes."""
14601481
class Outer(Enum):

0 commit comments

Comments
 (0)