From 05b1114930a191c048ce3b5b4c50f1b747f2313c Mon Sep 17 00:00:00 2001 From: "Eugenio \"Jay\" Zuccarelli" <11176606+jayzuccarelli@users.noreply.github.com> Date: Tue, 29 Sep 2026 10:46:39 +0000 Subject: [PATCH] python: typing stubs: import typing for Sequence return types SequenceTypeNode and ClassTypeNode always format as _typing.Sequence[...] and _typing.Type[...], but ContainerTypeNode only reports the typing import as required when compatible_to_runtime_usage is set. Stubs for modules that use these nodes without any other _typing usage (e.g. cv2/videoio_registry) reference _typing without importing it. Co-Authored-By: Claude Opus 5.5 --- .../src2/typing_stubs_generation/nodes/type_node.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/python/src2/typing_stubs_generation/nodes/type_node.py b/modules/python/src2/typing_stubs_generation/nodes/type_node.py index f6ba773654..431eebf6f2 100644 --- a/modules/python/src2/typing_stubs_generation/nodes/type_node.py +++ b/modules/python/src2/typing_stubs_generation/nodes/type_node.py @@ -740,6 +740,11 @@ class SequenceTypeNode(ContainerTypeNode): def type_format(self) -> str: return "_typing.Sequence[{}]" + @property + def required_usage_imports(self) -> Generator[str, None, None]: + yield "import typing as _typing" + yield from super().required_usage_imports + @property def types_separator(self) -> str: return ", " @@ -896,6 +901,11 @@ class ClassTypeNode(ContainerTypeNode): def type_format(self) -> str: return "_typing.Type[{}]" + @property + def required_usage_imports(self) -> Generator[str, None, None]: + yield "import typing as _typing" + yield from super().required_usage_imports + @property def types_separator(self) -> str: return ", "