cpython/Lib
Miss Islington (bot) 9cbe4738bc
[3.11] GH-113214: Fix SSLProto exception handling in SSL-over-SSL scenarios (GH-113334) (#113340)
When wrapped, `_SSLProtocolTransport._force_close(exc)` is called just like in the unwrapped scenario `_SelectorTransport._force_close(exc)` or `_ProactorBasePipeTransport._force_close(exc)` would be called, except here the exception needs to be passed through the `SSLProtocol._abort()` method, which didn't accept an exception object.

This commit ensures that this path works, in the same way that the uvloop implementation of SSLProto passes on the exception (on which the current implementation of SSLProto is based).

(cherry picked from commit 1ff0238594)

Co-authored-by: Martijn Pieters <mj@zopatista.com>
2023-12-20 16:51:51 -08:00
..
__phello__ bpo-45020: Add more test cases for frozen modules. (gh-28664) 2021-09-30 18:38:52 -06:00
asyncio [3.11] GH-113214: Fix SSLProto exception handling in SSL-over-SSL scenarios (GH-113334) (#113340) 2023-12-20 16:51:51 -08:00
collections [3.11] gh-105736: Sync pure python version of OrderedDict with the C version (GH-108098) (GH-108201) 2023-08-21 10:37:09 +00:00
concurrent [3.11] gh-109370: Fix unexpected traceback output in test_concurrent_futures (GH-109780) (GH-109882) 2023-09-26 11:21:09 +03:00
ctypes [3.11] gh-110190: Temporarily skip new test introduced in gh-112604 on PPC64LE (GH-112818) (#112830) 2023-12-08 12:47:32 +01:00
curses
dbm bpo-40563: Support pathlike objects on dbm/shelve (GH-21849) 2021-09-10 15:26:16 +03:00
distutils [3.11] gh-111309: Use unittest to collect and run distutils tests (GH-111311) 2023-10-25 14:57:17 +03:00
email [3.11] gh-94606: Fix error when message with Unicode surrogate not surrogateescaped string (GH-94641) (GH-112972) 2023-12-11 16:47:25 +00:00
encodings [3.11] gh-98433: Fix quadratic time idna decoding. (GH-99092) (#99222) 2022-11-07 18:57:10 -08:00
ensurepip [3.11] gh-113246: Updated bundled pip to 23.3.2 (gh-113249) (#113254) 2023-12-18 11:34:58 +00:00
html [3.11] gh-100210: Correct the comment link for unescaping HTML (GH-100212) (#102044) 2023-02-21 07:52:02 +08:00
http [3.11] gh-113199: Make read1() and readline() of HTTPResponse close IO after reading all data (GH-113200) (GH-113260) 2023-12-18 20:34:15 +00:00
idlelib [3.11] gh-113269: IDLE - Fix test_editor hang (macOS) (GH-113271) (#113273) 2023-12-19 05:42:59 +00:00
importlib [3.11] GH-102700: allow built-in modules to be submodules (GH-103162) (GH-103322) 2023-04-06 16:06:02 -07:00
json gh-96959: Update HTTP links which are redirected to HTTPS (GH-96961) 2022-09-25 01:20:45 -07:00
lib2to3 gh-90473: Misc test fixes for WASI (GH-93218) 2022-05-25 07:24:32 -07:00
logging [3.11] gh-110875: Handle '.' properties in logging formatter configuration correctly. (GH-110943) (GH-111914) 2023-11-09 19:51:43 +00:00
msilib gh-91217: deprecate msilib (GH-91515) 2022-04-14 12:50:11 -07:00
multiprocessing [3.11] gh-113009: Fix multiprocessing Process.terminate() on Windows (GH-113128) (#113178) 2023-12-15 15:20:18 +00:00
pydoc_data Python 3.11.7 2023-12-04 17:56:29 +00:00
re [3.11] gh-109747: Improve errors for unsupported look-behind patterns (GH-109859) (GH-110860) 2023-10-14 06:51:24 +00:00
site-packages
sqlite3 [3.11] gh-108590: Revert gh-108657 (commit 400a1cebc) (#108686) (#108694) 2023-08-30 20:12:10 +00:00
test [3.11] GH-113214: Fix SSLProto exception handling in SSL-over-SSL scenarios (GH-113334) (#113340) 2023-12-20 16:51:51 -08:00
tkinter [3.11] gh-75666: Tkinter: "unbind(sequence, funcid)" now only unbinds "funcid" (GH-111322) (GH-112801) 2023-12-06 15:04:07 +00:00
tomllib bpo-40059: Add tomllib (PEP-680) (GH-31498) 2022-03-08 09:26:13 +01:00
turtledemo [3.11] gh-111092: Make turtledemo run without default root enabled (GH-111093) (#111096) 2023-10-20 04:25:17 +00:00
unittest [3.11] gh-111019: Align expected and actual titles in test output (GH-111020) (#111025) 2023-10-18 08:04:39 +00:00
urllib [3.11] GH-104554: Add RTSPS support to urllib/parse.py (GH-104605) (#105760) 2023-07-05 13:02:36 +02:00
venv [3.11] gh-112431: Unconditionally call hash -r (GH-112432) (GH-112492) 2023-11-28 15:13:38 +05:30
wsgiref gh-96959: Update HTTP links which are redirected to HTTPS (GH-96961) 2022-09-25 01:20:45 -07:00
xml gh-96175: add missing self._localName assignment in xml.dom.minidom.Attr (GH-96176) 2022-08-23 10:18:19 -07:00
xmlrpc bpo-47126: Update to canonical PEP URLs specified by PEP 676 (GH-32124) 2022-03-30 12:00:27 +01:00
zoneinfo [3.11] [3.12] bpo-42663: Fix parsing TZ strings in zoneinfo module (GH-23825) (GH-110882) (GH-110889) 2023-10-15 08:32:26 +00:00
__future__.py gh-93626: Set the release for __future__.annotations to None (GH-93628) (GH-94553) 2022-07-05 11:16:32 +02:00
__hello__.py bpo-47084: Clear Unicode cached representations on finalization (GH-32032) 2022-03-22 13:53:51 +01:00
_aix_support.py Fix typos in multiple files (GH-26689) 2021-06-12 22:47:44 -04:00
_bootsubprocess.py
_collections_abc.py Minor code nit: Move an unrelated statement out of a try clause in Sequence.index (GH-32330) 2022-04-06 13:03:36 -05:00
_compat_pickle.py bpo-46565: del loop vars that are leaking into module namespaces (GH-30993) 2022-02-03 11:20:08 +02:00
_compression.py
_markupbase.py
_osx_support.py [3.11] gh-102362: Fix macOS version number in result of sysconfig.get_platform() (GH-112942) (#113265) 2023-12-19 19:57:08 +01:00
_py_abc.py
_pydecimal.py gh-91291: Accept attributes as keyword arguments in decimal.localcontext (#32242) 2022-04-21 21:27:15 -07:00
_pyio.py gh-93099: Fix _pyio to use locale module properly (gh-93136) 2022-05-23 18:03:37 -07:00
_sitebuiltins.py
_strptime.py
_threading_local.py
_weakrefset.py bpo-26579: Add object.__getstate__(). (GH-2821) 2022-04-06 20:00:14 +03:00
abc.py gh-87864: Use correct function definition syntax in the docs (GH-103312) 2023-04-11 07:19:33 -07:00
aifc.py gh-47061: Deprecate chunk (GH-91419) 2022-04-11 15:02:41 -07:00
antigravity.py
argparse.py [3.11] gh-101640: Make argparse _print_message catch any write error (GH-101802) (#104250) 2023-05-06 23:17:27 +00:00
ast.py [3.11] gh-108843: fix ast.unparse for f-string with many quotes (#108980) 2023-09-18 15:11:56 +01:00
asynchat.py bpo-47061: use warnings._deprecated() with asynchat, asyncore, and smtpd (GH-32350) 2022-04-06 11:22:39 -07:00
asyncore.py bpo-47061: use warnings._deprecated() with asynchat, asyncore, and smtpd (GH-32350) 2022-04-06 11:22:39 -07:00
base64.py bpo-35970: Add help flag to base64 module (GH-28774) 2021-10-06 18:38:43 -07:00
bdb.py [3.11] gh-101517: fix line number propagation in code generated for except* (#103550) (#103816) 2023-04-25 18:08:54 +01:00
bisect.py
bz2.py bpo-45475: Revert __iter__ optimization for GzipFile, BZ2File, and LZMAFile. (GH-29016) 2021-10-19 11:51:48 +09:00
calendar.py [3.11] GH-108202: Document `calendar`'s command-line interface (GH-109020) (#109031) 2023-09-07 02:11:06 +02:00
cgi.py bpo-47061: deprecate cgi and cgitb (GH-32410) 2022-04-08 17:15:35 -07:00
cgitb.py bpo-47061: deprecate cgi and cgitb (GH-32410) 2022-04-08 17:15:35 -07:00
chunk.py gh-47061: Deprecate chunk (GH-91419) 2022-04-11 15:02:41 -07:00
cmd.py gh-67248: cmd: Sort miscellaneous help topics (#92254) 2022-05-03 21:36:52 -06:00
code.py
codecs.py [3.11] gh-50644: Forbid pickling of codecs streams (GH-109180) (GH-109232) 2023-09-10 17:41:19 +00:00
codeop.py [3.11] gh-111366: Correctly show custom syntax error messages in the codeop module functions (GH-111384). (#111516) 2023-10-31 14:41:20 +00:00
colorsys.py [3.11] gh-106498: Revert incorrect colorsys.rgb_to_hls change (GH-106627) (#106633) 2023-07-11 15:48:00 +00:00
compileall.py bpo-40447: accept all path-like objects in compileall.compile_file (GH-19883) 2022-12-23 12:43:13 -08:00
configparser.py [3.11] Fix typo in configparser module docstring (GH-105652) (#105654) 2023-06-11 14:33:50 +00:00
contextlib.py [3.11] gh-110378: Close invalid generators in contextmanager and asynccontextmanager (GH-110499) (#110589) 2023-10-10 11:12:52 +02:00
contextvars.py
copy.py gh-90494: Reject 6th element of the __reduce__() tuple (GH-93609) (GH-93631) 2022-06-10 16:00:19 +02:00
copyreg.py bpo-26579: Add object.__getstate__(). (GH-2821) 2022-04-06 20:00:14 +03:00
cProfile.py gh-103935: Use io.open_code() when executing code in trace and profile modules (GH-103947) 2023-04-27 21:23:46 +00:00
crypt.py gh-95231: Disable md5 & crypt modules if FIPS is enabled (GH-94742) 2022-08-15 08:37:51 -07:00
csv.py bpo-43625: Enhance csv sniffer has_headers() to be more accurate (GH-26939) 2021-07-30 19:10:37 +02:00
dataclasses.py [3.11] gh-104035: Do not ignore user-defined __{get,set}state__ in slotted frozen dataclasses (GH-104041) (#104044) 2023-05-01 10:02:41 -06:00
datetime.py [3.11] Fix date.__repr__() docstring (#109422) (#109449) 2023-09-15 13:29:57 +00:00
decimal.py
difflib.py Correct method name typo (#91970) 2022-04-27 15:28:56 -06:00
dis.py [3.11] gh-108826: Document dis module CLI and rename _test function to main (#108827) (#110689) 2023-10-11 14:48:03 -06:00
doctest.py [3.11] gh-61648: Detect line numbers of properties in doctests (GH-113161) (GH-113165) 2023-12-15 13:38:45 +00:00
enum.py [3.11] gh-111181: Fix enum doctests (GH-111180) (GH-111617) 2023-11-03 16:51:56 -07:00
filecmp.py bpo-42958: Improve description of shallow= in filecmp.cmp docs (GH-27166) 2021-08-04 21:39:45 +02:00
fileinput.py [3.11] gh-101961 fileinput.hookcompressed should not set the encoding value for the binary mode (gh-102068) (#102098) 2023-02-21 12:39:16 +09:00
fnmatch.py gh-89973: Fix re.error in the fnmatch module. (GH-93072) 2022-06-05 02:39:11 -07:00
fractions.py bpo-44547: Make Fractions objects instances of typing.SupportsInt (GH-27851) 2021-10-22 00:09:47 +02:00
ftplib.py
functools.py gh-89828: Do not relay the __class__ attribute in GenericAlias (GH-93754) 2022-06-18 07:41:25 -07:00
genericpath.py
getopt.py
getpass.py update docstring for win_getpass to reflect code changes (GH-24967) 2021-05-03 23:48:29 -07:00
gettext.py [3.11] gh-110519: Improve deprecation warning in the gettext module (GH-110520) (GH-110564) 2023-10-09 16:10:34 +02:00
glob.py bpo-37578: glob.glob -- added include_hidden parameter (GH-30153) 2021-12-18 06:23:34 -08:00
graphlib.py bpo-45359: Support TopologicalSorter type subscript (GH-28714) 2021-12-08 20:52:57 +02:00
gzip.py gh-90839: Forward gzip.compress() compresslevel to zlib (gh-31215) 2022-04-12 22:46:40 +09:00
hashlib.py bpo-45150: Add hashlib.file_digest() for efficient file hashing (GH-31930) 2022-03-22 02:37:00 -07:00
heapq.py Update: usage doc for heappushpop (GH-91451) 2022-04-17 23:12:33 -05:00
hmac.py [3.11] gh-112999: Replace the outdated "deprecated" directives with "versionchanged" (GH-113000) (GH-113020) 2023-12-12 17:17:35 +00:00
imaplib.py bpo-44045: fix spelling of uppercase vs upper-case (GH-25985) 2021-05-28 17:54:25 -03:00
imghdr.py gh-91217: deprecate imghdr (#91461) 2022-04-13 10:47:41 -07:00
imp.py bpo-45019: Do some cleanup related to frozen modules. (gh-28319) 2021-09-13 16:18:37 -06:00
inspect.py [3.11] gh-105080: Fixed inconsistent signature on derived classes (GH… (#105274) 2023-06-04 15:26:01 -06:00
io.py gh-111356: io: Add missing documented objects to io.__all__ (GH-111370) 2023-11-10 07:32:41 +00:00
ipaddress.py [3.11] gh-110196: Fix ipaddress.IPv6Address.__reduce__ (GH-110198) (GH-111190) 2023-10-22 19:12:58 +00:00
keyword.py
linecache.py gh-92336: linecache.getline should not raise exceptions on decoding errors (GH-94410) 2022-06-30 02:59:33 -07:00
locale.py [3.11] gh-111187: Postpone removal version for locale.getdefaultlocale() to 3.15 (GH-111188) (#111326) 2023-10-27 16:08:53 +03:00
lzma.py bpo-45475: Revert __iter__ optimization for GzipFile, BZ2File, and LZMAFile. (GH-29016) 2021-10-19 11:51:48 +09:00
mailbox.py
mailcap.py [3.11] gh-68966: Make mailcap refuse to match unsafe filenames/types/params (GH-91993) (GH-93458) 2022-06-03 08:25:58 -07:00
mimetypes.py bpo-45639: Add webp and avif image formats to mimetypes (#29259) 2022-05-03 15:17:57 -06:00
modulefinder.py bpo-45017: move opcode-related logic from modulefinder to dis (GH-28246) 2021-09-09 14:04:12 +01:00
netrc.py bpo-28806: Continue work: improve the netrc library (GH-26330) 2021-11-17 11:07:54 +02:00
nntplib.py gh-91217: deprecate nntplib (GH-91543) 2022-04-15 12:32:56 -07:00
ntpath.py [3.11] gh-106242: Make ntpath.realpath errors consistent with abspath when there are embedded nulls (GH-108248) 2023-08-22 15:35:16 +01:00
nturl2path.py
numbers.py [3.11] gh-68163: Correct conversion of Rational instances to float (GH-25619) (#96556) 2022-09-08 12:03:53 +01:00
opcode.py [3.11] GH-93516: Backport GH-93769 (GH-94231) 2022-06-28 16:30:22 +01:00
operator.py bpo-44019: Add operator.call() to __all__ for the operator module (GH-29110) 2021-10-21 19:05:36 +09:00
optparse.py
os.py gh-57179: Add note on symlinks for os.walk (GH-94799) 2022-10-07 20:00:04 -07:00
pathlib.py [3.11] GH-87695: Fix OSError from pathlib.Path.glob() (GH-104292) (GH-104362) 2023-05-10 23:19:49 +00:00
pdb.py [3.11] gh-108791: Fix pdb CLI invalid argument handling (GH-108816) (#111063) 2023-10-19 14:26:40 +01:00
pickle.py gh-90494: Reject 6th element of the __reduce__() tuple (GH-93609) (GH-93631) 2022-06-10 16:00:19 +02:00
pickletools.py
pipes.py gh-91217: deprecate-pipes (GH-91779) 2022-04-21 19:28:34 -07:00
pkgutil.py [3.11] gh-68654: Clarify subdirectories used by pkgutil.extend_path (GH-103701) 2023-04-23 02:57:10 -06:00
platform.py gh-100750: pass encoding kwarg in lib/platform.py (GH-100751) 2023-01-20 21:07:56 -08:00
plistlib.py gh-101992: update pstlib module documentation (GH-102133) 2023-03-04 22:36:00 -08:00
poplib.py
posixpath.py gh-96192: fix os.ismount() to use a path that is str or bytes (GH-96194) 2022-11-30 15:31:49 -08:00
pprint.py [3.11] [pprint]: Add docstring about PrettyPrinter.underscore_numbers parameter (GH-112963) (#113052) 2023-12-13 12:38:19 +00:00
profile.py gh-103935: Use io.open_code() when executing code in trace and profile modules (GH-103947) 2023-04-27 21:23:46 +00:00
pstats.py [3.11] Fix type annotation of pstats.FunctionProfile.ncalls (GH-96741) (#96835) 2022-10-05 14:57:11 -07:00
pty.py [3.11] gh-96522: Fix deadlock in pty.spawn (GH-96639) (#104655) 2023-05-19 16:54:50 +02:00
py_compile.py bpo-45428: Fix reading filenames from stdin in py_compile (GH-28848) 2021-10-15 12:38:55 +03:00
pyclbr.py
pydoc.py [3.11] gh-112007: Re-organize help utility intro message (GH-112017) (#112048) 2023-11-13 19:50:56 +00:00
queue.py gh-90879: Fix missing parameter for put_nowait() (GH-91514) 2022-04-14 17:23:57 +09:00
quopri.py
random.py [3.11] GH-101097: Switch from standard interval notation to greater or less than signs for random.random()'s documentation (GH-101119) (GH-101246) 2023-01-22 13:45:55 -08:00
reprlib.py bpo-39549: reprlib.Repr uses a “fillvalue” attribute (GH-18343) 2021-09-22 15:45:58 -05:00
rlcompleter.py gh-92345: Import rlcompleter before sys.path is extended (#92346) 2022-05-05 21:24:16 +02:00
runpy.py bpo-26792: Improve docstrings of runpy module run_functions (#30729) 2022-04-29 12:22:46 -06:00
sched.py
secrets.py bpo-47126: Update to canonical PEP URLs specified by PEP 676 (GH-32124) 2022-03-30 12:00:27 +01:00
selectors.py [3.11] gh-110038: KqueueSelector must count all read/write events (GH-110039) (#110044) 2023-09-28 20:58:24 +02:00
shelve.py
shlex.py
shutil.py [3.11] bpo-35332: Handle os.close() errors in shutil.rmtree() (GH-23766) (GH-112764) 2023-12-05 19:25:52 +00:00
signal.py bpo-27718: Fix help for the signal module (GH-30063) 2021-12-13 11:21:55 +02:00
site.py gh-90473: disable user site packages on WASI/Emscripten (GH-93633) 2022-06-09 09:12:51 -07:00
smtpd.py bpo-47061: use warnings._deprecated() with asynchat, asyncore, and smtpd (GH-32350) 2022-04-06 11:22:39 -07:00
smtplib.py bpo-43124: Fix smtplib multiple CRLF injection (GH-25987) 2021-08-29 16:10:50 +02:00
sndhdr.py gh-85525: Indicate supported sound header formats (GH-21575) 2022-10-15 08:09:20 -07:00
socket.py Fix broken link to MSDN (GH-102355) 2023-03-13 06:42:30 -07:00
socketserver.py bpo-40280: Disable AF_UNIX, AF_PACKET, SO_REUSE* on Emscripten (#31829) 2022-03-11 23:25:14 +01:00
sre_compile.py bpo-47152: Convert the re module into a package (GH-32177) 2022-04-02 11:35:13 +03:00
sre_constants.py bpo-47152: Convert the re module into a package (GH-32177) 2022-04-02 11:35:13 +03:00
sre_parse.py bpo-47152: Convert the re module into a package (GH-32177) 2022-04-02 11:35:13 +03:00
ssl.py [3.11] gh-84443: SSLSocket.recv_into() now support buffer protocol with itemsize != 1 (GH-20310) (GH-112459) 2023-11-27 17:41:05 +00:00
stat.py
statistics.py [3.11] GH-99155: Fix NormalDist pickle with 0 and 1 protocols (GH-99156). (GH-99188) 2022-11-07 01:41:08 -08:00
string.py bpo-46307: Add string.Template.get_identifiers() method (GH-30493) 2022-01-11 11:15:42 -08:00
stringprep.py
struct.py
subprocess.py [3.11] gh-106723: forward -Xfrozen_modules option to spawned process interpreters (GH-106724) (#107368) 2023-07-28 11:20:56 +05:30
sunau.py gh-91217: deprecate sunau (GH-91866) 2022-04-25 16:26:43 -07:00
symtable.py Change list to view object (GH-93661) 2022-06-11 04:20:52 -07:00
sysconfig.py [3.11] gh-92897: Ensure venv --copies respects source build property of the creating interpreter (GH-92899) (GH-94567) 2022-07-05 16:40:17 +01:00
tabnanny.py gh-97639: Remove tokenize.NL check from tabnanny (GH-97640) 2022-10-03 19:10:00 -07:00
tarfile.py [3.11] gh-107845: Fix symlink handling for tarfile.data_filter (GH-107846) (GH-108209) 2023-08-22 10:51:58 +02:00
telnetlib.py gh-91217: deprecate telnetlib (GH-91958) 2022-04-26 10:45:08 -07:00
tempfile.py [3.11] gh-79325: Fix recursion error in TemporaryDirectory cleanup on Windows (GH-112762) (GH-112848) 2023-12-07 17:46:30 +00:00
textwrap.py bpo-46544: Do not leak x and uspace in textwrap.TextWrapper (GH-30955) 2022-01-27 13:55:58 +02:00
this.py
threading.py [3.11] gh-109593: Fix reentrancy issue in multiprocessing resource_tracker (GH-109629) (#109897) 2023-09-26 12:21:52 +00:00
timeit.py [3.11] gh-105052:update timeit function's description (GH-105060) (#108535) 2023-08-27 03:57:32 -04:00
token.py
tokenize.py bpo-46565: del loop vars that are leaking into module namespaces (GH-30993) 2022-02-03 11:20:08 +02:00
trace.py gh-103935: Use io.open_code() when executing code in trace and profile modules (GH-103947) 2023-04-27 21:23:46 +00:00
traceback.py [3.11] bpo-43950: handle wide unicode characters in tracebacks (GH-28150) (#111373) 2023-10-27 09:46:20 +09:00
tracemalloc.py
tty.py
turtle.py gh-101100: Fix Sphinx warnings in turtle module (GH-102340) 2023-03-13 04:33:38 -07:00
types.py gh-89828: Do not relay the __class__ attribute in GenericAlias (GH-93754) 2022-06-18 07:41:25 -07:00
typing.py [3.11] gh-113255: Clarify docs for typing.reveal_type (#113286) (#113326) 2023-12-20 18:35:13 +00:00
uu.py [3.11] gh-99889: Fix directory traversal security flaw in uu.decode() (GH-104096) (#104329) 2023-05-09 09:46:25 -07:00
uuid.py gh-98415: Fix uuid.getnode() ifconfig implementation (GH-98423) 2022-11-02 12:12:31 -07:00
warnings.py gh-91230: Concise catch_warnings with simplefilter (#91435) 2022-04-23 17:55:22 -07:00
wave.py [3.11] gh-105096: Reformat wave documentation (#105136) (#105138) (#105155) 2023-05-31 16:40:25 +00:00
weakref.py Remove unnecessary registration of weakref.WeakSet to _collections_abc.Set (GH-32211) 2022-03-31 09:11:35 -05:00
webbrowser.py bpo-43137: Revert "webbrowser: Don't run gvfs-open on GNOME" (GH-30417) 2022-01-05 11:53:23 +00:00
xdrlib.py gh-91217: deprecate xdrlib (GH-92066) 2022-04-29 18:22:10 -07:00
zipapp.py
zipfile.py [3.11] gh-106752: Sync with zipp 3.16.2 (GH-106757) (#106778) 2023-07-15 10:15:38 -04:00
zipimport.py GH-87235: Make sure "python /dev/fd/9 9</path/to/script.py" works on macOS (GH-99768) 2022-11-27 03:19:02 -08:00