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

5 years agobpo-38631: Avoid Py_FatalError() in handle_legacy_finalizers() (GH-17266)
Victor Stinner [Wed, 20 Nov 2019 00:18:11 +0000 (01:18 +0100)] 
bpo-38631: Avoid Py_FatalError() in handle_legacy_finalizers() (GH-17266)

* Rename _PyGC_Initialize() to _PyGC_InitializeRuntime()
* Add _PyGC_Init(): initialize _PyRuntime.gc.garbage list
* Call _PyGC_Init() before _PyTypes_Init()

5 years agobpo-37957: Allow regrtest to receive a file with test (and subtests) to ignore (GH...
Pablo Galindo [Tue, 19 Nov 2019 23:46:49 +0000 (23:46 +0000)] 
bpo-37957: Allow regrtest to receive a file with test (and subtests) to ignore (GH-16989)

When building Python in some uncommon platforms there are some known tests that will fail. Right now, the test suite has the ability to ignore entire tests using the -x option and to receive a filter file using the --matchfile filter. The problem with the --matchfile option is that it receives a file with patterns to accept and when you want to ignore a couple of tests and subtests, is too cumbersome to lists ALL tests that are not the ones that you want to accept and he problem with -x is that is not easy to ignore just a subtests that fail and the whole test needs to be ignored.

For these reasons, add a new option to allow to ignore a list of test and subtests for these situations.

5 years agobpo-38858: Reorganize pycore_init_types() (GH-17265)
Victor Stinner [Tue, 19 Nov 2019 23:38:03 +0000 (00:38 +0100)] 
bpo-38858: Reorganize pycore_init_types() (GH-17265)

* Call _PyLong_Init() and _PyExc_Init() earlier
* new_interpreter() reuses pycore_init_types()

5 years agobpo-38823: Fix refleaks in faulthandler init error path on Windows (GH-17250)
Brandt Bucher [Tue, 19 Nov 2019 23:13:05 +0000 (15:13 -0800)] 
bpo-38823: Fix refleaks in faulthandler init error path on Windows (GH-17250)

5 years agoRemove binding of captured exceptions when not used to reduce the chances of creating...
Pablo Galindo [Tue, 19 Nov 2019 21:34:03 +0000 (21:34 +0000)] 
Remove binding of captured exceptions when not used to reduce the chances of creating cycles (GH-17246)

Capturing exceptions into names can lead to reference cycles though the __traceback__ attribute of the exceptions in some obscure cases that have been reported previously and fixed individually. As these variables are not used anyway, we can remove the binding to reduce the chances of creating reference cycles.

See for example GH-13135

5 years agobpo-38707: Fix for multiprocessing.Process MainThread.native_id (GH-17088)
Jake Tesler [Tue, 19 Nov 2019 19:50:12 +0000 (11:50 -0800)] 
bpo-38707: Fix for multiprocessing.Process MainThread.native_id (GH-17088)

This PR implements a fix for `multiprocessing.Process` objects; the error occurs when Processes are created using either `fork` or `forkserver` as the `start_method`.

In these instances, the `MainThread` of the newly created `Process` object retains all attributes from its parent's `MainThread` object, including the `native_id` attribute. The resulting behavior is such that the new process' `MainThread` captures an incorrect/outdated `native_id` (the parent's instead of its own).

This change forces the Process object to update its `native_id` attribute during the bootstrap process.

cc @vstinner

https://bugs.python.org/issue38707

Automerge-Triggered-By: @pitrou
5 years agobpo-38839: Fix some unused functions in tests (GH-17189)
Adam Johnson [Tue, 19 Nov 2019 19:45:20 +0000 (19:45 +0000)] 
bpo-38839: Fix some unused functions in tests (GH-17189)

5 years agobpo-38823: Clean up refleak in fcntl module initialization. (GH-17236)
Brandt Bucher [Tue, 19 Nov 2019 19:16:29 +0000 (11:16 -0800)] 
bpo-38823: Clean up refleak in fcntl module initialization. (GH-17236)

5 years agobpo-35409: Ignore GeneratorExit in async_gen_athrow_throw (GH-14755)
Vincent Michel [Tue, 19 Nov 2019 13:53:52 +0000 (05:53 -0800)] 
bpo-35409: Ignore GeneratorExit in async_gen_athrow_throw (GH-14755)

Ignore `GeneratorExit` exceptions when throwing an exception into the `aclose` coroutine of an asynchronous generator.

https://bugs.python.org/issue35409

5 years agoAdded missing coma after end of list in subprocess.rst (GH-17217)
Jules Lasne (jlasne) [Tue, 19 Nov 2019 12:14:53 +0000 (13:14 +0100)] 
Added missing coma after end of list in subprocess.rst (GH-17217)

Automerge-Triggered-By: @csabella
5 years agoAdd missing comma and period in unittest docs (GH-17211)
Jules Lasne (jlasne) [Tue, 19 Nov 2019 12:05:45 +0000 (13:05 +0100)] 
Add missing comma and period in unittest docs (GH-17211)

Automerge-Triggered-By: @csabella
5 years agoPython 3.9.0a1 v3.9.0a1
Łukasz Langa [Tue, 19 Nov 2019 11:17:21 +0000 (12:17 +0100)] 
Python 3.9.0a1

5 years agobpo-21767: explicitly mention abc support in functools.singledispatch docs (#17171)
Batuhan Taşkaya [Tue, 19 Nov 2019 08:16:46 +0000 (11:16 +0300)] 
bpo-21767: explicitly mention abc support in functools.singledispatch docs (#17171)

5 years agobpo-22367: Update test_fcntl.py for spawn process mode (#17154)
Dong-hee Na [Tue, 19 Nov 2019 08:12:42 +0000 (17:12 +0900)] 
bpo-22367: Update test_fcntl.py for spawn process mode (#17154)

5 years agoClean up module initialization. (GH-17215)
Brandt Bucher [Tue, 19 Nov 2019 07:16:23 +0000 (23:16 -0800)] 
Clean up module initialization. (GH-17215)

5 years agobpo-38807: Add os.PathLike to exception message raised by _check_arg_types (#17160)
Tomás Farías [Tue, 19 Nov 2019 05:54:00 +0000 (21:54 -0800)] 
bpo-38807: Add os.PathLike to exception message raised by _check_arg_types (#17160)

5 years agoAdd @pablogsal to code owners file for the garbage collector (GH-17248)
Pablo Galindo [Tue, 19 Nov 2019 02:03:55 +0000 (02:03 +0000)] 
Add @pablogsal to code owners file for the garbage collector (GH-17248)

Add myself to the codeowners file as I would like to
be automatically added as a reviewer for PRs that touch
that component and its documentation.

5 years agoMinor fixes to the formatting of the notes of Modules/gcmodule.c (GH-17247)
Pablo Galindo [Tue, 19 Nov 2019 01:36:57 +0000 (01:36 +0000)] 
Minor fixes to the formatting of the notes of Modules/gcmodule.c (GH-17247)

5 years agobpo-38622: Ensure ctypes.PyObj_FromPtr audit event passes tuples as a single argument...
Steve Dower [Mon, 18 Nov 2019 21:30:01 +0000 (13:30 -0800)] 
bpo-38622: Ensure ctypes.PyObj_FromPtr audit event passes tuples as a single argument (GH-17243)

5 years agobpo-38622: Add missing audit events for ctypes module (GH-17158)
Steve Dower [Mon, 18 Nov 2019 19:32:46 +0000 (11:32 -0800)] 
bpo-38622: Add missing audit events for ctypes module (GH-17158)

5 years agoRevert "remove a strange non-ASCII character in _iomodule.c" (GH-17240)
Tal Einat [Mon, 18 Nov 2019 19:19:51 +0000 (21:19 +0200)] 
Revert "remove a strange non-ASCII character in _iomodule.c" (GH-17240)

This reverts commit bcc1cc5c,  which removed an intentionally placed
"form feed" character.

5 years agobpo-38722: Runpy use io.open_code() (GH-17234)
jsnklln [Mon, 18 Nov 2019 19:11:13 +0000 (14:11 -0500)] 
bpo-38722: Runpy use io.open_code() (GH-17234)

https://bugs.python.org/issue38722

Automerge-Triggered-By: @taleinat
5 years agoremove a strange non-ASCII character in _iomodule.c (GH-17239)
Tal Einat [Mon, 18 Nov 2019 18:39:47 +0000 (20:39 +0200)] 
remove a strange non-ASCII character in _iomodule.c (GH-17239)

5 years agobpo-38809: Windows build scripts use python.exe from virtual envs (GH-17164)
Tal Einat [Mon, 18 Nov 2019 17:32:25 +0000 (19:32 +0200)] 
bpo-38809: Windows build scripts use python.exe from virtual envs (GH-17164)

https://bugs.python.org/issue38809

5 years agobpo-38631: Avoid Py_FatalError() in _multibytecodec init (GH-17233)
Victor Stinner [Mon, 18 Nov 2019 16:40:07 +0000 (17:40 +0100)] 
bpo-38631: Avoid Py_FatalError() in _multibytecodec init (GH-17233)

If an exception is raised and PyInit__multibytecodec() returns NULL,
Python reports properly the exception to the user. There is no need
to crash Python with Py_FatalError().

5 years agobpo-38631: Avoid Py_FatalError() in float.__getformat__() (GH-17232)
Victor Stinner [Mon, 18 Nov 2019 16:39:48 +0000 (17:39 +0100)] 
bpo-38631: Avoid Py_FatalError() in float.__getformat__() (GH-17232)

Replace Py_FatalError() with a regular RuntimeError exception in
float.__getformat__().

5 years agoCorrect the description of the 3.7 change in urllib.parse.quote (GH-17065)
Роман Донченко [Mon, 18 Nov 2019 15:30:53 +0000 (18:30 +0300)] 
Correct the description of the 3.7 change in urllib.parse.quote (GH-17065)

`~` is now treated as an unreserved character (i.e. it doesn't get quoted), not a reserved one.

5 years agobpo-38823: Clean up refleaks in _tkinter initialization. (GH-17206)
Brandt Bucher [Mon, 18 Nov 2019 14:52:36 +0000 (06:52 -0800)] 
bpo-38823: Clean up refleaks in _tkinter initialization. (GH-17206)

https://bugs.python.org/issue38823

5 years agobpo-38830: Correct slot signature in Qt example. (GH-17220)
Vinay Sajip [Mon, 18 Nov 2019 12:03:22 +0000 (12:03 +0000)] 
bpo-38830: Correct slot signature in Qt example. (GH-17220)

5 years agoRevert "bpo-38811: Check for presence of os.link method in pathlib. (GH-17170)" ...
Victor Stinner [Mon, 18 Nov 2019 11:26:37 +0000 (12:26 +0100)] 
Revert "bpo-38811: Check for presence of os.link method in pathlib. (GH-17170)" (#17219)

This reverts commit 111772fc27cfe388bc060f019d68a3e33481ec65.

5 years agobpo-38678: Improve argparse example in tutorial (GH-17207)
Raymond Hettinger [Mon, 18 Nov 2019 06:06:19 +0000 (22:06 -0800)] 
bpo-38678: Improve argparse example in tutorial (GH-17207)

5 years agobpo-25866: Minor cleanups to "sequence" in docs (GH-17177)
alclarks [Sun, 17 Nov 2019 22:00:43 +0000 (22:00 +0000)] 
bpo-25866: Minor cleanups to "sequence" in docs (GH-17177)

5 years agobpo-36589: Fix the error handling in curses.update_lines_cols(). (GH-12766)
Zackery Spytz [Sun, 17 Nov 2019 17:10:13 +0000 (10:10 -0700)] 
bpo-36589: Fix the error handling in curses.update_lines_cols(). (GH-12766)

Return None instead of 1.

5 years agobpo-38811: Check for presence of os.link method in pathlib. (GH-17170)
Toke Høiland-Jørgensen [Sun, 17 Nov 2019 17:06:38 +0000 (18:06 +0100)] 
bpo-38811: Check for presence of os.link method in pathlib. (GH-17170)

Fix also the Path.symplink() method implementation for the case when
symlinks are not supported.

5 years agobpo-38724: Implement subprocess.Popen.__repr__ (GH-17151)
Andrey Doroschenko [Sun, 17 Nov 2019 14:08:31 +0000 (17:08 +0300)] 
bpo-38724: Implement subprocess.Popen.__repr__ (GH-17151)

5 years agobpo-38823: Clean up refleaks in _contextvars initialization. (GH-17198)
Brandt Bucher [Sat, 16 Nov 2019 23:57:32 +0000 (15:57 -0800)] 
bpo-38823: Clean up refleaks in _contextvars initialization. (GH-17198)

https://bugs.python.org/issue38823

5 years agobpo-38823: Clean up refleaks in _asyncio initialization. (GH-17195)
Brandt Bucher [Sat, 16 Nov 2019 22:26:54 +0000 (14:26 -0800)] 
bpo-38823: Clean up refleaks in _asyncio initialization. (GH-17195)

https://bugs.python.org/issue38823

5 years agoFix typo in Lib/socketserver.py (GH-17024)
Jason (Perry) Taylor [Sat, 16 Nov 2019 18:14:45 +0000 (05:14 +1100)] 
Fix typo in Lib/socketserver.py (GH-17024)

changed 'This is bad class design, but save some typing'
into 'This is bad class design, but saves some typing'.

5 years agobpo-28286: Deprecate opening GzipFile for writing implicitly. (GH-16417)
Serhiy Storchaka [Sat, 16 Nov 2019 16:56:57 +0000 (18:56 +0200)] 
bpo-28286: Deprecate opening GzipFile for writing implicitly. (GH-16417)

Always specify the mode argument for writing.

5 years agobpo-38650: Constify PyStructSequence_UnnamedField. (GH-17005)
Serhiy Storchaka [Sat, 16 Nov 2019 16:55:29 +0000 (18:55 +0200)] 
bpo-38650: Constify PyStructSequence_UnnamedField. (GH-17005)

Make it a constant and referring to a constant string.