gh-115539: Allow enum.Flag to have None members (GH-115636)

This commit is contained in:
Jason Zhang 2024-02-19 22:36:11 +00:00 committed by GitHub
parent 6cd18c75a4
commit c2cb31bbe1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 52 additions and 21 deletions

View file

@ -1048,6 +1048,22 @@ class TestPlainEnumFunction(_EnumTests, _PlainOutputTests, unittest.TestCase):
class TestPlainFlagClass(_EnumTests, _PlainOutputTests, _FlagTests, unittest.TestCase):
enum_type = Flag
def test_none_member(self):
class FlagWithNoneMember(Flag):
A = 1
E = None
self.assertEqual(FlagWithNoneMember.A.value, 1)
self.assertIs(FlagWithNoneMember.E.value, None)
with self.assertRaisesRegex(TypeError, r"'FlagWithNoneMember.E' cannot be combined with other flags with |"):
FlagWithNoneMember.A | FlagWithNoneMember.E
with self.assertRaisesRegex(TypeError, r"'FlagWithNoneMember.E' cannot be combined with other flags with &"):
FlagWithNoneMember.E & FlagWithNoneMember.A
with self.assertRaisesRegex(TypeError, r"'FlagWithNoneMember.E' cannot be combined with other flags with \^"):
FlagWithNoneMember.A ^ FlagWithNoneMember.E
with self.assertRaisesRegex(TypeError, r"'FlagWithNoneMember.E' cannot be inverted"):
~FlagWithNoneMember.E
class TestPlainFlagFunction(_EnumTests, _PlainOutputTests, _FlagTests, unittest.TestCase):
enum_type = Flag