diff --git a/CHANGELOG.md b/CHANGELOG.md index d31fb5ab..f3a72ef9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [1.14.3](https://github.com/mkdocstrings/python/releases/tag/1.14.3) - 2025-02-04 + +[Compare with 1.14.2](https://github.com/mkdocstrings/python/compare/1.14.2...1.14.3) + +### Bug Fixes + +- Let dataclass implement `__init__` method, set extra fields in `get_options` ([477b9e4](https://github.com/mkdocstrings/python/commit/477b9e447ef9717c6edcb14bd4c53f9cacc555b8) by Timothée Mazzucotelli). + ## [1.14.2](https://github.com/mkdocstrings/python/releases/tag/1.14.2) - 2025-02-03 [Compare with 1.14.1](https://github.com/mkdocstrings/python/compare/1.14.1...1.14.2) diff --git a/src/mkdocstrings_handlers/python/config.py b/src/mkdocstrings_handlers/python/config.py index 5e444d27..fa8aa009 100644 --- a/src/mkdocstrings_handlers/python/config.py +++ b/src/mkdocstrings_handlers/python/config.py @@ -843,15 +843,6 @@ def _extract_extra(cls, data: dict[str, Any]) -> tuple[dict[str, Any], dict[str, copy = data.copy() return {name: copy.pop(name) for name in data if name not in field_names}, copy - # YORE: Bump 2: Remove block. - def __init__(self, **kwargs: Any) -> None: - """Initialize the instance.""" - extra_fields = self._extract_extra(kwargs) - for name, value in kwargs.items(): - object.__setattr__(self, name, value) - if extra_fields: - object.__setattr__(self, "_extra", extra_fields) - @classmethod def coerce(cls, **data: Any) -> MutableMapping[str, Any]: """Coerce data.""" diff --git a/src/mkdocstrings_handlers/python/handler.py b/src/mkdocstrings_handlers/python/handler.py index 7ef6b358..978488b3 100644 --- a/src/mkdocstrings_handlers/python/handler.py +++ b/src/mkdocstrings_handlers/python/handler.py @@ -186,12 +186,17 @@ def get_options(self, local_options: Mapping[str, Any]) -> HandlerOptions: extra = {**self.global_options.get("extra", {}), **local_options.get("extra", {})} options = {**self.global_options, **local_options, "extra": extra} - # YORE: Bump 2: Replace `, **unknown_extra` with `` within line. try: - return PythonOptions.from_data(**options, **unknown_extra) + # YORE: Bump 2: Replace `opts =` with `return` within line. + opts = PythonOptions.from_data(**options) except Exception as error: raise PluginError(f"Invalid options: {error}") from error + # YORE: Bump 2: Remove block. + for key, value in unknown_extra.items(): + object.__setattr__(opts, key, value) + return opts + def collect(self, identifier: str, options: PythonOptions) -> CollectorItem: # noqa: D102 module_name = identifier.split(".", 1)[0] unknown_module = module_name not in self._modules_collection