dapper91 / pydantic-xml

python xml for humans
https://pydantic-xml.readthedocs.io
The Unlicense
141 stars 14 forks source link

Incompatibility with enums and pydantic 2.7.0 #182

Closed joshvote closed 2 months ago

joshvote commented 2 months ago

The latest pydantic 2.7.0 seems to break with enums (works fine with pydantic<=2.6.4). We have a model defined roughly as:

from enum import IntEnum
from pydantic_xml import element, BaseXmlModel

class MyEnum(IntEnum):
  VALUE = 1

class MyType(BaseXmlModel):
    v: MyEnum = element()

Upon loading the file we see:

../../miniconda3/envs/envoy311/lib/python3.11/site-packages/envoy_schema/server/schema/sep2/types.py:177: in <module>
    class UnitValueType(base.BaseXmlModelWithNS):
../../miniconda3/envs/envoy311/lib/python3.11/site-packages/pydantic_xml/model.py:268: in __new__
    cls.__build_serializer__()
../../miniconda3/envs/envoy311/lib/python3.11/site-packages/pydantic_xml/model.py:339: in __build_serializer__
    serializer = Serializer.parse_core_schema(
../../miniconda3/envs/envoy311/lib/python3.11/site-packages/pydantic_xml/serializers/serializer.py:180: in parse_core_schema
    return cls.select_serializer(schema, ctx)
../../miniconda3/envs/envoy311/lib/python3.11/site-packages/pydantic_xml/serializers/serializer.py:237: in select_serializer
    return factories.model.from_core_schema(schema, ctx)
../../miniconda3/envs/envoy311/lib/python3.11/site-packages/pydantic_xml/serializers/factories/model.py:420: in from_core_schema
    return ModelSerializer.from_core_schema(schema, ctx)
../../miniconda3/envs/envoy311/lib/python3.11/site-packages/pydantic_xml/serializers/factories/model.py:91: in from_core_schema
    fields_serializers[field_name] = Serializer.parse_core_schema(model_field['schema'], field_ctx)
../../miniconda3/envs/envoy311/lib/python3.11/site-packages/pydantic_xml/serializers/serializer.py:179: in parse_core_schema
    schema, ctx = cls.preprocess_schema(schema, ctx)
../../miniconda3/envs/envoy311/lib/python3.11/site-packages/pydantic_xml/serializers/serializer.py:186: in preprocess_schema
    raise ModelError(f"type {schema_type} is not supported")
E   pydantic_xml.errors.ModelError: type enum is not supported
dapper91 commented 2 months ago

Fixed in version 2.9.1.