From ae863d125e5b4fca658b5fb834076a6709d3a986 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 08:32:41 -0400 Subject: [PATCH 01/14] fix: add missing multiprocessing.popen_fork.pyi --- stdlib/multiprocessing/popen_fork.pyi | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 stdlib/multiprocessing/popen_fork.pyi diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi new file mode 100644 index 000000000000..c7e8523dc782 --- /dev/null +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -0,0 +1,21 @@ +from .util import Finalize +from .process import BaseProcess + +__all__ = ["Popen"] + +class Popen(object): + method: str + pid: int | None + returncode: int | None + finalizer: Finalize | None + sentinel: int | None + + def __init__(self, process_obj: BaseProcess): ... + def duplicate_for_child(self, fd: int) -> int: ... + def poll(self, flag: int = ...) -> int | None: ... + def wait(self, timeout: float | None = ...) -> int | None: ... + def _send_signal(self, sig: int) -> None: ... + def terminate(self) -> None: ... + def kill(self) -> None: ... + def _launch(self, process_obj: BaseProcess) -> None: ... + def close(self) -> None: ... From 94202f8a3822d971c7ba2094c6a94e924946229b Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 08:32:59 -0400 Subject: [PATCH 02/14] fix: remove private types --- stdlib/multiprocessing/popen_fork.pyi | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index c7e8523dc782..00de093e3d7f 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -4,18 +4,16 @@ from .process import BaseProcess __all__ = ["Popen"] class Popen(object): + finalizer: Finalize | None method: str pid: int | None returncode: int | None - finalizer: Finalize | None sentinel: int | None def __init__(self, process_obj: BaseProcess): ... def duplicate_for_child(self, fd: int) -> int: ... def poll(self, flag: int = ...) -> int | None: ... def wait(self, timeout: float | None = ...) -> int | None: ... - def _send_signal(self, sig: int) -> None: ... def terminate(self) -> None: ... def kill(self) -> None: ... - def _launch(self, process_obj: BaseProcess) -> None: ... def close(self) -> None: ... From ee4922fcd7d3606b2489624634a74b4bf83674bb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Jul 2022 12:37:17 +0000 Subject: [PATCH 03/14] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/multiprocessing/popen_fork.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index 00de093e3d7f..6164e5f1b571 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -1,5 +1,5 @@ -from .util import Finalize from .process import BaseProcess +from .util import Finalize __all__ = ["Popen"] From abca1b192c87808260e854e408910f109f8a021c Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 08:37:32 -0400 Subject: [PATCH 04/14] fix: missing `-> None` in init method --- stdlib/multiprocessing/popen_fork.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index 6164e5f1b571..cc9e9f936b58 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -10,7 +10,7 @@ class Popen(object): returncode: int | None sentinel: int | None - def __init__(self, process_obj: BaseProcess): ... + def __init__(self, process_obj: BaseProcess) -> None: ... def duplicate_for_child(self, fd: int) -> int: ... def poll(self, flag: int = ...) -> int | None: ... def wait(self, timeout: float | None = ...) -> int | None: ... From e780cd59fdd9fb2b5ea5cdc7bdbcdf721d7fa32d Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 08:41:49 -0400 Subject: [PATCH 05/14] fix: remove unnecessary `object` inherit --- stdlib/multiprocessing/popen_fork.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index cc9e9f936b58..d9bc37937cd8 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -3,7 +3,7 @@ from .util import Finalize __all__ = ["Popen"] -class Popen(object): +class Popen: finalizer: Finalize | None method: str pid: int | None From 6c634e7414935fe48dcb647b4a12b5d2a9063ac1 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 09:12:06 -0400 Subject: [PATCH 06/14] fix: add popen_fork to win32 allow list --- tests/stubtest_allowlists/win32.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/stubtest_allowlists/win32.txt b/tests/stubtest_allowlists/win32.txt index 5f33df8f7a38..72b2ce0cc723 100644 --- a/tests/stubtest_allowlists/win32.txt +++ b/tests/stubtest_allowlists/win32.txt @@ -8,6 +8,8 @@ mmap.PAGESIZE # alias for a class defined elsewhere, # mypy infers the variable has type `(*args) -> DupHandle` but stubtest infers the runtime type as multiprocessing.reduction.AbstractReducer.DupHandle +# Multiprocessing.popen_fork exists on Windows but fails to import +multiprocessing.popen_fork msilib.text.dirname msvcrt.CRT_ASSEMBLY_VERSION selectors.KqueueSelector From a4fda1f8f0e1b1d03f68baecd87a4a0d9dc9ee2e Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 09:12:19 -0400 Subject: [PATCH 07/14] fix: wrap popen_fork file in sys.platform check --- stdlib/multiprocessing/popen_fork.pyi | 30 ++++++++++++++------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index d9bc37937cd8..5d816554b085 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -1,19 +1,21 @@ +import sys from .process import BaseProcess from .util import Finalize -__all__ = ["Popen"] +if sys.platform != "win32": + __all__ = ["Popen"] -class Popen: - finalizer: Finalize | None - method: str - pid: int | None - returncode: int | None - sentinel: int | None + class Popen: + finalizer: Finalize | None + method: str + pid: int | None + returncode: int | None + sentinel: int | None - def __init__(self, process_obj: BaseProcess) -> None: ... - def duplicate_for_child(self, fd: int) -> int: ... - def poll(self, flag: int = ...) -> int | None: ... - def wait(self, timeout: float | None = ...) -> int | None: ... - def terminate(self) -> None: ... - def kill(self) -> None: ... - def close(self) -> None: ... + def __init__(self, process_obj: BaseProcess) -> None: ... + def duplicate_for_child(self, fd: int) -> int: ... + def poll(self, flag: int = ...) -> int | None: ... + def wait(self, timeout: float | None = ...) -> int | None: ... + def terminate(self) -> None: ... + def kill(self) -> None: ... + def close(self) -> None: ... From 5e8ce01bfda531075fd06c766aca44f5544af654 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Jul 2022 13:13:44 +0000 Subject: [PATCH 08/14] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/multiprocessing/popen_fork.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index 5d816554b085..d49e5ff1b6db 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -1,4 +1,5 @@ import sys + from .process import BaseProcess from .util import Finalize From 30e0d15dac1aadaeb8e43957394a93d83d6e819d Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 09:17:49 -0400 Subject: [PATCH 09/14] fix: move allowlist entry closer to similar entries --- tests/stubtest_allowlists/win32.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/stubtest_allowlists/win32.txt b/tests/stubtest_allowlists/win32.txt index 72b2ce0cc723..dbd9d6a93a71 100644 --- a/tests/stubtest_allowlists/win32.txt +++ b/tests/stubtest_allowlists/win32.txt @@ -8,8 +8,6 @@ mmap.PAGESIZE # alias for a class defined elsewhere, # mypy infers the variable has type `(*args) -> DupHandle` but stubtest infers the runtime type as multiprocessing.reduction.AbstractReducer.DupHandle -# Multiprocessing.popen_fork exists on Windows but fails to import -multiprocessing.popen_fork msilib.text.dirname msvcrt.CRT_ASSEMBLY_VERSION selectors.KqueueSelector @@ -58,6 +56,9 @@ syslog termios xxlimited +# Multiprocessing.popen_fork exists on Windows but fails to import +multiprocessing.popen_fork + # Modules that rely on _curses curses curses.ascii From 2b22e836b10dd2ba65dee0d841d17a956b952c6a Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 11:04:18 -0400 Subject: [PATCH 10/14] fix: use ClassVar and remove extra | None --- stdlib/multiprocessing/popen_fork.pyi | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index d49e5ff1b6db..d71f5202736c 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -1,5 +1,6 @@ import sys +from typing_extensions import ClassVar from .process import BaseProcess from .util import Finalize @@ -8,10 +9,10 @@ if sys.platform != "win32": class Popen: finalizer: Finalize | None - method: str - pid: int | None + method: ClassVar[str] + pid: int returncode: int | None - sentinel: int | None + sentinel: int def __init__(self, process_obj: BaseProcess) -> None: ... def duplicate_for_child(self, fd: int) -> int: ... From c7de75633dc8a61336e726d542f9833ce8a1e029 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Jul 2022 15:05:44 +0000 Subject: [PATCH 11/14] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/multiprocessing/popen_fork.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index d71f5202736c..9fc546404639 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -1,6 +1,6 @@ import sys - from typing_extensions import ClassVar + from .process import BaseProcess from .util import Finalize From 8961f18d34c18ef84edf964e3808d4decbd92f46 Mon Sep 17 00:00:00 2001 From: Kevin Kirsche Date: Thu, 28 Jul 2022 11:11:16 -0400 Subject: [PATCH 12/14] fix: add comment about sentinel attribute --- stdlib/multiprocessing/popen_fork.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index 9fc546404639..ce3349f895be 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -1,6 +1,6 @@ import sys -from typing_extensions import ClassVar +from typing_extensions import ClassVar from .process import BaseProcess from .util import Finalize @@ -12,7 +12,7 @@ if sys.platform != "win32": method: ClassVar[str] pid: int returncode: int | None - sentinel: int + sentinel: int # doesn't exist if os.fork in _launch returns 0 def __init__(self, process_obj: BaseProcess) -> None: ... def duplicate_for_child(self, fd: int) -> int: ... From dc219bf6065fc11e213b3e6bd19e86f0a0f840a4 Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Thu, 28 Jul 2022 16:12:38 +0100 Subject: [PATCH 13/14] Appease flake8 --- stdlib/multiprocessing/popen_fork.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index ce3349f895be..151303c9b7d5 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -1,6 +1,6 @@ import sys -from typing_extensions import ClassVar +from typing import ClassVar from .process import BaseProcess from .util import Finalize From e7108d3283fe20d7d75f0ba24aedc5d0204fc8a3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Jul 2022 15:14:57 +0000 Subject: [PATCH 14/14] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/multiprocessing/popen_fork.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/multiprocessing/popen_fork.pyi b/stdlib/multiprocessing/popen_fork.pyi index 151303c9b7d5..3db6a84394b9 100644 --- a/stdlib/multiprocessing/popen_fork.pyi +++ b/stdlib/multiprocessing/popen_fork.pyi @@ -1,6 +1,6 @@ import sys - from typing import ClassVar + from .process import BaseProcess from .util import Finalize