From a7c7667f7e4ac6909b8aa3ec0487ffec6b1ad381 Mon Sep 17 00:00:00 2001 From: James Hilton-Balfe Date: Fri, 17 Mar 2023 14:41:18 +0000 Subject: [PATCH] Add better types for predicate parameter to `inspect.getx` functions (#9891) Co-authored-by: Alex Waygood --- stdlib/inspect.pyi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stdlib/inspect.pyi b/stdlib/inspect.pyi index 2525ef496..b9283475f 100644 --- a/stdlib/inspect.pyi +++ b/stdlib/inspect.pyi @@ -161,12 +161,20 @@ TPFLAGS_IS_ABSTRACT: Literal[1048576] modulesbyfile: dict[str, Any] +_GetMembersPredicateTypeGuard: TypeAlias = Callable[[Any], 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 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: ...