-
-
Notifications
You must be signed in to change notification settings - Fork 33.2k
Closed
Closed
Copy link
Labels
3.12only security fixesonly security fixes3.13bugs and security fixesbugs and security fixes3.14bugs and security fixesbugs and security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
With #111815, any exception raised inside the __init__ method of an enum class 1 is expected to be:
- instantiable (not the case with Pydantic
ValidationErrors, see Python 3.12 Enum Class Validated Initialization TypeError pydantic/pydantic#10593) - instantiable and expected to take a single argument.
Lines 556 to 566 in 120b891
| try: | |
| exc = None | |
| classdict['_%s__in_progress' % cls] = True | |
| enum_class = super().__new__(metacls, cls, bases, classdict, **kwds) | |
| classdict['_%s__in_progress' % cls] = False | |
| delattr(enum_class, '_%s__in_progress' % cls) | |
| except Exception as e: | |
| # since 3.12 the line "Error calling __set_name__ on '_proto_member' instance ..." | |
| # is tacked on to the error instead of raising a RuntimeError | |
| # recreate the exception to discard | |
| exc = type(e)(str(e)) |
Meaning the following raises a TypeError instead of the expected MyValueError:
class MyValueError(ValueError):
def __init__(self, t: str, v: int) -> None:
self.t = t
self.v = v
class ValidatedEnum(Enum):
def __init__(self, value):
raise MyValueError("", 1)
class MyValidatedEnum(ValidatedEnum):
FOO = "foo"
# TypeError: MyValueError.__init__() missing 1 required positional argument: 'v'CPython versions tested on:
3.12
Operating systems tested on:
Linux
Linked PRs
- gh-125259: Fix error notes removal in enum initialization #125647
- [3.13] gh-125259: Fix error notes removal in enum initialization (GH-125647) #125858
- [3.12] gh-125259: Fix error notes removal in enum initialization (GH-125647) #125953
Footnotes
Metadata
Metadata
Assignees
Labels
3.12only security fixesonly security fixes3.13bugs and security fixesbugs and security fixes3.14bugs and security fixesbugs and security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error