Commit Graph

12973 Commits

Author SHA1 Message Date
Kumar Aditya a751bf565c GH-90699: fix refleak in _testcapimodule.c (gh-99236) 2022-11-08 15:50:07 +09:00
Kamil Turek b9dedfe61d gh-92119: ctypes: Print exception class name instead of its representation (#98302) 2022-11-07 20:53:59 -08:00
Kumar Aditya be0d5008b3 GH-90699: Remove remaining _Py_IDENTIFIER stdlib usage (GH-99067) 2022-11-07 12:06:23 -08:00
Noam Cohen 80c08d1cd6 gh-95389: expose popular ETHERTYPE_* constants in the socket module (#95390)
Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
Co-authored-by: CAM Gerlach <CAM.Gerlach@Gerlach.CAM>
2022-11-07 15:27:37 +01:00
Harshil cfec5b18bf remove new line in pickle exception message (GH-31782) 2022-11-07 07:43:39 +00:00
Dong-hee Na f626b7b504 gh-96055: Update faulthandler to emit proper unexpect signal number (gh-99162) 2022-11-07 10:19:25 +09:00
jonasdlindner ede6cb2615 Correct some typos in comments (GH-98194)
Automerge-Triggered-By: GH:AlexWaygood
2022-11-06 08:54:44 -08:00
Shantanu d3b82b4463 gh-83004: Clean up refleak in _pickle initialisation (#98841) 2022-11-06 06:05:13 -08:00
Shantanu 31f2f6568d gh-83004: Clean up refleak in _zoneinfo initialisation (#98842) 2022-11-06 06:04:36 -08:00
Nikita Sobolev 317acb8038 gh-94808: add tests covering PyFunction_GetKwDefaults and PyFunction_SetKwDefaults (GH-98809) 2022-11-05 17:08:47 +00:00
Nikita Sobolev c5c40773cb gh-94808: add tests covering PySequence_{Set,Del}Slice (GH-99123) 2022-11-05 17:08:00 +00:00
Nikita Sobolev b5f711185b gh-94808: add tests covering PyEval_GetFuncDesc function (GH-98300) 2022-11-05 13:07:59 +00:00
Gregory P. Smith bee1070289 gh-73691: Increase size limits in _xxtestfuzz (#99070)
Now that our int<->str conversions are size limited and we have the
_pylong module handling larger integers, we don't need to limit
everything just to avoid wasting time in the quadratic time DoS-like
case while fuzzing.

We can tweak these further after seeing how this goes.
2022-11-03 14:41:20 -07:00
Kumar Aditya 0ee59a9ca3 GH-90699: Remove _Py_IDENTIFIER usage from _ctypes (GH-99054) 2022-11-03 13:20:10 -07:00
Shantanu 1208037246 gh-83004: Clean up refleak in _io initialisation (#98840) 2022-11-03 07:29:11 -07:00
Serhiy Storchaka e9ac890c02 gh-98740: Fix validation of conditional expressions in RE (GH-98764)
In very rare circumstances the JUMP opcode could be confused with the
argument of the opcode in the "then" part which doesn't end with the
JUMP opcode. This led to incorrect detection of the final JUMP opcode
and incorrect calculation of the size of the subexpression.

NOTE: Changed return value of functions _validate_inner() and
_validate_charset() in Modules/_sre/sre.c.  Now they return 0 on success,
-1 on failure, and 1 if the last op is JUMP (which usually is a failure).
Previously they returned 1 on success and 0 on failure.
2022-11-03 09:23:46 +02:00
Kumar Aditya 908e81f6c8 GH-90699: Remove _Py_IDENTIFIER usage from _elementtree module (GH-99012) 2022-11-02 13:29:41 -07:00
Steve Dower 3d889dc0a0 gh-98790: When DLLs directory is missing on Windows, assume executable_dir contains PYD files instead (GH-98936) 2022-11-02 18:38:40 +00:00
Kumar Aditya 18fc232e07 GH-90699: Remove _Py_IDENTIFIER usage from _asyncio module (#99010) 2022-11-02 10:16:06 -07:00
Kumar Aditya 780757ac58 GH-90699: Remove _Py_IDENTIFIER usage from _json module (GH-98956) 2022-11-02 09:03:38 -07:00
Kumar Aditya 0a806f2684 GH-90699: Remove _Py_IDENTIFIER usage from _curses module (GH-98957) 2022-11-02 08:41:11 -07:00
Jelle Zijlstra 5cf317ade1 gh-98658: Add __class_getitem__ to array.array (#98661)
Closes #98658
2022-10-31 21:10:18 -07:00
Kumar Aditya ab57505070 GH-98897: fix memory leak if math.dist raises exception (GH-98898) 2022-10-31 21:18:32 -05:00
Eric Snow 4702552885 gh-98610: Adjust the Optional Restrictions on Subinterpreters (GH-98618)
Previously, the optional restrictions on subinterpreters were: disallow fork, subprocess, and threads.  By default, we were disallowing all three for "isolated" interpreters.  We always allowed all three for the main interpreter and those created through the legacy `Py_NewInterpreter()` API.

Those settings were a bit conservative, so here we've adjusted the optional restrictions to: fork, exec, threads, and daemon threads.  The default for "isolated" interpreters disables fork, exec, and daemon threads.  Regular threads are allowed by default.  We continue always allowing everything For the main interpreter and the legacy API.

In the code, we add `_PyInterpreterConfig.allow_exec` and  `_PyInterpreterConfig.allow_daemon_threads`.  We also add `Py_RTFLAGS_DAEMON_THREADS` and `Py_RTFLAGS_EXEC`.
2022-10-31 12:35:54 -07:00
Charlie Zhao 3ac8c0ab6e gh-98793: Fix typecheck in overlapped.c (#98835)
Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
2022-10-29 21:34:46 -07:00
David Buchanan 1561e708c7 Fix comment typos in _operator.c (#98853) 2022-10-29 19:25:09 +01:00
Shaun Walbridge 3e07f827b3 gh-98739: Update libexpat from 2.4.9 to 2.5.0 (#98742)
* Update libexpat from 2.4.9 to 2.5.0 to address CVE-2022-43680.

Co-authored-by: Shaun Walbridge <shaun.walbridge@gmail.com>
2022-10-27 13:45:12 -07:00
Wenzel Jakob e60892f9db gh-98586: Add vector call APIs to the Limited API (GH-98587)
Expose the facilities for making vector calls through Python's limited API.
2022-10-27 11:45:42 +02:00
Nikita Sobolev 7b24333fff gh-94808: cover PyFunction_GetDefaults and PyFunction_SetDefaults (#98449) 2022-10-26 17:47:29 -07:00
Benjamin Peterson 29b391b137 Fix readline.c compiler warning. (GH-98738)
```
Modules/readline.c:1260:37: warning: assigning to 'char *' from 'const char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
    completer_word_break_characters =
                                    ^
```
2022-10-26 15:53:25 -07:00
Eric Snow f32369480d gh-98608: Change _Py_NewInterpreter() to _Py_NewInterpreterFromConfig() (gh-98609)
(see https://github.com/python/cpython/issues/98608)

This change does the following:

1. change the argument to a new `_PyInterpreterConfig` struct
2. rename the function to `_Py_NewInterpreterFromConfig()`, inspired by `Py_InitializeFromConfig()` (takes a `_PyInterpreterConfig`  instead of `isolated_subinterpreter`)
3. split up the boolean `isolated_subinterpreter` into the corresponding multiple granular settings
   * allow_fork
   * allow_subprocess
   * allow_threads
4. add `PyInterpreterState.feature_flags` to store those settings
5. add a function for checking if a feature is enabled on an opaque `PyInterpreterState *`
6. drop `PyConfig._isolated_interpreter`

The existing default (see `Py_NewInterpeter()` and `Py_Initialize*()`) allows fork, subprocess, and threads and the optional "isolated" interpreter (see the `_xxsubinterpreters` module) disables all three.  None of that changes here; the defaults are preserved.

Note that the given `_PyInterpreterConfig` will not be used outside `_Py_NewInterpreterFromConfig()`, nor preserved.  This contrasts with how `PyConfig` is currently preserved, used, and even modified outside `Py_InitializeFromConfig()`.  I'd rather just avoid that mess from the start for `_PyInterpreterConfig`.  We can preserve it later if we find an actual need.

This change allows us to follow up with a number of improvements (e.g. stop disallowing subprocess and support disallowing exec instead).

(Note that this PR adds "private" symbols.  We'll probably make them public, and add docs, in a separate change.)
2022-10-26 11:16:30 -06:00
Nikita Sobolev 5d30544485 gh-94808: cover PyMapping_HasKeyString and PyMapping_HasKey (#98486) 2022-10-25 21:33:32 -07:00
Serhiy Storchaka 75a6fadf36 gh-91524: Speed up the regular expression substitution (#91525)
Functions re.sub() and re.subn() and corresponding re.Pattern methods
are now 2-3 times faster for replacement strings containing group references.

Closes #91524

Primarily authored by serhiy-storchaka Serhiy Storchaka
Minor-cleanups-by: Gregory P. Smith [Google] <greg@krypto.org>
2022-10-23 15:57:30 -07:00
Raymond Hettinger 5871e19942 GH-98363: Slicing isn't necessary. A size reduction will suffice. (GH-98538) 2022-10-22 07:21:06 -05:00
Raymond Hettinger 8d574234d4 GH-98363: Use better accessor macro (#98535) 2022-10-21 18:44:49 -05:00
Furkan Onder 4c1145bb37 bpo-2716: add license for audioop module (#19972) 2022-10-21 15:43:20 -07:00
Raymond Hettinger a5ff80c8bc GH-98363: Fix exception handling in batched() (GH-98523) 2022-10-21 12:31:52 -05:00
Carl Meyer 82ccbf69a8 gh-91051: allow setting a callback hook on PyType_Modified (GH-97875) 2022-10-21 14:41:51 +01:00
Noam Cohen a371a7e03e gh-95023: Added os.setns and os.unshare functions (#95046)
Added os.setns and os.unshare to easily switch between namespaces
on Linux.

Co-authored-by: Christian Heimes <christian@python.org>
Co-authored-by: CAM Gerlach <CAM.Gerlach@Gerlach.CAM>
Co-authored-by: Victor Stinner <vstinner@python.org>
2022-10-20 11:08:54 +02:00
Raymond Hettinger c1e02d4e4e GH-98363: Presize the list for batched() (GH-98419) 2022-10-20 02:28:17 -05:00
Victor Stinner db03c8066a gh-98393: os module reject bytes-like, only accept bytes (#98394)
The os module and the PyUnicode_FSDecoder() function no longer accept
bytes-like paths, like bytearray and memoryview types: only the exact
bytes type is accepted for bytes strings.
2022-10-18 17:52:31 +02:00
Raymond Hettinger 9608bef84a Fix typos in comments (GH-98375) 2022-10-17 21:01:28 -05:00
Raymond Hettinger de3ece769a GH-98363: Add itertools.batched() (GH-98364) 2022-10-17 18:53:45 -05:00
Benjamin Peterson 0f156c1c56 Remove unused arrange_output_buffer function from zlibmodule.c. (GH-98358) 2022-10-17 09:38:34 -07:00
Victor Stinner 1863302d61 gh-97669: Create Tools/build/ directory (#97963)
Create Tools/build/ directory. Move the following scripts from
Tools/scripts/ to Tools/build/:

* check_extension_modules.py
* deepfreeze.py
* freeze_modules.py
* generate_global_objects.py
* generate_levenshtein_examples.py
* generate_opcode_h.py
* generate_re_casefix.py
* generate_sre_constants.py
* generate_stdlib_module_names.py
* generate_token.py
* parse_html5_entities.py
* smelly.py
* stable_abi.py
* umarshal.py
* update_file.py
* verify_ensurepip_wheels.py

Update references to these scripts.
2022-10-17 12:01:00 +02:00
Ruben Vorderman eae7dad402 gh-95534: Improve gzip reading speed by 10% (#97664)
Change summary:
+ There is now a `gzip.READ_BUFFER_SIZE` constant that is 128KB. Other programs that read in 128KB chunks: pigz and cat. So this seems best practice among good programs. Also it is faster than 8 kb chunks.
+ a zlib._ZlibDecompressor was added. This is the _bz2.BZ2Decompressor ported to zlib. Since the zlib.Decompress object is better for in-memory decompression, the _ZlibDecompressor is hidden. It only makes sense in file decompression, and that is already implemented now in the gzip library. No need to bother the users with this.
+ The ZlibDecompressor uses the older Cpython arrange_output_buffer functions, as those are faster and more appropriate for the use case. 
+ GzipFile.read has been optimized. There is no longer a `unconsumed_tail` member to write back to padded file. This is instead handled by the ZlibDecompressor itself, which has an internal buffer. `_add_read_data` has been inlined, as it was just two calls.

EDIT: While I am adding improvements anyway, I figured I could add another one-liner optimization now to the python -m gzip application. That read chunks in io.DEFAULT_BUFFER_SIZE previously, but has been updated now to use READ_BUFFER_SIZE chunks.
2022-10-16 19:10:58 -07:00
Nikita Sobolev 7b48d02933 gh-94808: Cover PyFunction_GetCode, PyFunction_GetGlobals, PyFunction_GetModule (#98158) 2022-10-15 21:18:59 -07:00
Nikita Sobolev f01b56c7bd gh-94808: Cover PyEval_GetFuncName (#98246) 2022-10-15 08:20:39 -07:00
Victor Stinner d4b9166385 gh-98178: syslog() is not thread-safe on macOS (#98213)
On macOS, fix a crash in syslog.syslog() in multi-threaded
applications. On macOS, the libc syslog() function is not
thread-safe, so syslog.syslog() no longer releases the GIL to call
it.
2022-10-13 13:34:55 +02:00
Victor Stinner 342b1151ae signalmodule.c uses _PyErr_WriteUnraisableMsg() (#98217)
Signal wakeup fd errors are now logged with
_PyErr_WriteUnraisableMsg(), rather than PySys_WriteStderr() and
PyErr_WriteUnraisable(), to pass the error message to
sys.unraisablehook. By default, it's still written into stderr (unless
sys.unraisablehook is overriden).
2022-10-12 17:26:58 +02:00