cpython/Lib
Gregory P. Smith f4d644f36f
bpo-25942: make subprocess more graceful on ^C (GH-5026)
Do not allow receiving a SIGINT to cause the subprocess module to trigger an
immediate SIGKILL of the child process.  SIGINT is normally sent to all child
processes by the OS at the same time already as was the established normal
behavior in 2.7 and 3.2.  This behavior change was introduced during the fix to https://bugs.python.org/issue12494 and is generally surprising to command line
tool users who expect other tools launched in child processes to get their own
SIGINT and do their own cleanup.

In Python 3.3-3.6 subprocess.call and subprocess.run would immediately
SIGKILL the child process upon receiving a SIGINT (which raises a
KeyboardInterrupt).  We now give the child a small amount of time to
exit gracefully before resorting to a SIGKILL.

This is also the case for subprocess.Popen.__exit__ which would
previously block indefinitely waiting for the child to die.  This was
hidden from many users by virtue of subprocess.call and subprocess.run
sending the signal immediately.

Behavior change: subprocess.Popen.__exit__ will not block indefinitely
when the exiting exception is a KeyboardInterrupt.  This is done for
user friendliness as people expect their ^C to actually happen.  This
could cause occasional orphaned Popen objects when not using `call` or
`run` with a child process that hasn't exited.

