gh-100098: [Enum] insist on actual tuples, no subclasses, for auto (GH-100099)

When checking for auto() instances, only top-level usage is supported,
which means either alone or as part of a regular tuple. Other
containers, such as lists, dicts, or namedtuples, will not have auto()
transformed into a value.
This commit is contained in:
Ethan Furman 2022-12-07 22:58:08 -08:00 committed by GitHub
parent cce8362960
commit ded02ca54d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 1 deletions

View file

@ -436,7 +436,9 @@ class _EnumDict(dict):
if isinstance(value, auto):
single = True
value = (value, )
if isinstance(value, tuple):
if type(value) is tuple and any(isinstance(v, auto) for v in value):
# insist on an actual tuple, no subclasses, in keeping with only supporting
# top-level auto() usage (not contained in any other data structure)
auto_valued = []
for v in value:
if isinstance(v, auto):