Skip to content

Commit

Permalink
fix: remove sequence schema make_default handling
Browse files Browse the repository at this point in the history
  • Loading branch information
dada-engineer committed Mar 18, 2024
1 parent 28a2133 commit 57ec1eb
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
8 changes: 4 additions & 4 deletions src/py_avro_schema/_schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -567,9 +567,6 @@ def data(self, names: NamesType) -> JSONObj:
"items": self.items_schema.data(names=names),
}

def make_default(self, py_default: Any) -> Any:
return [_schema_obj(default.__class__).make_default(default) for default in py_default]


class DictSchema(Schema):
"""An Avro map schema for a given Python mapping"""
Expand Down Expand Up @@ -907,7 +904,10 @@ def _record_field(self, name: str, py_field: pydantic.fields.FieldInfo) -> Recor

def make_default(self, py_default: Any) -> Any:
"""Return an Avro schema compliant default value for a given Python value"""
return {key: _schema_obj(value.__class__).make_default(value) for key, value in py_default}
try:
return {key: _schema_obj(value.__class__).make_default(value) for key, value in py_default}
except TypeNotSupportedError:
return py_default

def _annotation(self, field_name: str) -> Type:
"""
Expand Down
29 changes: 20 additions & 9 deletions tests/test_pydantic.py
Original file line number Diff line number Diff line change
Expand Up @@ -531,22 +531,33 @@ class Default(pydantic.BaseModel):

class PyType(pydantic.BaseModel):
default: Default = pydantic.Field(..., default_factory=Default)
defaults: list[Default] = pydantic.Field(..., default_factory=lambda: [Default()])

class Nested(pydantic.BaseModel):
py_type: PyType = pydantic.Field(..., default_factory=PyType)

expected = {
"fields": [
{
"default": {"field_a": "default_a"},
"name": "default",
"default": {"default": {"field_a": "default_a"}},
"name": "py_type",
"type": {
"fields": [{"default": "default_a", "name": "field_a", "type": "string"}],
"name": "Default",
"fields": [
{
"default": {"field_a": "default_a"},
"name": "default",
"type": {
"fields": [{"default": "default_a", "name": "field_a", "type": "string"}],
"name": "Default",
"type": "record",
},
}
],
"name": "PyType",
"type": "record",
},
},
{"default": [{"field_a": "default_a"}], "name": "defaults", "type": {"items": "Default", "type": "array"}},
}
],
"name": "PyType",
"name": "Nested",
"type": "record",
}
assert_schema(PyType, expected)
assert_schema(Nested, expected)

0 comments on commit 57ec1eb

Please sign in to comment.