Permalink
Checking mergeability…
Don’t worry, you can still create the pull request.
Comparing changes
Open a pull request
118
contributors
This comparison is big! We’re only showing the most recent
250
commits
Commits on Oct 31, 2019
Change the url from docs.python-requests.org to requests.readthedocs.io (cherry picked from commit 112f2b8) Co-authored-by: Simon Legner <Simon.Legner@gmail.com>
Commits on Nov 02, 2019
Whenever I use `path.suffix` I have to check again whether it includes the dot or not. I decided to add it to the docstring so I won't have to keep checking. https://bugs.python.org/issue38422 Automerge-Triggered-By: @pitrou (cherry picked from commit 8d4fef4) Co-authored-by: Ram Rachum <ram@rachum.com>
Commits on Nov 03, 2019
(cherry picked from commit d0e0f5b) Co-authored-by: Dima Tisnek <dimaqq@gmail.com>
Commits on Nov 04, 2019
(cherry picked from commit 1cdadf4) Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
Commits on Nov 05, 2019
s/pathing/patching/ (cherry picked from commit 25fa3ec) Co-authored-by: Michael Haas <micha2718l@gmail.com>
(cherry picked from commit 99b7701) Co-authored-by: Борис Верховский <boris.verk@gmail.com>
GH-17026) This was never intented to be called manually from PyInit_*. Also, clarify PyState_RemoveModule return value. (cherry picked from commit 9bc94ec) Co-authored-by: Petr Viktorin <encukou@gmail.com> https://bugs.python.org/issue38159 Automerge-Triggered-By: @encukou
Commits on Nov 06, 2019
(cherry picked from commit 56698d5) Co-authored-by: Ammar Askar <ammar@ammaraskar.com>
Commits on Nov 07, 2019
Commits on Nov 09, 2019
(cherry picked from commit befa032) Co-authored-by: Dong-hee Na <donghee.na92@gmail.com>
Commits on Nov 12, 2019
(cherry picked from commit 98480ce) Co-authored-by: Jonathan Scholbach <j.scholbach@posteo.de>
Updates documentation around email.utils.parsedate_tz(). Currently, the documentation specifies that when a string without a is timezone passed to parsedate_tz(), the last tuple is returned as ```None```. This is no longer true since Python 3.3 https://bugs.python.org/issue38421 (cherry picked from commit a12255d) Co-authored-by: David K <dave@paddez.com> https://bugs.python.org/issue38421 Automerge-Triggered-By: @encukou
* "Return true/false" is replaced with "Return ``True``/``False``" if the function actually returns a bool. * Fixed formatting of some True and False literals (now in monospace). * Replaced "True/False" with "true/false" if it can be not only bool. * Replaced some 1/0 with True/False if it corresponds the code. * "Returns <bool>" is replaced with "Return <bool>". (cherry picked from commit 138ccbb)
Commits on Nov 13, 2019
(cherry picked from commit 2d56af7) Co-authored-by: Shu <23287722+susan-shu-c@users.noreply.github.com>
This immediately toggles shell, editor, and output windows, but does not affect other input widgets. (cherry picked from commit 9c28449) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
if parent `__init__` is not called from a constructor of object derived from `asyncio.Future` https://bugs.python.org/issue38785 (cherry picked from commit dad6be5) Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
Commits on Nov 15, 2019
…GH-17176) The C-API docs are a bit sparse on the interplay between C `fork()` and the CPython runtime. This change adds some more information on the subject. https://bugs.python.org/issue38816 (cherry picked from commit 73cdb0c) Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
…H-17123) Small docs update for [bpo-34651](https://bugs.python.org/issue34651). Other references to fork (e.g. the PyOS.*Fork functions or discussions of fork() when embedding Python) point back to os.fork, so I don't think any other updates are needed. https://bugs.python.org/issue38778 Automerge-Triggered-By: @ericsnowcurrently (cherry picked from commit b220300) Co-authored-by: Phil Connell <pconnell@gmail.com>
(cherry picked from commit 84f2528) Co-authored-by: HongWeipeng <961365124@qq.com>
(cherry picked from commit 0fe0b88) Co-authored-by: Jules Lasne (jlasne) <jules.lasne@gmail.com>
Commits on Nov 16, 2019
(cherry picked from commit 7c6130c) Co-authored-by: Steve Dower <steve.dower@python.org>
changed 'This is bad class design, but save some typing' into 'This is bad class design, but saves some typing'. (cherry picked from commit d0acdfc) Co-authored-by: Jason (Perry) Taylor <jtaylor@seek.com.au>
https://bugs.python.org/issue38823 (cherry picked from commit c3f6bdc) Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
Commits on Nov 17, 2019
https://bugs.python.org/issue38823 (cherry picked from commit 143a97f) Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
(cherry picked from commit 4544e78) Co-authored-by: alclarks <57201106+alclarks@users.noreply.github.com>
Commits on Nov 18, 2019
(cherry picked from commit 04c79d6) Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
https://bugs.python.org/issue38823 (cherry picked from commit 289cf0f) Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
…-17164) https://bugs.python.org/issue38809 (cherry picked from commit ee703cb) Co-authored-by: Tal Einat <taleinat+github@gmail.com>
(cherry picked from commit 00923c6) Co-authored-by: Steve Dower <steve.dower@python.org>
https://bugs.python.org/issue38722 Automerge-Triggered-By: @taleinat (cherry picked from commit e243bae) Co-authored-by: jsnklln <jsnklln@gmail.com>
Commits on Nov 19, 2019
Ignore `GeneratorExit` exceptions when throwing an exception into the `aclose` coroutine of an asynchronous generator. https://bugs.python.org/issue35409 (cherry picked from commit 8e0de2a) Co-authored-by: Vincent Michel <vxgmichel@gmail.com>
…7088) 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 (cherry picked from commit c6b20be) Co-authored-by: Jake Tesler <jake.tesler@gmail.com>
Commits on Nov 20, 2019
These Format menu functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in 3.7.5 and 3.8.0. (cherry picked from commit b846247) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
(cherry picked from commit 33b671e) Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
(cherry picked from commit d51a363) Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
(cherry picked from commit be5c79e) Co-authored-by: Federico Bond <federicobond@gmail.com>
…nix (GH-17294) on platforms lacking a functional bind() for named unix domain sockets https://bugs.python.org/issue38841 Automerge-Triggered-By: @asvetlov (cherry picked from commit 559bad1) Co-authored-by: xdegaye <xdegaye@gmail.com>
Commits on Nov 21, 2019
https://bugs.python.org/issue36277 Automerge-Triggered-By: @csabella (cherry picked from commit 9391f6c) Co-authored-by: Dave Nguyen <dv@dvnguyen.com>
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 (cherry picked from commit d672791) Co-authored-by: Géry Ogam <gery.ogam@gmail.com>
test_capi: trashcan tests now require the test "cpu" resource. (cherry picked from commit 0127bb1) Co-authored-by: Victor Stinner <vstinner@python.org>
GH-17126) https://bugs.python.org/issue37838 (cherry picked from commit 0aca3a3) Co-authored-by: benedwards14 <53377856+benedwards14@users.noreply.github.com>
(cherry picked from commit 65444cf) Co-authored-by: Claudiu Popa <pcmanticore@gmail.com>
Commits on Nov 22, 2019
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) GH- Don't bother sending Server and Date n_spaces = ( int(self.path[1:]) GH- Can GET e.g. /100 to test shorter sequences if len(self.path) > 1 else 65506 GH- Max header line length 65536 ) value = make_set_cookie_value(n_spaces) for i in range(99): GH- 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. (cherry picked from commit 1b779bf) Co-authored-by: bcaller <bcaller@users.noreply.github.com>
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. (cherry picked from commit 42bc60e) Co-authored-by: Callum Ward <wards.callum@gmail.com>
* 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" "=" <"> 1GH-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//]`GH-`[//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> (cherry picked from commit 14a89c4) Co-authored-by: PypeBros <PypeBros@users.noreply.github.com>
Commits on Nov 25, 2019
(cherry picked from commit f8a6316) Co-authored-by: Sanchit Khurana <54467174+GeniusLearner@users.noreply.github.com>
Commits on Nov 26, 2019
(cherry picked from commit 386d00c) Co-authored-by: David Coles <coles.david@gmail.com>
(cherry picked from commit e563a15) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Commits on Nov 27, 2019
Commits on Nov 28, 2019
SpooledTemporaryFile.rollback() might cause data corruption when it is in text mode. Co-Authored-By: Serhiy Storchaka <storchaka@gmail.com> (cherry picked from commit ea9835c) Co-authored-by: Inada Naoki <songofacandy@gmail.com>
(cherry picked from commit 02519f7) Co-authored-by: Tal Einat <taleinat+github@gmail.com>
Commits on Dec 01, 2019
(cherry picked from commit 575d0b4) Co-authored-by: Ofek Lev <ofekmeister@gmail.com>
(cherry picked from commit fdafa1d) Co-authored-by: idomic <michael.ido@gmail.com>
Commits on Dec 02, 2019
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 (cherry picked from commit 34864d1) Co-authored-by: torsava <torsava@redhat.com>
Commits on Dec 03, 2019
Update docstring for `multiprocessing.Pool.map` to mention `pool.starmap()`. Prev PR: #17367 @aeros https://bugs.python.org/issue27873 (cherry picked from commit eb48a45) Co-authored-by: An Long <aisk@users.noreply.github.com>
Commits on Dec 04, 2019
(cherry picked from commit 808769f) Co-authored-by: Inada Naoki <songofacandy@gmail.com>
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. (cherry picked from commit 7105319) Co-authored-by: serge-sans-paille <serge.guelton@telecom-bretagne.eu>
Use the "volatile" keyword to prevent tail call optimization on any compiler, rather than relying on compiler specific pragma. (cherry picked from commit 8b78796) Co-authored-by: Victor Stinner <vstinner@python.org>
Commits on Dec 05, 2019
…H-17450) Since c64a1a6 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 (cherry picked from commit 8943318) Co-authored-by: stratakis <cstratak@redhat.com> https://bugs.python.org/issue38270 Automerge-Triggered-By: @tiran
…H-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 (cherry picked from commit bb81549) Co-authored-by: Claudiu Popa <pcmanticore@gmail.com>
Commits on Dec 06, 2019
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 (cherry picked from commit b64334c) Co-authored-by: Mario Corchero <mcorcherojim@bloomberg.net>
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. (cherry picked from commit 723f71a) Co-authored-by: Benoit Hudson <benoit@imgspc.com>
Commits on Dec 07, 2019
(cherry picked from commit 7ddcd0c) Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
test_openssl_version now accepts version 3.0.0. getpeercert() no longer returns IPv6 addresses with a trailing new line. Signed-off-by: Christian Heimes <christian@python.org> https://bugs.python.org/issue38820 (cherry picked from commit 2b7de66) Co-authored-by: Christian Heimes <christian@python.org> https://bugs.python.org/issue38820 Automerge-Triggered-By: @tiran
Commits on Dec 08, 2019
now contextvars.ContextVar "__class_getitem__" method returns ContextVar class, not None. https://bugs.python.org/issue38979 Automerge-Triggered-By: @asvetlov (cherry picked from commit 28c9163) Co-authored-by: AMIR <31338382+amiremohamadi@users.noreply.github.com>
Commits on Dec 09, 2019
…espace (GH-17421) https://bugs.python.org/issue38673 (cherry picked from commit 109fc27) Co-authored-by: Batuhan Taşkaya <47358913+isidentical@users.noreply.github.com>
Fix test_pty: if the process is the session leader, closing the master file descriptor raises a SIGHUP signal: simply ignore SIGHUP when running the tests. (cherry picked from commit a1838ec) Co-authored-by: Victor Stinner <vstinner@python.org>
Fix asyncio when the ssl module is missing: only check for ssl.SSLSocket instance if the ssl module is available. (cherry picked from commit 82b4950) Co-authored-by: Victor Stinner <vstinner@python.org>
(cherry picked from commit e89e159) Co-authored-by: Steve Dower <steve.dower@python.org>
Also allows winreg.CloseKey() to accept same types as other functions. (cherry picked from commit ee17e37) Co-authored-by: Steve Dower <steve.dower@python.org>
(cherry picked from commit 232689b) Co-authored-by: JohnnyNajera <58344607+JohnnyNajera@users.noreply.github.com>
Commits on Dec 10, 2019
This has happened on some versions of Ubuntu. (cherry picked from commit bbc4162) Co-authored-by: JohnnyNajera <58344607+JohnnyNajera@users.noreply.github.com>
(cherry picked from commit abdeb57) Co-authored-by: Steve Dower <steve.dower@python.org>
Automerge-Triggered-By: @pablogsal
(cherry picked from commit d0802d0) Co-authored-by: Steve Dower <steve.dower@python.org>
Commits on Dec 11, 2019
Commits on Dec 13, 2019
… for if_stmt (GH-17582) (GH-17589) When parsing an "elif" node, lineno and col_offset of the node now point to the "elif" keyword and not to its condition, making it consistent with the "if" node. https://bugs.python.org/issue39031 Automerge-Triggered-By: @pablogsal (cherry picked from commit 025a602) Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
(cherry picked from commit 8289e27) Co-authored-by: Xtreak <tir.karthi@gmail.com>
Commits on Dec 14, 2019
Co-Authored-By: Victor Stinner <vstinner@python.org> (cherry picked from commit 95826c7) Co-authored-by: Inada Naoki <songofacandy@gmail.com>
Commits on Dec 15, 2019
Automerge-Triggered-By: @gvanrossum (cherry picked from commit b08d3f7) Co-authored-by: Guido van Rossum <guido@python.org>
Commits on Dec 16, 2019
Commit 6b5b013 ("bpo-26978: Implement pathlib.Path.link_to (Using os.link) (GH-12990)") introduced a new link_to method in pathlib. However, this makes pathlib crash when the 'os' module is missing a 'link' method. Fix this by checking for the presence of the 'link' method on pathlib module import, and if it's not present, turn it into a runtime error like those emitted when there is no lchmod() or symlink(). Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> (cherry picked from commit 092435e) Co-authored-by: Toke Høiland-Jørgensen <toke@redhat.com>
Commits on Dec 17, 2019
Commits on Dec 18, 2019
… CALL (GH-17645) (GH-17649) … Co-Authored-By: Pablo Galindo <Pablogsal@gmail.com> (cherry picked from commit 50d4f12) Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com> https://bugs.python.org/issue39080
…GH-17647) Multiprocessing and concurrent.futures tests now stop the resource tracker process when tests complete. Add ResourceTracker._stop() method to multiprocessing.resource_tracker. Add _cleanup_tests() helper function to multiprocessing.util: share code between multiprocessing and concurrent.futures tests. (cherry picked from commit 9707e8e)
Commits on Dec 19, 2019
(cherry picked from commit d587272) Co-authored-by: Batuhan Taşkaya <47358913+isidentical@users.noreply.github.com> https://bugs.python.org/issue38316 Automerge-Triggered-By: @vstinner
Commits on Dec 20, 2019
… docs table (GH-17408) Adds` __module__ ` entries for function & method types in inspect docs table. https://bugs.python.org/issue38918 (cherry picked from commit f522a6d) Co-authored-by: Parth Sharma <parthsharma2@users.noreply.github.com>
Commits on Dec 22, 2019
"HH", "MM" and "ffffff" are enclosed with double back quotes, but "SS" is left being bare (cherry picked from commit 068768f) Co-authored-by: cocoatomo <cocoatomo77@gmail.com>
Commits on Dec 23, 2019
Fixes a nearly word for word duplication of a sentence that appears earlier in the caution section of datetime.datetime.fromisoformat in Doc/Library/datetime.rst. No issue created as it's a trivial change. Automerge-Triggered-By: @pganssle (cherry picked from commit e7b406f) Co-authored-by: Michael Morehouse <640167+yawpitch@users.noreply.github.com>
(cherry picked from commit b0d4949) Co-authored-by: Jesús Cea <jcea@jcea.es> Co-authored-by: Jesús Cea <jcea@jcea.es>
Commits on Dec 24, 2019
(cherry picked from commit 025eeaa) Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
Commits on Dec 25, 2019
The added parentheses around the PyIter_Next assignment suppress the following warning which gcc throws without: ``` warning: using the result of an assignment as a condition without parentheses [-Wparentheses] ``` The other change is a typo fix (cherry picked from commit 5c7ed75) Co-authored-by: William Ayd <william.ayd@icloud.com>
(cherry picked from commit 279d8df) Co-authored-by: John Belmonte <john@neggie.net>
A character "i" is omitted. (cherry picked from commit 527f9de) Co-authored-by: cocoatomo <cocoatomo77@gmail.com>
Commits on Dec 27, 2019
) `time.clock()` was removed in Python 3.8, but it was still mentioned in the documentation for when `time.get_clock_info()` is given the argument `'clock'`. This commit removes that mention. (cherry picked from commit 91874bb) Co-authored-by: Michael Wayne Goodman <goodman.m.w@gmail.com>
Commits on Dec 28, 2019
(cherry picked from commit 98f0f04) Co-authored-by: Batuhan Taşkaya <47358913+isidentical@users.noreply.github.com>
Commits on Dec 29, 2019
funtion -> function; configuraton -> configuration; defintitions -> definitions; focusses -> focuses; necesarily -> necessarily; follwing -> following; Excape -> Escape, (cherry picked from commit 6c7bb38)
(cherry picked from commit 32a12ae) Co-authored-by: Antoine <43954001+awecx@users.noreply.github.com>
Commits on Dec 30, 2019
…ntation (GH-17608) * __enter__ is now looked up before __exit__ to give a more intuitive error message * add pseudo-code equivalent for the with statement * fix pseudo-code for the async with statement to use a finally clause * use SUITE rather than BLOCK for consistency with the language grammar Patch by Géry Ogam. (cherry picked from commit 226e6e7) Co-authored-by: Géry Ogam <gery.ogam@gmail.com>
Hold strong references to list elements while calling PyObject_RichCompareBool(). (cherry picked from commit d9e561d) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Tag memoryview, range, and tuple as classes, the same as list, etcetera, in the library manual built-in functions list. (cherry picked from commit ee9ff05) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Commits on Dec 31, 2019
(cherry picked from commit d0c92e8) Co-authored-by: Batuhan Taşkaya <47358913+isidentical@users.noreply.github.com>
GH-17764) * [3.8] bpo-38588: Fix possible crashes in dict and list when calling PyObject_RichCompareBool (GH-17734) Take strong references before calling PyObject_RichCompareBool to protect against the case where the object dies during the call. (cherry picked from commit 2d5bf56) Co-authored-by: Dong-hee Na <donghee.na92@gmail.com> * Update Objects/listobject.c @methane's suggestion Co-Authored-By: Inada Naoki <songofacandy@gmail.com> Co-authored-by: Inada Naoki <songofacandy@gmail.com>
(cherry picked from commit ba82ee8) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Commits on Jan 01, 2020
(cherry picked from commit 22424c0) Co-authored-by: Anthony Sottile <asottile@umich.edu>
Remove extra space to fix formatting and avoid from splitting text in to strings. https://bugs.python.org/issue39183 (cherry picked from commit 149175c) Co-authored-by: Rafael Fontenelle <rffontenelle@users.noreply.github.com>
Commits on Jan 03, 2020
(cherry picked from commit 946b29e) Co-authored-by: Benjamin Peterson <benjamin@python.org>
(cherry picked from commit 32f1443) Co-authored-by: Ned Deily <nad@python.org>
Commits on Jan 04, 2020
Commits on Jan 05, 2020
Ignore leading dots and no longer ignore a trailing newline. (cherry picked from commit 6a265f0) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
tkinter.ttk.Scale().configure([name]) now returns a configuration tuple for name or a list thereof for all options. Based on patch Giovanni Lombardo. (cherry picked from commit 5ea7bb2) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Signed-off-by: Oleg Höfling <oleg.hoefling@gmail.com> (cherry picked from commit e6ae90d) Co-authored-by: Oleg Höfling <hoefling@users.noreply.github.com>
(cherry picked from commit abc0c4f) Co-authored-by: HongWeipeng <961365124@qq.com>
…s well (GH-17694) To be consistent with document layout, it should say when the feature was added. Although it's mentioned few other places in the doc but it's not explicitly say that at that place. https://bugs.python.org/issue39130 (cherry picked from commit 94d9cfc) Co-authored-by: Khalid Mammadov <khalidmammadov9@gmail.com>
Commits on Jan 06, 2020
(cherry picked from commit d6c08db) Co-authored-by: Tal Einat <taleinat+github@gmail.com>
(cherry picked from commit a76ba36) Co-authored-by: Steve Dower <steve.dower@python.org>
https://bugs.python.org/issue39041 Automerge-Triggered-By: @zooba (cherry picked from commit b1ce22d) Co-authored-by: Steve Dower <steve.dower@python.org>
Commits on Jan 07, 2020
(cherry picked from commit f4800b8) Co-authored-by: Inada Naoki <songofacandy@gmail.com>
(cherry picked from commit ca94677) Co-authored-by: Inada Naoki <songofacandy@gmail.com>
https://bugs.python.org/issue39191. (cherry picked from commit 10ac0cd) Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
Commits on Jan 08, 2020
(cherry picked from commit 2e6a8ef) Co-authored-by: Dong-hee Na <donghee.na92@gmail.com>
Commits on Jan 09, 2020
GH-17896) \+ this also adds a stronger warning against sharing objects between (sub-)interpreters. https://bugs.python.org/issue39161 (cherry picked from commit 6c5d661) Co-authored-by: Petr Viktorin <encukou@gmail.com>
(cherry picked from commit ed36781) Co-authored-by: Steve Dower <steve.dower@python.org>
The fix changes copy_location() to require an extra node from which to extract the end location, and fixing all 5 call sites. https://bugs.python.org/issue39235 (cherry picked from commit a796d8e) Co-authored-by: Guido van Rossum <guido@python.org>
Commits on Jan 10, 2020
* Add test cases for dataclasses. * Add test for repr output of field. * Add test for ValueError to be raised when both default and default_factory are passed. (cherry picked from commit eef1b02) Co-authored-by: Karthikeyan Singaravelan <tir.karthi@gmail.com> Automerge-Triggered-By: @ericvsmith
Commits on Jan 11, 2020
Host as None in address raises TypeError since it should be string, bytes or bytearray. (cherry picked from commit 43682f1) Co-authored-by: Karthikeyan Singaravelan <tir.karthi@gmail.com>
* bpo-39297: Update for importlib_metadata 1.4. Includes performance updates. *📜 🤖 Added by blurb_it. * Update blurb Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> (cherry picked from commit 136735c) Co-authored-by: Jason R. Coombs <jaraco@jaraco.com> Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
Commits on Jan 12, 2020
https://bugs.python.org/issue39233 (cherry picked from commit 9a669d5) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
…6552) Motivation for this PR (comment from @vstinner in bpo issue): ``` Warning seen o AMD64 Ubuntu Shared 3.x buildbot: https://buildbot.python.org/all/GH-/builders/141/builds/2593 test_devnull_output (test.test_a=syncio.test_subprocess.SubprocessThreadedWatcherTests) ... Warning -- threading_cleanup() failed to cleanup 1 threads (count: 1, dangling: 2) ``` The following implementation details for the new method are TBD: 1) Public vs private 2) Inclusion in `close()` 3) Name 4) Coroutine vs subroutine method 5) *timeout* parameter If it's a private method, 3, 4, and 5 are significantly less important. I started with the most minimal implementation that fixes the dangling threads without modifying the regression tests, which I think is particularly important. I typically try to avoid directly modifying existing tests as much as possible unless it's necessary to do so. However, I am open to changing any part of this. https://bugs.python.org/issue38356 (cherry picked from commit 0ca7cc7) Co-authored-by: Kyle Stanley <aeros167@gmail.com>
Copying property objects results in a TypeError. Steps to reproduce: ``` >>> import copy >>> obj = property() >>> copy.copy(obj) ```` This affects both shallow and deep copying. My idea for a fix is to add property objects to the list of "atomic" objects in the copy module. These already include types like functions and type objects. I also added property objects to the unit tests test_copy_atomic and test_deepcopy_atomic. This is my first PR, and it's highly likely I've made some mistake, so please be kind :) https://bugs.python.org/issue38293 (cherry picked from commit 9f3fc6c) Co-authored-by: Guðni Natan Gunnarsson <1493259+GudniNatan@users.noreply.github.com>
Commits on Jan 13, 2020
(cherry picked from commit 7ba6f18) Co-authored-by: Alex Henrie <alexhenrie24@gmail.com>
Commits on Jan 14, 2020
…H-17588) (GH-17642) Fix `NameError` in `zipimport` during hash validation and add a regression test. (cherry picked from commit 79f02fe) https://bugs.python.org/issue39033
(cherry picked from commit b4cdb3f) Co-authored-by: Kyle Pollina <kylepollina@protonmail.com>
Commits on Jan 15, 2020
Python-ast.h contains a macro named Yield that conflicts with the Yield macro in Windows system headers. While Python-ast.h has an "undef Yield" directive to prevent this, it means that Python-ast.h must be included before Windows header files or we run into a re-declaration warning. In commit c96be81 an include for pycore_pystate.h was added which indirectly includes Windows header files. In this commit we re-order the includes to fix this warning. (cherry picked from commit e92d393) Co-authored-by: Ammar Askar <ammar@ammaraskar.com>
…H-17932) (GH-18015) Since 3.7 `successful` raises a `ValueError` as explained in the next text block from the documentation: _Changed in version 3.7: If the result is not ready, ValueError is raised instead of AssertionError._ No issue associated with this PR. Should be backported in 3.7 and 3.8. (cherry picked from commit dc0284e) Co-authored-by: Antoine <43954001+awecx@users.noreply.github.com> Automerge-Triggered-By: @pitrou
Commits on Jan 16, 2020
The previous double colon was wrongly place directly after Therefore. Which produced a block without syntax highlighting. This fixes it by separating the double colon from the text. As a result, sphinx now properly highlights the python code. https://bugs.python.org/issue39348 (cherry picked from commit fad8b56) Co-authored-by: Oz N Tiram <oz.tiram@noris.de>
Commits on Jan 17, 2020
Commits on Jan 19, 2020
(cherry picked from commit 558f078) Co-authored-by: Michael Haas <micha2718l@gmail.com>
Update Misc/valgrind-python.supp to suppress the false alarm. (cherry picked from commit d8ef644) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
…eed (GH-16630) Some objects like Py_None are not initialized with conventional means that prepare the circular linked list pointers, leaving them unlinked from the rest of the objects. For those objects, NULL pointers does not mean that they are freed, so we need to skip the check in those cases. (cherry picked from commit 36e33c3) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
Commits on Jan 20, 2020
Mention that the function implicitly creates new event loop only if called from the main thread. (cherry picked from commit 2c49bec) Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
(cherry picked from commit a96e06d) Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
Commits on Jan 21, 2020
(cherry picked from commit 8698b34) Co-authored-by: Carl Friedrich Bolz-Tereick <cfbolz@gmx.de>
Fix comments and add tests for editor newline_and_indent_event method. Remove unused None default for function parameter of pyparse find_good_parse_start method and code triggered by that default. Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> (cherry picked from commit ec64640) Co-authored-by: Cheryl Sabella <cheryl.sabella@gmail.com>
As described in RFC 1952, section 2.3.1, the XFL (eXtra FLags) byte of a gzip member header should indicate whether the DEFLATE algorithm was tuned for speed or compression ratio. Prior to this patch, archives emitted by the `gzip` module always indicated maximum compression. (cherry picked from commit eab3b3f) Co-authored-by: William Chargin <wchargin@gmail.com>
(cherry picked from commit 47be7d0) Co-authored-by: Keith Erskine <toastie604@gmail.com> Co-authored-by: Keith Erskine <toastie604@gmail.com>
Commits on Jan 22, 2020
https://bugs.python.org/issue39425 Automerge-Triggered-By: @pablogsal (cherry picked from commit 14d80d0) Co-authored-by: Dong-hee Na <donghee.na92@gmail.com> Co-authored-by: Dong-hee Na <donghee.na92@gmail.com>
Commits on Jan 23, 2020
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> (cherry picked from commit 2e43b64) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
IDLE does not pass a non-default _synchre in any of its calls to pyparse.find_good_parse_start. (cherry picked from commit f9e07e1) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
GH-18118) * bpo-39421: Fix posible crash in heapq with custom comparison operators * fixup! bpo-39421: Fix posible crash in heapq with custom comparison operators * fixup! fixup! bpo-39421: Fix posible crash in heapq with custom comparison operators (cherry picked from commit 79f89e6) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
(cherry picked from commit 7142df5) Co-authored-by: Shanavas M <shanavas.m2@gmail.com>
…GH-18117) (GH-18148) When communicate() is called in a loop, it crashes when the child process has already closed any piped standard stream, but still continues to be running Co-authored-by: Andriy Maletsky <andriy.maletsky@gmail.com>. (cherry picked from commit d3ae95e) Co-authored-by: Alex Rebert <alex@forallsecure.com> https://bugs.python.org/issue35182
Commits on Jan 24, 2020
Some portions of the pickle documentation hadn't been updated for the pickle protocol changes in Python 3.8 (new protocol 5, default protocol 4). This PR fixes those docs. https://bugs.python.org/issue39426 (cherry picked from commit e9652e8) Co-authored-by: Mark Dickinson <mdickinson@enthought.com>
* Add test for nested async decorator patch. * Add test for side_effect and wraps with a function. * Add test for side_effect with an exception in the iterable. (cherry picked from commit 54f743e) Co-authored-by: Karthikeyan Singaravelan <tir.karthi@gmail.com>
Use `from ... import ...` to ensure module is fully loaded before accessing its attributes. (cherry picked from commit 9017e0b) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Commits on Jan 25, 2020
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> (cherry picked from commit d0d9fa8) Co-authored-by: Cheryl Sabella <cheryl.sabella@gmail.com>
(cherry picked from commit 7de6174) Co-authored-by: alclarks <57201106+alclarks@users.noreply.github.com>
Commits on Jan 26, 2020
Unified
Split
Showing
1,139 changed files
with
48,622 additions
and 26,352 deletions.
@@ -42,7 +42,7 @@ jobs: | ||
testRunPlatform: macos | ||
|
||
pool: | ||
vmImage: xcode9-macos10.13 | ||
vmImage: macos-10.14 | ||
|
||
steps: | ||
- template: ./macos-steps.yml | ||
@@ -59,7 +59,7 @@ jobs: | ||
variables: | ||
testRunTitle: '$(build.sourceBranchName)-linux' | ||
testRunPlatform: linux | ||
openssl_version: 1.1.1c | ||
openssl_version: 1.1.1d | ||
|
||
steps: | ||
- template: ./posix-steps.yml | ||
@@ -116,7 +116,7 @@ jobs: | ||
variables: | ||
testRunTitle: '$(Build.SourceBranchName)-linux-coverage' | ||
testRunPlatform: linux-coverage | ||
openssl_version: 1.1.1c | ||
openssl_version: 1.1.1d | ||
|
||
steps: | ||
- template: ./posix-steps.yml | ||
@@ -131,7 +131,7 @@ jobs: | ||
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true')) | ||
|
||
pool: | ||
vmImage: vs2017-win2016 | ||
vmImage: windows-2019 | ||
|
||
strategy: | ||
matrix: | ||
@@ -145,7 +145,7 @@ jobs: | ||
buildOpt: '-p x64' | ||
testRunTitle: '$(Build.SourceBranchName)-win64' | ||
testRunPlatform: win64 | ||
maxParallel: 2 | ||
maxParallel: 4 | ||
|
||
steps: | ||
- template: ./windows-steps.yml | ||
@@ -14,6 +14,8 @@ steps: | ||
|
||
- script: make buildbottest TESTOPTS="-j4 -uall,-cpu --junit-xml=$(build.binariesDirectory)/test-results.xml" | ||
displayName: 'Tests' | ||
continueOnError: true | ||
timeoutInMinutes: 30 | ||
|
||
- task: PublishTestResults@2 | ||
displayName: 'Publish Test Results' | ||
@@ -40,7 +40,7 @@ jobs: | ||
testRunPlatform: macos | ||
|
||
pool: | ||
vmImage: xcode9-macos10.13 | ||
vmImage: macos-10.14 | ||
|
||
steps: | ||
- template: ./macos-steps.yml | ||
@@ -59,7 +59,7 @@ jobs: | ||
variables: | ||
testRunTitle: '$(system.pullRequest.TargetBranch)-linux' | ||
testRunPlatform: linux | ||
openssl_version: 1.1.1c | ||
openssl_version: 1.1.1d | ||
|
||
steps: | ||
- template: ./posix-steps.yml | ||
@@ -116,7 +116,7 @@ jobs: | ||
variables: | ||
testRunTitle: '$(Build.SourceBranchName)-linux-coverage' | ||
testRunPlatform: linux-coverage | ||
openssl_version: 1.1.1c | ||
openssl_version: 1.1.1d | ||
|
||
steps: | ||
- template: ./posix-steps.yml | ||
@@ -131,7 +131,7 @@ jobs: | ||
condition: and(succeeded(), eq(dependencies.Prebuild.outputs['tests.run'], 'true')) | ||
|
||
pool: | ||
vmImage: vs2017-win2016 | ||
vmImage: windows-2019 | ||
|
||
strategy: | ||
matrix: | ||
@@ -145,7 +145,10 @@ jobs: | ||
buildOpt: '-p x64' | ||
testRunTitle: '$(System.PullRequest.TargetBranch)-win64' | ||
testRunPlatform: win64 | ||
maxParallel: 2 | ||
winarm64: | ||
arch: arm64 | ||
buildOpt: '-p arm64' | ||
maxParallel: 4 | ||
|
||
steps: | ||
- template: ./windows-steps.yml | ||
@@ -0,0 +1,129 @@ | ||
name: Release_$(Build.SourceBranchName)_$(SourceTag)_$(Date:yyyyMMdd)$(Rev:.rr) | ||
|
||
variables: | ||
__RealSigningCertificate: 'Python Software Foundation' | ||
# QUEUE TIME VARIABLES | ||
# GitRemote: python | ||
# SourceTag: | ||
# DoPGO: true | ||
# SigningCertificate: 'Python Software Foundation' | ||
# SigningDescription: 'Built: $(Build.BuildNumber)' | ||
# DoLayout: true | ||
# DoMSIX: true | ||
# DoNuget: true | ||
# DoEmbed: true | ||
# DoMSI: true | ||
# DoPublish: false | ||
# PyDotOrgUsername: '' | ||
# PyDotOrgServer: '' | ||
# BuildToPublish: '' | ||
|
||
trigger: none | ||
pr: none | ||
|
||
stages: | ||
- stage: Build | ||
displayName: Build binaries | ||
condition: and(succeeded(), not(variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-build.yml | ||
|
||
- stage: Sign | ||
displayName: Sign binaries | ||
dependsOn: Build | ||
condition: and(succeeded(), not(variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-sign.yml | ||
|
||
- stage: Layout | ||
displayName: Generate layouts | ||
dependsOn: Sign | ||
condition: and(succeeded(), not(variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-layout-full.yml | ||
- template: windows-release/stage-layout-embed.yml | ||
- template: windows-release/stage-layout-nuget.yml | ||
|
||
- stage: Pack | ||
dependsOn: Layout | ||
condition: and(succeeded(), not(variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-pack-nuget.yml | ||
|
||
- stage: Test | ||
dependsOn: Pack | ||
condition: and(succeeded(), not(variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-test-embed.yml | ||
- template: windows-release/stage-test-nuget.yml | ||
|
||
- stage: Layout_MSIX | ||
displayName: Generate MSIX layouts | ||
dependsOn: Sign | ||
condition: and(succeeded(), and(eq(variables['DoMSIX'], 'true'), not(variables['BuildToPublish']))) | ||
jobs: | ||
- template: windows-release/stage-layout-msix.yml | ||
|
||
- stage: Pack_MSIX | ||
displayName: Package MSIX | ||
dependsOn: Layout_MSIX | ||
condition: and(succeeded(), not(variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-pack-msix.yml | ||
|
||
- stage: Build_MSI | ||
displayName: Build MSI installer | ||
dependsOn: Sign | ||
condition: and(succeeded(), and(eq(variables['DoMSI'], 'true'), not(variables['BuildToPublish']))) | ||
jobs: | ||
- template: windows-release/stage-msi.yml | ||
|
||
- stage: Test_MSI | ||
displayName: Test MSI installer | ||
dependsOn: Build_MSI | ||
condition: and(succeeded(), not(variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-test-msi.yml | ||
|
||
- stage: PublishPyDotOrg | ||
displayName: Publish to python.org | ||
dependsOn: ['Test_MSI', 'Test'] | ||
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish']))) | ||
jobs: | ||
- template: windows-release/stage-publish-pythonorg.yml | ||
|
||
- stage: PublishNuget | ||
displayName: Publish to nuget.org | ||
dependsOn: Test | ||
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish']))) | ||
jobs: | ||
- template: windows-release/stage-publish-nugetorg.yml | ||
|
||
- stage: PublishStore | ||
displayName: Publish to Store | ||
dependsOn: Pack_MSIX | ||
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), not(variables['BuildToPublish']))) | ||
jobs: | ||
- template: windows-release/stage-publish-store.yml | ||
|
||
|
||
- stage: PublishExistingPyDotOrg | ||
displayName: Publish existing build to python.org | ||
dependsOn: [] | ||
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-publish-pythonorg.yml | ||
|
||
- stage: PublishExistingNuget | ||
displayName: Publish existing build to nuget.org | ||
dependsOn: [] | ||
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-publish-nugetorg.yml | ||
|
||
- stage: PublishExistingStore | ||
displayName: Publish existing build to Store | ||
dependsOn: [] | ||
condition: and(succeeded(), and(eq(variables['DoPublish'], 'true'), variables['BuildToPublish'])) | ||
jobs: | ||
- template: windows-release/stage-publish-store.yml |
@@ -0,0 +1,84 @@ | ||
parameters: | ||
ShouldPGO: false | ||
|
||
steps: | ||
- template: ./checkout.yml | ||
|
||
- powershell: | | ||
$d = (.\PCbuild\build.bat -V) | %{ if($_ -match '\s+(\w+):\s*(.+)\s*$') { @{$Matches[1] = $Matches[2];} }}; | ||
Write-Host "##vso[task.setvariable variable=VersionText]$($d.PythonVersion)" | ||
Write-Host "##vso[task.setvariable variable=VersionNumber]$($d.PythonVersionNumber)" | ||
Write-Host "##vso[task.setvariable variable=VersionHex]$($d.PythonVersionHex)" | ||
Write-Host "##vso[task.setvariable variable=VersionUnique]$($d.PythonVersionUnique)" | ||
Write-Host "##vso[build.addbuildtag]$($d.PythonVersion)" | ||
Write-Host "##vso[build.addbuildtag]$($d.PythonVersion)-$(Name)" | ||
displayName: 'Extract version numbers' | ||
|
||
- ${{ if eq(parameters.ShouldPGO, 'false') }}: | ||
- powershell: | | ||
$env:SigningCertificate = $null | ||
.\PCbuild\build.bat -v -p $(Platform) -c $(Configuration) | ||
displayName: 'Run build' | ||
env: | ||
IncludeUwp: true | ||
Py_OutDir: '$(Build.BinariesDirectory)\bin' | ||
- ${{ if eq(parameters.ShouldPGO, 'true') }}: | ||
- powershell: | | ||
$env:SigningCertificate = $null | ||
.\PCbuild\build.bat -v -p $(Platform) --pgo | ||
displayName: 'Run build with PGO' | ||
env: | ||
IncludeUwp: true | ||
Py_OutDir: '$(Build.BinariesDirectory)\bin' | ||
- powershell: | | ||
$kitroot = (gp 'HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots\').KitsRoot10 | ||
$tool = (gci -r "$kitroot\Bin\*\x64\signtool.exe" | sort FullName -Desc | select -First 1) | ||
if (-not $tool) { | ||
throw "SDK is not available" | ||
} | ||
Write-Host "##vso[task.prependpath]$($tool.Directory)" | ||
displayName: 'Add WinSDK tools to path' | ||
|
||
- powershell: | | ||
$env:SigningCertificate = $null | ||
$(_HostPython) PC\layout -vv -b "$(Build.BinariesDirectory)\bin" -t "$(Build.BinariesDirectory)\catalog" --catalog "${env:CAT}.cdf" --preset-default --arch $(Arch) | ||
makecat "${env:CAT}.cdf" | ||
del "${env:CAT}.cdf" | ||
if (-not (Test-Path "${env:CAT}.cat")) { | ||
throw "Failed to build catalog file" | ||
} | ||
displayName: 'Generate catalog' | ||
env: | ||
CAT: $(Build.BinariesDirectory)\bin\$(Arch)\python | ||
PYTHON_HEXVERSION: $(VersionHex) | ||
|
||
- task: PublishPipelineArtifact@0 | ||
displayName: 'Publish binaries' | ||
condition: and(succeeded(), not(and(eq(variables['Configuration'], 'Release'), variables['SigningCertificate']))) | ||
inputs: | ||
targetPath: '$(Build.BinariesDirectory)\bin\$(Arch)' | ||
artifactName: bin_$(Name) | ||
|
||
- task: PublishPipelineArtifact@0 | ||
displayName: 'Publish binaries for signing' | ||
condition: and(succeeded(), and(eq(variables['Configuration'], 'Release'), variables['SigningCertificate'])) | ||
inputs: | ||
targetPath: '$(Build.BinariesDirectory)\bin\$(Arch)' | ||
artifactName: unsigned_bin_$(Name) | ||
|
||
- task: CopyFiles@2 | ||
displayName: 'Layout Artifact: symbols' | ||
inputs: | ||
sourceFolder: $(Build.BinariesDirectory)\bin\$(Arch) | ||
targetFolder: $(Build.ArtifactStagingDirectory)\symbols\$(Name) | ||
flatten: true | ||
contents: | | ||
**\*.pdb | ||
- task: PublishBuildArtifacts@1 | ||
displayName: 'Publish Artifact: symbols' | ||
inputs: | ||
PathToPublish: '$(Build.ArtifactStagingDirectory)\symbols' | ||
ArtifactName: symbols |
@@ -0,0 +1,21 @@ | ||
parameters: | ||
depth: 3 | ||
|
||
steps: | ||
- checkout: none | ||
|
||
- script: git clone --progress -v --depth ${{ parameters.depth }} --branch $(SourceTag) --single-branch https://github.com/$(GitRemote)/cpython.git . | ||
displayName: 'git clone ($(GitRemote)/$(SourceTag))' | ||
condition: and(succeeded(), and(variables['GitRemote'], variables['SourceTag'])) | ||
|
||
- script: git clone --progress -v --depth ${{ parameters.depth }} --branch $(SourceTag) --single-branch $(Build.Repository.Uri) . | ||
displayName: 'git clone (<default>/$(SourceTag))' | ||
condition: and(succeeded(), and(not(variables['GitRemote']), variables['SourceTag'])) | ||
|
||
- script: git clone --progress -v --depth ${{ parameters.depth }} --branch $(Build.SourceBranchName) --single-branch https://github.com/$(GitRemote)/cpython.git . | ||
displayName: 'git clone ($(GitRemote)/<default>)' | ||
condition: and(succeeded(), and(variables['GitRemote'], not(variables['SourceTag']))) | ||
|
||
- script: git clone --progress -v --depth ${{ parameters.depth }} --branch $(Build.SourceBranchName) --single-branch $(Build.Repository.Uri) . | ||
displayName: 'git clone' | ||
condition: and(succeeded(), and(not(variables['GitRemote']), not(variables['SourceTag']))) |
@@ -0,0 +1,17 @@ | ||
# Locate the Windows SDK and add its binaries directory to PATH | ||
# | ||
# `toolname` can be overridden to use a different marker file. | ||
|
||
parameters: | ||
toolname: signtool.exe | ||
|
||
steps: | ||
- powershell: | | ||
$kitroot = (gp 'HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots\').KitsRoot10 | ||
$tool = (gci -r "$kitroot\Bin\*\${{ parameters.toolname }}" | sort FullName -Desc | select -First 1) | ||
if (-not $tool) { | ||
throw "SDK is not available" | ||
} | ||
Write-Host "##vso[task.prependpath]$($tool.Directory)" | ||
Write-Host "Adding $($tool.Directory) to PATH" | ||
displayName: 'Add WinSDK tools to path' |
@@ -0,0 +1,28 @@ | ||
parameters: | ||
GPGKeyFile: $(GPGKey) | ||
GPGPassphrase: $(GPGPassphrase) | ||
Files: '*' | ||
WorkingDirectory: $(Build.BinariesDirectory) | ||
|
||
steps: | ||
- task: DownloadSecureFile@1 | ||
name: gpgkey | ||
inputs: | ||
secureFile: ${{ parameters.GPGKeyFile }} | ||
displayName: 'Download GPG key' | ||
|
||
- powershell: | | ||
git clone https://github.com/python/cpython-bin-deps --branch gpg --single-branch --depth 1 --progress -v "gpg" | ||
gpg/gpg2.exe --import "$(gpgkey.secureFilePath)" | ||
(gci -File ${{ parameters.Files }}).FullName | %{ | ||
gpg/gpg2.exe -ba --batch --passphrase ${{ parameters.GPGPassphrase }} $_ | ||
"Made signature for $_" | ||
} | ||
displayName: 'Generate GPG signatures' | ||
workingDirectory: ${{ parameters.WorkingDirectory }} | ||
|
||
- powershell: | | ||
$p = gps "gpg-agent" -EA 0 | ||
if ($p) { $p.Kill() } | ||
displayName: 'Kill GPG agent' | ||
condition: true |

Oops, something went wrong.