Refactoring involved: The Popen.wait method deals with the
KeyboardInterrupt second chance, existing platform specific internals
have been renamed to _wait().
Also fixes comment typos.
2018-01-29 21:27:39 -08:00
..
asyncio bpo-32251: Fix docs (#5408) 2018-01-28 23:51:08 -05:00
collections bpo-25988: Deprecate exposing collections.abc in collections GH-5414 2018-01-29 08:27:49 -08:00
concurrent bpo-32596: Make lazy-load portable (GH-5316) 2018-01-26 10:53:31 +09:00
ctypes bpo-26439: Convert %s in Lib/ctypes/_aix.py to f-strings. (GH-4986) 2017-12-22 23:39:03 -08:00
curses Issue #13051: Fixed recursion errors in large or resized curses.textpad.Textbox. 2016-12-28 10:16:06 +02:00
dbm bpo-30144: Import collections ABC from collections.abc rather than collections. (#1263) 2017-04-24 09:05:00 +03:00
distutils bpo-32304: Fix distutils upload for sdists ending with \x0d (GH-5264) 2018-01-25 19:02:03 -05:00
email bpo-27931: Fix email address header parsing error (#5329) 2018-01-29 13:07:44 -05:00
encodings bpo-29240: PEP 540: Add a new UTF-8 Mode (#855) 2017-12-13 12:29:09 +01:00
ensurepip bpo-31351: Set return code in ensurepip when pip fails (GH-3626) 2017-09-21 20:07:45 +10:00
html bpo-30629: Remove second call of str.lower() in html.parser.parse_endtag. (#2099) 2017-06-16 21:15:25 -04:00
http bpo-31399: Let OpenSSL verify hostname and IP address (#3462) 2018-01-27 15:51:38 +01:00
idlelib Fix idlelib comment typos reported by Mike on pull request 4803. (#4807) 2017-12-11 22:59:08 -05:00
importlib bpo-32550. Remove the STORE_ANNOTATION bytecode. (GH-5181) 2018-01-29 16:41:04 -08:00
json bpo-32360: Remove OrderedDict usage from json.tool (GH-5315) 2018-01-25 19:52:58 +09:00
lib2to3 remove unused import (#5040) 2017-12-28 23:24:40 -08:00
logging bpo-30904: Removed duplicated Host: header. (#4465) 2017-11-19 18:36:17 +00:00
msilib Remove all mention of Windows IA-64 support (GH-3389) 2017-09-06 15:45:25 -07:00
multiprocessing bpo-32576: use queue.SimpleQueue in critical places (#5216) 2018-01-18 10:38:03 +01:00
pydoc_data Update docs for 3.7.0a4 2018-01-08 21:57:13 -05:00
site-packages Issue #29283: Delete accidentally added Lib/site-packages/README 2017-01-30 13:55:49 +03:00
sqlite3 Remove unused var from CheckCancelOperation test (GH-4317) 2017-11-08 00:06:55 +03:00
test bpo-25942: make subprocess more graceful on ^C (GH-5026) 2018-01-29 21:27:39 -08:00
tkinter bpo-32297: Few misspellings found in Python source code comments. (#4803) 2017-12-14 13:04:53 +02:00
turtledemo bpo-32297: Few misspellings found in Python source code comments. (#4803) 2017-12-14 13:04:53 +02:00
unittest bpo-32360: unittest.util: Use Counter instead of custom count function (GH-4994) 2018-01-24 16:49:58 +09:00
urllib urllib.request: Remove unused import (GH-5268) 2018-01-22 16:45:31 +09:00
venv bpo-25351: avoid activate failure on strict shells (GH-3804) 2017-09-29 12:48:11 +01:00
wsgiref Remove tiny bit of deadcode from wsgiref.validate (#3996) 2017-10-31 00:07:36 -04:00
xml bpo-32297: Few misspellings found in Python source code comments. (#4803) 2017-12-14 13:04:53 +02:00
xmlrpc bpo-32297: Few misspellings found in Python source code comments. (#4803) 2017-12-14 13:04:53 +02:00
__future__.py String annotations [PEP 563] (#4390) 2018-01-26 08:20:18 -08:00
__phello__.foo.py
_bootlocale.py bpo-29240: PEP 540: Add a new UTF-8 Mode (#855) 2017-12-13 12:29:09 +01:00
_collections_abc.py bpo-32467: Let collections.abc.ValuesView inherit from Collection (#5152) 2018-01-11 21:53:49 -08:00
_compat_pickle.py Issue #15767: Add ModuleNotFoundError. 2016-09-07 15:42:32 -07:00
_compression.py
_dummy_thread.py Restore dummy_threading and _dummy_thread, but deprecate them (bpo-31370) (#3648) 2017-09-18 22:04:20 +02:00
_markupbase.py
_osx_support.py Fix misplaced positional argument in OS X support library (#1134) 2017-04-14 15:28:55 +03:00
_pydecimal.py bpo-32630: Use contextvars in decimal (GH-5278) 2018-01-27 13:46:46 -05:00
_pyio.py bpo-15216: io: TextIOWrapper.reconfigure() accepts encoding, errors and newline (GH-2343) 2017-12-21 09:59:53 +09:00
_sitebuiltins.py
_strptime.py Fix when parsing tz offsets microseconds shorter than 6 (#4781) 2018-01-09 16:37:26 -05:00
_threading_local.py
_weakrefset.py bpo-30296 Remove unnecessary tuples, lists, sets, and dicts (#1489) 2017-05-18 07:35:54 -07:00
abc.py bpo-32473: Improve ABCMeta._dump_registry() readability (GH-5091) 2018-01-12 18:18:44 +09:00
aifc.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
antigravity.py Issue #28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam. 2016-09-16 13:48:10 +02:00
argparse.py OrderedDict import is no longer needed (#4890) 2018-01-11 22:20:33 -08:00
ast.py bpo-31778: Make ast.literal_eval() more strict. (#4035) 2018-01-04 11:15:39 +02:00
asynchat.py Issue #25002: Back out asyncore/asynchat deprecation. 2016-10-25 18:42:51 -07:00
asyncore.py bpo-29639: change test.support.HOST to "localhost" 2017-09-09 00:30:15 -07:00
base64.py Add Python version since deprecation in base64 methods. (#33) 2017-03-02 17:21:26 +03:00
bdb.py bpo-32650 Add support for async generators and more test for coroutines in pdb (#5403) 2018-01-28 20:31:00 -05:00
binhex.py
bisect.py Issue #28792: Remove aliases from _bisect 2016-11-24 23:31:59 +01:00
bz2.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
calendar.py Closes bpo-28281: Remove year (1-9999) limits on the weekday() function. (#4109) 2017-10-26 15:34:11 -04:00
cgi.py bpo-29979: Rewrite cgi.parse_multipart to make it consistent with FieldStorage (#991) 2017-05-08 05:08:34 -07:00
cgitb.py
chunk.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
cmd.py
code.py bpo-30166: Import command-line parsing modules only when needed. (#1293) 2017-05-04 08:17:47 +03:00
codecs.py bpo-32110: codecs.StreamReader.read(n) now returns not more than n (#4499) 2017-11-29 01:30:00 +02:00
codeop.py
colorsys.py
compileall.py closes bpo-31650: PEP 552 (Deterministic pycs) implementation (#4575) 2017-12-09 10:26:52 -08:00
configparser.py bpo-31307: Make ConfigParser.read() accept bytes objects (GH-3420) 2017-11-02 15:47:04 +03:00
contextlib.py bpo-30306: release arguments of contextmanager (GH-1500) 2018-01-28 14:17:46 +10:00
contextvars.py bpo-32436: Implement PEP 567 (#5027) 2018-01-22 19:11:18 -05:00
copy.py
copyreg.py bpo-31107: Fix copyreg mangled slot names calculation. (#2989) 2017-08-04 11:45:00 +03:00
cProfile.py bpo-21862: Add -m option to cProfile for profiling modules (#4297) 2017-11-08 11:50:56 +01:00
crypt.py bpo-31702: Allow to specify rounds for SHA-2 hashing in crypt.mksalt(). (#4110) 2017-11-16 13:22:51 +02:00
csv.py Issue #29405: Make total calculation in _guess_delimiter more accurate. 2017-02-06 10:50:09 +08:00
dataclasses.py bpo-32513: Make it easier to override dunders in dataclasses. (GH-5366) 2018-01-27 19:07:40 -05:00
datetime.py bpo-15873: Implement [date][time].fromisoformat (#4699) 2017-12-21 00:33:49 -05:00
decimal.py
difflib.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
dis.py bpo-31183: dis now handles coroutines & async generators (GH-3077) 2017-08-18 12:29:21 +10:00
doctest.py bpo-25054, bpo-1647489: Added support of splitting on zerowidth patterns. (#4471) 2017-12-04 14:29:05 +02:00
dummy_threading.py Restore dummy_threading and _dummy_thread, but deprecate them (bpo-31370) (#3648) 2017-09-18 22:04:20 +02:00
enum.py bpo-31801: Enum: add _ignore_ as class option (#5237) 2018-01-22 07:56:37 -08:00
filecmp.py
fileinput.py bpo-31281: Fix pathlib.Path incompatibility in fileinput (gh-3208) 2017-09-04 13:37:24 -04:00
fnmatch.py Issue #22493: Inline flags now should be used only at the start of the 2016-09-11 12:50:02 +03:00
formatter.py
fractions.py
ftplib.py bpo-31346: Use PROTOCOL_TLS_CLIENT/SERVER (#3058) 2017-09-15 20:27:30 +02:00
functools.py bpo-32227: functools.singledispatch supports registering via type annotations (#4733) 2017-12-11 13:56:31 -08:00
genericpath.py Issue #26027, #27524: Add PEP 519/__fspath__() support to os and 2016-08-26 14:44:48 -07:00
getopt.py
getpass.py getpass: update docstrings (#49) 2017-02-12 23:10:48 +01:00
gettext.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
glob.py Issue #27998: Removed workarounds for supporting bytes paths on Windows in 2016-10-05 23:17:10 +03:00
gzip.py Replace KB unit with KiB (#4293) 2017-11-08 14:44:44 -08:00
hashlib.py Fix miscellaneous typos (#4275) 2017-11-05 15:37:50 +02:00
heapq.py Improve clarity (and small speed-up) by using tuple unpacking (#3289) 2017-09-04 11:47:58 -07:00
hmac.py bpo-32433: Optimized HMAC digest (#5023) 2018-01-27 09:53:43 +01:00
imaplib.py bpo-32157: Removed explicit quotes around %r and {!r}. (#4582) 2017-11-28 22:54:42 +02:00
imghdr.py Issue #28228: imghdr now supports pathlib 2016-10-01 05:01:54 +03:00
imp.py bpo-30645: don't append to an inner loop path in imp.load_package() (GH-2268) 2017-06-23 10:35:03 -07:00
inspect.py bpo-32678: inspect: Import ast lazily (GH-5344) 2018-01-27 10:10:06 +09:00
io.py Issue #1602: Windows console doesn't input or print Unicode (PEP 528) 2016-08-30 21:22:36 -07:00
ipaddress.py bpo-20825: Containment test for ip_network in ip_network. 2017-10-22 23:39:49 +02:00
keyword.py bpo-30406: Make async and await proper keywords (#1669) 2017-10-05 23:24:46 -04:00
linecache.py
locale.py bpo-29240: PEP 540: Add a new UTF-8 Mode (#855) 2017-12-13 12:29:09 +01:00
lzma.py Issue #28229: lzma module now supports pathlib 2016-10-04 20:41:20 +03:00
macpath.py bpo-31802: Fix importing native path module before importing os. (#4017) 2018-01-07 17:54:31 +02:00
mailbox.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
mailcap.py #14977: Make mailcap respect the order of the lines in the mailcap file. 2016-09-09 20:04:23 -04:00
mimetypes.py bpo-22589 Changed MIME type of .bmp to "image/bmp" (#4756) 2017-12-08 07:48:44 -05:00
modulefinder.py closes bpo-31650: PEP 552 (Deterministic pycs) implementation (#4575) 2017-12-09 10:26:52 -08:00
netrc.py bpo-28334: netrc() now uses expanduser() to find .netrc file (GH-4537) 2017-11-25 13:37:22 +03:00
nntplib.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
ntpath.py bpo-31802: Fix importing native path module before importing os. (#4017) 2018-01-07 17:54:31 +02:00
nturl2path.py bpo-29836: Remove nturl2path from test_sundry and amend the module docstring (GH-694) 2017-03-17 11:16:20 -07:00
numbers.py Fix miscellaneous typos (#4275) 2017-11-05 15:37:50 +02:00
opcode.py bpo-32550. Remove the STORE_ANNOTATION bytecode. (GH-5181) 2018-01-29 16:41:04 -08:00
operator.py
optparse.py
os.py bpo-32297: Few misspellings found in Python source code comments. (#4803) 2017-12-14 13:04:53 +02:00
pathlib.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
pdb.py bpo-32206: Update pdb usage to include new module option (GH-5111) 2018-01-28 14:58:47 +10:00
pickle.py bpo-32503: Avoid creating too small frames in pickles. (#5127) 2018-01-20 16:42:44 +02:00
pickletools.py bpo-31993: Do not allocate large temporary buffers in pickle dump. (#4353) 2018-01-06 17:18:54 +02:00
pipes.py
pkgutil.py closes bpo-31650: PEP 552 (Deterministic pycs) implementation (#4575) 2017-12-09 10:26:52 -08:00
platform.py bpo-32159: Remove tools for CVS and Subversion (#4615) 2017-11-28 22:29:32 +01:00
plistlib.py bpo-32072: Fix issues with binary plists. (#4455) 2017-11-30 23:26:11 +02:00
poplib.py bpo-30329: Catch Windows error 10022 on shutdown() (#1538) 2017-05-15 17:33:45 +02:00
posixpath.py bpo-31802: Fix importing native path module before importing os. (#4017) 2018-01-07 17:54:31 +02:00
pprint.py
profile.py time.clock() now emits a DeprecationWarning (GH-4020) 2017-10-17 14:46:45 -07:00
pstats.py bpo-29237: Create enum for pstats sorting options (GH-5103) 2018-01-25 20:49:56 -08:00
pty.py
py_compile.py bpo-29708: Setting SOURCE_DATE_EPOCH forces hash-based .pyc files (GH-5200) 2018-01-24 13:26:18 -08:00
pyclbr.py bpo-6691: Pyclbr now reports nested classes and functions. (#2503) 2017-07-03 21:31:25 -04:00
pydoc.py bpo-32440: Update the docs URL to https in help() (GH-5030) 2017-12-28 06:37:46 -08:00
queue.py bpo-14976: Reentrant simple queue (#3346) 2018-01-16 00:27:16 +01:00
quopri.py
random.py bpo-31482: Missing bytes support for random.seed() version 1 (#3614) 2017-09-17 09:04:30 -07:00
re.py bpo-30349: Raise FutureWarning for nested sets and set operations (#1553) 2017-11-16 12:38:26 +02:00
reprlib.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
rlcompleter.py
runpy.py [backport to 3.5] - issue26896 - Disambiguate uses of "importer" with "finder". 2016-09-07 00:52:20 -07:00
sched.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
secrets.py Issue #29061: secrets.randbelow() would hang with a negative input 2016-12-29 22:54:25 -07:00
selectors.py bpo-30624 remaining bare except (#2108) 2017-06-12 14:43:40 +02:00
shelve.py bpo-30144: Import collections ABC from collections.abc rather than collections. (#1263) 2017-04-24 09:05:00 +03:00
shlex.py Fixed #29132: Updated shlex to work better with punctuation chars in POSIX mode. 2017-01-15 10:06:52 +00:00
shutil.py bpo-28564: Use os.scandir() in shutil.rmtree(). (#4085) 2017-11-04 14:16:35 +02:00
signal.py
site.py bpo-30804: fix macOS build with framework enabled. (#2516) 2017-06-30 19:38:02 +02:00
smtpd.py
smtplib.py bpo-30394: Fix a socket leak in smtplib.SMTP.__init__() (#1700) 2017-05-24 13:14:50 +08:00
sndhdr.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
socket.py bpo-28134: Auto-detect socket values from file descriptor (#1349) 2018-01-29 22:37:58 +01:00
socketserver.py bpo-31233: socketserver.ThreadingMixIn.server_close() (#3523) 2017-09-13 01:47:22 -07:00
sre_compile.py bpo-31690: Allow the inline flags "a", "L", and "u" to be used as group flags for RE. (#3885) 2017-10-24 23:31:42 +03:00
sre_constants.py bpo-31690: Allow the inline flags "a", "L", and "u" to be used as group flags for RE. (#3885) 2017-10-24 23:31:42 +03:00
sre_parse.py bpo-30349: Raise FutureWarning for nested sets and set operations (#1553) 2017-11-16 12:38:26 +02:00
ssl.py bpo-31429: Define TLS cipher suite on build time (#3532) 2018-01-29 14:10:18 +01:00
stat.py
statistics.py bpo-29919: Remove unused imports found by pyflakes (#137) 2017-03-27 16:05:26 +02:00
string.py bpo-31672: Restore the former behavior when override flags in Template. (#5099) 2018-01-04 19:20:11 +02:00
stringprep.py
struct.py
subprocess.py bpo-25942: make subprocess more graceful on ^C (GH-5026) 2018-01-29 21:27:39 -08:00
sunau.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
symbol.py bpo-30406: Make async and await proper keywords (#1669) 2017-10-05 23:24:46 -04:00
symtable.py bpo-30296 Remove unnecessary tuples, lists, sets, and dicts (#1489) 2017-05-18 07:35:54 -07:00
sysconfig.py remove support for BSD/OS (closes bpo-31624) (#3812) 2017-09-28 22:44:27 -07:00
tabnanny.py bpo-30166: Import command-line parsing modules only when needed. (#1293) 2017-05-04 08:17:47 +03:00
tarfile.py bpo-32297: Few misspellings found in Python source code comments. (#4803) 2017-12-14 13:04:53 +02:00
telnetlib.py bpo-30397: Add re.Pattern and re.Match. (#1646) 2017-10-04 20:09:49 +03:00
tempfile.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
textwrap.py bpo-30620: Remove dead lines from textwrap.dedent (GH-2064) 2017-06-15 19:19:43 -07:00
this.py
threading.py bpo-31516: current_thread() should not return a dummy thread at shutdown (#3673) 2017-10-02 16:42:15 +02:00
timeit.py bpo-29661: fix contradiction in timeit.Timer.autorange's docstring (GH-331) 2017-02-28 11:06:07 +08:00
token.py bpo-25324: copy tok_name before changing it (#1608) 2017-05-31 16:00:21 +02:00
tokenize.py bpo-30406: Make async and await proper keywords (#1669) 2017-10-05 23:24:46 -04:00
trace.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
traceback.py bpo-28603: Fix formatting tracebacks for unhashable exceptions (#4014) 2017-10-18 00:29:39 +03:00
tracemalloc.py bpo-32121: Add most_recent_first parameter to tracemalloc.Traceback.format (#4534) 2017-11-30 00:05:07 +01:00
tty.py
turtle.py Fix miscellaneous typos (#4275) 2017-11-05 15:37:50 +02:00
types.py bpo-32265: Classify class and static methods of builtin types. (#4776) 2017-12-15 14:13:41 +02:00
typing.py bpo-32226: PEP 560: improve typing module (#4906) 2018-01-20 11:23:59 +00:00
uu.py bpo-30103: Allow Uuencode in Python using backtick as zero instead of space (#1326) 2017-05-03 11:16:21 +08:00
uuid.py bpo-32502: Discard 64-bit (and other invalid) hardware addresses (#5254) 2018-01-23 20:11:44 -05:00
warnings.py bpo-32591: Add native coroutine origin tracking (#5250) 2018-01-21 09:44:07 -05:00
wave.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
weakref.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
webbrowser.py bpo-29645: Speed up importing the webbrowser module. (#484) 2017-03-08 17:15:54 +02:00
xdrlib.py
zipapp.py bpo-31638: Add compression support to zipapp (GH-3819) 2017-09-29 18:31:52 +01:00
zipfile.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00