From 17aef51a8abc39344aad21b4f01fe64c0372e5d1 Mon Sep 17 00:00:00 2001 From: Noam Kushinsky Date: Mon, 3 Aug 2026 12:08:38 +0300 Subject: [PATCH 1/2] Fix computed field inheritance with pydantic 2.13 --- pydantic_xml/fields.py | 9 +++++++++ tests/test_computed_fields.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/pydantic_xml/fields.py b/pydantic_xml/fields.py index 9f916b7..a262a7d 100644 --- a/pydantic_xml/fields.py +++ b/pydantic_xml/fields.py @@ -239,6 +239,15 @@ def __post_init__(self) -> None: if config.REGISTER_NS_PREFIXES and self.nsmap: utils.register_nsmap(self.nsmap) + def __copy__(self) -> 'ComputedXmlEntityInfo': + return dc.replace( + self, + examples=self.examples.copy() if isinstance(self.examples, list) else self.examples, + json_schema_extra=self.json_schema_extra.copy() + if isinstance(self.json_schema_extra, dict) + else self.json_schema_extra, + ) + PropertyT = typing.TypeVar('PropertyT') diff --git a/tests/test_computed_fields.py b/tests/test_computed_fields.py index 6332fd9..16f1e2a 100644 --- a/tests/test_computed_fields.py +++ b/tests/test_computed_fields.py @@ -42,6 +42,22 @@ def attr2(self) -> str: assert_xml_equal(actual_xml, xml) +def test_inherited_computed_attr(): + class BaseModel(BaseXmlModel): + @computed_attr + def attr(self) -> str: + return 'text' + + class TestModel(BaseModel, tag='model'): + pass + + xml = ''' + + ''' + + assert_xml_equal(TestModel().to_xml(), xml) + + def test_computed_elements(): class TestModel(BaseXmlModel, tag='model'): @computed_element(tag='element1') @@ -65,6 +81,24 @@ def element2(self) -> str: assert_xml_equal(actual_xml, xml) +def test_inherited_computed_element(): + class BaseModel(BaseXmlModel): + @computed_element + def element(self) -> str: + return 'text' + + class TestModel(BaseModel, tag='model'): + pass + + xml = ''' + + text + + ''' + + assert_xml_equal(TestModel().to_xml(), xml) + + def test_computed_nillable_elements(): class TestModel(BaseXmlModel, tag='model'): @computed_element(tag='element1', nillable=True) From dae97484b8d8c13bc02499a77e8a203c528f437e Mon Sep 17 00:00:00 2001 From: Dmitry Pershin Date: Sat, 8 Aug 2026 13:49:02 +0500 Subject: [PATCH 2/2] bump version 2.21.1. --- CHANGELOG.rst | 6 ++++++ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index ad8a461..5466401 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,12 @@ Changelog ========= +2.21.1 (2026-08-08) +------------------- + +- fix: computed field inheritance with pydantic 2.13 + + 2.21.0 (2026-05-17) ------------------- diff --git a/pyproject.toml b/pyproject.toml index 30c8005..52153c0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pydantic-xml" -version = "2.21.0" +version = "2.21.1" description = "pydantic xml extension" authors = ["Dmitry Pershin "] license = "Unlicense"