diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 3ec39ca3e61..881a9ce800a 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -43,8 +43,10 @@ getstatusoutput(...): Runs a command in the shell, waits for it to complete, import builtins import errno import io +import locale import os import time +import signal import sys import threading import warnings @@ -136,8 +138,6 @@ class CalledProcessError(SubprocessError): def __str__(self): if self.returncode and self.returncode < 0: - # Lazy import to improve module import time - import signal try: return "Command '%s' died with %r." % ( self.cmd, signal.Signals(-self.returncode)) @@ -375,8 +375,6 @@ def _text_encoding(): if sys.flags.utf8_mode: return "utf-8" else: - # Lazy import to improve module import time - import locale return locale.getencoding() @@ -1657,9 +1655,6 @@ class Popen: # Don't signal a process that we know has already died. if self.returncode is not None: return - - # Lazy import to improve module import time - import signal if sig == signal.SIGTERM: self.terminate() elif sig == signal.CTRL_C_EVENT: @@ -1764,9 +1759,6 @@ class Popen: kwargs = {} if restore_signals: - # Lazy import to improve module import time - import signal - # See _Py_RestoreSignals() in Python/pylifecycle.c sigset = [] for signame in ('SIGPIPE', 'SIGXFZ', 'SIGXFSZ'): @@ -2216,13 +2208,9 @@ class Popen: def terminate(self): """Terminate the process with SIGTERM """ - # Lazy import to improve module import time - import signal self.send_signal(signal.SIGTERM) def kill(self): """Kill the process with SIGKILL """ - # Lazy import to improve module import time - import signal self.send_signal(signal.SIGKILL) diff --git a/Misc/NEWS.d/next/Library/2025-02-16-10-12-27.gh-issue-118761.TNw5ZC.rst b/Misc/NEWS.d/next/Library/2025-02-16-10-12-27.gh-issue-118761.TNw5ZC.rst new file mode 100644 index 00000000000..198fd0c28f4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-02-16-10-12-27.gh-issue-118761.TNw5ZC.rst @@ -0,0 +1,4 @@ +Reverts a change in the previous release attempting to make some stdlib +imports used within the :mod:`subprocess` module lazy as this was causing +errors during ``__del__`` finalizers calling methods such as ``terminate``, or +``kill``, or ``send_signal``.