diff --git a/pydantic_xml/serializers/factories/heterogeneous.py b/pydantic_xml/serializers/factories/heterogeneous.py index 6c7241e..56b43f7 100644 --- a/pydantic_xml/serializers/factories/heterogeneous.py +++ b/pydantic_xml/serializers/factories/heterogeneous.py @@ -5,6 +5,7 @@ from pydantic_xml import errors, utils from pydantic_xml.element import XmlElementReader, XmlElementWriter +from pydantic_xml.serializers.factories import primitive from pydantic_xml.serializers.serializer import TYPE_FAMILY, SchemaTypeFamily, Serializer from pydantic_xml.typedefs import EntityLocation, Location @@ -109,6 +110,6 @@ def from_core_schema(schema: pcs.TupleSchema, ctx: Serializer.Context) -> Serial elif ctx.entity_location is None: return ElementSerializer.from_core_schema(schema, ctx) elif ctx.entity_location is EntityLocation.ATTRIBUTE: - raise errors.ModelFieldError(ctx.model_name, ctx.field_name, "attributes of collection types are not supported") + return primitive.from_core_schema(pcs.StringSchema(type="str"), ctx) else: raise AssertionError("unreachable") diff --git a/pydantic_xml/serializers/factories/homogeneous.py b/pydantic_xml/serializers/factories/homogeneous.py index 9855ef3..d2dbc7e 100644 --- a/pydantic_xml/serializers/factories/homogeneous.py +++ b/pydantic_xml/serializers/factories/homogeneous.py @@ -6,6 +6,7 @@ from pydantic_xml import errors, utils from pydantic_xml.element import XmlElementReader, XmlElementWriter +from pydantic_xml.serializers.factories import primitive from pydantic_xml.serializers.serializer import TYPE_FAMILY, SchemaTypeFamily, Serializer from pydantic_xml.typedefs import EntityLocation, Location @@ -27,7 +28,6 @@ def from_core_schema(cls, schema: HomogeneousCollectionTypeSchema, ctx: Serializ if isinstance(items_schema, list): assert len(items_schema) == 1, "unexpected items schema type" items_schema = items_schema[0] - inner_serializer = Serializer.parse_core_schema(items_schema, ctx) return cls(model_name, computed, inner_serializer) @@ -134,6 +134,6 @@ def from_core_schema(schema: HomogeneousCollectionTypeSchema, ctx: Serializer.Co elif ctx.entity_location is None: return ElementSerializer.from_core_schema(schema, ctx) elif ctx.entity_location is EntityLocation.ATTRIBUTE: - raise errors.ModelFieldError(ctx.model_name, ctx.field_name, "attributes of collection types are not supported") + return primitive.from_core_schema(pcs.StringSchema(type="str"), ctx) else: raise AssertionError("unreachable")