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

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

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

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

5 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

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

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

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

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

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

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

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

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

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

5 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().

5 years agobpo-36854: gcmodule.c gets its state from tstate (GH-17285)
Victor Stinner [Wed, 20 Nov 2019 10:48:18 +0000 (11:48 +0100)] 
bpo-36854: gcmodule.c gets its state from tstate (GH-17285)

* Add GCState type for readability
* gcmodule.c now gets its gcstate from tstate
* _PyGC_DumpShutdownStats() now expects tstate rather than runtime
* Rename "state" to "gcstate" for readability: to avoid confusion
  between "state" and "tstate" for example.
* collect() now only expects tstate: it gets gcstate from tstate.
* Pass tstate to _PyErr_xxx() functions

5 years agobpo-36854: Clear the current thread later (GH-17279)
Victor Stinner [Wed, 20 Nov 2019 10:17:17 +0000 (11:17 +0100)] 
bpo-36854: Clear the current thread later (GH-17279)

Clear the current thread later in the Python finalization.

* The PyInterpreterState_Delete() function is now responsible
  to call PyThreadState_Swap(NULL).
* The tstate_delete_common() function is now responsible to clear the
  "autoTSSKey" thread local storage and it only clears it once the
  thread state is fully cleared. It allows to still get the current
  thread from TSS in tstate_delete_common().

5 years agobpo-38823: Fix refleak in _tracemalloc init error handling (GH-17235)
Brandt Bucher [Wed, 20 Nov 2019 10:00:31 +0000 (02:00 -0800)] 
bpo-38823: Fix refleak in _tracemalloc init error handling (GH-17235)

5 years agobpo-38858: Factorize Py_EndInterpreter() code (GH-17273)
Victor Stinner [Wed, 20 Nov 2019 09:38:34 +0000 (10:38 +0100)] 
bpo-38858: Factorize Py_EndInterpreter() code (GH-17273)

* Factorize code in common between Py_FinalizeEx() and
  Py_EndInterpreter().
* Py_EndInterpreter() now also calls _PyWarnings_Fini().
* Call _PyExc_Fini() and _PyGC_Fini() later in the finalization.

5 years agobpo-38636: Fix IDLE tab toggle and file indent width (GH-17008)
Terry Jan Reedy [Wed, 20 Nov 2019 06:18:39 +0000 (01:18 -0500)] 
bpo-38636: Fix IDLE tab toggle and file indent width (GH-17008)

These Format menu functions (default shortcuts Alt-T and Alt-U)
were mistakenly disabled in 3.7.5 and 3.8.0.

5 years agocloses bpo-38712: Add signal.pidfd_send_signal. (GH-17070)
Benjamin Peterson [Wed, 20 Nov 2019 04:39:14 +0000 (20:39 -0800)] 
closes bpo-38712: Add signal.pidfd_send_signal. (GH-17070)

This exposes a Linux-specific syscall for sending a signal to a process
identified by a file descriptor rather than a pid.

For simplicity, we don't support the siginfo_t parameter to the syscall. This
parameter allows implementing a pidfd version of rt_sigqueueinfo(2), which
Python also doesn't support.

5 years agobpo-38835: Don't use PyFPE_START_PROTECT and PyFPE_END_PROTECT (GH-17231)
Victor Stinner [Wed, 20 Nov 2019 01:51:30 +0000 (02:51 +0100)] 
bpo-38835: Don't use PyFPE_START_PROTECT and PyFPE_END_PROTECT (GH-17231)

The PyFPE_START_PROTECT() and PyFPE_END_PROTECT() macros are empty:
they have been doing nothing for the last year  (since commit
735ae8d139a673b30b321dc10acfd3d14f0d633b), so stop using them.

5 years agobpo-36710: Add PyInterpreterState.runtime field (GH-17270)
Victor Stinner [Wed, 20 Nov 2019 01:27:56 +0000 (02:27 +0100)] 
bpo-36710: Add PyInterpreterState.runtime field (GH-17270)

Add PyInterpreterState.runtime field: reference to the _PyRuntime
global variable. This field exists to not have to pass runtime in
addition to tstate to a function.  Get runtime from tstate:
tstate->interp->runtime.

Remove "_PyRuntimeState *runtime" parameter from functions already
taking a "PyThreadState *tstate" parameter.

_PyGC_Init() first parameter becomes "PyThreadState *tstate".

5 years agoPost 3.9.0a1
Łukasz Langa [Wed, 20 Nov 2019 01:06:33 +0000 (02:06 +0100)] 
Post 3.9.0a1

5 years agoMerge tag 'v3.9.0a1'
Łukasz Langa [Wed, 20 Nov 2019 01:05:28 +0000 (02:05 +0100)] 
Merge tag 'v3.9.0a1'

5 years agobpo-38823: Fix refleak in marshal init error path (GH-17260)
Brandt Bucher [Wed, 20 Nov 2019 00:59:32 +0000 (16:59 -0800)] 
bpo-38823: Fix refleak in marshal init error path (GH-17260)

5 years agobpo-36710: Pass tstate parameter to GC collect() (GH-17267)
Victor Stinner [Wed, 20 Nov 2019 00:49:32 +0000 (01:49 +0100)] 
bpo-36710: Pass tstate parameter to GC collect() (GH-17267)

Pass tstate parameter (PyThreadState) to GC collect() function and
other GC subfunctions.

5 years agobpo-38753: AsyncMock added in version 3.8 (GH-17102)
John Belmonte [Wed, 20 Nov 2019 00:30:43 +0000 (09:30 +0900)] 
bpo-38753: AsyncMock added in version 3.8 (GH-17102)