From dc0efe14f91934c72eebc8db2093b93d16722f23 Mon Sep 17 00:00:00 2001 From: James Hilton-Balfe Date: Thu, 16 Mar 2023 15:24:51 +0000 Subject: [PATCH 1/3] Add better types for predicate parameter --- stdlib/inspect.pyi | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/stdlib/inspect.pyi b/stdlib/inspect.pyi index 2525ef4968ec..749234998e17 100644 --- a/stdlib/inspect.pyi +++ b/stdlib/inspect.pyi @@ -161,12 +161,15 @@ TPFLAGS_IS_ABSTRACT: Literal[1048576] modulesbyfile: dict[str, Any] -_GetMembersPredicate: TypeAlias = Callable[[Any], bool] -_GetMembersReturn: TypeAlias = list[tuple[str, Any]] - +@overload +def getmembers(object: object, predicate: _GetMembersPredicateTypeGuard[_T]) -> _GetMembersReturnTypeGuard[_T]: ... +@overload def getmembers(object: object, predicate: _GetMembersPredicate | None = None) -> _GetMembersReturn: ... if sys.version_info >= (3, 11): + @overload + def getmembers_static(object: object, predicate: _GetMembersPredicateTypeGuard[_T]) -> _GetMembersReturnTypeGuard[_T]: ... + @overload def getmembers_static(object: object, predicate: _GetMembersPredicate | None = None) -> _GetMembersReturn: ... def getmodulename(path: str) -> str | None: ... From d3aeec4cd819792b860cc3ba67c91b251d41710d Mon Sep 17 00:00:00 2001 From: James Hilton-Balfe Date: Thu, 16 Mar 2023 15:32:55 +0000 Subject: [PATCH 2/3] Update inspect.pyi --- stdlib/inspect.pyi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stdlib/inspect.pyi b/stdlib/inspect.pyi index 749234998e17..b125236d5922 100644 --- a/stdlib/inspect.pyi +++ b/stdlib/inspect.pyi @@ -161,6 +161,11 @@ TPFLAGS_IS_ABSTRACT: Literal[1048576] modulesbyfile: dict[str, Any] +_GetMembersPredicateTypeGuard: TypeAlias = Callable[[_T], TypeGuard[_T]] +_GetMembersPredicate: TypeAlias = Callable[[Any], bool] +_GetMembersReturnTypeGuard: TypeAlias = list[tuple[str, _T]] +_GetMembersReturn: TypeAlias = list[tuple[str, Any]] + @overload def getmembers(object: object, predicate: _GetMembersPredicateTypeGuard[_T]) -> _GetMembersReturnTypeGuard[_T]: ... @overload From 9ef72eb9f141a6d8574228363624ff263497bfce Mon Sep 17 00:00:00 2001 From: James Hilton-Balfe Date: Thu, 16 Mar 2023 15:44:31 +0000 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: Alex Waygood --- stdlib/inspect.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/inspect.pyi b/stdlib/inspect.pyi index b125236d5922..b9283475f5fe 100644 --- a/stdlib/inspect.pyi +++ b/stdlib/inspect.pyi @@ -161,7 +161,7 @@ TPFLAGS_IS_ABSTRACT: Literal[1048576] modulesbyfile: dict[str, Any] -_GetMembersPredicateTypeGuard: TypeAlias = Callable[[_T], TypeGuard[_T]] +_GetMembersPredicateTypeGuard: TypeAlias = Callable[[Any], TypeGuard[_T]] _GetMembersPredicate: TypeAlias = Callable[[Any], bool] _GetMembersReturnTypeGuard: TypeAlias = list[tuple[str, _T]] _GetMembersReturn: TypeAlias = list[tuple[str, Any]]