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

gh-115539: Allow enum.Flag to have None members (GH-115636)
(cherry picked from commit c2cb31bbe1)

Co-authored-by: Jason Zhang <yurenzhang2017@gmail.com>
This commit is contained in:
Miss Islington (bot) 2024-02-20 01:18:40 +01:00 committed by GitHub
parent eb745733fe
commit e4fd5d542a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 52 additions and 21 deletions

View file

@ -1007,6 +1007,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