Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python 3.8 wheels fail to install on Windows #6885

chrahunt opened this issue Aug 16, 2019 · 1 comment

Python 3.8 wheels fail to install on Windows #6885

chrahunt opened this issue Aug 16, 2019 · 1 comment


Copy link

@chrahunt chrahunt commented Aug 16, 2019


  • pip version: 19.2.2
  • Python version: 3.8b3
  • OS: Windows 10


As described by @rdb in pypa/packaging#180:

On Windows, pip fails to install binary wheels with the following error:

ERROR: mypackage-1.0.0-cp38-cp38-win_amd64.whl is not a supported wheel on this platform.

Expected behavior

pip installs wheels with Python 3.8.

How to Reproduce

:: Goes through (but fails because it is not a zip) even though the ABI tag cp38m is not valid
echo > project-0.1.0-cp38-cp38m-win_amd64.whl
pip install ./project-0.1.0-cp38-cp38m-win_amd64.whl
:: Fails to consider this file even though it has the valid cp38 ABI tag
echo > project-0.1.0-cp38-cp38-win_amd64.whl
pip install ./project-0.1.0-cp38-cp38-win_amd64.whl


(.venv) C:\Users\User\Desktop\test>echo > project-0.1.0-cp38-cp38m-win_amd64.whl

(.venv) C:\Users\User\Desktop\test>pip install ./project-0.1.0-cp38-cp38m-win_amd64.whl
Processing c:\users\user\desktop\test\project-0.1.0-cp38-cp38m-win_amd64.whl
ERROR: Exception:
Traceback (most recent call last):
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\cli\", line 188, in main
    status =, args)
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\commands\", line 345, in run
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\", line 196, in resolve
    self._resolve_one(requirement_set, req)
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\", line 359, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\", line 305, in _get_abstract_dist_for
    abstract_dist = self.preparer.prepare_linked_requirement(
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\operations\", line 195, in prepare_linked_requirement
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\", line 1051, in unpack_url
    unpack_file_url(link, location, download_dir, hashes=hashes)
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\", line 985, in unpack_file_url
    unpack_file(from_path, location, content_type, link)
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\utils\", line 732, in unpack_file
  File "c:\users\user\desktop\test\.venv\lib\site-packages\pip\_internal\utils\", line 612, in unzip_file
    zip = zipfile.ZipFile(zipfp, allowZip64=True)
  File "C:\opt\python.3.8.0-b3\tools\lib\", line 1232, in __init__
  File "C:\opt\python.3.8.0-b3\tools\lib\", line 1299, in _RealGetContents
    raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file

(.venv) C:\Users\User\Desktop\test>echo > project-0.1.0-cp38-cp38-win_amd64.whl

(.venv) C:\Users\User\Desktop\test>pip install ./project-0.1.0-cp38-cp38-win_amd64.whl
ERROR: project-0.1.0-cp38-cp38-win_amd64.whl is not a supported wheel on this platform.


In pep425flags here when constructing our ABI tag, we check:

  1. if sysconfig.get_config_var('SOABI'), then use that
  2. otherwise, if sysconfig.get_config_var('WITH_PYMALLOC'), add m
  3. otherwise, if we're running CPython, add m

On Windows, neither SOABI or WITH_PYMALLOC are defined, so then we unconditionally add m to our required ABI tags for CPython. But this is incorrect since m was removed from the ABI as part of 3.8 per bpo-36707.

On macOS and Linux we already have the correct tag since SOABI is defined.

See also

Copy link
Member Author

@chrahunt chrahunt commented Aug 17, 2019

Closed by #6874.

@chrahunt chrahunt closed this Aug 17, 2019
rdb added a commit to panda3d/panda3d that referenced this issue Aug 17, 2019
A proper fix for this has been merged in pip already (pypa/pip#6874), so this hack will only exist until pip 19.2.3 is out.
miss-islington added a commit to python/cpython that referenced this issue Aug 26, 2019
/cc @ambv since this needs to be included in 3.8 -- see pypa/pip#6885.

Sorry about the last minute PR!

Automerge-Triggered-By: @zooba
remilapeyre pushed a commit to remilapeyre/cpython that referenced this issue Aug 29, 2019
commit 06145230c833c3db5dab8858e11bcd550a37c57f
Author: Nick Coghlan <>
Date:   Thu Aug 29 23:26:53 2019 +1000

    bpo-37947: Avoid double-decrement in symtable recursion counting (GH-15593)

    With `symtable_visit_expr` now correctly adjusting the recursion depth for named
    expressions, `symtable_handle_namedexpr` should be leaving it alone.

    Also adds a new check to `PySymtable_BuildObject` that raises `SystemError`
    if a successful first symbol analysis pass fails to keep the stack depth
    accounting clean.

commit 2c5fb1711818926862d0d7b2e5effcaa5a5eb002
Author: Joannah Nanjekye <>
Date:   Thu Aug 29 09:54:46 2019 -0300

    bpo-36833: Add tests for Datetime C API Macros (GH-14842)

    Added tests for PyDateTime_xxx_GET_xxx() macros of the C API of
    the datetime module.

commit 35f6301d68bdb0517be284421782d64407dfe72c
Author: Raymond Hettinger <>
Date:   Thu Aug 29 01:45:19 2019 -0700

    bpo-10978: Semaphores can release multiple threads at a time (GH-15588)

commit 0dac68f1e593c11612ed54af9edb865d398f3b05
Author: Raymond Hettinger <>
Date:   Thu Aug 29 01:27:42 2019 -0700

    bpo-36743: __get__ is sometimes called without the owner argument (#12992)

commit 84125fed2a45a9e454d7e870d8bbaf6ece3d41e8
Author: Raymond Hettinger <>
Date:   Thu Aug 29 00:58:08 2019 -0700

    bpo-16468: Clarify which objects can be passed to "choices" in argparse (GH-15566)

commit cd81f0500fe98c7f4cddb06530fffabd14f036b8
Author: Raymond Hettinger <>
Date:   Thu Aug 29 00:44:02 2019 -0700

    bpo-23674:  Clarify ambiguities in super() docs (#15564)

commit 122376df550b71dd3bec0513c7483cc1714212fa
Author: Justin Blanchard <>
Date:   Thu Aug 29 03:36:15 2019 -0400

    bpo-37372: Fix error unpickling datetime.time objects from Python 2 with seconds>=24. (GH-14307)

commit e64f948e762a6b9fd02e2902ccf42438df6fcb61
Author: Serhiy Storchaka <>
Date:   Thu Aug 29 09:30:23 2019 +0300

    bpo-37950: Fix ast.dump() when call with incompletely initialized node. (GH-15510)

commit b235a1b47394eedc5f8ea4cf214f56c4c6932e59
Author: Serhiy Storchaka <>
Date:   Thu Aug 29 09:25:22 2019 +0300

    bpo-37960: Silence only necessary errors in repr() of buffered and text streams. (GH-15543)

commit f5896a05edf5df91fb1b55bd481ba5b2a3682f4e
Author: Rémi Lapeyre <>
Date:   Thu Aug 29 08:15:53 2019 +0200

    bpo-35946: Improve assert_called_with documentation (GH-11796)

commit c96127821ebda50760e788b1213975a0d5bea37f
Author: Xtreak <>
Date:   Thu Aug 29 11:39:01 2019 +0530

    bpo-36871: Ensure method signature is used when asserting mock calls to a method (GH13261)

    * Fix call_matcher for mock when using methods

    * Add NEWS entry

    * Use None check and convert doctest to unittest

    * Use better name for mock in tests. Handle _SpecState when the attribute was not accessed and add tests.

    * Use reset_mock instead of reinitialization. Change inner class constructor signature for check

    * Reword comment regarding call object lookup logic

commit 03acba6f1a851064ba1fa78965ece4354d499c04
Author: Raymond Hettinger <>
Date:   Wed Aug 28 22:59:43 2019 -0700

    bpo-25777: Wording describes a lookup, not a call (GH-15573)

commit 3aa48b88c7485aca1fdfa54b3d8e53931ff067fd
Author: avinassh <>
Date:   Thu Aug 29 11:10:50 2019 +0530

    bpo-36167: fix an incorrect capitalization (GH-14482)

commit 465e5d5bcbfd42be058d3584ccb421405eba1594
Author: Benjamin Peterson <>
Date:   Wed Aug 28 22:06:49 2019 -0700

    bpo-37964: Make sure test works if TESTFN is in a non-ASCII directory. (GH-15568)

commit b0caf329815120acf50287e29858093d328b0e3c
Author: Ronald Oussoren <>
Date:   Thu Aug 29 06:33:52 2019 +0200

    bpo-18378: Recognize "UTF-8" as a valid name in locale._parse_localename (GH-14736)

commit fa220ec7633e9674baccc28dde987f29d7f65141
Author: HongWeipeng <>
Date:   Thu Aug 29 11:39:25 2019 +0800

    Raise a RuntimeError when tee iterator is consumed from different threads (GH-15567)

commit 13f37f2ba8b1fa39f312dca920e847d9c0313c77
Author: Vinay Sharma <>
Date:   Thu Aug 29 07:26:17 2019 +0530

    closes bpo-37964: add F_GETPATH command to fcntl (GH-15550)

    Automerge-Triggered-By: @benjaminp

commit e4a5e9b5bb69025eb879cb133259667241d61a1f
Author: Zackery Spytz <>
Date:   Wed Aug 28 15:54:02 2019 -0600

    bpo-23878: Remove an unneeded fseek() call in _Py_FindEnvConfigValue() (GH-15424)

commit 55aabee07501e1468082b3237620e4ecd75c5da6
Author: Anonymous Maarten <>
Date:   Wed Aug 28 19:11:03 2019 +0200

    closes bpo-37965: Fix compiler warning of distutils CCompiler.test_function. (GH-15560)

    Automerge-Triggered-By: @benjaminp

commit 2a16eea71f56c2d8f38c295c8ce71a9a9a140aff
Author: Daniel Fortunov <>
Date:   Wed Aug 28 06:38:09 2019 +0200

    bpo-36582: Make collections.UserString.encode() return bytes, not str (GH-13138)

commit 98d90f745d35d5d07bffcb46788b50e05eea56c6
Author: Christian Heimes <>
Date:   Tue Aug 27 23:36:56 2019 +0200

    bpo-37951: Lift subprocess's fork() restriction (GH-15544)

commit 3224e1a6bb23b1b322f5b9424b10ab68c9127dcc
Author: Ethan Furman <>
Date:   Tue Aug 27 14:18:05 2019 -0700

    Add Florian Ernst to ACKS (GH-15524)

commit 8c9e9b0cd5b24dfbf1424d1f253d02de80e8f5ef
Author: Greg Price <>
Date:   Tue Aug 27 11:16:31 2019 -0700

    bpo-37936: Remove some .gitignore rules that were intended locally. (GH-15542)

    These appeared in commit c5ae169e1.  The comment on them, as well as
    the presence among them of a rule for the .gitignore file itself,
    indicate that the author intended these lines to remain only in their
    own local working tree -- not to get committed even to their own repo,
    let alone merged upstream.

    They did nevertheless get committed, because it turns out that Git
    takes no notice of what .gitignore says about files that it's already
    tracking... for example, this .gitignore file itself.

    Give effect to these lines' original intention, by deleting them. :-)

    Git tip, for reference: the `.git/info/exclude` file is a handy way
    to do exactly what these lines were originally intended to do.  A
    related handy file is `~/.config/git/ignore`.  See gitignore(5),
    aka `git help ignore`, for details.

    Automerge-Triggered-By: @zware

commit 0138c4ceab1e10d42d0aa962d2ae079b46da7671
Author: Raymond Hettinger <>
Date:   Tue Aug 27 09:55:13 2019 -0700

    Fix unused variable and signed/unsigned warnings (GH-15537)

commit 8bf5fef8737fdd12724b9340d76a4ed391c4ad8a
Author: vrajivk <>
Date:   Mon Aug 26 21:13:12 2019 -0700

    bpo-36205: Fix the rusage implementation of time.process_time() (GH-15538)

commit fae0ed5099de594a9204071d555cb8b76368cbf4
Author: Inada Naoki <>
Date:   Tue Aug 27 11:48:06 2019 +0900

    bpo-37328: remove deprecated HTMLParser.unescape (GH-14186)

    It is deprecated since Python 3.4.

commit 9a943b4ce13fac26873b8100e89c818c5c47ac4b
Author: Victor Stinner <>
Date:   Tue Aug 27 00:45:45 2019 +0200

    bpo-36763: Make Py_BytesMain() public (GH-15532)

    Declare Py_BytesMain() in Include/pylifecycle.h, rather in

commit 6b2e3256b6752055498f41f343fb22100845bc9d
Author: Zackery Spytz <>
Date:   Mon Aug 26 16:41:11 2019 -0600

    Fix an invalid assertEqual() call in (GH-15318)

commit bed4817d52d7b5a383b1b61269c1337b61acc493
Author: Victor Stinner <>
Date:   Tue Aug 27 00:12:32 2019 +0200

    Make PyXXX_Fini() functions private (GH-15531)

    For example, rename PyTuple_Fini() to _PyTuple_Fini().

    These functions are only declared in the internal C API.

commit d3cc189b17c86f670198aca109b5ffa2d526d87a
Author: Batuhan Taşkaya <>
Date:   Tue Aug 27 00:45:37 2019 +0300

    bpo-37925: Mention --embed in python-config usage (GH-15458)

commit 6fee0f8ea72fa68155a32b33b6c0ed9e5a740e45
Author: Raymond Hettinger <>
Date:   Mon Aug 26 11:25:58 2019 -0700

    bpo-37798: Minor code formatting and comment clean-ups. (GH-15526)

commit 10c452b894d95fed06056fe11e8fe8e1a2a60040
Author: Pradyun Gedam <>
Date:   Mon Aug 26 23:49:30 2019 +0530

    bpo-37664: Update ensurepip bundled wheels, again (GH-15483)

    /cc @ambv since this needs to be included in 3.8 -- see

    Sorry about the last minute PR!

    Automerge-Triggered-By: @zooba

commit b27cbec801e17a13d7fef49116a8fc279930d2b1
Author: Inada Naoki <>
Date:   Tue Aug 27 02:52:36 2019 +0900

    bpo-37055: fix warnings in _blake2 module (GH-14646)

    Automerge-Triggered-By: @tiran

commit 77df9a157338f694b10961c44dfe48f7a39b3ad2
Author: Ethan Furman <>
Date:   Mon Aug 26 09:12:50 2019 -0700

    correct roman numeral VII description (GH-15523)

commit b3b9619f5e1e7ebe3fbb73eae4ec878312056a90
Author: Sergey Fedoseev <>
Date:   Mon Aug 26 20:20:42 2019 +0500

    Fix typo: Pyssize_t => Py_ssize_t (GH-15411)

commit 4901dc46da5ecb131f8d902a0fbd704934f209e1
Author: Pablo Galindo <>
Date:   Mon Aug 26 16:14:07 2019 +0100

    bpo-37954: Fix reference leak in the symtable (GH-15514)

commit 52c1a6a15a471f75b775309ed1120d05f69010ca
Author: Sergey Fedoseev <>
Date:   Mon Aug 26 20:12:47 2019 +0500

    Remove leftovers from the times when long long wasn't required (GH-15501)

    In a38e9d139929a227e3899fbb638bc46c6cc6d8ba was
    manually edited and that edit was overwritten when running autoreconf.

commit 0e4ea16336685cf3fa353d8c54af59b45b2d5c33
Author: Pablo Galindo <>
Date:   Mon Aug 26 15:52:25 2019 +0100

    bpo-37947: Adjust correctly the recursion level in symtable for named expressions (GH-15499)

commit 1c0600998681295735a18690fae184b0c9a4ca51
Author: Andrew Svetlov <>
Date:   Mon Aug 26 12:51:08 2019 +0300

    bpo-34679: Restore instantiation Windows IOCP event loop from non-main thread (#15492)

    * Restore running proactor event loop from non-main thread

    Co-Authored-By: Kyle Stanley <>

commit 998cf1f03a61de8a0cd3811faa97973d4022bc55
Author: Forest Gregg <>
Date:   Mon Aug 26 02:17:43 2019 -0500

    bpo-27575: port set intersection logic into dictview intersection (GH-7696)

commit c3ea41e9bf100a5396b851488c3efe208e5e2179
Author: Serhiy Storchaka <>
Date:   Mon Aug 26 10:13:19 2019 +0300

    bpo-36917: Add default implementation of ast.NodeVisitor.visit_Constant(). (GH-15490)

    It emits a deprecation warning and calls corresponding method
    visit_Num(), visit_Str(), etc.

commit 44cd86bbdddb1f7b05deba2c1986a1e98f992429
Author: Dong-hee Na <>
Date:   Mon Aug 26 16:04:35 2019 +0900

    bpo-37805: Add tests for json.dump(..., skipkeys=True) (GH-15489)

    Automerge-Triggered-By: @methane

commit 6b16d938d6d1ccb443815e20e8812deed274dc09
Author: Joannah Nanjekye <>
Date:   Mon Aug 26 03:53:11 2019 -0300

    bpo-15542: Documentation incorrectly suggests __init__ called after direct  __new__ call (GH-15478)

commit 1039f39c9c6edb4c185856c19316d3a4eb561c38
Author: Terry Jan Reedy <>
Date:   Mon Aug 26 02:27:56 2019 -0400

    bpo-37824: Properly handle user input warnings in IDLE shell. (GH-15500)

    Cease turning SyntaxWarnings into SyntaxErrors.

commit 73e054970193fc421c533564a4189be522f9c331
Author: Julien Palard <>
Date:   Mon Aug 26 08:11:43 2019 +0200

    Doc: Keep the venv/* exclude pattern. (GH-15229)

    In case it has been previously created.

commit da27d9b9dc44913ffee8f28d9638985eaaa03755
Author: Flavian Hautbois <>
Date:   Sun Aug 25 21:06:45 2019 +0200

    bpo-29553: Fix ArgumentParser.format_usage() for mutually exclusive groups (GH-14976)

    Co-authored-by: Andrew Nester <>

commit 5dbe0f59b7a4f39c7c606b48056bc29e406ebf78
Author: Nick Coghlan <>
Date:   Sun Aug 25 23:45:40 2019 +1000

    bpo-37757: Disallow PEP 572 cases that expose implementation details (GH-15131)

    - drop TargetScopeError in favour of raising SyntaxError directly
      as per the updated PEP 572
    - comprehension iteration variables are explicitly local, but
      named expression targets in comprehensions are nonlocal or
      global. Raise SyntaxError as specified in PEP 572
    - named expression targets in the outermost iterable of a
      comprehension have an ambiguous target scope. Avoid resolving
      that question now by raising SyntaxError. PEP 572
      originally required this only for cases where the bound name
      conflicts with the iteration variable in the comprehension,
      but CPython can't easily restrict the exception to that case
      (as it doesn't know the target variable names when visiting
      the outermost iterator expression)

commit ce6a070414ed1e1374d1e6212bfbff61b6d5d755
Author: Zackery Spytz <>
Date:   Sun Aug 25 03:44:09 2019 -0600

    bpo-34880: Add the LOAD_ASSERTION_ERROR opcode. (GH-15073)

    Fix assert statement misbehavior if AssertionError is shadowed.

commit 8371799e300475c8f9f967e900816218d3500e5d
Author: Raymond Hettinger <>
Date:   Sun Aug 25 00:57:26 2019 -0700

    bpo-37905: Improve docs for NormalDist (GH-15486)

commit d4b4c00b57d24f6ee2cf3a96213406bb09953df3
Author: Tal Einat <>
Date:   Sun Aug 25 08:52:58 2019 +0300

    bpo-37929: IDLE: avoid Squeezer-related config dialog crashes (GH-15452)

    These were caused by keeping around a reference to the Squeezer
    instance and calling it's load_font() upon config changes, which
    sometimes happened even if the shell window no longer existed.

    This change completely removes that mechanism, instead having the
    editor window properly update its width attribute, which can then
    be used by Squeezer.

commit aef9ad82f7f667cd001a7112d3bc636e918626f7
Author: Raymond Hettinger <>
Date:   Sat Aug 24 19:10:39 2019 -0700

    bpo-37942: Improve argument clinic float converter (GH-15470)

commit 805f8f9afea116c5d4d000570e3d02ae84502f43
Author: Berker Peksag <>
Date:   Sun Aug 25 01:37:25 2019 +0300

    bpo-19072: Make @classmethod support chained decorators (GH-8405)

commit 0dfc025cccc5adf4f209e2421c7686b1e637eeae
Author: Terry Jan Reedy <>
Date:   Sat Aug 24 17:32:33 2019 -0400

    Fix typo and rearrange words in IDLE news item (GH-15471)

    Redo of #15402 by GeeTransit and Kyle Stanley.

commit c5218fce02d6bd7bb343db20c8f14e8d9640783a
Author: Jürgen Gmach <>
Date:   Sat Aug 24 21:48:55 2019 +0200

    Clarify argument types in datetime docs. (GH-15459)

    "Arguments may be integers... " could be misunderstand as they also
    could be strings.

    New wording makes it clear that arguments have to be integers.

    modified:   Doc/library/datetime.rst

    Automerge-Triggered-By: @pganssle

commit 69ee87e99cfe0b79389cffa92d126af868baf353
Author: Raymond Hettinger <>
Date:   Sat Aug 24 11:15:44 2019 -0700

    bpo-14112: Allow beginners to explore shallowness in greater depth ;-) (GH-15465)

commit fa7a6f5e355f69452682f1beba66bd1ac7fef79a
Author: Terry Jan Reedy <>
Date:   Sat Aug 24 14:10:04 2019 -0400

    Revert "(TH-15402)" (#15468)

    This reverts commit a50f0a4c2bd997e4534162ecc1853cb54c7ae902.

commit 43710b67b3d40325ba2c31b793895aed48fd8aa7
Author: Shashi Ranjan <>
Date:   Sat Aug 24 23:37:24 2019 +0530

    Fix typos in the documentation of Parser/pgen (GH-15416)

    Co-Authored-By: Antoine <>

commit 8ad22a42267d4ecb1c080d420933680cc126363e
Author: Dong-hee Na <>
Date:   Sun Aug 25 02:51:20 2019 +0900

    bpo-37798: Test both Python and C versions in (GH-15453)

commit edd21129dd304e178ca8be82ba689488dfb58276
Author: Raymond Hettinger <>
Date:   Sat Aug 24 10:43:55 2019 -0700

    bpo-32118:  Simplify docs for sequence comparison (GH-15450)

commit 5e63ab05f114987478a21612d918a1c0276fe9d2
Author: Greg Price <>
Date:   Sat Aug 24 10:19:37 2019 -0700

    bpo-37812: Convert CHECK_SMALL_INT macro to a function so the return is explicit. (GH-15216)

commit a50f0a4c2bd997e4534162ecc1853cb54c7ae902
Author: GeeTransit <>
Date:   Sat Aug 24 13:01:36 2019 -0400


commit a4e2991bdc993b60b6457c8a38d6e4a1fc845781
Author: shireenrao <>
Date:   Sat Aug 24 11:26:41 2019 -0400

    bpo-37772: fix zipfile.Path.iterdir() outputs (GH-15170)

    * fix Path._add_implied_dirs to include all implied directories

    * fix Path._add_implied_dirs to include all implied directories

    * Optimize code by using sets instead of lists

    * 📜🤖 Added by blurb_it.

    * fix Path._add_implied_dirs to include all implied directories

    * Optimize code by using sets instead of lists

    * 📜🤖 Added by blurb_it.

    * Add tests to zipfile.Path.iterdir() fix

    * Update test for zipfile.Path.iterdir()

    * remove whitespace from test file

    * Rewrite NEWS blurb to describe the user-facing impact and avoid implementation details.

    * remove redundant [] within set comprehension

    * Update to use unique_everseen to maintain order and other suggestions in review

    * remove whitespace and add back add_dirs in tests

    * Add new standalone function parents using posixpath to get parents of a directory

    * removing whitespace (sorry)

    * Remove import pathlib from

    * Rewrite _parents as a slice on a generator of the ancestry of a path.

    * Remove check for '.' and '/', now that parents no longer returns those.

    * Separate calculation of implied dirs from adding those

    * Re-use _implied_dirs in tests for generating zipfile with dir entries.

    * Replace three fixtures (abcde, abcdef, abde) with one representative example alpharep.

    * Simplify implementation of _implied_dirs by collapsing the generation of parent directories for each name.

commit ef61c524ddeeb56da3858b86e349e7288d68178e
Author: Serhiy Storchaka <>
Date:   Sat Aug 24 13:11:52 2019 +0300

    bpo-37830: Fix compilation of break and continue in finally. (GH-15320)

    Fix compilation of "break" and "continue" in the
    "finally" block when the corresponding "try" block
    contains "return" with a non-constant value.

commit e9c90aa43144b0be1e4e393e8cb549573437a5da
Author: Serhiy Storchaka <>
Date:   Sat Aug 24 12:49:27 2019 +0300

    bpo-29535: Remove promize about hash randomization of datetime objects. (GH-15269)

commit 4101181fd87c2fab6456663d3c8cc99377cf0463
Author: Raymond Hettinger <>
Date:   Fri Aug 23 22:31:22 2019 -0700

    bpo-19119: Remove invalid test and rename a misnamed test (GH-15442)

commit 7913cbc09d1920343a9c5aeec24cb72e9c9402e5
Author: Ned Deily <>
Date:   Sat Aug 24 01:12:05 2019 -0400

    Fix link to changelog in 3.9 What's New page (GH-15445)

commit e17f201cd9293f16593cc507d86f2c0e17b8f2c9
Author: Antoine <>
Date:   Sat Aug 24 06:09:43 2019 +0200

    Fix funny typo in  Doc/bugs. (GH-15412)

    Fix typo in description of link to mozilla bug report writing guidelines.

    Though the URL is misleading, we're indeed trying to write bug _reports_, not to add bugs.

    Automerge-Triggered-By: @ned-deily

commit 0a18ee4be7ba215f414bef04598e0849504f9f1e
Author: Dong-hee Na <>
Date:   Sat Aug 24 07:20:30 2019 +0900

    bpo-37798: Add C fastpath for statistics.NormalDist.inv_cdf() (GH-15266)

commit 5be666010e4df65dc4d831435cc92340ea369f94
Author: Zackery Spytz <>
Date:   Fri Aug 23 12:38:41 2019 -0600

    bpo-37549: os.dup() fails for standard streams on Windows 7 (GH-15389)

commit 8f080b09953a2d862de5c74edf414a54ea3dbea5
Author: Raymond Hettinger <>
Date:   Fri Aug 23 10:19:15 2019 -0700

    bpo-26589: Add http status code 451 (GH-15413)

commit 120b707a6d43452e067daa55a8fdca69f9424abc
Author: Victor Stinner <>
Date:   Fri Aug 23 18:03:08 2019 +0100

    bpo-36763: PyConfig_Read() handles PySys_AddXOption() (GH-15431)

    PyConfig_Read() is now responsible to handle early calls to
    PySys_AddXOption() and PySys_AddWarnOption().

    Options added by PySys_AddXOption() are now handled the same way than
    PyConfig.xoptions and command line -X options.

    For example, PySys_AddXOption(L"faulthandler") enables faulthandler
    as expected.

commit 1beb7c3de9c3d0e802e4267a11d937e8f024d661
Author: Victor Stinner <>
Date:   Fri Aug 23 17:59:12 2019 +0100

    bpo-36763, doc: Add links in the new C API init doc (GH-15433)

commit 3842f2997fbd4dc840986aad2bb94656815e243b
Author: Victor Stinner <>
Date:   Fri Aug 23 16:57:54 2019 +0100

    bpo-36763: Implement PyWideStringList_Insert() of PEP 587 (GH-15423)

commit 8e76c456226438f2e4931ce7baf05ac8faae34a1
Author: Sergey Fedoseev <>
Date:   Fri Aug 23 20:39:09 2019 +0500

    Fix _PyTime_MIN/MAX values (GH-15384)

    _PyTime_t type is defined as int64_t, and so min/max are INT64_MIN/INT64_MAX,

commit b5d3ceea48c181b3e2c6c67424317afed606bd39
Author: Stefan Behnel <>
Date:   Fri Aug 23 16:44:25 2019 +0200

    bpo-14465: Add an indent() function to xml.etree.ElementTree to pretty-print XML trees (GH-15200)

commit 81446fd0d4fa60042ac2752350f31004324510f9
Author: Victor Stinner <>
Date:   Fri Aug 23 11:28:27 2019 +0100

    test_gdb: use unittest test discovery (GH-15405)

    Replace with unittest.main()
    to automatically discover test cases, instead of having
    an maintaing manually a list which may be incomplete.

    Remove also an unused variable.

commit 767434c39c8f3c6a8af1b3282d8382ccf809fe21
Author: Victor Stinner <>
Date:   Fri Aug 23 11:27:24 2019 +0100

    bpo-37531: Fix regrtest _timedout() function on timeout (GH-15419)

    Fix code handling TimeoutExpired exception in _timedout().

commit c48682509dc49b43fe914fe6c502bc390345d1c2
Author: Victor Stinner <>
Date:   Fri Aug 23 11:04:16 2019 +0100

    bpo-37926: Fix PySys_SetArgvEx(0, NULL, 0) crash (GH-15415)

    empty_argv is no longer static in Python 3.8, but it is declared in
    a temporary scope, whereas argv keeps a reference to it.
    empty_argv memory (allocated on the stack) is reused by
    make_sys_argv() code which is inlined when using gcc -O3.

    Define empty_argv in PySys_SetArgvEx() body, to ensure
    that it remains valid for the whole lifetime of
    the PySys_SetArgvEx() call.

commit d288b29fc652d27191bde3b3c9145c2eb8169929
Author: Andre Delfino <>
Date:   Fri Aug 23 06:58:27 2019 -0300

    Correct minor grammar mistake (GH-15404)

commit 6fcb6cfb139ade1aac6dbee0b18ca72b18cbe0d2
Author: Raymond Hettinger <>
Date:   Thu Aug 22 23:44:19 2019 -0700

    bpo-30826: Improve control flow examples (GH-15407)

commit 483ae0cf1dcf46f8b71c4bf32419dd138e908553
Author: Raymond Hettinger <>
Date:   Thu Aug 22 23:27:04 2019 -0700

    bpo-12634: Clarify an awkward section of the tutorial (GH-15406)

commit 657008ea0336ff4f275ed3f0c2b6dd2e52de2bba
Author: Raymond Hettinger <>
Date:   Thu Aug 22 15:14:42 2019 -0700

    bpo-30550: Clarify JSON ordering guarantees (GH-15397)

commit 4be11c009abe88175fa164b45e4838e7267dfa97
Author: Pablo Galindo <>
Date:   Thu Aug 22 20:24:25 2019 +0100

    bpo-37915: Fix comparison between tzinfo objects and timezone objects (GH-15390)

    Automerge-Triggered-By: @pablogsal

commit 8889627b53e1eea2e32590f1867fbb0b0fc7407f
Author: Ivan Levkivskyi <>
Date:   Thu Aug 22 18:48:01 2019 +0100

    bpo-28556: Add a regression test to typing (GH-15396)

    This adds a regression test for the issue found in the Python 2 backport, see

commit d0cdeaab76fef8a6e5a04665df226b6659111e4e
Author: Raymond Hettinger <>
Date:   Thu Aug 22 09:19:36 2019 -0700

    bpo-32554: Deprecate hashing arbitrary types in random.seed() (GH-15382)

commit 4109263a7edce11194e301138cf66fa2d07f7ce4
Author: Raymond Hettinger <>
Date:   Thu Aug 22 09:11:35 2019 -0700

    bpo-14050: Note that not all data can be sorted (GH-15381)

commit a38e9d139929a227e3899fbb638bc46c6cc6d8ba
Author: Sergey Fedoseev <>
Date:   Thu Aug 22 20:28:28 2019 +0500

    bpo-27961: Remove leftovers from the times when long long wasn't required (GH-15388)

commit c4106af38bbcb180725fe0d9478e6a11f7a5e7b9
Author: Florian Bruhin <>
Date:   Thu Aug 22 08:06:51 2019 +0200

    Add missing space to warning message (GH-14915)

    This typo was introduced in GH-13409 when changing the message text.

commit 71876fa438f706b211360d8c205cb985906212ee
Author: Pablo Galindo <>
Date:   Thu Aug 22 02:38:39 2019 +0100

    Refactor Parser/pgen and add documentation and explanations (GH-15373)

    * Refactor Parser/pgen and add documentation and explanations

    To improve the readability and maintainability of the parser
    generator perform the following transformations:

        * Separate the metagrammar parser in its own class to simplify
          the parser generator logic.

        * Create separate classes for DFAs and NFAs and move methods that
          act exclusively on them from the parser generator to these

        * Add docstrings and comment documenting the process to go from
          the grammar file into NFAs and then DFAs. Detail some of the
          algorithms and give some background explanations of some concepts
          that will helps readers not familiar with the parser generation

        * Select more descriptive names for some variables and variables.

        * PEP8 formatting and quote-style homogenization.

    The output of the parser generator remains the same (Include/graminit.h
    and Python/graminit.c remain untouched by running the new parser generator).

commit 374be59b8e479afa8c7a8ae6e77e98915e2f6d45
Author: Steve Dower <>
Date:   Wed Aug 21 17:42:56 2019 -0700

    bpo-37834: Fix test on Windows 7 (GH-15377)

commit 06be2c7f357d12249445e95def1fb708a087b357
Author: Steve Dower <>
Date:   Wed Aug 21 16:45:02 2019 -0700

    bpo-9949: Call normpath() in realpath() and avoid unnecessary prefixes (GH-15369)

commit 7ebdda0dbee7df6f0c945a7e1e623e47676e112d
Author: Steve Dower <>
Date:   Wed Aug 21 16:22:33 2019 -0700

    bpo-36311: Fixes decoding multibyte characters around chunk boundaries and improves decoding performance (GH-15083)

commit df0c21ff46c5c37b6913828ef8c7651f523432f8
Author: bsiem <>
Date:   Thu Aug 22 01:00:39 2019 +0200

    bpo-37482: Fix email address name with encoded words and special chars (GH-14561)

    Special characters in email address header display names are normally
    put within double quotes. However, encoded words (=?charset?x?...?=) are
    not allowed withing double quotes. When the header contains a word with
    special characters and another word that must be encoded, the first one
    must also be encoded.

    In the next example, the display name in the From header is quoted and
    therefore the comma is allowed; in the To header, the comma is not
    within quotes and not encoded, which is not allowed and therefore
    rejected by some mail servers.

    From: "Foo Bar, France" <>
    To: Foo Bar, =?utf-8?q?Espa=C3=B1a?= <>

commit 48ede6b8f685669f53d26ae8456647af42ae3dae
Author: Brett Cannon <>
Date:   Wed Aug 21 15:58:01 2019 -0700

    bpo-37663: have venv activation scripts all consistently use __VENV_PROMPT__ for prompt customization (GH-14941)

    The activation scripts generated by venv were inconsistent in how they changed the shell's prompt. Some used `__VENV_PROMPT__` exclusively, some used `__VENV_PROMPT__` if it was set even though by default `__VENV_PROMPT__` is always set and the fallback matched the default, and one ignored `__VENV_PROMPT__` and used `__VENV_NAME__` instead (and even used a differing format to the default prompt). This change now has all activation scripts use `__VENV_PROMPT__` only and relies on the fact that venv sets that value by default.

    The color of the customization is also now set in fish to the blue from the Python logo for as hex color support is built into that shell (much like PowerShell where the built-in green color is used).

commit df2d4a6f3d5da2839c4fc11d31511c8e028daf2c
Author: Steve Dower <>
Date:   Wed Aug 21 15:27:33 2019 -0700

    bpo-37834: Normalise handling of reparse points on Windows (GH-15231)

    bpo-37834: Normalise handling of reparse points on Windows
    * ntpath.realpath() and nt.stat() will traverse all supported reparse points (previously was mixed)
    * nt.lstat() will let the OS traverse reparse points that are not name surrogates (previously would not traverse any reparse point)
    * nt.[l]stat() will only set S_IFLNK for symlinks (previous behaviour)
    * nt.readlink() will read destinations for symlinks and junction points only

    bpo-1311: os.path.exists('nul') now returns True on Windows
    * nt.stat('nul').st_mode is now S_IFCHR (previously was an error)

commit bcc446f525421156fe693139140e7051d000592e
Author: Stefan Krah <>
Date:   Wed Aug 21 23:00:04 2019 +0200

    Revert mode change that loses information in directory listings on Linux. (#15366)

commit 75e064962ee0e31ec19a8081e9d9cc957baf6415
Author: Steve Dower <>
Date:   Wed Aug 21 13:43:06 2019 -0700

    bpo-9949: Enable symlink traversal for ntpath.realpath (GH-15287)

commit e1c638da6a065af6803028ced1afcc679e63f59d
Author: Anthony Sottile <>
Date:   Wed Aug 21 11:59:26 2019 -0700

    Fix difflib `?` hint in diff output when dealing with tabs (#15201)

commit 092911d5c0d8f6db8a0cb02fecd73dbb650f9e2e
Author: Roger Iyengar <>
Date:   Wed Aug 21 11:59:11 2019 -0400

    Update asyncio.ensure_future() documentation (GH-15347)

    Added back mention that ensure_future actually scheduled obj. This documentation just mentions what ensure_future returns, so I did not realize that ensure_future also schedules obj.

commit 20f59fe1f7748ae899aceee4cb560e5e1f528a1f
Author: Jordon Xu <>
Date:   Wed Aug 21 21:26:20 2019 +0800

    bpo-37751: Fix codecs.lookup() normalization (GH-15092)

    Fix codecs.lookup() to normalize the encoding name the same way
    than encodings.normalize_encoding(), except that codecs.lookup()
    also converts the name to lower case.

commit 87bc3b7a0b0c41ea5da2aa137c4145f437a1c9fd
Author: Ashwin Ramaswami <>
Date:   Wed Aug 21 06:08:47 2019 -0700

    bpo-37860: Add netlify deploy preview for docs (GH-15288)

    * add netlify deploy preview

    * fix publish path

    * install python3 venv

    * add sudo

    * try without venv

    * install right dependencies

    * use python3, not python

    * use pip3

    * python3.7

    * use requirements.txt

    * move requirements.txt to Doc

    * use python 3.7 in runtime.txt

    * move runtime.txt

    * Update requirements.txt

commit d8c5adf6f83024238545aac0bb465289cc2dde84
Author: Victor Stinner <>
Date:   Wed Aug 21 13:40:42 2019 +0100

    bpo-37851: faulthandler allocates its stack on demand (GH-15358)

    The faulthandler module no longer allocates its alternative stack at
    Python startup. Now the stack is only allocated at the first
    faulthandler usage.

    faulthandler no longer ignores memory allocation failure when
    allocating the stack. sigaltstack() failure now raises an OSError
    exception, rather than being ignored.

    The alternative stack is no longer used if sigaction() is
    not available. In practice, sigaltstack() should only be available
    when sigaction() is avaialble, so this change should have no effect
    in practice.

    faulthandler.dump_traceback_later() internal locks are now only
    allocated at the first dump_traceback_later() call, rather than
    always being allocated at Python startup.

commit e0b6117e2723327d6741d0aa599408514add5b30
Author: Michael Anckaert <>
Date:   Wed Aug 21 13:13:34 2019 +0200

    bpo-37823: Fix open() link in telnetlib doc (GH-15281)

    Fixed wrong link to method in telnetlib documentation.

commit de2d9eed8bc628533e1628b843cc4c7a5010f6e5
Author: Victor Stinner <>
Date:   Wed Aug 21 10:59:20 2019 +0100

    bpo-37531: Enhance regrtest multiprocess timeout (GH-15345)

    * Write a message when killing a worker process
    * Put a timeout on the second popen.communicate() call
      (after killing the process)
    * Put a timeout on popen.wait() call
    * Catch popen.kill() and popen.wait() exceptions

commit 9ece4a5057d52c42a8a064a6c0c7f923267fb3db
Author: Greg Price <>
Date:   Tue Aug 20 21:53:59 2019 -0700

    Unmark files as executable that can't actually be executed. (GH-15353)

    There are plenty of legitimate scripts in the tree that begin with a
    `#!`, but also a few that seem to be marked executable by mistake.

    Found them with this command -- it gets executable files known to Git,
    filters to the ones that don't start with a `#!`, and then unmarks
    them as executable:

        $ git ls-files --stage \
          | perl -lane 'print $F[3] if (!/^100644/)' \
          | while read f; do
              head -c2 "$f" | grep -qxF '#!' \
              || chmod a-x "$f"; \

    Looking at the list by hand confirms that we didn't sweep up any
    files that should have the executable bit after all.  In particular

     * The `.psd` files are images from Photoshop.

     * The `.bat` files sure look like things that can be run.
       But we have lots of other `.bat` files, and they don't have
       this bit set, so it must not be needed for them.

    Automerge-Triggered-By: @benjaminp

commit 5b95a1507e349da5adae6d2ab57deac3bdd12f15
Author: Greg Price <>
Date:   Tue Aug 20 20:50:51 2019 -0700

    bpo-35518: Skip test that relies on a deceased network service. (GH-15349)

    If this service had thoroughly vanished, we could just ignore the
    test until someone gets around to either recreating such a service
    or redesigning the test to somehow work locally.  The
    `support.transient_internet` mechanism catches the failure to
    resolve the domain name, and skips the test.

    But in fact the domain does still exist, as do its
    nameservers -- and they can be quite slow to reply.  As a result
    this test can easily take 20-30s before it gets auto-skipped.

    So, skip the test explicitly up front.

commit d33e46d17d33f9b918846982c02ddc17d897c9bc
Author: Benjamin Peterson <>
Date:   Tue Aug 20 19:19:43 2019 -0700

    abstract.c should not be executable. (GH-15348)

commit 1407038e0bcd3f2543c50cd5476d2d2f15a2a9fb
Author: Brett Cannon <>
Date:   Tue Aug 20 12:20:47 2019 -0700

    Remove a dead comment from ossaudiodev.c (#15346)

commit 46a7564578f208df1e0c54fc0520d3b7ca32c981
Author: Zackery Spytz <>
Date:   Tue Aug 20 11:52:25 2019 -0600

    bpo-32793: Fix a duplicate debug message in smtplib (GH-15341)

    _get_socket() already prints a debug message for the host and port.

    Automerge-Triggered-By: @maxking

commit 9e66aba99925eebacfe137d9deb0ef1fdbc2d5db
Author: Joannah Nanjekye <>
Date:   Tue Aug 20 11:46:36 2019 -0300

    bpo-15913: Implement PyBuffer_SizeFromFormat() (GH-13873)

    Implement PyBuffer_SizeFromFormat() function (previously
    documented but not implemented): call struct.calcsize().

commit 18f8dcfa10d8a858b152d12a9ad8fa83b7e967f0
Author: Victor Stinner <>
Date:   Tue Aug 20 12:28:02 2019 +0100

    bpo-37732: Fix GCC warning in _PyObject_Malloc() (GH-15333)

    pymalloc_alloc() now returns directly the pointer, return NULL on
    memory allocation error.

    allocate_from_new_pool() already uses NULL as marker for "allocation

commit b0f4dab8735f692bcfedcf0fa9a25e238a554bab
Author: Eric V. Smith <>
Date:   Tue Aug 20 01:40:28 2019 -0400

    bpo-37868: Improve is_dataclass for instances. (GH-15325)

commit d3c8d735147ccdde1f9bf18ba481da67564837bf
Author: Antoine <>
Date:   Tue Aug 20 03:41:31 2019 +0200

    Minor documentation fixes on library/enum (GH-15234)

    * Minor documentation fixes on library/enum

commit d13968b1be8f4c0035b0ea891ee0f0df026cbf6c
Author: Hansraj Das <>
Date:   Tue Aug 20 07:05:13 2019 +0530

    Delete stale comment in Python/getopt.c. (GH-14719)

commit d11c2c607768fa549b1aed7899edc061b2ebf19f
Author: Victor Stinner <>
Date:   Tue Aug 20 00:47:07 2019 +0100

    Revert "bpo-37788: Fix a reference leak if a thread is not joined (GH-15228)" (GH-15338)

    This reverts commit d3dcc92778807ae8f7ebe85178f36a29711cd478.

commit d3dcc92778807ae8f7ebe85178f36a29711cd478
Author: Victor Stinner <>
Date:   Mon Aug 19 23:37:17 2019 +0100

    bpo-37788: Fix a reference leak if a thread is not joined (GH-15228)

    Add threading.Thread.__del__() method to ensure that the thread state
    lock is removed from the _shutdown_locks list when a thread

commit cf9360e524acafdce99a8a1e48947fd7da06f3d4
Author: Steve Dower <>
Date:   Mon Aug 19 10:07:25 2019 -0700

    Remove 'unstable' warning for Windows Store package in docs (GH-15334)

commit 24fe46081be3d1c01b3d21cb39bc3492ab4485a3
Author: shireenrao <>
Date:   Sat Aug 17 16:50:39 2019 -0400

    bpo-36266: Add module name in ImportError when DLL not found on Windows (GH-15180)

commit 455856391c2b4e2af79de55101421cd15901edaf
Author: cocoatomo <>
Date:   Sun Aug 18 05:40:23 2019 +0900

    Insert a missing close parenthesis (GH-15316)

commit 1b1d0514adbcdd859817c63d1410455c64660d78
Author: Éric Araujo <>
Date:   Sat Aug 17 16:34:08 2019 -0400

    fix link to time function from time_ns doc (GH-15285)

    Because mod, func, class, etc all share one namespace, :func:time creates a link to the time module doc page rather than the time.time function.

commit 29bb227a0ce6d355a2b3e5d6a25872e3702ba9bb
Author: Tim Peters <>
Date:   Fri Aug 16 21:09:16 2019 -0500

    Add a minor `Fraction.__hash__()` optimization (GH-15313)

    * Add a minor `Fraction.__hash__` optimization that got lost in the shuffle.

    Document the optimizations.

commit 0567786d26348aa7eaf0ab1b5d038fdabe409d92
Author: Jeroen Demeyer <>
Date:   Fri Aug 16 12:41:27 2019 +0200

    bpo-37540: vectorcall: keyword names must be strings (GH-14682)

    The fact that keyword names are strings is now part of the vectorcall and `METH_FASTCALL` protocols. The biggest concrete change is that `_PyStack_UnpackDict` now checks that and raises `TypeError` if not.

    CC @markshannon @vstinner

commit f3cb68f2e4c3e0c405460f9bb881f5c1db70f535
Author: Raymond Hettinger <>
Date:   Thu Aug 15 20:58:26 2019 -0700

    bpo-37863: Optimize Fraction.__hash__() (#15298)

commit 69f37bcb28d7cd78255828029f895958b5baf6ff
Author: Hansraj Das <>
Date:   Thu Aug 15 21:49:07 2019 +0530

    Indent code inside if block. (GH-15284)

    Without indendation, seems like strcpy line is parallel to `if` condition.

commit 37806f404f57b234902f0c8de9a04647ad01b7f1
Author: Jeroen Demeyer <>
Date:   Thu Aug 15 17:49:46 2019 +0200

    bpo-37207: enable vectorcall for type.__call__ (GH-14588)

    Base PR for other PRs that want to play with `type.__call__` such as #13930 and #14589.

    The author is really @markshannon I just made the PR.

    Automerge-Triggered-By: @encukou

commit 40dad9545aad4ede89abbab1c1beef5303d9573e
Author: Alex Gaynor <>
Date:   Thu Aug 15 08:31:28 2019 -0400

    Replace usage of the obscure PEM_read_bio_X509_AUX with the more standard PEM_read_bio_X509 (GH-15303)

    X509_AUX is an odd, note widely used, OpenSSL extension to the X509 file format. This function doesn't actually use any of the extra metadata that it parses, so just use the standard API.

    Automerge-Triggered-By: @tiran

commit 3e4498d35c34aeaf4a9c3d57509b0d3277048ac6
Author: Greg Price <>
Date:   Wed Aug 14 18:18:53 2019 -0700

    bpo-37760: Avoid cluttering work tree with downloaded Unicode files. (GH-15128)

commit 68e495df909a33e719e3f1ef5b4893ec785e10a4
Author: Hai Shi <>
Date:   Wed Aug 14 17:03:11 2019 -0500

    bpo-37775: Update compileall doc for invalidation_mode parameter (GH-15148)

commit ac827edc493d3ac3f5b9b0cc353df1d4b418a9aa
Author: Victor Stinner <>
Date:   Wed Aug 14 23:35:27 2019 +0200

    bpo-21131: Fix faulthandler.register(chain=True) stack (GH-15276)

    faulthandler now allocates a dedicated stack of SIGSTKSZ*2 bytes,
    instead of just SIGSTKSZ bytes. Calling the previous signal handler
    in faulthandler signal handler uses more than SIGSTKSZ bytes of stack
    memory on some platforms.

commit 28146206578ebe1b84b48e6f255738a227058c04
Author: Artem Khramov <>
Date:   Thu Aug 15 03:21:48 2019 +0600

    bpo-37811: FreeBSD, OSX: fix poll(2) usage in sockets module (GH-15202)

    FreeBSD implementation of poll(2) restricts the timeout argument to be
    either zero, or positive, or equal to INFTIM (-1).

    Unless otherwise overridden, socket timeout defaults to -1. This value
    is then converted to milliseconds (-1000) and used as argument to the
    poll syscall. poll returns EINVAL (22), and the connection fails.

    This bug was discovered during the EINTR handling testing, and the
    reproduction code can be found in (see,
    attached). On GNU/Linux, the example runs as expected.

    This change is trivial:
    If the supplied timeout value is negative, truncate it to -1.

commit dcfe111eb5602333135b8776996332a8dcf59392
Author: Abhilash Raj <>
Date:   Wed Aug 14 14:11:32 2019 -0700

    bpo-37826: Document exception chaining in Python tutorial for errors. (GH-15243)

commit 71662dc2f12a7e77e5e1dfe64ec87c1b459c3f59
Author: Tal Einat <>
Date:   Wed Aug 14 20:06:06 2019 +0300

    bpo-37849: IDLE: fix completion window positioning above line (GH-15267)

commit 4fa10dde40356d7c71e5524233bafc221d9e2deb
Author: Sergey Fedoseev <>
Date:   Wed Aug 14 19:10:33 2019 +0500

    bpo-36030: Improve performance of some tuple operations (GH-12052)

commit b0c8369c603633f445ccbb5ca7a8742145ff9eec
Author: Victor Stinner <>
Date:   Wed Aug 14 14:18:51 2019 +0200

    bpo-37531: Fix regrtest timeout for subprocesses (GH-15072)

    Co-Authored-By: Joannah Nanjekye <>

commit 6bccbe7dfb998af862a183f2c36f0d4603af2c29
Author: Greg Price <>
Date:   Wed Aug 14 04:05:19 2019 -0700

    bpo-36502: Correct documentation of str.isspace() (GH-15019)

    The documented definition was much broader than the real one:
    there are tons of characters with general category "Other",
    and we don't (and shouldn't) treat most of them as whitespace.

    Rewrite the definition to agree with the comment on
    _PyUnicode_IsWhitespace, and with the logic in,
    which is what generates that function and so ultimately governs.

    Add suitable breadcrumbs so that a reader who wants to pin down
    exactly what this definition means (what's a "bidirectional class"
    of "B"?) can do so.  The `unicodedata` module documentation is an
    appropriate central place for our references to Unicode's own copious
    documentation, so point there.

    Also add to the isspace() test a thorough check that the
    implementation agrees with the intended definition.

commit 077af8c2c93dd71086e2c5e5ff1e634b6da8f214
Author: Victor Stinner <>
Date:   Wed Aug 14 12:31:43 2019 +0200

    bpo-37738: Fix curses addch(str, color_pair) (GH-15071)

    Fix the implementation of curses addch(str, color_pair): pass the
    color pair to setcchar(), instead of always passing 0 as the color

commit 7e479c82218450255572e3f5fa1549dc283901ea
Author: Hai Shi <>
Date:   Wed Aug 14 04:50:19 2019 -0500

    bpo-37681: no_sanitize_thread support from GCC 5.1 (GH-15096)

    Fix the following warning with GCC 4.8.5:
    Objects/obmalloc.c: warning: ‘no_sanitize_thread’ attribute directive ignored

commit 43d564c18c97421f73025ac3132a194975c76bd6
Author: Zackery Spytz <>
Date:   Tue Aug 13 23:51:06 2019 -0600

    bpo-37337: Fix a GCC 9 warning in Objects/descrobject.c (GH-14814)

    Commit b1263d5a60d3f7ab02dd28409fff59b3815a3f67 causes GCC 9.1.0 to
    give a warning in Objects/descrobject.c.

commit c03e698c344dfc557555b6b07a3ee2702e45f6ee
Author: Greg Price <>
Date:   Tue Aug 13 19:28:38 2019 -0700

    bpo-37760: Factor out standard range-expanding logic in makeunicodedata. (GH-15248)

    Much like the lower-level logic in commit ef2af1ad4, we had
    4 copies of this logic, written in a couple of different ways.
    They're all implementing the same standard, so write it just once.

commit 38c7199beb30ae9a5005c0f0d9df9fae0da3680a
Author: Ngalim Siregar <>
Date:   Wed Aug 14 08:10:58 2019 +0700

    bpo-37256: Wording in Request class docs (#14792)

    * bpo-37256: Wording in Request class docs

    * 📜🤖 Added by blurb_it.

    * Update Misc/NEWS.d/next/Documentation/2019-07-16-14-48-12.bpo-37256.qJTrBb.rst

    Co-Authored-By: Kyle Stanley <>

commit 243a73deee4ac61fe06602b7ed56b6df01e19f27
Author: shireenrao <>
Date:   Tue Aug 13 17:27:34 2019 -0400

    bpo-25172: Add test for crypt ImportError on Windows (GH-15252)

commit 82642a052dc46b2180679518bc8d87e1a28a88b5
Author: Hai Shi <>
Date:   Tue Aug 13 14:54:02 2019 -0500

    bpo-37689: add Path.is_relative_to() method (GH-14982)

commit 8a784af750fa82c8355903309e5089eb2b60c16b
Author: Josh Holland <>
Date:   Tue Aug 13 20:05:09 2019 +0100

    bpo-37814: Document the empty tuple type annotation syntax (GH-15208)

    > The empty tuple syntax in type annotations, `Tuple[()]`, is not obvious from the examples given in the documentation (I naively expected `Tuple[]` to work); it has been documented in PEP 484 and in mypy, but not in the documentation for the typing module.

commit 1ac2a83f30312976502fda042db5ce18d10ceec2
Author: Hai Shi <>
Date:   Tue Aug 13 12:37:59 2019 -0500

    bpo-37583: Add err 113 to support.get_socket_conn_refused_errs() (GH-14729)

    Add error number 113 EHOSTUNREACH to get_socket_conn_refused_errs()

commit b0dace3e979381426385c551b116d0f1434096ee
Author: Steve Dower <>
Date:   Tue Aug 13 10:34:07 2019 -0700

    bpo-37841: Remove python_uwp dependency on msvcp140.dll (GH-15253)

commit 99d208efed97e02d813e8166925b998bbd0d3993
Author: Greg Price <>
Date:   Mon Aug 12 22:59:30 2019 -0700

    bpo-37760: Constant-fold some old options in makeunicodedata. (GH-15129)

    The `expand` option was introduced in 2000 in commit fad27aee1.
    It appears to have been always set since it was committed, and
    what it does is tell the code to do something essential.  So,
    just always do that, and cut the option.

    Also cut the `linebreakprops` option, which isn't consulted anymore.

commit def97c988be8340f33869b57942a30d10fc3a1f9
Author: Greg Price <>
Date:   Mon Aug 12 22:58:01 2019 -0700

    bpo-37758: Clean out vestigial script-bits from test_unicodedata. (GH-15126)

    This file started life as a script, before conversion to a
    `unittest` test file.  Clear out some legacies of that conversion
    that are a bit confusing about how it works.

    Most notably, it's unlikely there's still a good reason to try
    to recover from `unicodedata` failing to import -- as there was
    when that logic was first added, when the module was very new.
    So take that out entirely.  Keep `self.db` working, though, to
    avoid a noisy diff.

commit 4e3dfcc4b987e683476a1b16456e57d3c9f581cb
Author: Greg Price <>
Date:   Mon Aug 12 22:23:41 2019 -0700

    bpo-37760: Mark all generated Unicode data headers as generated. (GH-15171)

    This causes them to be collapsed by default in diffs shown on GitHub.

    Automerge-Triggered-By: @benjaminp

commit ef2af1ad44be0542a47270d5173a0b920c3a450d
Author: Greg Price <>
Date:   Mon Aug 12 22:20:56 2019 -0700

    bpo-37760: Factor out the basic UCD parsing logic of makeunicodedata. (GH-15130)

    There were 10 copies of this, and almost as many distinct versions of
    exactly how it was written.  They're all implementing the same
    standard.  Pull them out to the top, so the more interesting logic
    that remains becomes easier to read.

commit 66a34d35e4c97da9840a29ba9fba76721021c463
Author: Raymond Hettinger <>
Date:   Mon Aug 12 15:55:18 2019 -0700

    bpo-37759: Second round of edits to Whatsnew 3.8 (GH-15204)

commit c1aeb292d206e12b900dc4f7f816246c3a57c2ac
Author: Steve Dower <>
Date:   Mon Aug 12 14:56:39 2019 -0700

    Remove versioned executables from non-APPX packages (GH-15237)

commit 3e34a25a7a5c9ea2c46f2daeeb60f072faa5aaa1
Author: Steve Dower <>
Date:   Mon Aug 12 14:09:36 2019 -0700

    bpo-37354: Sign Activate.ps1 for release (GH-15235)

commit 732775d6be8062e72cf4995d5a9db0170e22c233
Author: Derek Keeler <>
Date:   Mon Aug 12 13:06:02 2019 -0700

    bpo-37354: Make Powershell Activate.ps1 script static to allow for signing (GH-14967)

    - Remove use of replacement text in the script
    - Make use of the pyvenv.cfg file for prompt value.
    - Add parameters to allow more flexibility
    - Make use of the current path, and assumptions about where env puts things, to compensate
    - Make the script a bit more 'idiomatic' Powershell
    - Add script documentation (Get-Help .\.venv\Scripts\Activate.ps1 shows PS help page now

commit 44046fe4fc7f00a6eb855b33e6a3f953cf5233a5
Author: Dong-hee Na <>
Date:   Tue Aug 13 02:41:08 2019 +0900

    bpo-37804: Remove the deprecated method threading.Thread.isAlive() (GH-15225)

commit f9590edfeae192ba95aadaee9460dc03a366c51a
Author: Ismail S <>
Date:   Mon Aug 12 07:57:03 2019 +0100

    Fix docs for assert_called and assert_called_once (#15197)

commit f03b4c8a48f62134799d368b78da35301af466a3
Author: Raymond Hettinger <>
Date:   Sun Aug 11 14:40:59 2019 -0700

    bpo-37819: Add Fraction.as_integer_ratio() (GH-15212)

commit 09a1872a8007048dcdf825a476816c5e3498b8f8
Author: Abhilash Raj <>
Date:   Sun Aug 11 13:45:09 2019 -0700

    bpo-32178: Fix IndexError trying to parse 'To' header starting with ':'. (GH-15044)

    This should fix the IndexError trying to retrieve `DisplayName.display_name` and `DisplayName.value` when the `value` is basically an empty string.

commit 51aac15f6d525595e200e3580409c4b8656e8a96
Author: Greg Price <>
Date:   Sat Aug 10 00:20:27 2019 -0700

    Delete leftover clinic-generated file for C zipimport. (GH-15174)

commit b4be87a04a2a8ccfd2480e19dc527589fce53555
Author: Gregory P. Smith <>
Date:   Sat Aug 10 00:19:07 2019 -0700

    bpo-32912: Revert SyntaxWarning on invalid escape sequences. (GH-15195)

    DeprecationWarning will continue to be emitted for invalid escape
    sequences in string and bytes literals just as it did in 3.7.

    SyntaxWarning may be emitted in the future. But per mailing list
    discussion, we don't yet know when because we haven't settled on how to
    do so in a non-disruptive manner.

    (Applies 4c5b6bac2408f879231c7cd38d67657dd4804e7c to the master branch).
    (This is for master/3.9)

    Automerge-Triggered-By: @gpshead

commit 92c7e30adf5c81a54d6e5e555a6bdfaa60157a0d
Author: Ngalim Siregar <>
Date:   Fri Aug 9 21:22:16 2019 +0700

    bpo-37642: Update acceptable offsets in timezone (GH-14878)

    This fixes an inconsistency between the Python and C implementations of
    the datetime module. The pure python version of the code was not
    accepting offsets greater than 23:59 but less than 24:00. This is an
    accidental legacy of the original implementation, which was put in place
    before tzinfo allowed sub-minute time zone offsets.


commit ed70a344b5fbddea85726ebc1964ee0cfdef9c40
Author: Paul Monson <>
Date:   Thu Aug 8 16:12:33 2019 -0700

    bpo-36511: Fix failures in Windows ARM32 buildbot (GH-15181)

commit aa542c2cf26c5af9298dda6064576b18906cdfbf
Author: Pablo Galindo <>
Date:   Thu Aug 8 23:25:46 2019 +0100

    bpo-37795: Capture DeprecationWarnings in the test suite (GH-15184)

commit 10a0a093231ea82a3bfd33fd63322aebd8406866
Author: Zackery Spytz <>
Date:   Thu Aug 8 15:48:00 2019 -0600

    bpo-37268: test_parser fails when run with -Werror (GH-15183)

    Use warnings.filterwarnings() when importing the deprecated parser


    Automerge-Triggered-By: @pablogsal

commit f4e725f224b864bf9bf405ff7f863cda46fca1cd
Author: shireenrao <>
Date:   Thu Aug 8 16:02:49 2019 -0400

    bpo-25172: Raise appropriate ImportError msg when crypt module used on Windows (GH-15149)

commit 2a570af12ac5e4ac5575a68f8739b31c24d01367
Author: Inada Naoki <>
Date:   Thu Aug 8 17:57:10 2019 +0900

    bpo-37587: optimize json.loads (GH-15134)

    Use a tighter scope temporary variable to help register allocation.
    1% speedup for large string.

    Use PyDict_SetItemDefault() for memoizing keys.
    At most 4% speedup when the cache hit ratio is low.

commit e43e7ed36480190083740fd75e2b9cdca72f1a68
Author: Raymond Hettinger <>
Date:   Thu Aug 8 01:23:05 2019 -0700

    bpo-35892: Add usage note to mode() (GH-15122)

commit 7d44e7a4563072d0fad00427b76b94cad61c38ae
Author: Serhiy Storchaka <>
Date:   Thu Aug 8 08:43:18 2019 +0300

    bpo-37685: Use singletons ALWAYS_EQ and NEVER_EQ in more tests. (GH-15167)

commit 662db125cddbca1db68116c547c290eb3943d98e
Author: Serhiy Storchaka <>
Date:   Thu Aug 8 08:42:54 2019 +0300

    bpo-37685: Fixed __eq__, __lt__ etc implementations in some classes. (GH-14952)

    They now return NotImplemented for unsupported type of the other operand.

commit 4c69be22df3852f17873a74d015528d9a8ae92d6
Author: aiudirog <>
Date:   Thu Aug 8 01:41:10 2019 -0400

    bpo-34775: Return NotImplemented in PurePath division. (GH-9509)

commit 0378d98678f3617fd44d9a6266e7c17ebce62755
Author: Steve Dower <>
Date:   Wed Aug 7 11:39:09 2019 -0700

    bpo-37734: Remove unnecessary brace escapes in PC/layout script (GH-15165)

commit 87ce9588ceb4b4dd625913344844390f0b991b0c
Author: Steve Dower <>
Date:   Wed Aug 7 10:50:17 2019 -0700

    bpo-37778: Fixes the icons used for file associations to the Microsoft Store package (GH-15150)

commit 1fab9cbfbaf19a7bc79cef382136fcf9491e3183
Author: Steve Dower <>
Date:   Wed Aug 7 10:49:40 2019 -0700

    bpo-37734: Fix use of registry values to launch Python from Microsoft Store app (GH-15146)

commit 362f5350eb5e2c7bfb0b0a8c306a2e128c3aee93
Author: Géry Ogam <>
Date:   Wed Aug 7 07:02:23 2019 +0200

    Update pickle.rst (GH-14128)

    * Edits for readability and grammar

commit e9cbcd0018abd2a5f2348c45d5c9c4265c4f42dc
Author: sweeneyde <>
Date:   Wed Aug 7 00:37:08 2019 -0400

    bpo-37004: Documented asymmetry of string arguments in difflib.SequenceMatcher for ratio method (GH-13482)

commit 610a4823cc0a3c2380ad0dfe64ae483ced4e5304
Author: Raymond Hettinger <>
Date:   Tue Aug 6 17:56:22 2019 -0700

    bpo-37646:  Document that eval() cannot access nested scopes (GH-15117)

commit 3e41f3cabb661824a1a197116f7f5ead64eb6ced
Author: Sergey Fedoseev <>
Date:   Wed Aug 7 05:38:31 2019 +0500

    bpo-34488: optimize BytesIO.writelines() (GH-8904)

    Avoid the creation of unused int object for each line.

commit 3a5c433fce7312748859290b9d8db5b6507660f9
Author: Barry Warsaw <>
Date:   Tue Aug 6 16:59:07 2019 -0700

    Make importlib.metadata a simple module (#15153)

commit cfebfef2def48095aa1f4c790a35e51818d67502
Author: Géry Ogam <>
Date:   Tue Aug 6 23:12:22 2019 +0200

    Improve signal documentation (GH-14274)

    * add a missing ``.. availability::`` reST explicit markup;
    * more consistent "see man page" sentences.

commit 4f9ffc9d1a6a293563deaaaaf4a13331302219b4
Author: Raymond Hettinger <>
Date:   Mon Aug 5 13:33:19 2019 -0700

    bpo-37759:  First round of major edits to Whatsnew 3.8 (GH-15127)

commit 1213123005d9f94bb5027c0a5256ea4d3e97b61d
Author: Terry Jan Reedy <>
Date:   Sun Aug 4 19:48:52 2019 -0400

    bpo-36419: IDLE - Refactor autocompete and improve testing. (#15121)

commit d748a8085568cc57613ab2b437f7b6c1b6d76ae3
Author: Timothy Hopper <>
Date:   Sun Aug 4 17:23:29 2019 -0400

    Adds Tim Hopper and Dan Lidral-Porter to ACKS (GH-15101)

    Tim and Dan were authors for GH-11847

commit 14070299cdc0faf36975f0cc2d51824a9abf3db0
Author: Terry Jan Reedy <>
Date:   Sun Aug 4 16:45:15 2019 -0400

    bpo-37748: Re-order the Run menu. (GH-15115)

    Put the most common choice, Run Module, at the top.

commit adf02b36b3f3745ad4ee380d88f2f6011f54fc22
Author: Raymond Hettinger <>
Date:   Sun Aug 4 13:35:58 2019 -0700

    Update itertools docs (GH-15114)

    * Remove suggestion that is less relevant now that global lookups are much faster
    * Add link for installing the recipes

commit b1c8ec010fb4eb2654ca994e95144c8f2fea07fb
Author: Raymond Hettinger <>
Date:   Sun Aug 4 13:14:03 2019 -0700

    bpo-28292: Mark helper functions as private. (GH-15113)

commit 8183bb8150edcac6a7525bfb7708d08837ecb095
Author: Raymond Hettinger <>
Date:   Sun Aug 4 11:52:04 2019 -0700

    bpo-36324: Update comments to include the target hash sums (GH-15110)

commit 86f1a18abfee5939452f468d80de998918e2afd2
Author: Tal Einat <>
Date:   Sun Aug 4 19:25:27 2019 +0300

    bpo-37706: IDLE - fix sidebar code bug and drag tests (GH-15103)

    Convert mouse y to line number in the sidebar rather than the text.

commit 18b711c5a7f90d88fb74748f18fa8ef49d8486c7
Author: Serhiy Storchaka <>
Date:   Sun Aug 4 14:12:48 2019 +0300

    bpo-37648: Fixed minor inconsistency in some __contains__. (GH-14904)

    The collection's item is now always at the left and
    the needle is on the right of ==.

commit 17e52649c0e7e9389f1cc2444a53f059e24e6bca
Author: Serhiy Storchaka <>
Date:   Sun Aug 4 12:38:46 2019 +0300

    bpo-37685: Fixed comparisons of datetime.timedelta and datetime.timezone. (GH-14996)

    There was a discrepancy between the Python and C implementations.

    Add singletons ALWAYS_EQ, LARGEST and SMALLEST in
    to test mixed type comparison.

commit 5c72badd06a962fe0018ceb9916f3ae66314ea8e
Author: Florian Wendelborn <>
Date:   Sat Aug 3 20:16:34 2019 +0200

    Correct description of HTTP status code 308. (GH-15078)

    Permanent redirect was explained as a temporary redirect.

commit 9670ce76b83bde950020f8d89c4d27168aaaf912
Author: Michael Felt <>
Date:   Sat Aug 3 08:12:26 2019 +0200

    bpo-18049: Define THREAD_STACK_SIZE for AIX to pass default recursion limit test (GH-15081)

    * Define THREAD_STACK_SIZE for AIX to pass default recursion limit test

commit c5fa44944ee0a31a12b9a70776c7cb56c4dc39a2
Author: Ngalim Siregar <>
Date:   Sat Aug 3 12:46:02 2019 +0700

    bpo-37444: Update differing exception between builtins and importlib (GH-14869)

    Imports now raise `TypeError` instead of `ValueError` for relative import failures. This makes things consistent between `builtins.__import__` and `importlib.__import__` as well as using a more natural import for the failure.

    Automerge-Triggered-By: @brettcannon

commit 8e568ef266a2805f9a6042003723d9c050830461
Author: Timo Furrer <>
Date:   Sat Aug 3 00:44:25 2019 +0200

    bpo-30974: Change os.path.samefile docstring to match docs (GH-7337)

commit 7ea9a85f132b32347fcbd2cbe1b553a2e9890b56
Author: Timothy Hopper <>
Date:   Fri Aug 2 18:20:14 2019 -0400

    bpo-20523: pdb searches for .pdbrc in ~ instead of $HOME (GH-11847)

    Previously pdb checked the $HOME environmental variable
    to find the user .pdbrc. If $HOME is not set, the user
    .pdbrc would not be found.

    Change pdb to use `os.path.expanduser('~')` to determine
    the user's home directory. Thus, if $HOME is not set (as
    in tox or on Windows), os.path.expanduser('~') falls
    back on other techniques for locating the user's home

    This follows pip's implementation for loading .piprc.

    Co-authored-by: Dan Lidral-Porter <>

commit 8fbece135d7615e836a845ca39223097046c8b8b
Author: Greg Bowser <>
Date:   Fri Aug 2 16:29:52 2019 -0400

    bpo-36590: Add Bluetooth RFCOMM and support for Windows. (GH-12767)

    Support for RFCOMM, L2CAP, HCI, SCO is based on the BTPROTO_* macros
    being defined. Winsock only supports RFCOMM, even though it has a
    BTHPROTO_L2CAP macro. L2CAP support would build on windows, but not
    necessarily work.

    This also adds some basic unittests for constants (all of which existed
    prior to this commit, just not on windows) and creating sockets.

    pair: Nate Duarte <>

commit cb65b3a4f484ce71dcb76a918af98c7015513025
Author: Vinay Sajip <>
Date:  …
lisroach added a commit to lisroach/cpython that referenced this issue Sep 10, 2019
/cc @ambv since this needs to be included in 3.8 -- see pypa/pip#6885.

Sorry about the last minute PR!

Automerge-Triggered-By: @zooba
vrpolakatcisco added a commit to vrpolakatcisco/cpython that referenced this issue Sep 12, 2019
/cc @ambv since this needs to be included in 3.8 -- see pypa/pip#6885.

Sorry about the last minute PR!

Automerge-Triggered-By: @zooba
@lock lock bot added the S: auto-locked label Sep 16, 2019
@lock lock bot locked as resolved and limited conversation to collaborators Sep 16, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant