]> git.ipfire.org Git - thirdparty/Python/cpython.git/log
thirdparty/Python/cpython.git
5 years agobpo-37228: Fix loop.create_datagram_endpoint()'s usage of SO_REUSEADDR (#17311)
Kyle Stanley [Mon, 9 Dec 2019 14:21:10 +0000 (09:21 -0500)] 
bpo-37228: Fix loop.create_datagram_endpoint()'s usage of SO_REUSEADDR (#17311)

5 years agobpo-39006: Fix asyncio when the ssl module is missing (GH-17524)
Victor Stinner [Mon, 9 Dec 2019 14:02:03 +0000 (15:02 +0100)] 
bpo-39006: Fix asyncio when the ssl module is missing (GH-17524)

Fix asyncio when the ssl module is missing: only check for
ssl.SSLSocket instance if the ssl module is available.

5 years agobpo-38916: array.array: remove fromstring() and tostring() (GH-17487)
Victor Stinner [Mon, 9 Dec 2019 13:09:14 +0000 (14:09 +0100)] 
bpo-38916: array.array: remove fromstring() and tostring() (GH-17487)

array.array: Remove tostring() and fromstring() methods.  They were
aliases to tobytes() and frombytes(), deprecated since Python 3.2.

5 years agobpo-38547: Fix test_pty if the process is the session leader (GH-17519)
Victor Stinner [Mon, 9 Dec 2019 10:57:05 +0000 (11:57 +0100)] 
bpo-38547: Fix test_pty if the process is the session leader (GH-17519)

Fix test_pty: if the process is the session leader, closing the
master file descriptor raises a SIGHUP signal: simply ignore SIGHUP
when running the tests.

5 years agobpo-38673: dont switch to ps2 if the line starts with comment or whitespace (GH-17421)
Batuhan Taşkaya [Mon, 9 Dec 2019 04:36:27 +0000 (07:36 +0300)] 
bpo-38673: dont switch to ps2 if the line starts with comment or whitespace (GH-17421)

https://bugs.python.org/issue38673

5 years agobpo-38708: email: Fix a potential IndexError when parsing Message-ID (GH-17504)
Abhilash Raj [Mon, 9 Dec 2019 01:37:34 +0000 (17:37 -0800)] 
bpo-38708: email: Fix a potential IndexError when parsing Message-ID (GH-17504)

Fix a potential IndexError when passing an empty value to the message-id
parser. Instead, HeaderParseError should be raised.

5 years agobpo-38698: Add a new InvalidMessageID token to email header parser. (GH-17503)
Abhilash Raj [Mon, 9 Dec 2019 01:35:38 +0000 (17:35 -0800)] 
bpo-38698: Add a new InvalidMessageID token to email header parser. (GH-17503)

This adds a new InvalidMessageID token to the email header parser which can be
used to represent invalid message-id headers in the parse tree.

5 years agobpo-38858: Fix ref leak in pycore_interp_init() (GH-17512)
Victor Stinner [Sun, 8 Dec 2019 20:55:58 +0000 (21:55 +0100)] 
bpo-38858: Fix ref leak in pycore_interp_init() (GH-17512)

bpo-38858, bpo-38997: _PySys_Create() returns a strong reference to
the sys module: Py_DECREF() is needed when we are done with the
module.

5 years agobpo-38994: Implement __class_getitem__ for PathLike (GH-17498)
Batuhan Taşkaya [Sun, 8 Dec 2019 20:31:15 +0000 (23:31 +0300)] 
bpo-38994: Implement __class_getitem__ for PathLike (GH-17498)

https://bugs.python.org/issue38994

5 years agobpo-38669: patch.object now raises a helpful error (GH17034)
Elena Oat [Sun, 8 Dec 2019 20:14:38 +0000 (12:14 -0800)] 
bpo-38669: patch.object now raises a helpful error (GH17034)

This means a clearer message is now shown when patch.object is called with two string arguments, rather than a class and a string argument.

5 years agobpo-38979: fix ContextVar "__class_getitem__" method (GH-17497)
AMIR [Sun, 8 Dec 2019 11:35:59 +0000 (15:05 +0330)] 
bpo-38979: fix ContextVar "__class_getitem__" method (GH-17497)

now contextvars.ContextVar "__class_getitem__" method returns ContextVar class, not None.

https://bugs.python.org/issue38979

