From f0344b83b3329e0bf74abda3e8c70add75d06aa9 Mon Sep 17 00:00:00 2001 From: Emmanuel Ferdman Date: Mon, 12 Jan 2026 17:21:13 +0200 Subject: [PATCH] [xmltodict] Fix false positive for namespaces with None values (#15245) --- stubs/xmltodict/@tests/test_cases/check_namespaces.py | 6 ++++++ stubs/xmltodict/xmltodict.pyi | 10 +++++----- 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 stubs/xmltodict/@tests/test_cases/check_namespaces.py diff --git a/stubs/xmltodict/@tests/test_cases/check_namespaces.py b/stubs/xmltodict/@tests/test_cases/check_namespaces.py new file mode 100644 index 000000000..e58eda2bb --- /dev/null +++ b/stubs/xmltodict/@tests/test_cases/check_namespaces.py @@ -0,0 +1,6 @@ +from __future__ import annotations + +import xmltodict + +ns: dict[str, None] = {"http://example.com/": None} +xmltodict.parse("", namespaces=ns) diff --git a/stubs/xmltodict/xmltodict.pyi b/stubs/xmltodict/xmltodict.pyi index 654c1ccc5..937db619e 100644 --- a/stubs/xmltodict/xmltodict.pyi +++ b/stubs/xmltodict/xmltodict.pyi @@ -25,7 +25,7 @@ class _DictSAXHandler: dict_constructor: type strip_whitespace: bool namespace_separator: str - namespaces: dict[str, str] | None + namespaces: Mapping[str, str | None] | None namespace_declarations: dict[str, str] force_list: bool | Container[str] | Callable[[tuple[str, _AttrDict | None], str, str], bool] | None comment_key: str @@ -42,7 +42,7 @@ class _DictSAXHandler: dict_constructor: type = ..., strip_whitespace: bool = True, namespace_separator: str = ":", - namespaces: dict[str, str] | None = None, + namespaces: Mapping[str, str | None] | None = None, force_list: bool | Container[str] | Callable[[tuple[str, _AttrDict | None], str, str], bool] | None = None, comment_key: str = "#comment", ) -> None: ... @@ -72,7 +72,7 @@ def parse( postprocessor: Callable[[list[tuple[str, _AttrDict | None]], str, _AttrValue], tuple[str, _AttrValue]] | None = None, dict_constructor: type = ..., strip_whitespace: bool = True, - namespaces: dict[str, str] | None = None, + namespaces: Mapping[str, str | None] | None = None, force_list: bool | Container[str] | Callable[[tuple[str, _AttrDict | None], str, str], bool] | None = None, comment_key: str = "#comment", ) -> dict[str, Any]: ... @@ -95,7 +95,7 @@ def unparse( newl: str = "\n", indent: str | int = "\t", namespace_separator: str = ":", - namespaces: Mapping[str, str] | None = None, + namespaces: Mapping[str, str | None] | None = None, expand_iter: str | None = None, ) -> None: ... @overload @@ -117,6 +117,6 @@ def unparse( newl: str = "\n", indent: str | int = "\t", namespace_separator: str = ":", - namespaces: Mapping[str, str] | None = None, + namespaces: Mapping[str, str | None] | None = None, expand_iter: str | None = None, ) -> str: ...