diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0dae42b..b344afe 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,12 @@ Changelog ========= +2.9.2 (2024-04-19) +------------------ + +- mypy plugin dataclass_transform decorated model bug fixed. See https://github.com/dapper91/pydantic-xml/issues/152#issuecomment-2057949479. + + 2.9.1 (2024-04-12) ------------------ diff --git a/pydantic_xml/mypy.py b/pydantic_xml/mypy.py index 84f22b6..d62e56a 100644 --- a/pydantic_xml/mypy.py +++ b/pydantic_xml/mypy.py @@ -4,6 +4,7 @@ from mypy.plugin import ClassDefContext, FunctionContext, Plugin, Type from pydantic.mypy import PydanticModelTransformer, PydanticPlugin +MODEL_METACLASS_FULLNAME = 'pydantic_xml.model.XmlModelMeta' ATTR_FULLNAME = 'pydantic_xml.model.attr' ELEMENT_FULLNAME = 'pydantic_xml.model.element' WRAPPED_FULLNAME = 'pydantic_xml.model.wrapped' @@ -15,6 +16,11 @@ def plugin(version: str) -> type[Plugin]: class PydanticXmlPlugin(PydanticPlugin): + def get_metaclass_hook(self, fullname: str) -> Optional[Callable[[ClassDefContext], None]]: + if fullname == MODEL_METACLASS_FULLNAME: + return self._pydantic_model_metaclass_marker_callback + return super().get_metaclass_hook(fullname) + def get_function_hook(self, fullname: str) -> Optional[Callable[[FunctionContext], Type]]: sym = self.lookup_fully_qualified(fullname) if sym and sym.fullname == ATTR_FULLNAME: diff --git a/pyproject.toml b/pyproject.toml index e20dada..ca54b95 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pydantic-xml" -version = "2.9.1" +version = "2.9.2" description = "pydantic xml extension" authors = ["Dmitry Pershin "] license = "Unlicense"