Automerge-Triggered-By: @asvetlov
5 years agobpo-38852: Set thread stack size to 8 Mb for debug builds on android platforms (GH...
xdegaye [Sun, 8 Dec 2019 07:40:14 +0000 (08:40 +0100)] 
bpo-38852: Set thread stack size to 8 Mb for debug builds on android platforms (GH-17337)

5 years agobpo-38991: Remove test.support.strip_python_stderr() (GH-17490)
Victor Stinner [Sun, 8 Dec 2019 07:38:16 +0000 (08:38 +0100)] 
bpo-38991: Remove test.support.strip_python_stderr() (GH-17490)

test.support: run_python_until_end(), assert_python_ok() and
assert_python_failure() functions no longer strip whitespaces from
stderr.

5 years agobpo-38820: OpenSSL 3.0.0 compatibility. (GH-17190)
Christian Heimes [Sat, 7 Dec 2019 16:59:36 +0000 (17:59 +0100)] 
bpo-38820: OpenSSL 3.0.0 compatibility. (GH-17190)

test_openssl_version now accepts version 3.0.0.

getpeercert() no longer returns IPv6 addresses with a trailing new line.

Signed-off-by: Christian Heimes <christian@python.org>
https://bugs.python.org/issue38820

5 years agobpo-29636: json.tool: Add document for indentation options. (GH-17482)
Daniel Himmelstein [Sat, 7 Dec 2019 14:14:40 +0000 (07:14 -0700)] 
bpo-29636: json.tool: Add document for indentation options. (GH-17482)

And updated test to use subprocess.run

5 years agobpo-38652: Remove provisional note for asyncio.BufferedProtocol (GH-17047)
Anj-A [Sat, 7 Dec 2019 12:53:13 +0000 (12:53 +0000)] 
bpo-38652: Remove provisional note for asyncio.BufferedProtocol (GH-17047)

https://bugs.python.org/issue38652

5 years ago bpo-37404: Raising value error if an SSLSocket is passed to asyncio functions (GH...
idomic [Sat, 7 Dec 2019 11:52:36 +0000 (06:52 -0500)] 
 bpo-37404: Raising value error if an SSLSocket is passed to asyncio functions (GH-16457)

https://bugs.python.org/issue37404

5 years agoMake repr of C accelerated TaskWakeupMethWrapper the same as of pure Python version...
Andrew Svetlov [Sat, 7 Dec 2019 11:23:21 +0000 (13:23 +0200)] 
Make repr of C accelerated TaskWakeupMethWrapper the same as of pure Python version (GH-17484)

5 years agobpo-38529: Fix asyncio stream warning (GH-17474)
Andrew Svetlov [Sat, 7 Dec 2019 11:22:00 +0000 (13:22 +0200)] 
bpo-38529: Fix asyncio stream warning (GH-17474)

5 years agobpo-38978: Implement __class_getitem__ for asyncio objects (GH-17491)
Batuhan Taşkaya [Sat, 7 Dec 2019 11:05:07 +0000 (14:05 +0300)] 
bpo-38978: Implement __class_getitem__ for asyncio objects (GH-17491)

https://bugs.python.org/issue38978

5 years agobpo-37931: Fix crash on OSX re-initializing os.environ (GH-15428)
Benoit Hudson [Fri, 6 Dec 2019 19:15:03 +0000 (14:15 -0500)] 
bpo-37931: Fix crash on OSX re-initializing os.environ (GH-15428)

On most platforms, the `environ` symbol is accessible everywhere.

In a dylib on OSX, it's not easily accessible, you need to find it with
_NSGetEnviron.

The code was caching the *value* of environ. But a setenv() can change the value,
leaving garbage at the old value. Fix: don't cache the value of environ, just
read it every time.

5 years agobpo-38982: Fix asyncio PidfdChildWatcher on waitpid() error (GH-17477)
Victor Stinner [Fri, 6 Dec 2019 15:32:41 +0000 (16:32 +0100)] 
bpo-38982: Fix asyncio PidfdChildWatcher on waitpid() error (GH-17477)

If waitpid() is called elsewhere, waitpid() call fails with
ChildProcessError: use return code 255 in this case, and log a
warning. It ensure that the pidfd file descriptor is closed if this
error occurs.

5 years agobpo-36820: Break unnecessary cycle in socket.py, codeop.py and dyld.py (GH-13135)
Mario Corchero [Fri, 6 Dec 2019 14:27:38 +0000 (14:27 +0000)] 
bpo-36820: Break unnecessary cycle in socket.py, codeop.py and dyld.py (GH-13135)

Break cycle generated when saving an exception in socket.py, codeop.py and dyld.py as they keep alive not only the exception but user objects through the ``__traceback__`` attribute.

https://bugs.python.org/issue36820

Automerge-Triggered-By: @pablogsal
5 years agobpo-27413: json.tool: Add --no-ensure-ascii option. (GH-17472)
wim glenn [Fri, 6 Dec 2019 06:44:01 +0000 (00:44 -0600)] 
bpo-27413: json.tool: Add --no-ensure-ascii option. (GH-17472)

5 years agobpo-38858: Add pycore_interp_init() code to factorize code (GH-17483)
Victor Stinner [Fri, 6 Dec 2019 02:37:07 +0000 (03:37 +0100)] 
bpo-38858: Add pycore_interp_init() code to factorize code (GH-17483)

Add a new pycore_interp_init() function called by new_interpreter()
and pyinit_config().

5 years agobpo-38858: new_interpreter() reuses _PySys_Create() (GH-17481)
Victor Stinner [Fri, 6 Dec 2019 01:43:30 +0000 (02:43 +0100)] 
bpo-38858: new_interpreter() reuses _PySys_Create() (GH-17481)

new_interpreter() now calls _PySys_Create() to create a new sys
module isolated from the main interpreter. It now calls
_PySys_InitCore() and _PyImport_FixupBuiltin().

init_interp_main() now calls _PySys_InitMain().

5 years agoFix unquoted YAML in Windows release build (GH-17479)
Steve Dower [Thu, 5 Dec 2019 23:32:04 +0000 (15:32 -0800)] 
Fix unquoted YAML in Windows release build (GH-17479)

5 years agoRemove unused variable in Python/pylifecycle.c (GH-17475)
Pablo Galindo [Thu, 5 Dec 2019 16:18:27 +0000 (16:18 +0000)] 
Remove unused variable in Python/pylifecycle.c (GH-17475)

5 years agobpo-27961: Replace PY_LLONG_MAX, PY_LLONG_MIN and PY_ULLONG_MAX with standard macros...
Sergey Fedoseev [Thu, 5 Dec 2019 14:55:28 +0000 (19:55 +0500)] 
bpo-27961: Replace PY_LLONG_MAX, PY_LLONG_MIN and PY_ULLONG_MAX with standard macros (GH-15385)

Use standard constants LLONG_MIN, LLONG_MAX and ULLONG_MAX.

5 years agobpo-38951: Use threading.main_thread() check in asyncio (GH-17433)
Hill Ma [Thu, 5 Dec 2019 12:40:12 +0000 (04:40 -0800)] 
bpo-38951: Use threading.main_thread() check in asyncio (GH-17433)

https://bugs.python.org/issue38951

5 years agobpo-38698: Prevent UnboundLocalError to pop up in parse_message_id (GH-17277)
Claudiu Popa [Thu, 5 Dec 2019 03:14:26 +0000 (04:14 +0100)] 
bpo-38698: Prevent UnboundLocalError to pop up in parse_message_id (GH-17277)

parse_message_id() was improperly using a token defined inside an exception
handler, which was raising `UnboundLocalError` on parsing an invalid value.

https://bugs.python.org/issue38698

5 years agobpo-38965: Fix faulthandler._stack_overflow() on GCC 10 (GH-17467)
Victor Stinner [Wed, 4 Dec 2019 20:10:06 +0000 (21:10 +0100)] 
bpo-38965: Fix faulthandler._stack_overflow() on GCC 10 (GH-17467)

Use the "volatile" keyword to prevent tail call optimization
on any compiler, rather than relying on compiler specific pragma.

5 years ago bpo-38634: Allow non-apple build to cope with libedit (GH-16986)
serge-sans-paille [Wed, 4 Dec 2019 16:02:57 +0000 (17:02 +0100)] 
 bpo-38634: Allow non-apple build to cope with libedit (GH-16986)

The readline module now detects if Python is linked to libedit at runtime
on all platforms.  Previously, the check was only done on macOS.

If Python is used as a library by a binary linking to libedit, the linker
resolves the rl_initialize symbol required by the readline module against
libedit instead of libreadline, which leads to a segfault.

Take advantage of the existing supporting code to have readline module being
compatible with both situations.

5 years agobpo-38962: Fix reference leak in the per-subinterpreter gc (GH-17457)
Pablo Galindo [Wed, 4 Dec 2019 11:51:03 +0000 (11:51 +0000)] 
bpo-38962: Fix reference leak in the per-subinterpreter gc (GH-17457)

https://bugs.python.org/issue38962

Automerge-Triggered-By: @pablogsal
5 years agobpo-38962: Fix reference leak in new_interpreter() (GH-17453)
Pablo Galindo [Wed, 4 Dec 2019 11:19:59 +0000 (11:19 +0000)] 
bpo-38962: Fix reference leak in new_interpreter() (GH-17453)

https://bugs.python.org/issue38962

Automerge-Triggered-By: @pablogsal
5 years agobpo-33684: json.tool: Use utf-8 for infile and outfile. (GH-17460)
Inada Naoki [Wed, 4 Dec 2019 09:39:31 +0000 (18:39 +0900)] 
bpo-33684: json.tool: Use utf-8 for infile and outfile. (GH-17460)

5 years agobpo-38962: Fix reference leak in test_httpservers (GH-17454)
Pablo Galindo [Wed, 4 Dec 2019 09:29:10 +0000 (09:29 +0000)] 
bpo-38962: Fix reference leak in test_httpservers (GH-17454)

5 years agoAdd setobject.c (GH-17463)
Raymond Hettinger [Wed, 4 Dec 2019 09:07:02 +0000 (04:07 -0500)] 
Add setobject.c (GH-17463)

5 years agoadd @ethanfurman for tarfile (GH-17461)
Ethan Furman [Wed, 4 Dec 2019 08:18:31 +0000 (00:18 -0800)] 
add @ethanfurman for tarfile (GH-17461)

5 years agobpo-29636: Add --(no-)indent arguments to json.tool (GH-345)
Daniel Himmelstein [Wed, 4 Dec 2019 06:15:19 +0000 (01:15 -0500)] 
bpo-29636: Add --(no-)indent arguments to json.tool (GH-345)

5 years agobpo-27873: Update docstring for multiprocessing.Pool.map (GH-17436)
An Long [Tue, 3 Dec 2019 23:30:53 +0000 (07:30 +0800)] 
bpo-27873: Update docstring for multiprocessing.Pool.map (GH-17436)

Update docstring for `multiprocessing.Pool.map` to mention `pool.starmap()`.

Prev PR: https://github.com/python/cpython/pull/17367  @aeros

https://bugs.python.org/issue27873

5 years agobpo-38270: Fix indentation of test_hmac assertions (GH-17446)
stratakis [Tue, 3 Dec 2019 15:35:54 +0000 (16:35 +0100)] 
bpo-38270: Fix indentation of test_hmac assertions (GH-17446)

Since https://github.com/python/cpython/commit/c64a1a61e6fc542cada40eb069a239317e1af36e two assertions were indented and thus ignored when running test_hmac.

This PR fixes it. As the change is quite trivial I didn't add a NEWS entry.

https://bugs.python.org/issue38270

5 years agobpo-38945: UU Encoding: Don't let newline in filename corrupt the output format ...
Matthew Rollings [Mon, 2 Dec 2019 22:25:21 +0000 (22:25 +0000)] 
bpo-38945: UU Encoding: Don't let newline in filename corrupt the output format (#17418)

5 years agoFix compiler warning in Objects/unicodeobject.c (GH-17440)
Pablo Galindo [Mon, 2 Dec 2019 18:09:43 +0000 (18:09 +0000)] 
Fix compiler warning in Objects/unicodeobject.c (GH-17440)

5 years agobpo-38815: Accept TLSv3 default in min max test (GH-NNNN) (GH-17437)
torsava [Mon, 2 Dec 2019 16:15:42 +0000 (17:15 +0100)] 
bpo-38815: Accept TLSv3 default in min max test (GH-NNNN) (GH-17437)

Make ssl tests less strict and also accept TLSv3 as the default maximum
version. This change unbreaks test_min_max_version on Fedora 32.

https://bugs.python.org/issue38815

5 years agobpo-38449: Add URL delimiters test cases (#16729)
Dong-hee Na [Sun, 1 Dec 2019 23:06:28 +0000 (08:06 +0900)] 
bpo-38449: Add URL delimiters test cases (#16729)

* bpo-38449: Add tricky test cases

* bpo-38449: Reflect codereview

5 years agodocument threading.Lock.locked() (GH-17427)
idomic [Sun, 1 Dec 2019 20:07:39 +0000 (15:07 -0500)] 
document threading.Lock.locked() (GH-17427)

5 years agoFix typos (GH-17423)
Ofek Lev [Sun, 1 Dec 2019 05:44:21 +0000 (00:44 -0500)] 
Fix typos (GH-17423)

5 years agobpo-37523: Raise ValueError for I/O operations on a closed zipfile.ZipExtFile. (GH...
Daniel Hillier [Sat, 30 Nov 2019 08:30:47 +0000 (19:30 +1100)] 
bpo-37523: Raise ValueError for I/O operations on a closed zipfile.ZipExtFile. (GH-14658)

Raises ValueError when calling the following on a closed zipfile.ZipExtFile: read, readable, seek, seekable, tell.

5 years agoFix old mention of virtualenv (GH-17417)
Brett Cannon [Fri, 29 Nov 2019 23:37:08 +0000 (15:37 -0800)] 
Fix old mention of virtualenv (GH-17417)

Automerge-Triggered-By: @brettcannon
5 years agobpo-38920: Add audit hooks for when sys.excepthook and sys.unraisable hooks are invok...
Steve Dower [Thu, 28 Nov 2019 16:46:11 +0000 (08:46 -0800)] 
bpo-38920: Add audit hooks for when sys.excepthook and sys.unraisable hooks are invoked (GH-17392)

Also fixes some potential segfaults in unraisable hook handling.

5 years agobpo-38524: clarify example a bit and improve formatting (GH-17406)
Tal Einat [Thu, 28 Nov 2019 05:22:09 +0000 (07:22 +0200)] 
bpo-38524: clarify example a bit and improve formatting (GH-17406)

5 years agobpo-38927: Use python -m pip to upgrade venv deps (GH-17403)
Tzu-ping Chung [Wed, 27 Nov 2019 20:25:23 +0000 (04:25 +0800)] 
bpo-38927: Use python -m pip to upgrade venv deps (GH-17403)

I suggest you add `bpo-NNNNN: ` as a prefix for the first commit for future PRs. Thanks!

5 years agobpo-38928: Fix versionadded for venv's upgrade_deps function (GH-17404)
Tzu-ping Chung [Wed, 27 Nov 2019 20:21:48 +0000 (04:21 +0800)] 
bpo-38928: Fix versionadded for venv's upgrade_deps function (GH-17404)

5 years agobpo-26730: Fix SpooledTemporaryFile data corruption (GH-17400)
Inada Naoki [Wed, 27 Nov 2019 13:22:06 +0000 (22:22 +0900)] 
bpo-26730: Fix SpooledTemporaryFile data corruption (GH-17400)

SpooledTemporaryFile.rollback() might cause data corruption
when it is in text mode.

Co-Authored-By: Serhiy Storchaka <storchaka@gmail.com>
5 years agobpo-38524: document implicit and explicit calling of descriptors' __set_name__ (GH...
Florian Dahlitz [Wed, 27 Nov 2019 08:46:40 +0000 (09:46 +0100)] 
bpo-38524: document implicit and explicit calling of descriptors' __set_name__ (GH-17364)

5 years agoShow the differing module names for readlink() (GH-17395)
Yoni Lavi [Wed, 27 Nov 2019 05:08:50 +0000 (05:08 +0000)] 
Show the differing module names for readlink() (GH-17395)

This was very confusing with the text for both being just `readlink()`.

5 years agoBe more specific about the `.so` gitignore patterns (GH-17328)
Anthony Sottile [Wed, 27 Nov 2019 04:54:46 +0000 (20:54 -0800)] 
Be more specific about the `.so` gitignore patterns (GH-17328)

In GH-15823 the pattern was changed from `libpython*.so*` to `*.so*` which
matches a bit too greedily for some packagers.  For instance this trips up
`debian/README.source`.  A more specific pattern fixes this issue.

5 years agobpo-38688, shutil.copytree: consume iterator and create list of entries to prevent...
Bruno P. Kinoshita [Wed, 27 Nov 2019 01:10:37 +0000 (14:10 +1300)] 
bpo-38688, shutil.copytree: consume iterator and create list of entries to prevent infinite recursion (GH-17098)

5 years agobpo-38922: Raise code.__new__ audit event when code object replace() is called (GH...
Steve Dower [Wed, 27 Nov 2019 00:27:50 +0000 (16:27 -0800)] 
bpo-38922: Raise code.__new__ audit event when code object replace() is called (GH-17394)

5 years agobpo-38045: Improve the performance of _decompose() in enum.py (GH-16483)
HongWeipeng [Tue, 26 Nov 2019 22:36:02 +0000 (06:36 +0800)] 
bpo-38045: Improve the performance of _decompose() in enum.py (GH-16483)

* Improve the performance of _decompose() in enum.py

Co-Authored-By: Brandt Bucher <brandtbucher@gmail.com>
5 years agobpo-38892: Improve docs for audit event (GH-17361)
Terry Jan Reedy [Tue, 26 Nov 2019 17:07:48 +0000 (12:07 -0500)] 
bpo-38892: Improve docs for audit event (GH-17361)

5 years agobpo-22377: Fixes documentation for %Z in datetime (GH-16507)
Karl Dubost [Tue, 26 Nov 2019 16:38:41 +0000 (01:38 +0900)] 
bpo-22377: Fixes documentation for %Z in datetime (GH-16507)

This fixes the issue discussed in https://bugs.python.org/issue22377
and fixes it according to the comments made by Paul Ganssle @pganssle

* It clarifies which values are acceptable in the table
* It extends the note with a clearer information on the valid values

https://bugs.python.org/issue22377

5 years agobpo-27145: small_ints[x] could be returned in long_add and long_sub (GH-15716)
HongWeipeng [Tue, 26 Nov 2019 07:54:49 +0000 (15:54 +0800)] 
bpo-27145: small_ints[x] could be returned in long_add and long_sub (GH-15716)

5 years agoRemove use of deprecated `array.fromstring` method (GH-17332)
David Coles [Tue, 26 Nov 2019 06:31:09 +0000 (22:31 -0800)] 
Remove use of deprecated `array.fromstring` method (GH-17332)

5 years agobpo-38328: Speed up the creation time of constant list and set display. (GH-17114)
Brandt Bucher [Tue, 26 Nov 2019 06:16:53 +0000 (22:16 -0800)] 
bpo-38328: Speed up the creation time of constant list and set display. (GH-17114)

5 years agocloses bpo-38803: Fix leak in posixmodule. (GH-17373)
Eddie Elizondo [Tue, 26 Nov 2019 03:07:37 +0000 (19:07 -0800)] 
closes bpo-38803: Fix leak in posixmodule. (GH-17373)

5 years agobpo-21063: Improve module synopsis for distutils (GH-17363)
Sanchit Khurana [Mon, 25 Nov 2019 22:17:59 +0000 (03:47 +0530)] 
bpo-21063: Improve module synopsis for distutils (GH-17363)

5 years agobpo-20928: support base-URL and recursive includes in etree.ElementInclude (#5723)
Stefan Behnel [Mon, 25 Nov 2019 15:36:25 +0000 (16:36 +0100)] 
bpo-20928: support base-URL and recursive includes in etree.ElementInclude (#5723)

* bpo-20928: bring elementtree's XInclude support en-par with the implementation in lxml by adding support for recursive includes and a base-URL.

* bpo-20928: Support xincluding the same file multiple times, just not recursively.

* bpo-20928: Add 'max_depth' parameter to xinclude that limits the maximum recursion depth to 6 by default.

* Add news entry for updated ElementInclude support

5 years agobpo-38870: Remove dependency on contextlib to avoid performance regression on import...
Pablo Galindo [Mon, 25 Nov 2019 11:49:17 +0000 (11:49 +0000)] 
bpo-38870: Remove dependency on contextlib to avoid performance regression on import (GH-17376)

https://bugs.python.org/issue38870

Automerge-Triggered-By: @pablogsal
5 years agoFix typo in Doc/whatsnew/3.9.rst (GH-17372)
Pablo Galindo [Mon, 25 Nov 2019 11:16:39 +0000 (11:16 +0000)] 
Fix typo in Doc/whatsnew/3.9.rst (GH-17372)

5 years agobpo-38870: Expose a function to unparse an ast object in the ast module (GH-17302)
Pablo Galindo [Sun, 24 Nov 2019 23:02:40 +0000 (23:02 +0000)] 
bpo-38870: Expose a function to unparse an ast object in the ast module (GH-17302)

Add ast.unparse() as a function in the ast module that can be used to unparse an
ast.AST object and produce a string with code that would produce an equivalent ast.AST
object when parsed.

5 years ago bpo-38862: IDLE Strip Trailing Whitespace fixes end newlines (GH-17366)
Terry Jan Reedy [Sun, 24 Nov 2019 21:29:29 +0000 (16:29 -0500)] 
 bpo-38862: IDLE Strip Trailing Whitespace fixes end newlines  (GH-17366)

Extra newlines are removed at the end of non-shell files. If the file only has newlines after stripping other trailing whitespace, all are removed, as is done by patchcheck.py.

5 years agobpo-38876: Raise pickle.UnpicklingError when loading an item from memo for invalid...
Claudiu Popa [Sun, 24 Nov 2019 19:15:08 +0000 (20:15 +0100)] 
bpo-38876: Raise pickle.UnpicklingError when loading an item from memo for invalid input (GH-17335)

The previous code was raising a `KeyError` for both the Python and C implementation.
This was caused by the specified index of an invalid input which did not exist
in the memo structure, where the pickle stores what objects it has seen.
The malformed input would have caused either a `BINGET` or `LONG_BINGET` load
from the memo, leading to a `KeyError` as the determined index was bogus.

https://bugs.python.org/issue38876

https://bugs.python.org/issue38876

5 years agoRemove unnecessary variable definition (GH-17368)
Batuhan Taşkaya [Sun, 24 Nov 2019 16:46:18 +0000 (19:46 +0300)] 
Remove unnecessary variable definition (GH-17368)

5 years agoBetter runtime TypedDict (GH-17214)
Zac Hatfield-Dodds [Sun, 24 Nov 2019 10:48:48 +0000 (21:48 +1100)] 
Better runtime TypedDict (GH-17214)

This patch enables downstream projects inspecting a TypedDict subclass at runtime to tell which keys are optional.

This is essential for generating test data with Hypothesis or validating inputs with typeguard or pydantic.

5 years agobpo-38881: choices() raises ValueError when all weights are zero (GH-17362)
Raymond Hettinger [Sat, 23 Nov 2019 10:22:13 +0000 (02:22 -0800)] 
bpo-38881: choices() raises ValueError when all weights are zero (GH-17362)

5 years agobpo-38899: virtual environment activation for fish should use `source` (GH-17359)
Brett Cannon [Sat, 23 Nov 2019 07:32:27 +0000 (23:32 -0800)] 
bpo-38899: virtual environment activation for fish should use `source` (GH-17359)

The previously documented use of `.` is considered deprecated (https://fishshell.com/docs/current/commands.html#source).

https://bugs.python.org/issue38899

Automerge-Triggered-By: @brettcannon
5 years agobpo-38896: Remove PyUnicode_ClearFreeList() function (GH-17354)
Victor Stinner [Sat, 23 Nov 2019 01:30:32 +0000 (02:30 +0100)] 
bpo-38896: Remove PyUnicode_ClearFreeList() function (GH-17354)

Remove PyUnicode_ClearFreeList() function: the Unicode free list has
been removed in Python 3.3.

5 years agobpo-38686: fix HTTP Digest handling in request.py (#17045)
PypeBros [Fri, 22 Nov 2019 23:19:08 +0000 (00:19 +0100)] 
bpo-38686: fix HTTP Digest handling in request.py (#17045)

* fix HTTP Digest handling in request.py

There is a bug triggered when server replies to a request with `WWW-Authenticate: Digest` where `qop="auth,auth-int"` rather than mere `qop="auth"`. Having both `auth` and `auth-int` is legitimate according to the `qop-options` rule in §3.2.1 of [[https://www.ietf.org/rfc/rfc2617.txt|RFC 2617]]:
>      qop-options       = "qop" "=" <"> 1#qop-value <">
>      qop-value         = "auth" | "auth-int" | token
> **qop-options**: [...] If present, it is a quoted string **of one or more** tokens indicating the "quality of protection" values supported by the server.  The value `"auth"` indicates authentication; the value `"auth-int"` indicates authentication with integrity protection

This is description confirmed by the definition of the [//n//]`#`[//m//]//rule// extended-BNF pattern defined in §2.1 of [[https://www.ietf.org/rfc/rfc2616.txt|RFC 2616]] as 'a comma-separated list of //rule// with at least //n// and at most //m// items'.

When this reply is parsed by `get_authorization`, request.py only tests for identity with `'auth'`, failing to recognize it as one of the supported modes the server announced, and claims that `"qop 'auth,auth-int' is not supported"`.

* 📜🤖 Added by blurb_it.

* bpo-38686 review fix: remember why.

* fix trailing space in Lib/urllib/request.py

Co-Authored-By: Brandt Bucher <brandtbucher@gmail.com>
5 years agoUpdate CODEOWNERS (#17356)
Ethan Furman [Fri, 22 Nov 2019 22:28:41 +0000 (14:28 -0800)] 
Update CODEOWNERS (#17356)

Add Ethan Furman for enum, cgi, and cgitb.

5 years agobpo-38858: new_interpreter() uses pycore_init_import_warnings() (GH-17353)
Victor Stinner [Fri, 22 Nov 2019 20:54:33 +0000 (21:54 +0100)] 
bpo-38858: new_interpreter() uses pycore_init_import_warnings() (GH-17353)

5 years agobpo-38858: new_interpreter() reuses pycore_init_builtins() (GH-17351)
Victor Stinner [Fri, 22 Nov 2019 18:24:49 +0000 (19:24 +0100)] 
bpo-38858: new_interpreter() reuses pycore_init_builtins() (GH-17351)

new_interpreter() now calls _PyBuiltin_Init() to create the builtins
module and calls _PyImport_FixupBuiltin(), rather than using
_PyImport_FindBuiltin(tstate, "builtins").

pycore_init_builtins() is now responsible to initialize
intepr->builtins_copy: inline _PyImport_Init() and remove this
function.

5 years agobpo-38858: _PyImport_FixupExtensionObject() handles subinterpreters (GH-17350)
Victor Stinner [Fri, 22 Nov 2019 17:52:27 +0000 (18:52 +0100)] 
bpo-38858: _PyImport_FixupExtensionObject() handles subinterpreters (GH-17350)

If _PyImport_FixupExtensionObject() is called from a subinterpreter,
leave extensions unchanged and don't copy the module dictionary
into def->m_base.m_copy.

5 years agocloses bpo-29275: Remove Y2K reference from time module docs (GH-17321)
Callum Ward [Fri, 22 Nov 2019 16:57:14 +0000 (16:57 +0000)] 
closes bpo-29275: Remove Y2K reference from time module docs (GH-17321)

The Y2K reference is not needed as it only points out that Python's use
of C standard functions doesn't generally suffer from Y2K issues; the
point regarding conventions for conversion of 2-digit years in
:func:`strptime` is still valid.

5 years agobpo-38858: Add init_interp_main() subfunction (GH-17347)
Victor Stinner [Fri, 22 Nov 2019 16:52:42 +0000 (17:52 +0100)] 
bpo-38858: Add init_interp_main() subfunction (GH-17347)

Fix new_interpreter() error handling: undo it all if status is an
exception.

5 years agobpo-38858: Add init_set_builtins_open() subfunction (GH-17346)
Victor Stinner [Fri, 22 Nov 2019 15:19:14 +0000 (16:19 +0100)] 
bpo-38858: Add init_set_builtins_open() subfunction (GH-17346)

5 years agobpo-38804: Fix REDoS in http.cookiejar (GH-17157)
bcaller [Fri, 22 Nov 2019 14:22:11 +0000 (14:22 +0000)] 
bpo-38804: Fix REDoS in http.cookiejar (GH-17157)

The regex http.cookiejar.LOOSE_HTTP_DATE_RE was vulnerable to regular
expression denial of service (REDoS).

LOOSE_HTTP_DATE_RE.match is called when using http.cookiejar.CookieJar
to parse Set-Cookie headers returned by a server.
Processing a response from a malicious HTTP server can lead to extreme
CPU usage and execution will be blocked for a long time.

The regex contained multiple overlapping \s* capture groups.
Ignoring the ?-optional capture groups the regex could be simplified to

    \d+-\w+-\d+(\s*\s*\s*)$

Therefore, a long sequence of spaces can trigger bad performance.

Matching a malicious string such as

    LOOSE_HTTP_DATE_RE.match("1-c-1" + (" " * 2000) + "!")

caused catastrophic backtracking.

The fix removes ambiguity about which \s* should match a particular
space.

You can create a malicious server which responds with Set-Cookie headers
to attack all python programs which access it e.g.

    from http.server import BaseHTTPRequestHandler, HTTPServer

    def make_set_cookie_value(n_spaces):
        spaces = " " * n_spaces
        expiry = f"1-c-1{spaces}!"
        return f"b;Expires={expiry}"

    class Handler(BaseHTTPRequestHandler):
        def do_GET(self):
            self.log_request(204)
            self.send_response_only(204)  # Don't bother sending Server and Date
            n_spaces = (
                int(self.path[1:])  # Can GET e.g. /100 to test shorter sequences
                if len(self.path) > 1 else
                65506  # Max header line length 65536
            )
            value = make_set_cookie_value(n_spaces)
            for i in range(99):  # Not necessary, but we can have up to 100 header lines
                self.send_header("Set-Cookie", value)
            self.end_headers()

    if __name__ == "__main__":
        HTTPServer(("", 44020), Handler).serve_forever()

This server returns 99 Set-Cookie headers. Each has 65506 spaces.
Extracting the cookies will pretty much never complete.

Vulnerable client using the example at the bottom of
https://docs.python.org/3/library/http.cookiejar.html :

    import http.cookiejar, urllib.request
    cj = http.cookiejar.CookieJar()
    opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
    r = opener.open("http://localhost:44020/")

The popular requests library was also vulnerable without any additional
options (as it uses http.cookiejar by default):

    import requests
    requests.get("http://localhost:44020/")

* Regression test for http.cookiejar REDoS

If we regress, this test will take a very long time.

* Improve performance of http.cookiejar.ISO_DATE_RE

A string like

"444444" + (" " * 2000) + "A"

could cause poor performance due to the 2 overlapping \s* groups,
although this is not as serious as the REDoS in LOOSE_HTTP_DATE_RE was.

5 years agoFix quoted signature of setattrofunc (GH-17251)
Alex [Fri, 22 Nov 2019 13:48:14 +0000 (07:48 -0600)] 
Fix quoted signature of setattrofunc (GH-17251)

setattrofunc returns `int`, not `PyObject *`.

5 years agobpo-38866: Remove asyncore from test_pyclbr.py (GH-17316)
jacksonriley [Fri, 22 Nov 2019 12:51:58 +0000 (12:51 +0000)] 
bpo-38866: Remove asyncore from test_pyclbr.py (GH-17316)

Co-Authored-By: Kyle Stanley <aeros167@gmail.com>
5 years agobpo-38858: Call _PyUnicode_Fini() in Py_EndInterpreter() (GH-17330)
Victor Stinner [Fri, 22 Nov 2019 11:27:50 +0000 (12:27 +0100)] 
bpo-38858: Call _PyUnicode_Fini() in Py_EndInterpreter() (GH-17330)

Py_EndInterpreter() now clears the filesystem codec.

5 years agobpo-36854: Fix refleak in subinterpreter (GH-17331)
Victor Stinner [Fri, 22 Nov 2019 09:58:00 +0000 (10:58 +0100)] 
bpo-36854: Fix refleak in subinterpreter (GH-17331)

finalize_interp_clear() now explicitly clears the codec registry and
then trigger a GC collection to clear all references.

5 years agobpo-38863: Improve is_cgi() in http.server (GH-17312)
Siwon Kang [Fri, 22 Nov 2019 09:13:05 +0000 (18:13 +0900)] 
bpo-38863: Improve is_cgi() in http.server (GH-17312)

is_cgi() function of http.server library does not currently handle a
cgi script if one of the cgi_directories is located at the
sub-directory of given path. Since is_cgi() in CGIHTTPRequestHandler
class separates given path into (dir, rest) based on the first seen
'/', multi-level directories like /sub/dir/cgi-bin/hello.py is divided
into head=/sub, rest=dir/cgi-bin/hello.py then check whether '/sub'
exists in cgi_directories = [..., '/sub/dir/cgi-bin'].
This patch makes the is_cgi() keep expanding dir part to the next '/'
then checking if that expanded path exists in the cgi_directories.

Signed-off-by: Siwon Kang <kkangshawn@gmail.com>
https://bugs.python.org/issue38863

5 years agoDefer import of shutil which only needed for help and usage (GH-17334)
Raymond Hettinger [Fri, 22 Nov 2019 06:51:45 +0000 (22:51 -0800)] 
Defer import of shutil which only needed for help and usage (GH-17334)

5 years agobpo-38526: Fix zipfile.Path method name to be the correct one (#17317)
Claudiu Popa [Thu, 21 Nov 2019 21:23:13 +0000 (22:23 +0100)] 
bpo-38526: Fix zipfile.Path method name to be the correct one (#17317)

5 years agobpo-37838: get_type_hints for wrapped functions with forward reference (GH-17126)
benedwards14 [Thu, 21 Nov 2019 17:24:58 +0000 (17:24 +0000)] 
bpo-37838: get_type_hints for wrapped functions with forward reference (GH-17126)

https://bugs.python.org/issue37838

5 years agoCorrect release version to 3.9 for RERAISE and WITH_EXCEPT_START bytecodes. (#17318)
Mark Shannon [Thu, 21 Nov 2019 14:47:49 +0000 (14:47 +0000)] 
Correct release version to 3.9 for RERAISE and WITH_EXCEPT_START bytecodes. (#17318)

bpo-33387

Corrects commit fee5526

5 years agobpo-38692: Skip test_posix.test_pidfd_open() on EPERM (GH-17290)
Victor Stinner [Thu, 21 Nov 2019 11:54:54 +0000 (12:54 +0100)] 
bpo-38692: Skip test_posix.test_pidfd_open() on EPERM (GH-17290)

Skip the test_posix.test_pidfd_open() test if os.pidfd_open() fails
with a PermissionError. This situation can happen in a Linux sandbox
using a syscall whitelist which doesn't allow the pidfd_open()
syscall yet (like systemd-nspawn).

5 years agobpo-38875: test_capi: trashcan tests require cpu resource (GH-17314)
Victor Stinner [Thu, 21 Nov 2019 11:54:02 +0000 (12:54 +0100)] 
bpo-38875: test_capi: trashcan tests require cpu resource (GH-17314)

test_capi: trashcan tests now require the test "cpu" resource.

5 years agoCODEOWNERS: add myself for asyncore/chat, ftplib and shutil modules (#17313)
Giampaolo Rodola [Thu, 21 Nov 2019 09:38:51 +0000 (17:38 +0800)] 
CODEOWNERS: add myself for asyncore/chat, ftplib and shutil modules (#17313)