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.
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
Bug report
Bug description:
With #111815, any exception raised inside the
__init__method of an enum class 1 is expected to be:ValidationErrors, see Python 3.12 Enum Class Validated Initialization TypeError pydantic/pydantic#10593)cpython/Lib/enum.py
Lines 556 to 566 in 120b891
Meaning the following raises a
TypeErrorinstead of the expectedMyValueError:CPython versions tested on:
3.12
Operating systems tested on:
Linux
Linked PRs
Footnotes
An example is documented as an example here. ↩