aca67da | Jason R. Coombs | 02 November 2020, 16:48:56 UTC | Revert "bpo-37193: remove thread objects which finished process its request (GH-13893)" (GH-23107) This reverts commit c41559021213cfc9dc62a83fc63306b3bdc3e64b. | 02 November 2020, 16:48:56 UTC |
4b9aad4 | Victor Stinner | 02 November 2020, 15:49:54 UTC | bpo-42236: Enhance init and encoding documentation (GH-23109) Enhance the documentation of the Python startup, filesystem encoding and error handling, locale encoding. Add a new "Python UTF-8 Mode" section. * Add "locale encoding" and "filesystem encoding and error handler" to the glossary * Remove documentation from Include/cpython/initconfig.h: move it to Doc/c-api/init_config.rst. * Doc/c-api/init_config.rst: * Document command line options and environment variables * Document default values. * Add a new "Python UTF-8 Mode" section in Doc/library/os.rst. * Add warnings to Py_DecodeLocale() and Py_EncodeLocale() docs. * Document how Python selects the filesystem encoding and error handler at a single place: PyConfig.filesystem_encoding and PyConfig.filesystem_errors. * PyConfig: move orig_argv member at the right place. | 02 November 2020, 15:49:54 UTC |
3018228 | Lysandros Nikolaou | 02 November 2020, 15:27:30 UTC | bpo-42224: Fix test_format when locale does not expect number grouping (GH-23067) | 02 November 2020, 15:27:30 UTC |
64366fa | Julien Danjou | 02 November 2020, 14:16:25 UTC | bpo-41435: Add sys._current_exceptions() function (GH-21689) This adds a new function named sys._current_exceptions() which is equivalent ot sys._current_frames() except that it returns the exceptions currently handled by other threads. It is equivalent to calling sys.exc_info() for each running thread. | 02 November 2020, 14:16:25 UTC |
3d86d09 | Jakub Stasiak | 02 November 2020, 10:56:35 UTC | bpo-42230: Improve asyncio documentation regarding accepting sets vs iterables (GH-23073) People call wait() and as_completed() with various non-set iterables, a list should be the most common but there are others as well[1]. Considering typeshed also documents wait()[2] and as_completed()[3] as accepting arbitrary iterables I think it's a good idea to document the status quo better. [1] https://github.com/aio-libs/aiokafka/pull/672 [2] https://github.com/python/typeshed/blob/620989bac572f30349b95590ebe81a73ce0fe862/stdlib/3/asyncio/tasks.pyi#L161 [3] https://github.com/python/typeshed/blob/620989bac572f30349b95590ebe81a73ce0fe862/stdlib/3/asyncio/tasks.pyi#L40 | 02 November 2020, 10:56:35 UTC |
6e8dcda | Joongi Kim | 02 November 2020, 08:02:48 UTC | bpo-41229: Update docs for explicit aclose()-required cases and add contextlib.aclosing() method (GH-21545) This is a PR to: * Add `contextlib.aclosing` which ia analogous to `contextlib.closing` but for async-generators with an explicit test case for [bpo-41229]() * Update the docs to describe when we need explicit `aclose()` invocation. which are motivated by the following issues, articles, and examples: * [bpo-41229]() * https://github.com/njsmith/async_generator * https://vorpus.org/blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/#cleanup-in-generators-and-async-generators * https://www.python.org/dev/peps/pep-0533/ * https://github.com/achimnol/aiotools/blob/ef7bf0cea7af/src/aiotools/context.py#L152 Particuarly regarding [PEP-533](https://www.python.org/dev/peps/pep-0533/), its acceptance (`__aiterclose__()`) would make this little addition of `contextlib.aclosing()` unnecessary for most use cases, but until then this could serve as a good counterpart and analogy to `contextlib.closing()`. The same applies for `contextlib.closing` with `__iterclose__()`. Also, still there are other use cases, e.g., when working with non-generator objects with `aclose()` methods. | 02 November 2020, 08:02:48 UTC |
e9208f0 | Raymond Hettinger | 02 November 2020, 04:15:50 UTC | Minor formatting edits to the descriptor howto guide (GH-23092) | 02 November 2020, 04:15:50 UTC |
da7bb7b | Tal Einat | 02 November 2020, 03:59:52 UTC | bpo-40511: Stop unwanted flashing of IDLE calltips (GH-20910) They were occurring with both repeated 'force-calltip' invocations and by typing parentheses in expressions, strings, and comments in the argument code. Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> | 02 November 2020, 03:59:52 UTC |
74fa464 | Raymond Hettinger | 02 November 2020, 02:02:37 UTC | Add member objects to the descriptor howto guide (GH-23084) | 02 November 2020, 02:02:37 UTC |
c415590 | MARUYAMA Norihiro | 01 November 2020, 23:51:04 UTC | bpo-37193: remove thread objects which finished process its request (GH-13893) * bpo-37193: remove the thread which finished process request from threads list * rename variable t to thread. * don't remove thread from list if it is daemon. * use lock to protect self._threads. * use finally block in case of exception from shutdown_request(). * check "not thread.daemon" before lock to avoid holding the lock if it's unnecessary. * fix the place of _threads_lock. * separate code to remove a current thread into a function. * check ValueError when removing thread. * fix wrong code which all instance shared same lock. * Extract thread management into a _Threads class to encapsulate atomic operations and separate concerns. * Replace multiple references of 'block_on_close' with one, avoiding the possibility that 'block_on_close' could change during the course of processing requests. Now, there's exactly one _threads object with behavior fixed for the duration. * Add docstrings to private classes. * Add test to ensure that a ThreadingTCPServer can be closed without serving any requests. * Use _NoThreads as the default value. Fixes AttributeError when server is closed without serving any requests. * Add blurb * Add test capturing failure. Co-authored-by: Jason R. Coombs <jaraco@jaraco.com> | 01 November 2020, 23:51:04 UTC |
e662c39 | Victor Stinner | 01 November 2020, 22:07:23 UTC | bpo-42236: Use UTF-8 encoding if nl_langinfo(CODESET) fails (GH-23086) If the nl_langinfo(CODESET) function returns an empty string, Python now uses UTF-8 as the filesystem encoding. In May 2010 (commit b744ba1d14c5487576c95d0311e357b707600b47), I modified Python to log a warning and use UTF-8 as the filesystem encoding (instead of None) if nl_langinfo(CODESET) returns an empty string. In August 2020 (commit 94908bbc1503df830d1d615e7b57744ae1b41079), I modified Python startup to fail with a fatal error and a specific error message if nl_langinfo(CODESET) returns an empty string. The intent was to prevent guessing the encoding and also investigate user configuration where this case happens. In 10 years (2010 to 2020), I saw zero user report about the error message related to nl_langinfo(CODESET) returning an empty string. Today, UTF-8 became the defacto standard and it's safe to make the assumption that the user expects UTF-8. For example, nl_langinfo(CODESET) can return an empty string on macOS if the LC_CTYPE locale is not supported, and UTF-8 is the default encoding on macOS. While this change is likely to not affect anyone in practice, it should make UTF-8 lover happy ;-) Rewrite also the documentation explaining how Python selects the filesystem encoding and error handler. | 01 November 2020, 22:07:23 UTC |
82458b6 | Victor Stinner | 01 November 2020, 19:59:35 UTC | bpo-42236: Enhance _locale._get_locale_encoding() (GH-23083) * Rename _Py_GetLocaleEncoding() to _Py_GetLocaleEncodingObject() * Add _Py_GetLocaleEncoding() which returns a wchar_t* string to share code between _Py_GetLocaleEncodingObject() and config_get_locale_encoding(). * _Py_GetLocaleEncodingObject() now decodes nl_langinfo(CODESET) from the current locale encoding with surrogateescape, rather than using UTF-8. | 01 November 2020, 19:59:35 UTC |
1f7dfb2 | kj | 01 November 2020, 18:13:38 UTC | bpo-42233: Correctly repr GenericAlias when used with typing module (GH-23081) Noticed by @serhiy-storchaka in the bpo. `typing`'s types were not showing the parameterized generic. Eg. previously: ```python >>> typing.Union[dict[str, float], list[int]] 'typing.Union[dict, list]' ``` Now: ```python >>> typing.Union[dict[str, float], list[int]] 'typing.Union[dict[str, float], list[int]]' ``` Automerge-Triggered-By: GH:gvanrossum | 01 November 2020, 18:13:38 UTC |
148c76b | Raymond Hettinger | 01 November 2020, 17:10:06 UTC | Expand and clarify the "Invoking Descriptors" section of the Descriptor HowTo (GH-23078) | 01 November 2020, 17:10:06 UTC |
7feb54a | Dong-hee Na | 01 November 2020, 13:04:35 UTC | bpo-37483: Add PyObject_CallOneArg() in the What's New in Python 3.9 (GH-23062) | 01 November 2020, 13:04:35 UTC |
d281005 | Inada Naoki | 01 November 2020, 11:02:03 UTC | tempfile: Use random.choises() instead of choise() (GH-23068) | 01 November 2020, 11:02:03 UTC |
2165cea | Ronald Oussoren | 01 November 2020, 09:08:48 UTC | bpo-29566: binhex.binhex now consitently writes MacOS 9 line endings. (GH-23059) [bpo-29566]() notes that binhex.binhex uses inconsistent line endings (both Unix and MacOS9 line endings are used). This PR changes this to use the MacOS9 line endings everywhere. | 01 November 2020, 09:08:48 UTC |
d3b4e06 | Alexey Izbyshev | 01 November 2020, 05:33:08 UTC | bpo-42146: Unify cleanup in subprocess_fork_exec() (GH-22970) * bpo-42146: Unify cleanup in subprocess_fork_exec() Also ignore errors from _enable_gc(): * They are always suppressed by the current code due to a bug. * _enable_gc() is only used if `preexec_fn != None`, which is unsafe. * We don't have a good way to handle errors in case we successfully created a child process. Co-authored-by: Gregory P. Smith <greg@krypto.org> | 01 November 2020, 05:33:08 UTC |
3bf0d02 | kj | 31 October 2020, 20:25:44 UTC | bpo-42198: New section in stdtypes for type annotation types (GH-23063) | 31 October 2020, 20:25:44 UTC |
02cdfc9 | Lysandros Nikolaou | 31 October 2020, 18:31:41 UTC | bpo-42218: Correctly handle errors in left-recursive rules (GH-23065) Left-recursive rules need to check for errors explicitly, since even if the rule returns NULL, the parsing might continue and lead to long-distance failures. Co-authored-by: Pablo Galindo <Pablogsal@gmail.com> | 31 October 2020, 18:31:41 UTC |
d21cb2d | kj | 31 October 2020, 15:08:17 UTC | bpo-42198: Improve consistency of Union docs (GH-23029) No backport is required since union is only in 3.10. This addresses "3. Consistency nitpicks for Union's docs" in the bpo. Please skip news. Thank you. | 31 October 2020, 15:08:17 UTC |
7d21027 | Erlend Egeberg Aasland | 31 October 2020, 06:07:44 UTC | bpo-40956: Convert _sqlite3 module level functions to Argument Clinic (GH-22484) | 31 October 2020, 06:07:44 UTC |
bcbf758 | kj | 31 October 2020, 06:02:38 UTC | bpo-42198: Document __new__ for types.GenericAlias (GH-23039) | 31 October 2020, 06:02:38 UTC |
43ca084 | Inada Naoki | 31 October 2020, 02:15:38 UTC | Revert "bpo-42160: tempfile: Reduce overhead of pid check. (GH-22997)" `_RandomNameSequence` is not true singleton so using `os.register_at_fork` doesn't make sense unlike `random._inst`. This reverts commit 8e409cebad42032bb7d0f2cadd8b1e36081d98af. | 31 October 2020, 02:15:38 UTC |
b62bdf7 | Victor Stinner | 31 October 2020, 00:32:11 UTC | bpo-42208: Add _locale._get_locale_encoding() (GH-23052) * Add a new _locale._get_locale_encoding() function to get the current locale encoding. * Modify locale.getpreferredencoding() to use it. * Remove the _bootlocale module. | 31 October 2020, 00:32:11 UTC |
710e826 | Victor Stinner | 31 October 2020, 00:02:09 UTC | bpo-42208: Add _Py_GetLocaleEncoding() (GH-23050) _io.TextIOWrapper no longer calls getpreferredencoding(False) of _bootlocale to get the locale encoding, but calls _Py_GetLocaleEncoding() instead. Add config_get_fs_encoding() sub-function. Reorganize also config_get_locale_encoding() code. | 31 October 2020, 00:02:09 UTC |
06f8c33 | Pablo Galindo | 30 October 2020, 23:48:42 UTC | bpo-42214: Fix check for NOTEQUAL token in the PEG parser for the barry_as_flufl rule (GH-23048) | 30 October 2020, 23:48:42 UTC |
6e03c0a | Victor Stinner | 30 October 2020, 21:52:30 UTC | GitHub Action: Add gdb to posix dependencies (GH-23043) Sort also dependencies and remove duplicates (liblzma-dev). | 30 October 2020, 21:52:30 UTC |
eba5bf2 | Victor Stinner | 30 October 2020, 21:51:02 UTC | bpo-42208: Call GC collect earlier in PyInterpreterState_Clear() (GH-23044) The last GC collection is now done before clearing builtins and sys dictionaries. Add also assertions to ensure that gc.collect() is no longer called after _PyGC_Fini(). Pass also the tstate to PyInterpreterState_Clear() to pass the correct tstate to _PyGC_CollectNoFail() and _PyGC_Fini(). | 30 October 2020, 21:51:02 UTC |
4fe7209 | Eric Snow | 30 October 2020, 21:46:52 UTC | bpo-36876: Small adjustments to the C-analyzer tool. (GH-23045) This is a little bit of clean-up, small fixes, and additional helpers prior to building an updated & accurate list of globals to eliminate. | 30 October 2020, 21:46:52 UTC |
b9ee4af | Victor Stinner | 30 October 2020, 20:09:48 UTC | bpo-42208: Fix test_gdb for gc_collect_main() name (GH-23041) The gcmodule.c collect() function was renamed to gc_collect_main(): update gdb/libpython.py (python-gdb.py). | 30 October 2020, 20:09:48 UTC |
dff1ad5 | Victor Stinner | 30 October 2020, 17:03:28 UTC | bpo-42208: Move _PyImport_Cleanup() to pylifecycle.c (GH-23040) Move _PyImport_Cleanup() to pylifecycle.c, rename it to finalize_modules(), split it (200 lines) into many smaller sub-functions and cleanup the code. | 30 October 2020, 17:03:28 UTC |
8b34148 | Victor Stinner | 30 October 2020, 16:00:00 UTC | bpo-42208: Pass tstate to _PyGC_CollectNoFail() (GH-23038) Move private _PyGC_CollectNoFail() to the internal C API. Remove the private _PyGC_CollectIfEnabled() which was just an alias to the public PyGC_Collect() function since Python 3.8. Rename functions: * collect() => gc_collect_main() * collect_with_callback() => gc_collect_with_callback() * collect_generations() => gc_collect_generations() | 30 October 2020, 16:00:00 UTC |
99608c7 | Matti Picus | 30 October 2020, 14:52:39 UTC | DOC: attribute PyPy for the idea behind LOAD_ATTR cache (GH-23036) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com> | 30 October 2020, 14:52:39 UTC |
3af4b58 | Batuhan Taskaya | 30 October 2020, 11:48:41 UTC | bpo-42206: Propagate and raise errors from PyAST_Validate in the parser (GH-23035) | 30 October 2020, 11:48:41 UTC |
d6238ba | Akashkumar D Khunt | 30 October 2020, 06:03:51 UTC | bpo-42172: Correct typo for test_socket.py (GH-23013) | 30 October 2020, 06:03:51 UTC |
8e409ce | Eric W | 30 October 2020, 04:56:28 UTC | bpo-42160: tempfile: Reduce overhead of pid check. (GH-22997) The _RandomSequence class in tempfile used to check the current pid every time its rng property was used. This commit replaces this code with `os.register_at_fork` to reduce the overhead. | 30 October 2020, 04:56:28 UTC |
9129af6 | kj | 30 October 2020, 04:01:17 UTC | bpo-42198: Link to GenericAlias in typing and expressions (GH-23030) Follow up to 7cdf30fff39ea97f403b5472096349998d190e30 and 4173320920706b49a004bdddd8d7108e8984e3fc. This addresses the point "1. Update links in typing, subscription and union to point to GenericAlias." in the bpo for this PR. | 30 October 2020, 04:01:17 UTC |
3317466 | Teugea Ioan-Teodor | 29 October 2020, 22:17:59 UTC | bpo-42061: Document __format__ for IP addresses (GH-23018) Automerge-Triggered-By: GH:ericvsmith | 29 October 2020, 22:17:59 UTC |
b76a840 | Rafael Fontenelle | 29 October 2020, 20:48:21 UTC | bpo-42180: fix plural in arguments and control (GH-23015) https://bugs.python.org/issue42180 | 29 October 2020, 20:48:21 UTC |
5776663 | Victor Stinner | 29 October 2020, 14:16:23 UTC | bpo-42029: Remove IRIX code (GH-23023) IRIX code was slowy removed in Python 2.4 (--with-sgi-dl), Python 3.3 (Irix threads), and Python 3.7. | 29 October 2020, 14:16:23 UTC |
3505261 | Yonatan Goldschmidt | 29 October 2020, 09:58:52 UTC | bpo-42143: Ensure PyFunction_NewWithQualName() can't fail after creating the func object (GH-22953) func_dealloc() does not handle partially-created objects. Best not to give it any. | 29 October 2020, 09:58:52 UTC |
df59273 | Zackery Spytz | 29 October 2020, 09:44:35 UTC | bpo-34204: Use pickle.DEFAULT_PROTOCOL in shelve (GH-19639) Use pickle.DEFAULT_PROTOCOL (currently 5) in shelve instead of a hardcoded 3. | 29 October 2020, 09:44:35 UTC |
4173320 | kj | 27 October 2020, 21:37:18 UTC | bpo-41805: Documentation for PEP 585 (GH-22615) | 27 October 2020, 21:37:18 UTC |
35b95aa | Victor Stinner | 27 October 2020, 21:24:33 UTC | bpo-42161: Micro-optimize _collections._count_elements() (GH-23008) Move the _PyLong_GetOne() call outside the fast-path loop. | 27 October 2020, 21:24:33 UTC |
c310185 | Victor Stinner | 27 October 2020, 20:34:33 UTC | bpo-42161: Remove private _PyLong_Zero and _PyLong_One (GH-23003) Use PyLong_FromLong(0) and PyLong_FromLong(1) of the public C API instead. For Python internals, _PyLong_GetZero() and _PyLong_GetOne() of pycore_long.h can be used. | 27 October 2020, 20:34:33 UTC |
0564aaf | Neil Schemenauer | 27 October 2020, 18:55:52 UTC | bpo-42099: Fix reference to ob_type in unionobject.c and ceval (GH-22829) * Use Py_TYPE() rather than o->ob_type. | 27 October 2020, 18:55:52 UTC |
15acc4e | Lysandros Nikolaou | 27 October 2020, 18:54:20 UTC | bpo-41659: Disallow curly brace directly after primary (GH-22996) | 27 October 2020, 18:54:20 UTC |
95f710c | Andre Delfino | 27 October 2020, 16:18:57 UTC | bpo-6761: Enhance __call__ documentation (GH-7987) | 27 October 2020, 16:18:57 UTC |
3783413 | Victor Stinner | 27 October 2020, 16:12:53 UTC | bpo-42161: Modules/ uses _PyLong_GetZero() and _PyLong_GetOne() (GH-22998) Use _PyLong_GetZero() and _PyLong_GetOne() in Modules/ directory. _cursesmodule.c and zoneinfo.c are now built with Py_BUILD_CORE_MODULE macro defined. | 27 October 2020, 16:12:53 UTC |
a6879d9 | Victor Stinner | 27 October 2020, 03:41:30 UTC | bpo-41474, Makefile: Add dependency on cpython/frameobject.h (GH-22999) Co-Authored-By: Skip Montanaro <skip.montanaro@gmail.com> | 27 October 2020, 03:41:30 UTC |
84f7382 | Victor Stinner | 27 October 2020, 03:36:22 UTC | bpo-42157: Rename unicodedata.ucnhash_CAPI (GH-22994) Removed the unicodedata.ucnhash_CAPI attribute which was an internal PyCapsule object. The related private _PyUnicode_Name_CAPI structure was moved to the internal C API. Rename unicodedata.ucnhash_CAPI as unicodedata._ucnhash_CAPI. | 27 October 2020, 03:36:22 UTC |
c9bc290 | Victor Stinner | 27 October 2020, 01:24:34 UTC | bpo-42161: Use _PyLong_GetZero() and _PyLong_GetOne() (GH-22995) Use _PyLong_GetZero() and _PyLong_GetOne() in Objects/ and Python/ directories. | 27 October 2020, 01:24:34 UTC |
303aac8 | Georges Toth | 27 October 2020, 00:31:06 UTC | bpo-30681: Support invalid date format or value in email Date header (GH-22090) I am re-submitting an older PR which was abandoned but is still relevant, #10783 by @timb07. The issue being solved () is still relevant. The original PR #10783 was closed as the final request changes were not applied and since abandoned. In this new PR I have re-used the original patch plus applied both comments from the review, by @maxking and @pganssle. For reference, here is the original PR description: In email.utils.parsedate_to_datetime(), a failure to parse the date, or invalid date components (such as hour outside 0..23) raises an exception. Document this behaviour, and add tests to test_email/test_utils.py to confirm this behaviour. In email.headerregistry.DateHeader.parse(), check when parsedate_to_datetime() raises an exception and add a new defect InvalidDateDefect; preserve the invalid value as the string value of the header, but set the datetime attribute to None. Add tests to test_email/test_headerregistry.py to confirm this behaviour; also added test to test_email/test_inversion.py to confirm emails with such defective date headers round trip successfully. This pull request incorporates feedback gratefully received from @bitdancer, @brettcannon, @Mariatta and @warsaw, and replaces the earlier PR #2254. Automerge-Triggered-By: GH:warsaw | 27 October 2020, 00:31:06 UTC |
8e3b9f9 | Victor Stinner | 26 October 2020, 23:00:03 UTC | bpo-42161: Add _PyLong_GetZero() and _PyLong_GetOne() (GH-22993) Add _PyLong_GetZero() and _PyLong_GetOne() functions and a new internal pycore_long.h header file. Python cannot be built without small integer singletons anymore. | 26 October 2020, 23:00:03 UTC |
bca7014 | Lysandros Nikolaou | 26 October 2020, 22:42:04 UTC | bpo-42123: Run the parser two times and only enable invalid rules on the second run (GH-22111) * Implement running the parser a second time for the errors messages The first parser run is only responsible for detecting whether there is a `SyntaxError` or not. If there isn't the AST gets returned. Otherwise, the parser is run a second time with all the `invalid_*` rules enabled so that all the customized error messages get produced. | 26 October 2020, 22:42:04 UTC |
c8c4200 | Victor Stinner | 26 October 2020, 22:19:22 UTC | bpo-42157: Convert unicodedata.UCD to heap type (GH-22991) Convert the unicodedata extension module to the multiphase initialization API (PEP 489) and convert the unicodedata.UCD static type to a heap type. Co-Authored-By: Mohamed Koubaa <koubaa.m@gmail.com> | 26 October 2020, 22:19:22 UTC |
920cb64 | Victor Stinner | 26 October 2020, 18:19:36 UTC | bpo-42157: unicodedata avoids references to UCD_Type (GH-22990) * UCD_Check() uses PyModule_Check() * Simplify the internal _PyUnicode_Name_CAPI structure: * Remove size and state members * Remove state and self parameters of getcode() and getname() functions * Remove global_module_state | 26 October 2020, 18:19:36 UTC |
8374d2e | Lisa Roach | 26 October 2020, 16:28:17 UTC | bpo-39101: Fixes BaseException hang in IsolatedAsyncioTestCase. (GH-22654) | 26 October 2020, 16:28:17 UTC |
47e1afd | Victor Stinner | 26 October 2020, 15:43:47 UTC | bpo-1635741: _PyUnicode_Name_CAPI moves to internal C API (GH-22713) The private _PyUnicode_Name_CAPI structure of the PyCapsule API unicodedata.ucnhash_CAPI moves to the internal C API. Moreover, the structure gets a new state member which must be passed to the getcode() and getname() functions. * Move Include/ucnhash.h to Include/internal/pycore_ucnhash.h * unicodedata module is now built with Py_BUILD_CORE_MODULE. * unicodedata: move hashAPI variable into unicodedata_module_state. | 26 October 2020, 15:43:47 UTC |
b510e10 | Serhiy Storchaka | 26 October 2020, 10:47:57 UTC | bpo-42152: Use PyDict_Contains and PyDict_SetDefault if appropriate. (GH-22986) If PyDict_GetItemWithError is only used to check whether the key is in dict, it is better to use PyDict_Contains instead. And if it is used in combination with PyDict_SetItem, PyDict_SetDefault can replace the combination. | 26 October 2020, 10:47:57 UTC |
fb5db7e | Serhiy Storchaka | 26 October 2020, 06:43:39 UTC | bpo-42006: Stop using PyDict_GetItem, PyDict_GetItemString and _PyDict_GetItemId. (GH-22648) These functions are considered not safe because they suppress all internal errors and can return wrong result. PyDict_GetItemString and _PyDict_GetItemId can also silence current exception in rare cases. Remove no longer used _PyDict_GetItemId. Add _PyDict_ContainsId and rename _PyDict_Contains into _PyDict_Contains_KnownHash. | 26 October 2020, 06:43:39 UTC |
96a9eed | Marco Sulla | 26 October 2020, 05:30:51 UTC | Added some makefile generated files to .gitignore (GH-22435) | 26 October 2020, 05:30:51 UTC |
0f25c23 | Antoine | 26 October 2020, 05:26:34 UTC | Add a link to buffer protocol in bytearray() doc (GH-22675) | 26 October 2020, 05:26:34 UTC |
c0590c0 | Alexey Izbyshev | 26 October 2020, 00:09:32 UTC | bpo-42146: Fix memory leak in subprocess.Popen() in case of uid/gid overflow (GH-22966) Fix memory leak in subprocess.Popen() in case of uid/gid overflow Also add a test that would catch this leak with `--huntrleaks`. Alas, the test for `extra_groups` also exposes an inconsistency in our error reporting: we use a custom ValueError for `extra_groups`, but propagate OverflowError for `user` and `group`. | 26 October 2020, 00:09:32 UTC |
e68c678 | Pablo Galindo | 25 October 2020, 23:03:41 UTC | bpo-42150: Avoid buffer overflow in the new parser (GH-22978) | 25 October 2020, 23:03:41 UTC |
d1a0a96 | Jason R. Coombs | 25 October 2020, 18:45:05 UTC | bpo-42043: Add support for zipfile.Path subclasses (#22716) * bpo-42043: Add support for zipfile.Path inheritance as introduced in zipp 3.2.0. * Add blurb. | 25 October 2020, 18:45:05 UTC |
14cdc21 | Hai Shi | 25 October 2020, 18:38:33 UTC | bpo-41919: Avoid resource leak in test_io (GH-22973) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com> | 25 October 2020, 18:38:33 UTC |
df8d4c8 | Jason R. Coombs | 25 October 2020, 18:21:46 UTC | bpo-41490: ``path`` and ``contents`` to aggressively close handles (#22915) * bpo-41490: ``path`` method to aggressively close handles * Add blurb * In ZipReader.contents, eagerly evaluate the contents to release references to the zipfile. * Instead use _ensure_sequence to ensure any iterable from a reader is eagerly converted to a list if it's not already a sequence. | 25 October 2020, 18:21:46 UTC |
c32f297 | Zackery Spytz | 25 October 2020, 18:02:30 UTC | bpo-42144: Add a missing "goto error;" in the _ssl module (GH-22959) | 25 October 2020, 18:02:30 UTC |
3cde378 | Raymond Hettinger | 25 October 2020, 14:59:01 UTC | bpo-39108: Document threading issues for random.gauss() (GH-22928) | 25 October 2020, 14:59:01 UTC |
e6a7ea4 | Raymond Hettinger | 25 October 2020, 14:12:50 UTC | Split-out a fourth section in the descriptor HowTo guide (GH-22965) | 25 October 2020, 14:12:50 UTC |
492d513 | Pablo Galindo | 25 October 2020, 06:08:17 UTC | Correctly compare the hint against the keys in _PyDict_GetItemHint (GH-22960) | 25 October 2020, 06:08:17 UTC |
4a9c637 | Raymond Hettinger | 25 October 2020, 03:34:39 UTC | Second round of updates to the descriptor howto guide (GH-22946) | 25 October 2020, 03:34:39 UTC |
5df6c99 | Mark Roseman | 25 October 2020, 03:14:02 UTC | bpo-33987: Add master ttk Frame to IDLE search dialogs (GH-22942) | 25 October 2020, 03:14:02 UTC |
48be6b1 | Raymond Hettinger | 25 October 2020, 01:17:17 UTC | bpo-42127: Document effect of cached_property on key-sharing dictionaries (GH-22930) | 25 October 2020, 01:17:17 UTC |
c579ad1 | Mark Roseman | 24 October 2020, 23:45:00 UTC | bpo-33987: Use master ttk Frame for IDLE config dialog (GH-22943) | 24 October 2020, 23:45:00 UTC |
e53e544 | Mark Roseman | 24 October 2020, 23:32:34 UTC | bpo-33987: Use ttk Label on IDLE statusbar (GH-22941) | 24 October 2020, 23:32:34 UTC |
be3c3a0 | Gregory P. Smith | 24 October 2020, 19:07:35 UTC | bpo-35823: Allow setsid() after vfork() on Linux. (GH-22945) It should just be a syscall updating a couple of fields in the kernel side process info. Confirming, in glibc is appears to be a shim for the setsid syscall (based on not finding any code implementing anything special for it) and in uclibc (*much* easier to read) it is clearly just a setsid syscall shim. A breadcrumb _suggesting_ that it is not allowed on Darwin/macOS comes from a commit in emacs: https://lists.gnu.org/archive/html/bug-gnu-emacs/2017-04/msg00297.html but I don't have a way to verify if that is true or not. As we are not supporting vfork on macOS today I just left a note in a comment. | 24 October 2020, 19:07:35 UTC |
8cd1dba | Serhiy Storchaka | 24 October 2020, 18:14:23 UTC | bpo-41052: Fix pickling heap types implemented in C with protocols 0 and 1 (GH-22870) | 24 October 2020, 18:14:23 UTC |
473db47 | Alexey Izbyshev | 24 October 2020, 17:47:38 UTC | bpo-35823: subprocess: Fix handling of pthread_sigmask() errors (GH-22944) Using POSIX_CALL() is incorrect since pthread_sigmask() returns the error number instead of setting errno. Also handle failure of the first call to pthread_sigmask() in the parent process, and explain why we don't handle failure of the second call in a comment. | 24 October 2020, 17:47:38 UTC |
e01e442 | Andre Delfino | 24 October 2020, 14:29:17 UTC | [doc] Fix link to abc.ABCMeta.register in Glossary (GH-22932) | 24 October 2020, 14:29:17 UTC |
2455cb5 | Mariatta | 24 October 2020, 14:12:55 UTC | Automatically add skip news and skip issue label to dependabot PRs (GH-22927) Closes https://github.com/python/bedevere/issues/287 | 24 October 2020, 14:12:55 UTC |
805ef73 | Terry Jan Reedy | 24 October 2020, 03:59:33 UTC | bpo-42139: Update What's New 3.9 for master (#22936) | 24 October 2020, 03:59:33 UTC |
8e5b0fd | Raymond Hettinger | 24 October 2020, 01:37:27 UTC | bpo-19072: Update descriptor howto for decorator chaining (GH-22934) | 24 October 2020, 01:37:27 UTC |
04523c5 | Brett Cannon | 24 October 2020, 01:10:54 UTC | Mention in "What's New" that the import system is starting to be cleaned up (GH-22931) Automerge-Triggered-By: GH:brettcannon | 24 October 2020, 01:10:54 UTC |
976da90 | Alexey Izbyshev | 24 October 2020, 00:47:01 UTC | bpo-35823: subprocess: Use vfork() instead of fork() on Linux when safe (GH-11671) * bpo-35823: subprocess: Use vfork() instead of fork() on Linux when safe When used to run a new executable image, fork() is not a good choice for process creation, especially if the parent has a large working set: fork() needs to copy page tables, which is slow, and may fail on systems where overcommit is disabled, despite that the child is not going to touch most of its address space. Currently, subprocess is capable of using posix_spawn() instead, which normally provides much better performance. However, posix_spawn() does not support many of child setup operations exposed by subprocess.Popen(). Most notably, it's not possible to express `close_fds=True`, which happens to be the default, via posix_spawn(). As a result, most users can't benefit from faster process creation, at least not without changing their code. However, Linux provides vfork() system call, which creates a new process without copying the address space of the parent, and which is actually used by C libraries to efficiently implement posix_spawn(). Due to sharing of the address space and even the stack with the parent, extreme care is required to use vfork(). At least the following restrictions must hold: * No signal handlers must execute in the child process. Otherwise, they might clobber memory shared with the parent, potentially confusing it. * Any library function called after vfork() in the child must be async-signal-safe (as for fork()), but it must also not interact with any library state in a way that might break due to address space sharing and/or lack of any preparations performed by libraries on normal fork(). POSIX.1 permits to call only execve() and _exit(), and later revisions remove vfork() specification entirely. In practice, however, almost all operations needed by subprocess.Popen() can be safely implemented on Linux. * Due to sharing of the stack with the parent, the child must be careful not to clobber local variables that are alive across vfork() call. Compilers are normally aware of this and take extra care with vfork() (and setjmp(), which has a similar problem). * In case the parent is privileged, special attention must be paid to vfork() use, because sharing an address space across different privilege domains is insecure[1]. This patch adds support for using vfork() instead of fork() on Linux when it's possible to do safely given the above. In particular: * vfork() is not used if credential switch is requested. The reverse case (simple subprocess.Popen() but another application thread switches credentials concurrently) is not possible for pure-Python apps because subprocess.Popen() and functions like os.setuid() are mutually excluded via GIL. We might also consider to add a way to opt-out of vfork() (and posix_spawn() on platforms where it might be implemented via vfork()) in a future PR. * vfork() is not used if `preexec_fn != None`. With this change, subprocess will still use posix_spawn() if possible, but will fallback to vfork() on Linux in most cases, and, failing that, to fork(). [1] https://ewontfix.com/7 Co-authored-by: Gregory P. Smith [Google LLC] <gps@google.com> | 24 October 2020, 00:47:01 UTC |
16ee68d | Jacob Neil Taylor | 23 October 2020, 22:48:55 UTC | bpo-38976: Add support for HTTP Only flag in MozillaCookieJar (#17471) Add support for HTTP Only flag in MozillaCookieJar Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> | 23 October 2020, 22:48:55 UTC |
a3c4cef | dependabot[bot] | 23 October 2020, 21:32:12 UTC | build(deps): bump actions/upload-artifact from v1 to v2.2.0 (GH-22920) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from v1 to v2.2.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's releases</a>.</em></p> <blockquote> <h2>v2.2.0</h2> <ul> <li>Support for artifact retention</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/upload-artifact/commit/27bce4eee761b5bc643f46a8dfb41b430c8d05f6"><code>27bce4e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/actions/upload-artifact/issues/112">#112</a> from thboop/main</li> <li><a href="https://github.com/actions/upload-artifact/commit/f8b42f7ab442a66b3d51a5ca02855b194a36ae2d"><code>f8b42f7</code></a> update licensed files</li> <li><a href="https://github.com/actions/upload-artifact/commit/2106e8cf10e032ca9d5724c4c676543febe74f0b"><code>2106e8c</code></a> update contributing.md</li> <li><a href="https://github.com/actions/upload-artifact/commit/db66798ebcfbaa7f3f8ff66bce013213265c30d1"><code>db66798</code></a> Ignore Generated Files in Git PR's</li> <li><a href="https://github.com/actions/upload-artifact/commit/d359fd0772ed6802a84728dd6b09ec99f41a67b7"><code>d359fd0</code></a> Manual Verification of licenses</li> <li><a href="https://github.com/actions/upload-artifact/commit/350822c32f871c559dbe1667c24424e06c4f03e3"><code>350822c</code></a> Add Licensed Workflow and config</li> <li><a href="https://github.com/actions/upload-artifact/commit/abecf4abf4b70bc636949d61150be883b87416c2"><code>abecf4a</code></a> Updated README.md (<a href="https://github-redirect.dependabot.com/actions/upload-artifact/issues/118">#118</a>)</li> <li><a href="https://github.com/actions/upload-artifact/commit/604e071d21906545dedcfaf210deae74f8c5276a"><code>604e071</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/actions/upload-artifact/issues/126">#126</a> from yacaovsnc/main</li> <li><a href="https://github.com/actions/upload-artifact/commit/4560c23b396d494f0cb7066e1d6e258e8feb8051"><code>4560c23</code></a> Check for invalid retention-days input</li> <li><a href="https://github.com/actions/upload-artifact/commit/59018c2f85dd0e101b75544aa87f13bb0c94e0b7"><code>59018c2</code></a> Add an option to specify retention period</li> <li>Additional commits viewable in <a href="https://github.com/actions/upload-artifact/compare/v1...27bce4eee761b5bc643f46a8dfb41b430c8d05f6">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Automerge-Triggered-By: GH:Mariatta | 23 October 2020, 21:32:12 UTC |
cd0edbc | dependabot[bot] | 23 October 2020, 21:29:41 UTC | build(deps): bump actions/cache from v1 to v2.1.2 (GH-22919) Bumps [actions/cache](https://github.com/actions/cache) from v1 to v2.1.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/releases">actions/cache's releases</a>.</em></p> <blockquote> <h2>v2.1.2</h2> <ul> <li>Adds input to limit the chunk upload size, useful for self-hosted runners with slower upload speeds</li> <li>No-op when executing on GHES</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/cache/commit/d1255ad9362389eac595a9ae406b8e8cb3331f16"><code>d1255ad</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/actions/cache/issues/424">#424</a> from actions/dhadka/upload-chunk-size</li> <li><a href="https://github.com/actions/cache/commit/68cfb2ccb73b1982be3fa55e3d7c842697d7f1ed"><code>68cfb2c</code></a> Add units to description</li> <li><a href="https://github.com/actions/cache/commit/cce3c03a74623545a53c433d301f3f7725c72454"><code>cce3c03</code></a> Add new input to action.yml</li> <li><a href="https://github.com/actions/cache/commit/4bceb75b5b7743784c63c94b81c50a485cbdcda0"><code>4bceb75</code></a> Use parseInt instead of Number to handle empty strings</li> <li><a href="https://github.com/actions/cache/commit/a6f1f4b32eec85780fedc5b354a583e9b2999100"><code>a6f1f4b</code></a> Adds input for upload chunk size</li> <li><a href="https://github.com/actions/cache/commit/d606e039ae32f64a8593bf4a37b0bf205c695237"><code>d606e03</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/actions/cache/issues/421">#421</a> from actions/dhadka/ghes</li> <li><a href="https://github.com/actions/cache/commit/d3e4f218f30bd71a2c29e2b2a1e4f811f4327162"><code>d3e4f21</code></a> Use warning instead of info</li> <li><a href="https://github.com/actions/cache/commit/55a58944386e69f7c5bad52ef43a61c578b6c1c6"><code>55a5894</code></a> Update dist</li> <li><a href="https://github.com/actions/cache/commit/3f6dfcbcc44a8e2fd9e539c1dd15af6559e74ced"><code>3f6dfcb</code></a> Merge branch 'main' of <a href="http://github.com/actions/cache">http://github.com/actions/cache</a> into dhadka/ghes</li> <li><a href="https://github.com/actions/cache/commit/0f71d4ac9a7f4c36aba5ac3cfc4567d2d4eae813"><code>0f71d4a</code></a> Add tests for isGhes</li> <li>Additional commits viewable in <a href="https://github.com/actions/cache/compare/v1...d1255ad9362389eac595a9ae406b8e8cb3331f16">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Automerge-Triggered-By: GH:Mariatta | 23 October 2020, 21:29:41 UTC |
697109b | John Losito | 23 October 2020, 21:06:13 UTC | Allow dependabot to check GitHub actions monthly (GH-22787) Let Dependabot update GitHub Actions dependency once a month. Here's reference to the dependabot configs. https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot | 23 October 2020, 21:06:13 UTC |
8d3d731 | Raymond Hettinger | 23 October 2020, 19:55:39 UTC | Create a primer section for the descriptor howto guide (GH-22906) | 23 October 2020, 19:55:39 UTC |
7c4065d | Mariatta | 23 October 2020, 15:23:58 UTC | Add GitHub sponsor info for Python (GH-22887) Sponsor Python on GitHub | 23 October 2020, 15:23:58 UTC |
7801514 | Mark Shannon | 23 October 2020, 12:05:48 UTC | Add Mark Shannon to CODEOWNERS. (#22914) | 23 October 2020, 12:05:48 UTC |
da6f098 | Christopher Marchfelder | 23 October 2020, 10:08:24 UTC | bpo-40592: shutil.which will not return None anymore if ; is the last char in PATHEXT (GH-20088) shutil.which will not return None anymore for empty str in PATHEXT Empty PATHEXT will now be defaulted to _WIN_DEFAULT_PATHEXT | 23 October 2020, 10:08:24 UTC |
345cd37 | Eric Snow | 23 October 2020, 00:42:51 UTC | bpo-36876: Fix the C analyzer tool. (GH-22841) The original tool wasn't working right and it was simpler to create a new one, partially re-using some of the old code. At this point the tool runs properly on the master. (Try: ./python Tools/c-analyzer/c-analyzer.py analyze.) It take ~40 seconds on my machine to analyze the full CPython code base. Note that we'll need to iron out some OS-specific stuff (e.g. preprocessor). We're okay though since this tool isn't used yet in our workflow. We will also need to verify the analysis results in detail before activating the check in CI, though I'm pretty sure it's close. https://bugs.python.org/issue36876 | 23 October 2020, 00:42:51 UTC |
ec388cf | Zackery Spytz | 22 October 2020, 23:33:28 UTC | bpo-38486: Fix dead qmail links in the mailbox docs (GH-22239) | 22 October 2020, 23:33:28 UTC |
facb522 | Cheryl Sabella | 22 October 2020, 19:14:35 UTC | bpo-33987: IDLE: Use ttk Frame on doc window and statusbar (GH-11433) | 22 October 2020, 19:14:35 UTC |
e76b8fc | Lysandros Nikolaou | 22 October 2020, 18:26:14 UTC | Add CODEOWNERS for the Grammar file (GH-22898) | 22 October 2020, 18:26:14 UTC |
c6d7e82 | Petr Viktorin | 22 October 2020, 16:11:53 UTC | bpo-38980: Only apply -fno-semantic-interposition if available (GH-22892) | 22 October 2020, 16:11:53 UTC |