From 3c985d74b907009b4aafedfaded42ce54145d5c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Fern=C3=A1ndez=20Iglesias?= Date: Fri, 8 Aug 2025 12:51:20 +0200 Subject: [PATCH 1/3] [python-jenkins] Improve get_jobs and get_all_jobs return type --- stubs/python-jenkins/jenkins/__init__.pyi | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/stubs/python-jenkins/jenkins/__init__.pyi b/stubs/python-jenkins/jenkins/__init__.pyi index 4dd80855bd7f..002b73636405 100644 --- a/stubs/python-jenkins/jenkins/__init__.pyi +++ b/stubs/python-jenkins/jenkins/__init__.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from collections.abc import Mapping, MutableMapping, Sequence from re import Pattern -from typing import Any, Final, Literal, overload +from typing import Any, Final, Literal, TypedDict, overload, type_check_only from typing_extensions import TypeAlias, deprecated import requests @@ -92,6 +92,14 @@ class WrappedSession(requests.Session): _JSONValue: TypeAlias = Any # too many possibilities to express _JSON: TypeAlias = dict[str, _JSONValue] +@type_check_only +class _Job(TypedDict, total=False): + _class: str + url: str + color: str + name: str + jobs: list[_Job] + class Jenkins: server: str auth: _Auth | None @@ -128,10 +136,8 @@ class Jenkins: def get_plugins_info(self, depth: int = 2) -> _JSON: ... def get_plugin_info(self, name: str, depth: int = 2) -> _JSON: ... def get_plugins(self, depth: int = 2) -> _JSON: ... - def get_jobs( - self, folder_depth: int = 0, folder_depth_per_request: int = 10, view_name: str | None = None - ) -> list[dict[str, str]]: ... - def get_all_jobs(self, folder_depth: int | None = None, folder_depth_per_request: int = 10) -> list[dict[str, str]]: ... + def get_jobs(self, folder_depth: int = 0, folder_depth_per_request: int = 10, view_name: str | None = None) -> list[_Job]: ... + def get_all_jobs(self, folder_depth: int | None = None, folder_depth_per_request: int = 10) -> list[_Job]: ... def copy_job(self, from_name: str, to_name: str) -> None: ... def rename_job(self, from_name: str, to_name: str) -> None: ... def delete_job(self, name: str) -> None: ... From 8fccb70c3dc1ccbac1407c4cf6a811b56e3677f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Fern=C3=A1ndez=20Iglesias?= Date: Fri, 8 Aug 2025 15:54:45 +0200 Subject: [PATCH 2/3] [python-jenkins] Add fullname and make name required in _Job TypeDict --- stubs/python-jenkins/jenkins/__init__.pyi | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/stubs/python-jenkins/jenkins/__init__.pyi b/stubs/python-jenkins/jenkins/__init__.pyi index 002b73636405..9157f0654996 100644 --- a/stubs/python-jenkins/jenkins/__init__.pyi +++ b/stubs/python-jenkins/jenkins/__init__.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from collections.abc import Mapping, MutableMapping, Sequence from re import Pattern -from typing import Any, Final, Literal, TypedDict, overload, type_check_only +from typing import Any, Final, Literal, Required, TypedDict, overload, type_check_only from typing_extensions import TypeAlias, deprecated import requests @@ -97,7 +97,8 @@ class _Job(TypedDict, total=False): _class: str url: str color: str - name: str + name: Required[str] + fullname: Required[str] jobs: list[_Job] class Jenkins: From eb026557924636e609efc302adb5086282cb0c83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Fern=C3=A1ndez=20Iglesias?= Date: Fri, 8 Aug 2025 16:02:30 +0200 Subject: [PATCH 3/3] [python-jenkins] Import Required from typing_extensions --- stubs/python-jenkins/jenkins/__init__.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stubs/python-jenkins/jenkins/__init__.pyi b/stubs/python-jenkins/jenkins/__init__.pyi index 9157f0654996..cce987123412 100644 --- a/stubs/python-jenkins/jenkins/__init__.pyi +++ b/stubs/python-jenkins/jenkins/__init__.pyi @@ -1,8 +1,8 @@ from _typeshed import Incomplete from collections.abc import Mapping, MutableMapping, Sequence from re import Pattern -from typing import Any, Final, Literal, Required, TypedDict, overload, type_check_only -from typing_extensions import TypeAlias, deprecated +from typing import Any, Final, Literal, TypedDict, overload, type_check_only +from typing_extensions import Required, TypeAlias, deprecated import requests from requests.models import Request, Response