mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
bpo-35899: Fix Enum handling of empty and weird strings (GH-11891)
Co-authored-by: Maxwell <maxwellpxt@gmail.com> Co-authored-by: Stéphane Wirtel <stephane@wirtel.be> https://bugs.python.org/issue35899
This commit is contained in:
parent
8b50400fbe
commit
8b914d2767
3 changed files with 27 additions and 8 deletions
17
Lib/enum.py
17
Lib/enum.py
|
@ -19,18 +19,19 @@ def _is_descriptor(obj):
|
|||
|
||||
def _is_dunder(name):
|
||||
"""Returns True if a __dunder__ name, False otherwise."""
|
||||
return (name[:2] == name[-2:] == '__' and
|
||||
name[2:3] != '_' and
|
||||
name[-3:-2] != '_' and
|
||||
len(name) > 4)
|
||||
return (len(name) > 4 and
|
||||
name[:2] == name[-2:] == '__' and
|
||||
name[2] != '_' and
|
||||
name[-3] != '_')
|
||||
|
||||
|
||||
def _is_sunder(name):
|
||||
"""Returns True if a _sunder_ name, False otherwise."""
|
||||
return (name[0] == name[-1] == '_' and
|
||||
return (len(name) > 2 and
|
||||
name[0] == name[-1] == '_' and
|
||||
name[1:2] != '_' and
|
||||
name[-2:-1] != '_' and
|
||||
len(name) > 2)
|
||||
name[-2:-1] != '_')
|
||||
|
||||
|
||||
def _make_class_unpicklable(cls):
|
||||
"""Make the given class un-picklable."""
|
||||
|
@ -150,7 +151,7 @@ class EnumMeta(type):
|
|||
_order_ = classdict.pop('_order_', None)
|
||||
|
||||
# check for illegal enum names (any others?)
|
||||
invalid_names = set(enum_members) & {'mro', }
|
||||
invalid_names = set(enum_members) & {'mro', ''}
|
||||
if invalid_names:
|
||||
raise ValueError('Invalid enum member name: {0}'.format(
|
||||
','.join(invalid_names)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue