]> git.ipfire.org Git - thirdparty/Python/cpython.git/log
thirdparty/Python/cpython.git
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)

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

6 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.

6 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
6 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.

6 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)

6 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!

6 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)

6 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>
6 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)

6 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()`.

6 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.

6 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)

6 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)

6 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>
6 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)

6 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

6 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)

6 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)

6 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)

6 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)

6 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)

6 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

6 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
6 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)

6 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.

6 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.

6 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

6 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)

6 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.

6 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)

6 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
6 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.

6 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>
6 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.

6 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)

6 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.

6 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.

6 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.

6 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.

6 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)

6 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.

6 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 *`.

6 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>
6 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.

6 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.

6 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

6 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)

6 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)

6 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

6 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

6 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).

6 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.

6 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)

6 years agoProduce cleaner bytecode for 'with' and 'async with' by generating separate code...
Mark Shannon [Thu, 21 Nov 2019 09:11:43 +0000 (09:11 +0000)] 
Produce cleaner bytecode for 'with' and 'async with' by generating separate code for normal and exceptional paths. (#6641)

Remove BEGIN_FINALLY, END_FINALLY, CALL_FINALLY and POP_FINALLY bytecodes. Implement finally blocks by code duplication.
Reimplement frame.lineno setter using line numbers rather than bytecode offsets.

6 years agobpo-38858: Allocate small integers on the heap (GH-17301)
Victor Stinner [Thu, 21 Nov 2019 07:51:59 +0000 (08:51 +0100)] 
bpo-38858: Allocate small integers on the heap (GH-17301)

Allocate small Python integers (small_ints of longobject.c) on the
heap, rather than using static objects.

6 years agoUpdate functions.rst (GH-16468)
Géry Ogam [Thu, 21 Nov 2019 02:10:19 +0000 (03:10 +0100)] 
Update functions.rst (GH-16468)

This PR will make the following changes to the [_Built-in Functions_](https://docs.python.org/3/library/functions.html) chapter of the library documentation:

- improve hyperlinks in Sphinx roles (trailing 's' belong to hyperlinks).

Automerge-Triggered-By: @csabella
6 years agobpo-36277: Add document for pdb debug and retval commands (GH-12872)
Dave Nguyen [Thu, 21 Nov 2019 01:49:15 +0000 (19:49 -0600)] 
bpo-36277: Add document for pdb debug and retval commands (GH-12872)

https://bugs.python.org/issue36277

Automerge-Triggered-By: @csabella
6 years agoRemoved capital letter in parameter in stdtypes.rst (GH-17218)
Jules Lasne (jlasne) [Thu, 21 Nov 2019 01:30:05 +0000 (02:30 +0100)] 
Removed capital letter in parameter in stdtypes.rst (GH-17218)

Automerge-Triggered-By: @csabella
6 years agoFixed an incorrect sentence in the docs (GH-17205)
Aveheuzed [Thu, 21 Nov 2019 01:19:00 +0000 (02:19 +0100)] 
Fixed an incorrect sentence in the docs (GH-17205)

Fixed an incorrect sentence in Doc/c-api/mapping.rst I fell on
while translating the file.

skip issue

Automerge-Triggered-By: @csabella
6 years agobpo-38857: AsyncMock fix for awaitable values and StopIteration fix [3.8] (GH-17269)
Jason Fried [Thu, 21 Nov 2019 00:27:51 +0000 (16:27 -0800)] 
bpo-38857: AsyncMock fix for awaitable values and StopIteration fix [3.8] (GH-17269)

6 years agobpo-38823: Clean up _xxtestfuzz initialization. (GH-17216)
Brandt Bucher [Thu, 21 Nov 2019 00:17:03 +0000 (16:17 -0800)] 
bpo-38823: Clean up _xxtestfuzz initialization. (GH-17216)

https://bugs.python.org/issue38823

6 years agobpo-38841: Skip asyncio test_create_datagram_endpoint_existing_sock_unix (GH-17294)
xdegaye [Wed, 20 Nov 2019 20:02:07 +0000 (21:02 +0100)] 
bpo-38841: Skip asyncio test_create_datagram_endpoint_existing_sock_unix (GH-17294)

on platforms lacking a functional bind() for named unix domain sockets

https://bugs.python.org/issue38841

Automerge-Triggered-By: @asvetlov
6 years agobpo-38858: Fix Py_Finalize() when called from a subinterpreter (GH-17297)
Victor Stinner [Wed, 20 Nov 2019 17:39:12 +0000 (18:39 +0100)] 
bpo-38858: Fix Py_Finalize() when called from a subinterpreter (GH-17297)

Use _Py_IsMainInterpreter() in Py_Initialize() and Py_Finalize() to
detect if the current interpreter is the main interpreter or not.

6 years agobpo-33125: Add support for building and releasing Windows ARM64 packages (GH-16828)
Steve Dower [Wed, 20 Nov 2019 17:30:47 +0000 (09:30 -0800)] 
bpo-33125: Add support for building and releasing Windows ARM64 packages (GH-16828)

Note that the support is not actually enabled yet, and so we won't be publishing these packages. However, for those who want to build it themselves (even by reusing the Azure Pipelines definition), it's now relatively easy to enable.

6 years agoAdd Python 3.8 to py based search in find_python.bat (GH-17188)
Segev Finer [Wed, 20 Nov 2019 17:25:45 +0000 (19:25 +0200)] 
Add Python 3.8 to py based search in find_python.bat (GH-17188)

6 years agobpo-38858: Add _Py_IsMainInterpreter(tstate) (GH-17293)
Victor Stinner [Wed, 20 Nov 2019 16:34:39 +0000 (17:34 +0100)] 
bpo-38858: Add _Py_IsMainInterpreter(tstate) (GH-17293)

6 years agoUpdate information about publishing a new version to the Microsoft Store (GH-17262)
Steve Dower [Wed, 20 Nov 2019 16:21:14 +0000 (08:21 -0800)] 
Update information about publishing a new version to the Microsoft Store (GH-17262)

6 years agobpo-38821: Fix crash in argparse when using gettext (GH-17192)
Federico Bond [Wed, 20 Nov 2019 13:29:29 +0000 (10:29 -0300)] 
bpo-38821: Fix crash in argparse when using gettext (GH-17192)

6 years agobpo-37340: Remove PyMethod_ClearFreeList() and PyCFunction_ClearFreeList() (GH-17284)
Victor Stinner [Wed, 20 Nov 2019 11:59:12 +0000 (12:59 +0100)] 
bpo-37340: Remove PyMethod_ClearFreeList() and PyCFunction_ClearFreeList() (GH-17284)

Remove PyMethod_ClearFreeList() and PyCFunction_ClearFreeList()
functions: the free lists of bound method objects have been removed.

Remove also _PyMethod_Fini() and _PyCFunction_Fini() functions.

6 years agobpo-36854: Move _PyRuntimeState.gc to PyInterpreterState (GH-17287)
Victor Stinner [Wed, 20 Nov 2019 11:25:50 +0000 (12:25 +0100)] 
bpo-36854: Move _PyRuntimeState.gc to PyInterpreterState (GH-17287)

* Rename _PyGC_InitializeRuntime() to _PyGC_InitState()
* finalize_interp_clear() now also calls _PyGC_Fini() in
  subinterpreters (clear the GC state).

6 years agobpo-38835: Exclude PyFPE macros from the stable API (GH-17228)
Victor Stinner [Wed, 20 Nov 2019 11:17:09 +0000 (12:17 +0100)] 
bpo-38835: Exclude PyFPE macros from the stable API (GH-17228)

Exclude PyFPE_START_PROTECT() and PyFPE_END_PROTECT() macros of
pyfpe.h from Py_LIMITED_API (stable API).

6 years agobpo-38858: Fix reference leak in pycore_init_types() (GH-17286)
Victor Stinner [Wed, 20 Nov 2019 11:08:13 +0000 (12:08 +0100)] 
bpo-38858: Fix reference leak in pycore_init_types() (GH-17286)

Only call _PyGC_Init(), _PyExc_Init() and _PyErr_Init() in
new_interpreter().