From 1b500a549d2e2237dd654f13ddee42090739047b Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jun 2024 12:55:04 +0200 Subject: [PATCH 1/5] Remove obsolete mypy bug workaround in `abspath()` --- stdlib/posixpath.pyi | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/stdlib/posixpath.pyi b/stdlib/posixpath.pyi index e5f5fa0d813c..5172f841b7ce 100644 --- a/stdlib/posixpath.pyi +++ b/stdlib/posixpath.pyi @@ -77,11 +77,7 @@ pathsep: LiteralString defpath: LiteralString devnull: LiteralString -# Overloads are necessary to work around python/mypy#3644. -@overload -def abspath(path: PathLike[AnyStr]) -> AnyStr: ... -@overload -def abspath(path: AnyStr) -> AnyStr: ... +def abspath(path: PathLike[AnyStr] | AnyStr) -> AnyStr: ... @overload def basename(p: PathLike[AnyStr]) -> AnyStr: ... @overload From a074c91daa20ad2e2a864697313c20f48ca9a840 Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jun 2024 12:59:19 +0200 Subject: [PATCH 2/5] Remove more obsolete overloads --- stdlib/posixpath.pyi | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/stdlib/posixpath.pyi b/stdlib/posixpath.pyi index 5172f841b7ce..31406f8df950 100644 --- a/stdlib/posixpath.pyi +++ b/stdlib/posixpath.pyi @@ -86,14 +86,8 @@ def basename(p: AnyOrLiteralStr) -> AnyOrLiteralStr: ... def dirname(p: PathLike[AnyStr]) -> AnyStr: ... @overload def dirname(p: AnyOrLiteralStr) -> AnyOrLiteralStr: ... -@overload -def expanduser(path: PathLike[AnyStr]) -> AnyStr: ... -@overload -def expanduser(path: AnyStr) -> AnyStr: ... -@overload -def expandvars(path: PathLike[AnyStr]) -> AnyStr: ... -@overload -def expandvars(path: AnyStr) -> AnyStr: ... +def expanduser(path: PathLike[AnyStr] | AnyStr) -> AnyStr: ... +def expandvars(path: PathLike[AnyStr] | AnyStr) -> AnyStr: ... @overload def normcase(s: PathLike[AnyStr]) -> AnyStr: ... @overload From 6b727cbab76cc15e1d497fe607eac29115b7b020 Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jun 2024 13:38:34 +0200 Subject: [PATCH 3/5] Remove an overload in re --- stdlib/re.pyi | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/stdlib/re.pyi b/stdlib/re.pyi index b06f494c0b7d..04299e87efe1 100644 --- a/stdlib/re.pyi +++ b/stdlib/re.pyi @@ -240,10 +240,7 @@ _FlagsType: TypeAlias = int | RegexFlag # pattern arguments do *not* accept arbitrary buffers such as bytearray, # because the pattern must be hashable. -@overload -def compile(pattern: AnyStr, flags: _FlagsType = 0) -> Pattern[AnyStr]: ... -@overload -def compile(pattern: Pattern[AnyStr], flags: _FlagsType = 0) -> Pattern[AnyStr]: ... +def compile(pattern: AnyStr | Pattern[AnyStr], flags: _FlagsType = 0) -> Pattern[AnyStr]: ... @overload def search(pattern: str | Pattern[str], string: str, flags: _FlagsType = 0) -> Match[str] | None: ... @overload From f89b7aca93003ccccec89239b861e5c15cd7109e Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jun 2024 13:39:07 +0200 Subject: [PATCH 4/5] Remove comment --- stdlib/re.pyi | 5 ----- 1 file changed, 5 deletions(-) diff --git a/stdlib/re.pyi b/stdlib/re.pyi index 04299e87efe1..995c229d0691 100644 --- a/stdlib/re.pyi +++ b/stdlib/re.pyi @@ -233,11 +233,6 @@ if sys.version_info >= (3, 11): NOFLAG = RegexFlag.NOFLAG _FlagsType: TypeAlias = int | RegexFlag -# Type-wise the compile() overloads are unnecessary, they could also be modeled using -# unions in the parameter types. However mypy has a bug regarding TypeVar -# constraints (https://github.com/python/mypy/issues/11880), -# which limits us here because AnyStr is a constrained TypeVar. - # pattern arguments do *not* accept arbitrary buffers such as bytearray, # because the pattern must be hashable. def compile(pattern: AnyStr | Pattern[AnyStr], flags: _FlagsType = 0) -> Pattern[AnyStr]: ... From 88563b95cd453d2a4db411a9b660f122bbff9c7b Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Tue, 25 Jun 2024 13:53:54 +0200 Subject: [PATCH 5/5] Revert changes to re --- stdlib/re.pyi | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/stdlib/re.pyi b/stdlib/re.pyi index 995c229d0691..b06f494c0b7d 100644 --- a/stdlib/re.pyi +++ b/stdlib/re.pyi @@ -233,9 +233,17 @@ if sys.version_info >= (3, 11): NOFLAG = RegexFlag.NOFLAG _FlagsType: TypeAlias = int | RegexFlag +# Type-wise the compile() overloads are unnecessary, they could also be modeled using +# unions in the parameter types. However mypy has a bug regarding TypeVar +# constraints (https://github.com/python/mypy/issues/11880), +# which limits us here because AnyStr is a constrained TypeVar. + # pattern arguments do *not* accept arbitrary buffers such as bytearray, # because the pattern must be hashable. -def compile(pattern: AnyStr | Pattern[AnyStr], flags: _FlagsType = 0) -> Pattern[AnyStr]: ... +@overload +def compile(pattern: AnyStr, flags: _FlagsType = 0) -> Pattern[AnyStr]: ... +@overload +def compile(pattern: Pattern[AnyStr], flags: _FlagsType = 0) -> Pattern[AnyStr]: ... @overload def search(pattern: str | Pattern[str], string: str, flags: _FlagsType = 0) -> Match[str] | None: ... @overload