From d591b5effb8ec8177a95cc725b340bf166eecaa3 Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Wed, 30 Jul 2025 15:48:18 -0700 Subject: [PATCH 01/87] GH-134291: Support older macOS deployment targets for JIT builds (GH-137211) --- .github/workflows/jit.yml | 4 ++++ ...2025-07-28-19-11-34.gh-issue-134291.IiB9Id.rst | 2 ++ Python/jit.c | 15 +-------------- 3 files changed, 7 insertions(+), 14 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-07-28-19-11-34.gh-issue-134291.IiB9Id.rst diff --git a/.github/workflows/jit.yml b/.github/workflows/jit.yml index 947badff816c09..51a069d857f2a3 100644 --- a/.github/workflows/jit.yml +++ b/.github/workflows/jit.yml @@ -117,6 +117,10 @@ jobs: find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete brew install llvm@${{ matrix.llvm }} export SDKROOT="$(xcrun --show-sdk-path)" + # Set MACOSX_DEPLOYMENT_TARGET and -Werror=unguarded-availability to + # make sure we don't break downstream distributors (like uv): + export CFLAGS_JIT='-Werror=unguarded-availability' + export MACOSX_DEPLOYMENT_TARGET=10.15 ./configure --enable-experimental-jit --enable-universalsdk --with-universal-archs=universal2 ${{ matrix.debug && '--with-pydebug' || '' }} make all --jobs 4 ./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-07-28-19-11-34.gh-issue-134291.IiB9Id.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-07-28-19-11-34.gh-issue-134291.IiB9Id.rst new file mode 100644 index 00000000000000..1605bcc3574148 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-07-28-19-11-34.gh-issue-134291.IiB9Id.rst @@ -0,0 +1,2 @@ +Remove some newer macOS API usage from the JIT compiler in order to restore +compatibility with older OSX 10.15 deployment targets. diff --git a/Python/jit.c b/Python/jit.c index 01bc0076497c6d..e4927d9ff04071 100644 --- a/Python/jit.c +++ b/Python/jit.c @@ -69,10 +69,6 @@ jit_alloc(size_t size) #else int flags = MAP_ANONYMOUS | MAP_PRIVATE; int prot = PROT_READ | PROT_WRITE; -# ifdef MAP_JIT - flags |= MAP_JIT; - prot |= PROT_EXEC; -# endif unsigned char *memory = mmap(NULL, size, prot, flags, -1, 0); int failed = memory == MAP_FAILED; #endif @@ -118,11 +114,8 @@ mark_executable(unsigned char *memory, size_t size) int old; int failed = !VirtualProtect(memory, size, PAGE_EXECUTE_READ, &old); #else - int failed = 0; __builtin___clear_cache((char *)memory, (char *)memory + size); -#ifndef MAP_JIT - failed = mprotect(memory, size, PROT_EXEC | PROT_READ); -#endif + int failed = mprotect(memory, size, PROT_EXEC | PROT_READ); #endif if (failed) { jit_error("unable to protect executable memory"); @@ -531,9 +524,6 @@ _PyJIT_Compile(_PyExecutorObject *executor, const _PyUOpInstruction trace[], siz if (memory == NULL) { return -1; } -#ifdef MAP_JIT - pthread_jit_write_protect_np(0); -#endif // Collect memory stats OPT_STAT_ADD(jit_total_memory_size, total_size); OPT_STAT_ADD(jit_code_size, code_size); @@ -571,9 +561,6 @@ _PyJIT_Compile(_PyExecutorObject *executor, const _PyUOpInstruction trace[], siz data += group->data_size; assert(code == memory + code_size); assert(data == memory + code_size + state.trampolines.size + code_padding + data_size); -#ifdef MAP_JIT - pthread_jit_write_protect_np(1); -#endif if (mark_executable(memory, total_size)) { jit_free(memory, total_size); return -1; From 5e2f0b976a762dd0efe1cca4c7b5aaa2ed809578 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 31 Jul 2025 05:21:56 +0200 Subject: [PATCH 02/87] gh-119180: Refer to `annotationlib.get_annotations()` in `typing.get_type_hints()` documentation (#137247) --- Doc/library/typing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 69df09c779592a..16013763dae210 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -3357,7 +3357,7 @@ Introspection helpers with ``T``, unless *include_extras* is set to ``True`` (see :class:`Annotated` for more information). - See also :func:`inspect.get_annotations`, a lower-level function that + See also :func:`annotationlib.get_annotations`, a lower-level function that returns annotations more directly. .. note:: From d5191ba99b8f7723cbdb9b7a07ef8a3eef6524c1 Mon Sep 17 00:00:00 2001 From: adam j hartz Date: Thu, 31 Jul 2025 04:19:52 -0400 Subject: [PATCH 03/87] gh-137025: Include ``python.worker.mjs`` in the Emscripten Web Example (#137236) --- Makefile.pre.in | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index b7b16ef4cb9d19..e2253d3e35b3e6 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1121,6 +1121,10 @@ web_example/index.html: $(WEBEX_DIR)/index.html @mkdir -p web_example @cp $< $@ +web_example/python.worker.mjs: $(WEBEX_DIR)/python.worker.mjs + @mkdir -p web_example + @cp $< $@ + web_example/server.py: $(WEBEX_DIR)/server.py @mkdir -p web_example @cp $< $@ @@ -1138,7 +1142,7 @@ web_example/python.mjs web_example/python.wasm: $(BUILDPYTHON) cp python.wasm web_example/python.wasm .PHONY: web_example -web_example: web_example/python.mjs web_example/index.html web_example/server.py web_example/$(ZIP_STDLIB) +web_example: web_example/python.mjs web_example/python.worker.mjs web_example/index.html web_example/server.py web_example/$(ZIP_STDLIB) WEBEX2=web_example_pyrepl_jspi WEBEX2_DIR=$(EMSCRIPTEN_DIR)/$(WEBEX2)/ From b723c8be071afcf3f865c55a5efb6da54f7695a0 Mon Sep 17 00:00:00 2001 From: Krzysztof Magusiak Date: Thu, 31 Jul 2025 11:55:00 +0200 Subject: [PATCH 04/87] gh-124503: Optimize ast.literal_eval() for small input (GH-137010) The implementation does not create anymore local functions which reduces the overhead for small inputs. Some other calls are inlined into a single `_convert_literal` function. We have a gain of 10-20% for small inputs and only 1-2% for bigger inputs. --- Lib/ast.py | 97 ++++++++++--------- ...-07-30-11-12-22.gh-issue-124503.d4hc7b.rst | 1 + 2 files changed, 53 insertions(+), 45 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-07-30-11-12-22.gh-issue-124503.d4hc7b.rst diff --git a/Lib/ast.py b/Lib/ast.py index 6d3daf64f5c6d7..983ac1710d0205 100644 --- a/Lib/ast.py +++ b/Lib/ast.py @@ -57,53 +57,60 @@ def literal_eval(node_or_string): Caution: A complex expression can overflow the C stack and cause a crash. """ if isinstance(node_or_string, str): - node_or_string = parse(node_or_string.lstrip(" \t"), mode='eval') - if isinstance(node_or_string, Expression): + node_or_string = parse(node_or_string.lstrip(" \t"), mode='eval').body + elif isinstance(node_or_string, Expression): node_or_string = node_or_string.body - def _raise_malformed_node(node): - msg = "malformed node or string" - if lno := getattr(node, 'lineno', None): - msg += f' on line {lno}' - raise ValueError(msg + f': {node!r}') - def _convert_num(node): - if not isinstance(node, Constant) or type(node.value) not in (int, float, complex): - _raise_malformed_node(node) + return _convert_literal(node_or_string) + + +def _convert_literal(node): + """ + Used by `literal_eval` to convert an AST node into a value. + """ + if isinstance(node, Constant): return node.value - def _convert_signed_num(node): - if isinstance(node, UnaryOp) and isinstance(node.op, (UAdd, USub)): - operand = _convert_num(node.operand) - if isinstance(node.op, UAdd): - return + operand - else: - return - operand - return _convert_num(node) - def _convert(node): - if isinstance(node, Constant): - return node.value - elif isinstance(node, Tuple): - return tuple(map(_convert, node.elts)) - elif isinstance(node, List): - return list(map(_convert, node.elts)) - elif isinstance(node, Set): - return set(map(_convert, node.elts)) - elif (isinstance(node, Call) and isinstance(node.func, Name) and - node.func.id == 'set' and node.args == node.keywords == []): - return set() - elif isinstance(node, Dict): - if len(node.keys) != len(node.values): - _raise_malformed_node(node) - return dict(zip(map(_convert, node.keys), - map(_convert, node.values))) - elif isinstance(node, BinOp) and isinstance(node.op, (Add, Sub)): - left = _convert_signed_num(node.left) - right = _convert_num(node.right) - if isinstance(left, (int, float)) and isinstance(right, complex): - if isinstance(node.op, Add): - return left + right - else: - return left - right - return _convert_signed_num(node) - return _convert(node_or_string) + if isinstance(node, Dict) and len(node.keys) == len(node.values): + return dict(zip( + map(_convert_literal, node.keys), + map(_convert_literal, node.values), + )) + if isinstance(node, Tuple): + return tuple(map(_convert_literal, node.elts)) + if isinstance(node, List): + return list(map(_convert_literal, node.elts)) + if isinstance(node, Set): + return set(map(_convert_literal, node.elts)) + if ( + isinstance(node, Call) and isinstance(node.func, Name) + and node.func.id == 'set' and node.args == node.keywords == [] + ): + return set() + if ( + isinstance(node, UnaryOp) + and isinstance(node.op, (UAdd, USub)) + and isinstance(node.operand, Constant) + and type(operand := node.operand.value) in (int, float, complex) + ): + if isinstance(node.op, UAdd): + return + operand + else: + return - operand + if ( + isinstance(node, BinOp) + and isinstance(node.op, (Add, Sub)) + and isinstance(node.left, (Constant, UnaryOp)) + and isinstance(node.right, Constant) + and type(left := _convert_literal(node.left)) in (int, float) + and type(right := _convert_literal(node.right)) is complex + ): + if isinstance(node.op, Add): + return left + right + else: + return left - right + msg = "malformed node or string" + if lno := getattr(node, 'lineno', None): + msg += f' on line {lno}' + raise ValueError(msg + f': {node!r}') def dump( diff --git a/Misc/NEWS.d/next/Library/2025-07-30-11-12-22.gh-issue-124503.d4hc7b.rst b/Misc/NEWS.d/next/Library/2025-07-30-11-12-22.gh-issue-124503.d4hc7b.rst new file mode 100644 index 00000000000000..c04eba932a0f2e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-07-30-11-12-22.gh-issue-124503.d4hc7b.rst @@ -0,0 +1 @@ +:func:`ast.literal_eval` is 10-20% faster for small inputs. From 0282eef880c8c8db782a2088b0257250e0f76d48 Mon Sep 17 00:00:00 2001 From: "Jeong, YunWon" <69878+youknowone@users.noreply.github.com> Date: Thu, 31 Jul 2025 20:22:11 +0900 Subject: [PATCH 05/87] gh-137194: Fix requires_debug_ranges when _testcpi doesn't exist (GH-137195) --- Lib/test/support/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 100438bf71d3a6..cea2f09aae5d51 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -544,7 +544,12 @@ def has_no_debug_ranges(): return not bool(config['code_debug_ranges']) def requires_debug_ranges(reason='requires co_positions / debug_ranges'): - return unittest.skipIf(has_no_debug_ranges(), reason) + try: + skip = has_no_debug_ranges() + except unittest.SkipTest as e: + skip = True + reason = e.args[0] if e.args else reason + return unittest.skipIf(skip, reason) MS_WINDOWS = (sys.platform == 'win32') From 438cbd857a875efc105b4215b1ae131e67af37e1 Mon Sep 17 00:00:00 2001 From: Dzmitry Plashchynski Date: Thu, 31 Jul 2025 15:06:33 +0300 Subject: [PATCH 06/87] gh-131146: Fix month names in a "standalone form" in calendar module (GH-131147) The calendar module displays month names in some locales using the genitive case. This is grammatically incorrect, as the nominative case should be used when the month is named by itself. To address this issue, this change introduces new lists `standalone_month_name` and `standalone_month_abbr` that contain month names in the nominative case -- or more generally, in the form that should be used to name the month itself, rather than form a date. The module now uses the `%OB` format specifier to get month names in this form where available. --- Doc/library/calendar.rst | 33 +++++++++++++++++ Lib/calendar.py | 21 ++++++++--- Lib/test/test_calendar.py | 36 ++++++++++++++++++- ...-03-17-21-21-06.gh-issue-131146.A5Obgv.rst | 6 ++++ 4 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-03-17-21-21-06.gh-issue-131146.A5Obgv.rst diff --git a/Doc/library/calendar.rst b/Doc/library/calendar.rst index b292d828841f2f..fd397547a04437 100644 --- a/Doc/library/calendar.rst +++ b/Doc/library/calendar.rst @@ -501,6 +501,14 @@ The :mod:`calendar` module exports the following data attributes: >>> list(calendar.month_name) ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] + .. caution:: + + In locales with alternative month names forms, the :data:`!month_name` sequence + may not be suitable when a month name stands by itself and not as part of a date. + For instance, in Greek and in many Slavic and Baltic languages, :data:`!month_name` + will produce the month in genitive case. Use :data:`standalone_month_name` for a form + suitable for standalone use. + .. data:: month_abbr @@ -512,6 +520,31 @@ The :mod:`calendar` module exports the following data attributes: >>> list(calendar.month_abbr) ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] + .. caution:: + + In locales with alternative month names forms, the :data:`!month_abbr` sequence + may not be suitable when a month name stands by itself and not as part of a date. + Use :data:`standalone_month_abbr` for a form suitable for standalone use. + + +.. data:: standalone_month_name + + A sequence that represents the months of the year in the current locale + in the standalone form if the locale provides one. Else it is equivalent + to :data:`month_name`. + + .. versionadded:: next + + +.. data:: standalone_month_abbr + + A sequence that represents the abbreviated months of the year in the current + locale in the standalone form if the locale provides one. Else it is + equivalent to :data:`month_abbr`. + + .. versionadded:: next + + .. data:: JANUARY FEBRUARY MARCH diff --git a/Lib/calendar.py b/Lib/calendar.py index 3be1b50500eb07..45bb265a65602c 100644 --- a/Lib/calendar.py +++ b/Lib/calendar.py @@ -14,8 +14,9 @@ __all__ = ["IllegalMonthError", "IllegalWeekdayError", "setfirstweekday", "firstweekday", "isleap", "leapdays", "weekday", "monthrange", "monthcalendar", "prmonth", "month", "prcal", "calendar", - "timegm", "month_name", "month_abbr", "day_name", "day_abbr", - "Calendar", "TextCalendar", "HTMLCalendar", "LocaleTextCalendar", + "timegm", "month_name", "month_abbr", "standalone_month_name", + "standalone_month_abbr", "day_name", "day_abbr", "Calendar", + "TextCalendar", "HTMLCalendar", "LocaleTextCalendar", "LocaleHTMLCalendar", "weekheader", "Day", "Month", "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", @@ -139,6 +140,16 @@ def __len__(self): month_name = _localized_month('%B') month_abbr = _localized_month('%b') +# On platforms that support the %OB and %Ob specifiers, they are used +# to get the standalone form of the month name. This is required for +# some languages such as Greek, Slavic, and Baltic languages. +try: + standalone_month_name = _localized_month('%OB') + standalone_month_abbr = _localized_month('%Ob') +except ValueError: + standalone_month_name = month_name + standalone_month_abbr = month_abbr + def isleap(year): """Return True for leap years, False for non-leap years.""" @@ -377,7 +388,7 @@ def formatmonthname(self, theyear, themonth, width, withyear=True): """ _validate_month(themonth) - s = month_name[themonth] + s = standalone_month_name[themonth] if withyear: s = "%s %r" % (s, theyear) return s.center(width) @@ -510,9 +521,9 @@ def formatmonthname(self, theyear, themonth, withyear=True): """ _validate_month(themonth) if withyear: - s = '%s %s' % (month_name[themonth], theyear) + s = '%s %s' % (standalone_month_name[themonth], theyear) else: - s = '%s' % month_name[themonth] + s = standalone_month_name[themonth] return '%s' % ( self.cssclass_month_head, s) diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py index bc39c86b8cf62d..589a21baf7bd61 100644 --- a/Lib/test/test_calendar.py +++ b/Lib/test/test_calendar.py @@ -8,6 +8,7 @@ import io import locale import os +import platform import sys import time @@ -546,7 +547,8 @@ def test_days(self): self.assertEqual(value[::-1], list(reversed(value))) def test_months(self): - for attr in "month_name", "month_abbr": + for attr in ("month_name", "month_abbr", "standalone_month_name", + "standalone_month_abbr"): value = getattr(calendar, attr) self.assertEqual(len(value), 13) self.assertEqual(len(value[:]), 13) @@ -556,6 +558,38 @@ def test_months(self): # verify it "acts like a sequence" in two forms of iteration self.assertEqual(value[::-1], list(reversed(value))) + @support.run_with_locale('LC_ALL', 'pl_PL') + @unittest.skipUnless(sys.platform == 'darwin' or platform.libc_ver()[0] == 'glibc', + "Guaranteed to work with glibc and macOS") + def test_standalone_month_name_and_abbr_pl_locale(self): + expected_standalone_month_names = [ + "", "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", + "lipiec", "sierpień", "wrzesień", "październik", "listopad", + "grudzień" + ] + expected_standalone_month_abbr = [ + "", "sty", "lut", "mar", "kwi", "maj", "cze", + "lip", "sie", "wrz", "paź", "lis", "gru" + ] + self.assertEqual( + list(calendar.standalone_month_name), + expected_standalone_month_names + ) + self.assertEqual( + list(calendar.standalone_month_abbr), + expected_standalone_month_abbr + ) + + def test_standalone_month_name_and_abbr_C_locale(self): + # Ensure that the standalone month names and abbreviations are + # equal to the regular month names and abbreviations for + # the "C" locale. + with calendar.different_locale("C"): + self.assertListEqual(list(calendar.month_name), + list(calendar.standalone_month_name)) + self.assertListEqual(list(calendar.month_abbr), + list(calendar.standalone_month_abbr)) + def test_locale_text_calendar(self): try: cal = calendar.LocaleTextCalendar(locale='') diff --git a/Misc/NEWS.d/next/Library/2025-03-17-21-21-06.gh-issue-131146.A5Obgv.rst b/Misc/NEWS.d/next/Library/2025-03-17-21-21-06.gh-issue-131146.A5Obgv.rst new file mode 100644 index 00000000000000..6d8bc0959aed52 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-03-17-21-21-06.gh-issue-131146.A5Obgv.rst @@ -0,0 +1,6 @@ +Fix :class:`calendar.TextCalendar`, :class:`calendar.HTMLCalendar`, +and the :mod:`calendar` CLI to display month names in the nominative +case by adding :data:`calendar.standalone_month_name` and +:data:`calendar.standalone_month_abbr`, which provide month names and +abbreviations in the grammatical form used when a month name stands by +itself, if the locale supports it. From d18f73ae1349ed005fa05ea2d852e1ab51dbc087 Mon Sep 17 00:00:00 2001 From: Xuanteng Huang <44627253+xuantengh@users.noreply.github.com> Date: Thu, 31 Jul 2025 21:22:22 +0800 Subject: [PATCH 07/87] gh-137200: support frame lineno setter with `BRANCH_LEFT` and `BRANCH_RIGHT` events (GH-137229) --- Lib/test/test_monitoring.py | 22 ++++++++++++++++++++++ Objects/frameobject.c | 2 ++ 2 files changed, 24 insertions(+) diff --git a/Lib/test/test_monitoring.py b/Lib/test/test_monitoring.py index a932ac80117d27..4122f786a9afb0 100644 --- a/Lib/test/test_monitoring.py +++ b/Lib/test/test_monitoring.py @@ -3,6 +3,7 @@ import collections import dis import functools +import inspect import math import operator import sys @@ -1709,6 +1710,27 @@ def func(v=1): ('branch right', 'func', 6, 8), ('branch right', 'func', 2, 10)]) + def test_callback_set_frame_lineno(self): + def func(s: str) -> int: + if s.startswith("t"): + return 1 + else: + return 0 + + def callback(code, from_, to): + # try set frame.f_lineno + frame = inspect.currentframe() + while frame and frame.f_code is not code: + frame = frame.f_back + + self.assertIsNotNone(frame) + frame.f_lineno = frame.f_lineno + 1 # run next instruction + + sys.monitoring.set_local_events(TEST_TOOL, func.__code__, E.BRANCH_LEFT) + sys.monitoring.register_callback(TEST_TOOL, E.BRANCH_LEFT, callback) + + self.assertEqual(func("true"), 1) + class TestBranchConsistency(MonitoringTestBase, unittest.TestCase): diff --git a/Objects/frameobject.c b/Objects/frameobject.c index 97de1e06efe1b2..72c0ab0666e927 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -1685,6 +1685,8 @@ frame_lineno_set_impl(PyFrameObject *self, PyObject *value) case PY_MONITORING_EVENT_PY_RESUME: case PY_MONITORING_EVENT_JUMP: case PY_MONITORING_EVENT_BRANCH: + case PY_MONITORING_EVENT_BRANCH_LEFT: + case PY_MONITORING_EVENT_BRANCH_RIGHT: case PY_MONITORING_EVENT_LINE: case PY_MONITORING_EVENT_PY_YIELD: /* Setting f_lineno is allowed for the above events */ From 2a87af062b79d914ce0120f1f1763213c1ebe8c4 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Thu, 31 Jul 2025 12:17:27 -0400 Subject: [PATCH 08/87] gh-137282: Fix `TypeError` in tab completion and `dir()` of `concurrent.futures` (GH-137214) Signed-off-by: Henry Schreiner --- Lib/concurrent/futures/__init__.py | 2 +- Lib/test/test___all__.py | 2 ++ .../next/Library/2025-07-31-10-31-56.gh-issue-137282.GOCwIC.rst | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2025-07-31-10-31-56.gh-issue-137282.GOCwIC.rst diff --git a/Lib/concurrent/futures/__init__.py b/Lib/concurrent/futures/__init__.py index e717222cf98b32..d6ac4b3e0b675f 100644 --- a/Lib/concurrent/futures/__init__.py +++ b/Lib/concurrent/futures/__init__.py @@ -44,7 +44,7 @@ def __dir__(): - return __all__ + ('__author__', '__doc__') + return __all__ + ['__author__', '__doc__'] def __getattr__(name): diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py index f35b1194308262..8ded9f99248372 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -72,6 +72,8 @@ def check_all(self, modname): all_set = set(all_list) self.assertCountEqual(all_set, all_list, "in module {}".format(modname)) self.assertEqual(keys, all_set, "in module {}".format(modname)) + # Verify __dir__ is non-empty and doesn't produce an error + self.assertTrue(dir(sys.modules[modname])) def walk_modules(self, basedir, modpath): for fn in sorted(os.listdir(basedir)): diff --git a/Misc/NEWS.d/next/Library/2025-07-31-10-31-56.gh-issue-137282.GOCwIC.rst b/Misc/NEWS.d/next/Library/2025-07-31-10-31-56.gh-issue-137282.GOCwIC.rst new file mode 100644 index 00000000000000..78f169ea029b17 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-07-31-10-31-56.gh-issue-137282.GOCwIC.rst @@ -0,0 +1 @@ +Fix tab completion and :func:`dir` on :mod:`concurrent.futures`. From 9ced5c4ace93d47c83fdce51a2bcd6505b33f516 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Fri, 1 Aug 2025 10:40:12 +0300 Subject: [PATCH 09/87] gh-128813: soft-deprecate _Py_c_*() functions (GH-137261) --- Doc/c-api/complex.rst | 28 +++++++++++++++++++ Doc/whatsnew/3.15.rst | 5 ++++ Include/cpython/complexobject.h | 3 +- ...-07-31-04-30-42.gh-issue-128813.opL-Pv.rst | 4 +++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/C_API/2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst diff --git a/Doc/c-api/complex.rst b/Doc/c-api/complex.rst index 16bd79475dc1e6..34488848f87cd1 100644 --- a/Doc/c-api/complex.rst +++ b/Doc/c-api/complex.rst @@ -43,24 +43,36 @@ pointers. This is consistent throughout the API. Return the sum of two complex numbers, using the C :c:type:`Py_complex` representation. + .. deprecated:: 3.15 + This function is :term:`soft deprecated`. + .. c:function:: Py_complex _Py_c_diff(Py_complex left, Py_complex right) Return the difference between two complex numbers, using the C :c:type:`Py_complex` representation. + .. deprecated:: 3.15 + This function is :term:`soft deprecated`. + .. c:function:: Py_complex _Py_c_neg(Py_complex num) Return the negation of the complex number *num*, using the C :c:type:`Py_complex` representation. + .. deprecated:: 3.15 + This function is :term:`soft deprecated`. + .. c:function:: Py_complex _Py_c_prod(Py_complex left, Py_complex right) Return the product of two complex numbers, using the C :c:type:`Py_complex` representation. + .. deprecated:: 3.15 + This function is :term:`soft deprecated`. + .. c:function:: Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor) @@ -70,6 +82,9 @@ pointers. This is consistent throughout the API. If *divisor* is null, this method returns zero and sets :c:data:`errno` to :c:macro:`!EDOM`. + .. deprecated:: 3.15 + This function is :term:`soft deprecated`. + .. c:function:: Py_complex _Py_c_pow(Py_complex num, Py_complex exp) @@ -81,6 +96,19 @@ pointers. This is consistent throughout the API. Set :c:data:`errno` to :c:macro:`!ERANGE` on overflows. + .. deprecated:: 3.15 + This function is :term:`soft deprecated`. + + +.. c:function:: double _Py_c_abs(Py_complex num) + + Return the absolute value of the complex number *num*. + + Set :c:data:`errno` to :c:macro:`!ERANGE` on overflows. + + .. deprecated:: 3.15 + This function is :term:`soft deprecated`. + Complex Numbers as Python Objects ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 6c00a0fcb83fee..1e54a61a449adc 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -548,6 +548,11 @@ Deprecated C APIs signed integer type of the same size is now deprecated. (Contributed by Serhiy Storchaka in :gh:`132629`.) +* Functions :c:func:`_Py_c_sum`, :c:func:`_Py_c_diff`, :c:func:`_Py_c_neg`, + :c:func:`_Py_c_prod`, :c:func:`_Py_c_quot`, :c:func:`_Py_c_pow` and + :c:func:`_Py_c_abs` are :term:`soft deprecated`. + (Contributed by Sergey B Kirpichev in :gh:`128813`.) + .. Add C API deprecations above alphabetically, not here at the end. Removed C APIs diff --git a/Include/cpython/complexobject.h b/Include/cpython/complexobject.h index fbdc6a91fe895c..58da80140dc4c9 100644 --- a/Include/cpython/complexobject.h +++ b/Include/cpython/complexobject.h @@ -7,7 +7,8 @@ typedef struct { double imag; } Py_complex; -// Operations on complex numbers. +/* Operations on complex numbers (soft deprecated + since Python 3.15). */ PyAPI_FUNC(Py_complex) _Py_c_sum(Py_complex, Py_complex); PyAPI_FUNC(Py_complex) _Py_c_diff(Py_complex, Py_complex); PyAPI_FUNC(Py_complex) _Py_c_neg(Py_complex); diff --git a/Misc/NEWS.d/next/C_API/2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst b/Misc/NEWS.d/next/C_API/2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst new file mode 100644 index 00000000000000..625989b33704a7 --- /dev/null +++ b/Misc/NEWS.d/next/C_API/2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst @@ -0,0 +1,4 @@ +Functions :c:func:`_Py_c_sum`, :c:func:`_Py_c_diff`, :c:func:`_Py_c_neg`, +:c:func:`_Py_c_prod`, :c:func:`_Py_c_quot`, :c:func:`_Py_c_pow` and +previously undocumented :c:func:`_Py_c_abs` are :term:`soft deprecated`. +Patch by Sergey B Kirpichev. From e99bc7fd44bbbf2464c37d5a57777ac0e1264c37 Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Fri, 1 Aug 2025 19:10:40 +0530 Subject: [PATCH 10/87] gh-133467: fix data race in `type_set_name` (#137302) Fix data race in `type_set_name` by assigning name under stop the world pause making it thread safe in free-threading. --- Lib/test/test_free_threading/test_type.py | 14 ++++++++++++++ Objects/typeobject.c | 10 ++++++++-- Tools/tsan/suppressions_free_threading.txt | 2 -- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_free_threading/test_type.py b/Lib/test/test_free_threading/test_type.py index ae996e7db3c7fd..2d995751005d71 100644 --- a/Lib/test/test_free_threading/test_type.py +++ b/Lib/test/test_free_threading/test_type.py @@ -127,6 +127,20 @@ class ClassB(Base): obj.__class__ = ClassB + def test_name_change(self): + class Foo: + pass + + def writer(): + for _ in range(1000): + Foo.__name__ = 'Bar' + + def reader(): + for _ in range(1000): + Foo.__name__ + + self.run_one(writer, reader) + def run_one(self, writer_func, reader_func): barrier = threading.Barrier(NTHREADS) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index d952a58d94af55..6e67b6e01cb8b8 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1535,9 +1535,13 @@ type_set_name(PyObject *tp, PyObject *value, void *Py_UNUSED(closure)) return -1; } + PyInterpreterState *interp = _PyInterpreterState_GET(); + _PyEval_StopTheWorld(interp); type->tp_name = tp_name; - Py_SETREF(((PyHeapTypeObject*)type)->ht_name, Py_NewRef(value)); - + PyObject *old_name = ((PyHeapTypeObject*)type)->ht_name; + ((PyHeapTypeObject*)type)->ht_name = Py_NewRef(value); + _PyEval_StartTheWorld(interp); + Py_DECREF(old_name); return 0; } @@ -10706,9 +10710,11 @@ slot_tp_descr_get(PyObject *self, PyObject *obj, PyObject *type) get = _PyType_LookupRef(tp, &_Py_ID(__get__)); if (get == NULL) { +#ifndef Py_GIL_DISABLED /* Avoid further slowdowns */ if (tp->tp_descr_get == slot_tp_descr_get) tp->tp_descr_get = NULL; +#endif return Py_NewRef(self); } if (obj == NULL) diff --git a/Tools/tsan/suppressions_free_threading.txt b/Tools/tsan/suppressions_free_threading.txt index 93421b623b92f9..52d7c25a5bb37a 100644 --- a/Tools/tsan/suppressions_free_threading.txt +++ b/Tools/tsan/suppressions_free_threading.txt @@ -44,7 +44,5 @@ race:PyObject_Realloc # gh-133467. Some of these could be hard to trigger. race_top:_Py_slot_tp_getattr_hook -race_top:slot_tp_descr_get -race_top:type_set_name race_top:set_tp_bases race_top:type_set_bases_unlocked From 718e0c89ba0610bba048245028ac133bbf2d44c2 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Fri, 1 Aug 2025 17:43:53 +0300 Subject: [PATCH 11/87] gh-137273: Fix debug assertion failure in locale.setlocale() on Windows (GH-137300) It happened when there were at least 16 characters after dot in the locale name. --- Lib/test/test_locale.py | 70 +++++++++++++------ ...-08-01-15-07-59.gh-issue-137273.4V8Xmv.rst | 1 + Modules/_localemodule.c | 47 +++++++++++++ 3 files changed, 97 insertions(+), 21 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-08-01-15-07-59.gh-issue-137273.4V8Xmv.rst diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py index 55b502e52ca454..698e137e3e8abd 100644 --- a/Lib/test/test_locale.py +++ b/Lib/test/test_locale.py @@ -5,6 +5,7 @@ from unittest import mock import unittest import locale +import os import sys import codecs @@ -486,6 +487,54 @@ def test_japanese(self): self.check('jp_jp', 'ja_JP.eucJP') +class TestRealLocales(unittest.TestCase): + def setUp(self): + oldlocale = locale.setlocale(locale.LC_CTYPE) + self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale) + + def test_getsetlocale_issue1813(self): + # Issue #1813: setting and getting the locale under a Turkish locale + try: + locale.setlocale(locale.LC_CTYPE, 'tr_TR') + except locale.Error: + # Unsupported locale on this system + self.skipTest('test needs Turkish locale') + loc = locale.getlocale(locale.LC_CTYPE) + if verbose: + print('testing with %a' % (loc,), end=' ', flush=True) + try: + locale.setlocale(locale.LC_CTYPE, loc) + except locale.Error as exc: + # bpo-37945: setlocale(LC_CTYPE) fails with getlocale(LC_CTYPE) + # and the tr_TR locale on Windows. getlocale() builds a locale + # which is not recognize by setlocale(). + self.skipTest(f"setlocale(LC_CTYPE, {loc!r}) failed: {exc!r}") + self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE)) + + @unittest.skipUnless(os.name == 'nt', 'requires Windows') + def test_setlocale_long_encoding(self): + with self.assertRaises(locale.Error): + locale.setlocale(locale.LC_CTYPE, 'English.%016d' % 1252) + locale.setlocale(locale.LC_CTYPE, 'English.%015d' % 1252) + loc = locale.setlocale(locale.LC_ALL) + self.assertIn('.1252', loc) + loc2 = loc.replace('.1252', '.%016d' % 1252, 1) + with self.assertRaises(locale.Error): + locale.setlocale(locale.LC_ALL, loc2) + loc2 = loc.replace('.1252', '.%015d' % 1252, 1) + locale.setlocale(locale.LC_ALL, loc2) + + # gh-137273: Debug assertion failure on Windows for long encoding. + with self.assertRaises(locale.Error): + locale.setlocale(locale.LC_CTYPE, 'en_US.' + 'x'*16) + locale.setlocale(locale.LC_CTYPE, 'en_US.UTF-8') + loc = locale.setlocale(locale.LC_ALL) + self.assertIn('.UTF-8', loc) + loc2 = loc.replace('.UTF-8', '.' + 'x'*16, 1) + with self.assertRaises(locale.Error): + locale.setlocale(locale.LC_ALL, loc2) + + class TestMiscellaneous(unittest.TestCase): def test_defaults_UTF8(self): # Issue #18378: on (at least) macOS setting LC_CTYPE to "UTF-8" is @@ -552,27 +601,6 @@ def test_setlocale_category(self): # crasher from bug #7419 self.assertRaises(locale.Error, locale.setlocale, 12345) - def test_getsetlocale_issue1813(self): - # Issue #1813: setting and getting the locale under a Turkish locale - oldlocale = locale.setlocale(locale.LC_CTYPE) - self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale) - try: - locale.setlocale(locale.LC_CTYPE, 'tr_TR') - except locale.Error: - # Unsupported locale on this system - self.skipTest('test needs Turkish locale') - loc = locale.getlocale(locale.LC_CTYPE) - if verbose: - print('testing with %a' % (loc,), end=' ', flush=True) - try: - locale.setlocale(locale.LC_CTYPE, loc) - except locale.Error as exc: - # bpo-37945: setlocale(LC_CTYPE) fails with getlocale(LC_CTYPE) - # and the tr_TR locale on Windows. getlocale() builds a locale - # which is not recognize by setlocale(). - self.skipTest(f"setlocale(LC_CTYPE, {loc!r}) failed: {exc!r}") - self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE)) - def test_invalid_locale_format_in_localetuple(self): with self.assertRaises(TypeError): locale.setlocale(locale.LC_ALL, b'fi_FI') diff --git a/Misc/NEWS.d/next/Library/2025-08-01-15-07-59.gh-issue-137273.4V8Xmv.rst b/Misc/NEWS.d/next/Library/2025-08-01-15-07-59.gh-issue-137273.4V8Xmv.rst new file mode 100644 index 00000000000000..f344877955fea0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-08-01-15-07-59.gh-issue-137273.4V8Xmv.rst @@ -0,0 +1 @@ +Fix debug assertion failure in :func:`locale.setlocale` on Windows. diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 41e6d48b1dbd9b..17b5220fd6f9e1 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -87,6 +87,41 @@ copy_grouping(const char* s) return result; } +#if defined(MS_WINDOWS) + +// 16 is the number of elements in the szCodePage field +// of the __crt_locale_strings structure. +#define MAX_CP_LEN 15 + +static int +check_locale_name(const char *locale, const char *end) +{ + size_t len = end ? (size_t)(end - locale) : strlen(locale); + const char *dot = memchr(locale, '.', len); + if (dot && locale + len - dot - 1 > MAX_CP_LEN) { + return -1; + } + return 0; +} + +static int +check_locale_name_all(const char *locale) +{ + const char *start = locale; + while (1) { + const char *end = strchr(start, ';'); + if (check_locale_name(start, end) < 0) { + return -1; + } + if (end == NULL) { + break; + } + start = end + 1; + } + return 0; +} +#endif + /*[clinic input] _locale.setlocale @@ -111,6 +146,18 @@ _locale_setlocale_impl(PyObject *module, int category, const char *locale) "invalid locale category"); return NULL; } + if (locale) { + if ((category == LC_ALL + ? check_locale_name_all(locale) + : check_locale_name(locale, NULL)) < 0) + { + /* Debug assertion failure on Windows. + * _Py_BEGIN_SUPPRESS_IPH/_Py_END_SUPPRESS_IPH do not help. */ + PyErr_SetString(get_locale_state(module)->Error, + "unsupported locale setting"); + return NULL; + } + } #endif if (locale) { From e7b55f564dbf5a788e8f6edc55ef441d6afad01c Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Fri, 1 Aug 2025 16:26:07 +0100 Subject: [PATCH 12/87] GH-136410: Faster side exits by using a cold exit stub (GH-136411) --- Include/cpython/pystate.h | 3 + Include/internal/pycore_interp_structs.h | 1 + Include/internal/pycore_optimizer.h | 15 +- Include/internal/pycore_uop_ids.h | 379 ++++++++++++----------- Include/internal/pycore_uop_metadata.h | 6 +- Python/bytecodes.c | 74 +++-- Python/ceval.c | 2 +- Python/ceval_macros.h | 5 +- Python/executor_cases.c.h | 84 +++-- Python/generated_cases.c.h | 4 + Python/jit.c | 2 +- Python/optimizer.c | 65 +++- Python/optimizer_cases.c.h | 4 + Python/pystate.c | 9 +- Tools/jit/template.c | 1 - 15 files changed, 387 insertions(+), 267 deletions(-) diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h index be582122118e44..e13b2b373c47b1 100644 --- a/Include/cpython/pystate.h +++ b/Include/cpython/pystate.h @@ -198,6 +198,9 @@ struct _ts { PyObject *current_executor; + /* Internal to the JIT */ + struct _PyExitData *jit_exit; + uint64_t dict_global_version; /* Used to store/retrieve `threading.local` keys/values for this thread */ diff --git a/Include/internal/pycore_interp_structs.h b/Include/internal/pycore_interp_structs.h index 542a75617b4d3c..758bf5447ee32a 100644 --- a/Include/internal/pycore_interp_structs.h +++ b/Include/internal/pycore_interp_structs.h @@ -943,6 +943,7 @@ struct _is { bool jit; struct _PyExecutorObject *executor_list_head; struct _PyExecutorObject *executor_deletion_list_head; + struct _PyExecutorObject *cold_executor; int executor_deletion_list_remaining_capacity; size_t trace_run_counter; _rare_events rare_events; diff --git a/Include/internal/pycore_optimizer.h b/Include/internal/pycore_optimizer.h index 8b7f12bf03d624..1571e19a35032e 100644 --- a/Include/internal/pycore_optimizer.h +++ b/Include/internal/pycore_optimizer.h @@ -67,8 +67,9 @@ typedef struct { #endif } _PyUOpInstruction; -typedef struct { +typedef struct _PyExitData { uint32_t target; + uint16_t index; _Py_BackoffCounter temperature; struct _PyExecutorObject *executor; } _PyExitData; @@ -354,6 +355,16 @@ PyAPI_FUNC(PyObject *) _Py_uop_symbols_test(PyObject *self, PyObject *ignored); PyAPI_FUNC(int) _PyOptimizer_Optimize(_PyInterpreterFrame *frame, _Py_CODEUNIT *start, _PyExecutorObject **exec_ptr, int chain_depth); +static inline _PyExecutorObject *_PyExecutor_FromExit(_PyExitData *exit) +{ + _PyExitData *exit0 = exit - exit->index; + return (_PyExecutorObject *)(((char *)exit0) - offsetof(_PyExecutorObject, exits)); +} + +extern _PyExecutorObject *_PyExecutor_GetColdExecutor(void); + +PyAPI_FUNC(void) _PyExecutor_ClearExit(_PyExitData *exit); + static inline int is_terminator(const _PyUOpInstruction *uop) { int opcode = uop->opcode; @@ -363,6 +374,8 @@ static inline int is_terminator(const _PyUOpInstruction *uop) ); } +extern void _PyExecutor_Free(_PyExecutorObject *self); + PyAPI_FUNC(int) _PyDumpExecutors(FILE *out); #ifdef _Py_TIER2 extern void _Py_ClearExecutorDeletionList(PyInterpreterState *interp); diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h index a9432401525ebb..684969a23c4d22 100644 --- a/Include/internal/pycore_uop_ids.h +++ b/Include/internal/pycore_uop_ids.h @@ -81,99 +81,100 @@ extern "C" { #define _CHECK_STACK_SPACE 357 #define _CHECK_STACK_SPACE_OPERAND 358 #define _CHECK_VALIDITY 359 -#define _COMPARE_OP 360 -#define _COMPARE_OP_FLOAT 361 -#define _COMPARE_OP_INT 362 -#define _COMPARE_OP_STR 363 -#define _CONTAINS_OP 364 -#define _CONTAINS_OP_DICT 365 -#define _CONTAINS_OP_SET 366 +#define _COLD_EXIT 360 +#define _COMPARE_OP 361 +#define _COMPARE_OP_FLOAT 362 +#define _COMPARE_OP_INT 363 +#define _COMPARE_OP_STR 364 +#define _CONTAINS_OP 365 +#define _CONTAINS_OP_DICT 366 +#define _CONTAINS_OP_SET 367 #define _CONVERT_VALUE CONVERT_VALUE -#define _COPY 367 -#define _COPY_1 368 -#define _COPY_2 369 -#define _COPY_3 370 +#define _COPY 368 +#define _COPY_1 369 +#define _COPY_2 370 +#define _COPY_3 371 #define _COPY_FREE_VARS COPY_FREE_VARS -#define _CREATE_INIT_FRAME 371 +#define _CREATE_INIT_FRAME 372 #define _DELETE_ATTR DELETE_ATTR #define _DELETE_DEREF DELETE_DEREF #define _DELETE_FAST DELETE_FAST #define _DELETE_GLOBAL DELETE_GLOBAL #define _DELETE_NAME DELETE_NAME #define _DELETE_SUBSCR DELETE_SUBSCR -#define _DEOPT 372 +#define _DEOPT 373 #define _DICT_MERGE DICT_MERGE #define _DICT_UPDATE DICT_UPDATE -#define _DO_CALL 373 -#define _DO_CALL_FUNCTION_EX 374 -#define _DO_CALL_KW 375 +#define _DO_CALL 374 +#define _DO_CALL_FUNCTION_EX 375 +#define _DO_CALL_KW 376 #define _END_FOR END_FOR #define _END_SEND END_SEND -#define _ERROR_POP_N 376 +#define _ERROR_POP_N 377 #define _EXIT_INIT_CHECK EXIT_INIT_CHECK -#define _EXPAND_METHOD 377 -#define _EXPAND_METHOD_KW 378 -#define _FATAL_ERROR 379 +#define _EXPAND_METHOD 378 +#define _EXPAND_METHOD_KW 379 +#define _FATAL_ERROR 380 #define _FORMAT_SIMPLE FORMAT_SIMPLE #define _FORMAT_WITH_SPEC FORMAT_WITH_SPEC -#define _FOR_ITER 380 -#define _FOR_ITER_GEN_FRAME 381 -#define _FOR_ITER_TIER_TWO 382 +#define _FOR_ITER 381 +#define _FOR_ITER_GEN_FRAME 382 +#define _FOR_ITER_TIER_TWO 383 #define _GET_AITER GET_AITER #define _GET_ANEXT GET_ANEXT #define _GET_AWAITABLE GET_AWAITABLE #define _GET_ITER GET_ITER #define _GET_LEN GET_LEN #define _GET_YIELD_FROM_ITER GET_YIELD_FROM_ITER -#define _GUARD_BINARY_OP_EXTEND 383 -#define _GUARD_CALLABLE_ISINSTANCE 384 -#define _GUARD_CALLABLE_LEN 385 -#define _GUARD_CALLABLE_LIST_APPEND 386 -#define _GUARD_CALLABLE_STR_1 387 -#define _GUARD_CALLABLE_TUPLE_1 388 -#define _GUARD_CALLABLE_TYPE_1 389 -#define _GUARD_DORV_NO_DICT 390 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 391 -#define _GUARD_GLOBALS_VERSION 392 -#define _GUARD_IS_FALSE_POP 393 -#define _GUARD_IS_NONE_POP 394 -#define _GUARD_IS_NOT_NONE_POP 395 -#define _GUARD_IS_TRUE_POP 396 -#define _GUARD_KEYS_VERSION 397 -#define _GUARD_NOS_DICT 398 -#define _GUARD_NOS_FLOAT 399 -#define _GUARD_NOS_INT 400 -#define _GUARD_NOS_LIST 401 -#define _GUARD_NOS_NOT_NULL 402 -#define _GUARD_NOS_NULL 403 -#define _GUARD_NOS_OVERFLOWED 404 -#define _GUARD_NOS_TUPLE 405 -#define _GUARD_NOS_UNICODE 406 -#define _GUARD_NOT_EXHAUSTED_LIST 407 -#define _GUARD_NOT_EXHAUSTED_RANGE 408 -#define _GUARD_NOT_EXHAUSTED_TUPLE 409 -#define _GUARD_THIRD_NULL 410 -#define _GUARD_TOS_ANY_SET 411 -#define _GUARD_TOS_DICT 412 -#define _GUARD_TOS_FLOAT 413 -#define _GUARD_TOS_INT 414 -#define _GUARD_TOS_LIST 415 -#define _GUARD_TOS_OVERFLOWED 416 -#define _GUARD_TOS_SLICE 417 -#define _GUARD_TOS_TUPLE 418 -#define _GUARD_TOS_UNICODE 419 -#define _GUARD_TYPE_VERSION 420 -#define _GUARD_TYPE_VERSION_AND_LOCK 421 +#define _GUARD_BINARY_OP_EXTEND 384 +#define _GUARD_CALLABLE_ISINSTANCE 385 +#define _GUARD_CALLABLE_LEN 386 +#define _GUARD_CALLABLE_LIST_APPEND 387 +#define _GUARD_CALLABLE_STR_1 388 +#define _GUARD_CALLABLE_TUPLE_1 389 +#define _GUARD_CALLABLE_TYPE_1 390 +#define _GUARD_DORV_NO_DICT 391 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 392 +#define _GUARD_GLOBALS_VERSION 393 +#define _GUARD_IS_FALSE_POP 394 +#define _GUARD_IS_NONE_POP 395 +#define _GUARD_IS_NOT_NONE_POP 396 +#define _GUARD_IS_TRUE_POP 397 +#define _GUARD_KEYS_VERSION 398 +#define _GUARD_NOS_DICT 399 +#define _GUARD_NOS_FLOAT 400 +#define _GUARD_NOS_INT 401 +#define _GUARD_NOS_LIST 402 +#define _GUARD_NOS_NOT_NULL 403 +#define _GUARD_NOS_NULL 404 +#define _GUARD_NOS_OVERFLOWED 405 +#define _GUARD_NOS_TUPLE 406 +#define _GUARD_NOS_UNICODE 407 +#define _GUARD_NOT_EXHAUSTED_LIST 408 +#define _GUARD_NOT_EXHAUSTED_RANGE 409 +#define _GUARD_NOT_EXHAUSTED_TUPLE 410 +#define _GUARD_THIRD_NULL 411 +#define _GUARD_TOS_ANY_SET 412 +#define _GUARD_TOS_DICT 413 +#define _GUARD_TOS_FLOAT 414 +#define _GUARD_TOS_INT 415 +#define _GUARD_TOS_LIST 416 +#define _GUARD_TOS_OVERFLOWED 417 +#define _GUARD_TOS_SLICE 418 +#define _GUARD_TOS_TUPLE 419 +#define _GUARD_TOS_UNICODE 420 +#define _GUARD_TYPE_VERSION 421 +#define _GUARD_TYPE_VERSION_AND_LOCK 422 #define _IMPORT_FROM IMPORT_FROM #define _IMPORT_NAME IMPORT_NAME -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 422 -#define _INIT_CALL_PY_EXACT_ARGS 423 -#define _INIT_CALL_PY_EXACT_ARGS_0 424 -#define _INIT_CALL_PY_EXACT_ARGS_1 425 -#define _INIT_CALL_PY_EXACT_ARGS_2 426 -#define _INIT_CALL_PY_EXACT_ARGS_3 427 -#define _INIT_CALL_PY_EXACT_ARGS_4 428 -#define _INSERT_NULL 429 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 423 +#define _INIT_CALL_PY_EXACT_ARGS 424 +#define _INIT_CALL_PY_EXACT_ARGS_0 425 +#define _INIT_CALL_PY_EXACT_ARGS_1 426 +#define _INIT_CALL_PY_EXACT_ARGS_2 427 +#define _INIT_CALL_PY_EXACT_ARGS_3 428 +#define _INIT_CALL_PY_EXACT_ARGS_4 429 +#define _INSERT_NULL 430 #define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER #define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION #define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD @@ -183,177 +184,177 @@ extern "C" { #define _INSTRUMENTED_POP_JUMP_IF_NONE INSTRUMENTED_POP_JUMP_IF_NONE #define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE INSTRUMENTED_POP_JUMP_IF_NOT_NONE #define _INSTRUMENTED_POP_JUMP_IF_TRUE INSTRUMENTED_POP_JUMP_IF_TRUE -#define _IS_NONE 430 +#define _IS_NONE 431 #define _IS_OP IS_OP -#define _ITER_CHECK_LIST 431 -#define _ITER_CHECK_RANGE 432 -#define _ITER_CHECK_TUPLE 433 -#define _ITER_JUMP_LIST 434 -#define _ITER_JUMP_RANGE 435 -#define _ITER_JUMP_TUPLE 436 -#define _ITER_NEXT_LIST 437 -#define _ITER_NEXT_LIST_TIER_TWO 438 -#define _ITER_NEXT_RANGE 439 -#define _ITER_NEXT_TUPLE 440 -#define _JUMP_TO_TOP 441 +#define _ITER_CHECK_LIST 432 +#define _ITER_CHECK_RANGE 433 +#define _ITER_CHECK_TUPLE 434 +#define _ITER_JUMP_LIST 435 +#define _ITER_JUMP_RANGE 436 +#define _ITER_JUMP_TUPLE 437 +#define _ITER_NEXT_LIST 438 +#define _ITER_NEXT_LIST_TIER_TWO 439 +#define _ITER_NEXT_RANGE 440 +#define _ITER_NEXT_TUPLE 441 +#define _JUMP_TO_TOP 442 #define _LIST_APPEND LIST_APPEND #define _LIST_EXTEND LIST_EXTEND -#define _LOAD_ATTR 442 -#define _LOAD_ATTR_CLASS 443 +#define _LOAD_ATTR 443 +#define _LOAD_ATTR_CLASS 444 #define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN -#define _LOAD_ATTR_INSTANCE_VALUE 444 -#define _LOAD_ATTR_METHOD_LAZY_DICT 445 -#define _LOAD_ATTR_METHOD_NO_DICT 446 -#define _LOAD_ATTR_METHOD_WITH_VALUES 447 -#define _LOAD_ATTR_MODULE 448 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 449 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 450 -#define _LOAD_ATTR_PROPERTY_FRAME 451 -#define _LOAD_ATTR_SLOT 452 -#define _LOAD_ATTR_WITH_HINT 453 +#define _LOAD_ATTR_INSTANCE_VALUE 445 +#define _LOAD_ATTR_METHOD_LAZY_DICT 446 +#define _LOAD_ATTR_METHOD_NO_DICT 447 +#define _LOAD_ATTR_METHOD_WITH_VALUES 448 +#define _LOAD_ATTR_MODULE 449 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 450 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 451 +#define _LOAD_ATTR_PROPERTY_FRAME 452 +#define _LOAD_ATTR_SLOT 453 +#define _LOAD_ATTR_WITH_HINT 454 #define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS -#define _LOAD_BYTECODE 454 +#define _LOAD_BYTECODE 455 #define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT #define _LOAD_CONST LOAD_CONST -#define _LOAD_CONST_INLINE 455 -#define _LOAD_CONST_INLINE_BORROW 456 -#define _LOAD_CONST_UNDER_INLINE 457 -#define _LOAD_CONST_UNDER_INLINE_BORROW 458 +#define _LOAD_CONST_INLINE 456 +#define _LOAD_CONST_INLINE_BORROW 457 +#define _LOAD_CONST_UNDER_INLINE 458 +#define _LOAD_CONST_UNDER_INLINE_BORROW 459 #define _LOAD_DEREF LOAD_DEREF -#define _LOAD_FAST 459 -#define _LOAD_FAST_0 460 -#define _LOAD_FAST_1 461 -#define _LOAD_FAST_2 462 -#define _LOAD_FAST_3 463 -#define _LOAD_FAST_4 464 -#define _LOAD_FAST_5 465 -#define _LOAD_FAST_6 466 -#define _LOAD_FAST_7 467 +#define _LOAD_FAST 460 +#define _LOAD_FAST_0 461 +#define _LOAD_FAST_1 462 +#define _LOAD_FAST_2 463 +#define _LOAD_FAST_3 464 +#define _LOAD_FAST_4 465 +#define _LOAD_FAST_5 466 +#define _LOAD_FAST_6 467 +#define _LOAD_FAST_7 468 #define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR -#define _LOAD_FAST_BORROW 468 -#define _LOAD_FAST_BORROW_0 469 -#define _LOAD_FAST_BORROW_1 470 -#define _LOAD_FAST_BORROW_2 471 -#define _LOAD_FAST_BORROW_3 472 -#define _LOAD_FAST_BORROW_4 473 -#define _LOAD_FAST_BORROW_5 474 -#define _LOAD_FAST_BORROW_6 475 -#define _LOAD_FAST_BORROW_7 476 +#define _LOAD_FAST_BORROW 469 +#define _LOAD_FAST_BORROW_0 470 +#define _LOAD_FAST_BORROW_1 471 +#define _LOAD_FAST_BORROW_2 472 +#define _LOAD_FAST_BORROW_3 473 +#define _LOAD_FAST_BORROW_4 474 +#define _LOAD_FAST_BORROW_5 475 +#define _LOAD_FAST_BORROW_6 476 +#define _LOAD_FAST_BORROW_7 477 #define _LOAD_FAST_BORROW_LOAD_FAST_BORROW LOAD_FAST_BORROW_LOAD_FAST_BORROW #define _LOAD_FAST_CHECK LOAD_FAST_CHECK #define _LOAD_FAST_LOAD_FAST LOAD_FAST_LOAD_FAST #define _LOAD_FROM_DICT_OR_DEREF LOAD_FROM_DICT_OR_DEREF #define _LOAD_FROM_DICT_OR_GLOBALS LOAD_FROM_DICT_OR_GLOBALS -#define _LOAD_GLOBAL 477 -#define _LOAD_GLOBAL_BUILTINS 478 -#define _LOAD_GLOBAL_MODULE 479 +#define _LOAD_GLOBAL 478 +#define _LOAD_GLOBAL_BUILTINS 479 +#define _LOAD_GLOBAL_MODULE 480 #define _LOAD_LOCALS LOAD_LOCALS #define _LOAD_NAME LOAD_NAME -#define _LOAD_SMALL_INT 480 -#define _LOAD_SMALL_INT_0 481 -#define _LOAD_SMALL_INT_1 482 -#define _LOAD_SMALL_INT_2 483 -#define _LOAD_SMALL_INT_3 484 -#define _LOAD_SPECIAL 485 +#define _LOAD_SMALL_INT 481 +#define _LOAD_SMALL_INT_0 482 +#define _LOAD_SMALL_INT_1 483 +#define _LOAD_SMALL_INT_2 484 +#define _LOAD_SMALL_INT_3 485 +#define _LOAD_SPECIAL 486 #define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR #define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD -#define _MAKE_CALLARGS_A_TUPLE 486 +#define _MAKE_CALLARGS_A_TUPLE 487 #define _MAKE_CELL MAKE_CELL #define _MAKE_FUNCTION MAKE_FUNCTION -#define _MAKE_WARM 487 +#define _MAKE_WARM 488 #define _MAP_ADD MAP_ADD #define _MATCH_CLASS MATCH_CLASS #define _MATCH_KEYS MATCH_KEYS #define _MATCH_MAPPING MATCH_MAPPING #define _MATCH_SEQUENCE MATCH_SEQUENCE -#define _MAYBE_EXPAND_METHOD 488 -#define _MAYBE_EXPAND_METHOD_KW 489 -#define _MONITOR_CALL 490 -#define _MONITOR_CALL_KW 491 -#define _MONITOR_JUMP_BACKWARD 492 -#define _MONITOR_RESUME 493 +#define _MAYBE_EXPAND_METHOD 489 +#define _MAYBE_EXPAND_METHOD_KW 490 +#define _MONITOR_CALL 491 +#define _MONITOR_CALL_KW 492 +#define _MONITOR_JUMP_BACKWARD 493 +#define _MONITOR_RESUME 494 #define _NOP NOP -#define _POP_CALL 494 -#define _POP_CALL_LOAD_CONST_INLINE_BORROW 495 -#define _POP_CALL_ONE 496 -#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 497 -#define _POP_CALL_TWO 498 -#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 499 +#define _POP_CALL 495 +#define _POP_CALL_LOAD_CONST_INLINE_BORROW 496 +#define _POP_CALL_ONE 497 +#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 498 +#define _POP_CALL_TWO 499 +#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 500 #define _POP_EXCEPT POP_EXCEPT #define _POP_ITER POP_ITER -#define _POP_JUMP_IF_FALSE 500 -#define _POP_JUMP_IF_TRUE 501 +#define _POP_JUMP_IF_FALSE 501 +#define _POP_JUMP_IF_TRUE 502 #define _POP_TOP POP_TOP -#define _POP_TOP_FLOAT 502 -#define _POP_TOP_INT 503 -#define _POP_TOP_LOAD_CONST_INLINE 504 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW 505 -#define _POP_TOP_NOP 506 -#define _POP_TOP_UNICODE 507 -#define _POP_TWO 508 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW 509 +#define _POP_TOP_FLOAT 503 +#define _POP_TOP_INT 504 +#define _POP_TOP_LOAD_CONST_INLINE 505 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW 506 +#define _POP_TOP_NOP 507 +#define _POP_TOP_UNICODE 508 +#define _POP_TWO 509 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW 510 #define _PUSH_EXC_INFO PUSH_EXC_INFO -#define _PUSH_FRAME 510 +#define _PUSH_FRAME 511 #define _PUSH_NULL PUSH_NULL -#define _PUSH_NULL_CONDITIONAL 511 -#define _PY_FRAME_GENERAL 512 -#define _PY_FRAME_KW 513 -#define _QUICKEN_RESUME 514 -#define _REPLACE_WITH_TRUE 515 +#define _PUSH_NULL_CONDITIONAL 512 +#define _PY_FRAME_GENERAL 513 +#define _PY_FRAME_KW 514 +#define _QUICKEN_RESUME 515 +#define _REPLACE_WITH_TRUE 516 #define _RESUME_CHECK RESUME_CHECK #define _RETURN_GENERATOR RETURN_GENERATOR #define _RETURN_VALUE RETURN_VALUE -#define _SAVE_RETURN_OFFSET 516 -#define _SEND 517 -#define _SEND_GEN_FRAME 518 +#define _SAVE_RETURN_OFFSET 517 +#define _SEND 518 +#define _SEND_GEN_FRAME 519 #define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS #define _SET_ADD SET_ADD #define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE #define _SET_UPDATE SET_UPDATE -#define _START_EXECUTOR 519 -#define _STORE_ATTR 520 -#define _STORE_ATTR_INSTANCE_VALUE 521 -#define _STORE_ATTR_SLOT 522 -#define _STORE_ATTR_WITH_HINT 523 +#define _START_EXECUTOR 520 +#define _STORE_ATTR 521 +#define _STORE_ATTR_INSTANCE_VALUE 522 +#define _STORE_ATTR_SLOT 523 +#define _STORE_ATTR_WITH_HINT 524 #define _STORE_DEREF STORE_DEREF -#define _STORE_FAST 524 -#define _STORE_FAST_0 525 -#define _STORE_FAST_1 526 -#define _STORE_FAST_2 527 -#define _STORE_FAST_3 528 -#define _STORE_FAST_4 529 -#define _STORE_FAST_5 530 -#define _STORE_FAST_6 531 -#define _STORE_FAST_7 532 +#define _STORE_FAST 525 +#define _STORE_FAST_0 526 +#define _STORE_FAST_1 527 +#define _STORE_FAST_2 528 +#define _STORE_FAST_3 529 +#define _STORE_FAST_4 530 +#define _STORE_FAST_5 531 +#define _STORE_FAST_6 532 +#define _STORE_FAST_7 533 #define _STORE_FAST_LOAD_FAST STORE_FAST_LOAD_FAST #define _STORE_FAST_STORE_FAST STORE_FAST_STORE_FAST #define _STORE_GLOBAL STORE_GLOBAL #define _STORE_NAME STORE_NAME -#define _STORE_SLICE 533 -#define _STORE_SUBSCR 534 -#define _STORE_SUBSCR_DICT 535 -#define _STORE_SUBSCR_LIST_INT 536 -#define _SWAP 537 -#define _SWAP_2 538 -#define _SWAP_3 539 -#define _TIER2_RESUME_CHECK 540 -#define _TO_BOOL 541 +#define _STORE_SLICE 534 +#define _STORE_SUBSCR 535 +#define _STORE_SUBSCR_DICT 536 +#define _STORE_SUBSCR_LIST_INT 537 +#define _SWAP 538 +#define _SWAP_2 539 +#define _SWAP_3 540 +#define _TIER2_RESUME_CHECK 541 +#define _TO_BOOL 542 #define _TO_BOOL_BOOL TO_BOOL_BOOL #define _TO_BOOL_INT TO_BOOL_INT -#define _TO_BOOL_LIST 542 +#define _TO_BOOL_LIST 543 #define _TO_BOOL_NONE TO_BOOL_NONE -#define _TO_BOOL_STR 543 +#define _TO_BOOL_STR 544 #define _UNARY_INVERT UNARY_INVERT #define _UNARY_NEGATIVE UNARY_NEGATIVE #define _UNARY_NOT UNARY_NOT #define _UNPACK_EX UNPACK_EX -#define _UNPACK_SEQUENCE 544 -#define _UNPACK_SEQUENCE_LIST 545 -#define _UNPACK_SEQUENCE_TUPLE 546 -#define _UNPACK_SEQUENCE_TWO_TUPLE 547 +#define _UNPACK_SEQUENCE 545 +#define _UNPACK_SEQUENCE_LIST 546 +#define _UNPACK_SEQUENCE_TUPLE 547 +#define _UNPACK_SEQUENCE_TWO_TUPLE 548 #define _WITH_EXCEPT_START WITH_EXCEPT_START #define _YIELD_VALUE YIELD_VALUE -#define MAX_UOP_ID 547 +#define MAX_UOP_ID 548 #ifdef __cplusplus } diff --git a/Include/internal/pycore_uop_metadata.h b/Include/internal/pycore_uop_metadata.h index ff7e800aa9bb1a..3348ce0f204f5a 100644 --- a/Include/internal/pycore_uop_metadata.h +++ b/Include/internal/pycore_uop_metadata.h @@ -330,12 +330,13 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = { [_LOAD_CONST_UNDER_INLINE] = 0, [_LOAD_CONST_UNDER_INLINE_BORROW] = 0, [_CHECK_FUNCTION] = HAS_DEOPT_FLAG, - [_START_EXECUTOR] = 0, + [_START_EXECUTOR] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG, [_MAKE_WARM] = 0, [_FATAL_ERROR] = 0, [_DEOPT] = 0, [_ERROR_POP_N] = HAS_ARG_FLAG, [_TIER2_RESUME_CHECK] = HAS_DEOPT_FLAG, + [_COLD_EXIT] = HAS_ESCAPES_FLAG, }; const ReplicationRange _PyUop_Replication[MAX_UOP_ID+1] = { @@ -419,6 +420,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = { [_CHECK_STACK_SPACE] = "_CHECK_STACK_SPACE", [_CHECK_STACK_SPACE_OPERAND] = "_CHECK_STACK_SPACE_OPERAND", [_CHECK_VALIDITY] = "_CHECK_VALIDITY", + [_COLD_EXIT] = "_COLD_EXIT", [_COMPARE_OP] = "_COMPARE_OP", [_COMPARE_OP_FLOAT] = "_COMPARE_OP_FLOAT", [_COMPARE_OP_INT] = "_COMPARE_OP_INT", @@ -1301,6 +1303,8 @@ int _PyUop_num_popped(int opcode, int oparg) return 0; case _TIER2_RESUME_CHECK: return 0; + case _COLD_EXIT: + return 0; default: return -1; } diff --git a/Python/bytecodes.c b/Python/bytecodes.c index d9abc4c53d1f50..cdc0a785c6d72e 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -2964,6 +2964,8 @@ dummy_func( else { this_instr[1].counter = initial_jump_backoff_counter(); assert(tstate->current_executor == NULL); + assert(executor != tstate->interp->cold_executor); + tstate->jit_exit = NULL; GOTO_TIER_TWO(executor); } } @@ -3028,6 +3030,8 @@ dummy_func( } DISPATCH_GOTO(); } + assert(executor != tstate->interp->cold_executor); + tstate->jit_exit = NULL; GOTO_TIER_TWO(executor); #else Py_FatalError("ENTER_EXECUTOR is not supported in this build"); @@ -5238,9 +5242,8 @@ dummy_func( tier2 op(_EXIT_TRACE, (exit_p/4 --)) { _PyExitData *exit = (_PyExitData *)exit_p; - PyCodeObject *code = _PyFrame_GetCode(frame); - _Py_CODEUNIT *target = _PyFrame_GetBytecode(frame) + exit->target; #if defined(Py_DEBUG) && !defined(_Py_JIT) + _Py_CODEUNIT *target = _PyFrame_GetBytecode(frame) + exit->target; OPT_HIST(trace_uop_execution_counter, trace_run_length_hist); if (frame->lltrace >= 2) { printf("SIDE EXIT: [UOp "); @@ -5251,32 +5254,7 @@ dummy_func( _PyOpcode_OpName[target->op.code]); } #endif - if (exit->executor && !exit->executor->vm_data.valid) { - exit->temperature = initial_temperature_backoff_counter(); - Py_CLEAR(exit->executor); - } - if (exit->executor == NULL) { - _Py_BackoffCounter temperature = exit->temperature; - if (!backoff_counter_triggers(temperature)) { - exit->temperature = advance_backoff_counter(temperature); - GOTO_TIER_ONE(target); - } - _PyExecutorObject *executor; - if (target->op.code == ENTER_EXECUTOR) { - executor = code->co_executors->executors[target->op.arg]; - Py_INCREF(executor); - } - else { - int chain_depth = current_executor->vm_data.chain_depth + 1; - int optimized = _PyOptimizer_Optimize(frame, target, &executor, chain_depth); - if (optimized <= 0) { - exit->temperature = restart_backoff_counter(temperature); - GOTO_TIER_ONE(optimized < 0 ? NULL : target); - } - exit->temperature = initial_temperature_backoff_counter(); - } - exit->executor = executor; - } + tstate->jit_exit = exit; GOTO_TIER_TWO(exit->executor); } @@ -5375,7 +5353,14 @@ dummy_func( #ifndef _Py_JIT current_executor = (_PyExecutorObject*)executor; #endif - assert(((_PyExecutorObject *)executor)->vm_data.valid); + assert(tstate->jit_exit == NULL || tstate->jit_exit->executor == current_executor); + tstate->current_executor = (PyObject *)executor; + if (!current_executor->vm_data.valid) { + assert(tstate->jit_exit->executor == current_executor); + assert(tstate->current_executor == executor); + _PyExecutor_ClearExit(tstate->jit_exit); + DEOPT_IF(true); + } } tier2 op(_MAKE_WARM, (--)) { @@ -5414,6 +5399,37 @@ dummy_func( assert(tstate->tracing || eval_breaker == FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version)); } + tier2 op(_COLD_EXIT, ( -- )) { + _PyExitData *exit = tstate->jit_exit; + assert(exit != NULL); + _Py_CODEUNIT *target = _PyFrame_GetBytecode(frame) + exit->target; + _Py_BackoffCounter temperature = exit->temperature; + if (!backoff_counter_triggers(temperature)) { + exit->temperature = advance_backoff_counter(temperature); + GOTO_TIER_ONE(target); + } + _PyExecutorObject *executor; + if (target->op.code == ENTER_EXECUTOR) { + PyCodeObject *code = _PyFrame_GetCode(frame); + executor = code->co_executors->executors[target->op.arg]; + Py_INCREF(executor); + } + else { + _PyExecutorObject *previous_executor = _PyExecutor_FromExit(exit); + assert(tstate->current_executor == (PyObject *)previous_executor); + int chain_depth = previous_executor->vm_data.chain_depth + 1; + int optimized = _PyOptimizer_Optimize(frame, target, &executor, chain_depth); + if (optimized <= 0) { + exit->temperature = restart_backoff_counter(temperature); + GOTO_TIER_ONE(optimized < 0 ? NULL : target); + } + exit->temperature = initial_temperature_backoff_counter(); + } + assert(tstate->jit_exit == exit); + exit->executor = executor; + GOTO_TIER_TWO(exit->executor); + } + label(pop_2_error) { stack_pointer -= 2; assert(WITHIN_STACK_BOUNDS()); diff --git a/Python/ceval.c b/Python/ceval.c index 9ccd42bdf0a55c..e1045808af93d8 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1158,7 +1158,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int uint64_t trace_uop_execution_counter = 0; #endif - assert(next_uop->opcode == _START_EXECUTOR); + assert(next_uop->opcode == _START_EXECUTOR || next_uop->opcode == _COLD_EXIT); tier2_dispatch: for (;;) { uopcode = next_uop->opcode; diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index 187ec8fdd26584..9ebcefbcb85850 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -359,7 +359,6 @@ _PyFrame_SetStackPointer(frame, stack_pointer) do { \ OPT_STAT_INC(traces_executed); \ _PyExecutorObject *_executor = (EXECUTOR); \ - tstate->current_executor = (PyObject *)_executor; \ jit_func jitted = _executor->jit_code; \ /* Keep the shim frame alive via the executor: */ \ Py_INCREF(_executor); \ @@ -378,9 +377,8 @@ do { \ do { \ OPT_STAT_INC(traces_executed); \ _PyExecutorObject *_executor = (EXECUTOR); \ - tstate->current_executor = (PyObject *)_executor; \ next_uop = _executor->trace; \ - assert(next_uop->opcode == _START_EXECUTOR); \ + assert(next_uop->opcode == _START_EXECUTOR || next_uop->opcode == _COLD_EXIT); \ goto enter_tier_two; \ } while (0) #endif @@ -390,7 +388,6 @@ do { \ { \ tstate->current_executor = NULL; \ next_instr = (TARGET); \ - assert(tstate->current_executor == NULL); \ OPT_HIST(trace_uop_execution_counter, trace_run_length_hist); \ _PyFrame_SetStackPointer(frame, stack_pointer); \ stack_pointer = _PyFrame_GetStackPointer(frame); \ diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index e152865e4ec9e8..c10797e3d8b1b2 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -7113,9 +7113,8 @@ case _EXIT_TRACE: { PyObject *exit_p = (PyObject *)CURRENT_OPERAND0(); _PyExitData *exit = (_PyExitData *)exit_p; - PyCodeObject *code = _PyFrame_GetCode(frame); - _Py_CODEUNIT *target = _PyFrame_GetBytecode(frame) + exit->target; #if defined(Py_DEBUG) && !defined(_Py_JIT) + _Py_CODEUNIT *target = _PyFrame_GetBytecode(frame) + exit->target; OPT_HIST(trace_uop_execution_counter, trace_run_length_hist); if (frame->lltrace >= 2) { _PyFrame_SetStackPointer(frame, stack_pointer); @@ -7128,36 +7127,7 @@ stack_pointer = _PyFrame_GetStackPointer(frame); } #endif - if (exit->executor && !exit->executor->vm_data.valid) { - exit->temperature = initial_temperature_backoff_counter(); - _PyFrame_SetStackPointer(frame, stack_pointer); - Py_CLEAR(exit->executor); - stack_pointer = _PyFrame_GetStackPointer(frame); - } - if (exit->executor == NULL) { - _Py_BackoffCounter temperature = exit->temperature; - if (!backoff_counter_triggers(temperature)) { - exit->temperature = advance_backoff_counter(temperature); - GOTO_TIER_ONE(target); - } - _PyExecutorObject *executor; - if (target->op.code == ENTER_EXECUTOR) { - executor = code->co_executors->executors[target->op.arg]; - Py_INCREF(executor); - } - else { - int chain_depth = current_executor->vm_data.chain_depth + 1; - _PyFrame_SetStackPointer(frame, stack_pointer); - int optimized = _PyOptimizer_Optimize(frame, target, &executor, chain_depth); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (optimized <= 0) { - exit->temperature = restart_backoff_counter(temperature); - GOTO_TIER_ONE(optimized < 0 ? NULL : target); - } - exit->temperature = initial_temperature_backoff_counter(); - } - exit->executor = executor; - } + tstate->jit_exit = exit; GOTO_TIER_TWO(exit->executor); break; } @@ -7438,7 +7408,19 @@ #ifndef _Py_JIT current_executor = (_PyExecutorObject*)executor; #endif - assert(((_PyExecutorObject *)executor)->vm_data.valid); + assert(tstate->jit_exit == NULL || tstate->jit_exit->executor == current_executor); + tstate->current_executor = (PyObject *)executor; + if (!current_executor->vm_data.valid) { + assert(tstate->jit_exit->executor == current_executor); + assert(tstate->current_executor == executor); + _PyFrame_SetStackPointer(frame, stack_pointer); + _PyExecutor_ClearExit(tstate->jit_exit); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (true) { + UOP_STAT_INC(uopcode, miss); + JUMP_TO_JUMP_TARGET(); + } + } break; } @@ -7487,4 +7469,40 @@ break; } + case _COLD_EXIT: { + _PyExitData *exit = tstate->jit_exit; + assert(exit != NULL); + _Py_CODEUNIT *target = _PyFrame_GetBytecode(frame) + exit->target; + _Py_BackoffCounter temperature = exit->temperature; + if (!backoff_counter_triggers(temperature)) { + exit->temperature = advance_backoff_counter(temperature); + GOTO_TIER_ONE(target); + } + _PyExecutorObject *executor; + if (target->op.code == ENTER_EXECUTOR) { + PyCodeObject *code = _PyFrame_GetCode(frame); + executor = code->co_executors->executors[target->op.arg]; + Py_INCREF(executor); + } + else { + _PyFrame_SetStackPointer(frame, stack_pointer); + _PyExecutorObject *previous_executor = _PyExecutor_FromExit(exit); + stack_pointer = _PyFrame_GetStackPointer(frame); + assert(tstate->current_executor == (PyObject *)previous_executor); + int chain_depth = previous_executor->vm_data.chain_depth + 1; + _PyFrame_SetStackPointer(frame, stack_pointer); + int optimized = _PyOptimizer_Optimize(frame, target, &executor, chain_depth); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (optimized <= 0) { + exit->temperature = restart_backoff_counter(temperature); + GOTO_TIER_ONE(optimized < 0 ? NULL : target); + } + exit->temperature = initial_temperature_backoff_counter(); + } + assert(tstate->jit_exit == exit); + exit->executor = executor; + GOTO_TIER_TWO(exit->executor); + break; + } + #undef TIER_TWO diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index aa1eb373b7ba4b..b83ab941ed2b70 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -5595,6 +5595,8 @@ } DISPATCH_GOTO(); } + assert(executor != tstate->interp->cold_executor); + tstate->jit_exit = NULL; GOTO_TIER_TWO(executor); #else Py_FatalError("ENTER_EXECUTOR is not supported in this build"); @@ -7793,6 +7795,8 @@ this_instr[1].counter = initial_jump_backoff_counter(); stack_pointer = _PyFrame_GetStackPointer(frame); assert(tstate->current_executor == NULL); + assert(executor != tstate->interp->cold_executor); + tstate->jit_exit = NULL; GOTO_TIER_TWO(executor); } } diff --git a/Python/jit.c b/Python/jit.c index e4927d9ff04071..bd6a5e17a4164f 100644 --- a/Python/jit.c +++ b/Python/jit.c @@ -546,7 +546,7 @@ _PyJIT_Compile(_PyExecutorObject *executor, const _PyUOpInstruction trace[], siz group->emit(code, data, executor, NULL, &state); code += group->code_size; data += group->data_size; - assert(trace[0].opcode == _START_EXECUTOR); + assert(trace[0].opcode == _START_EXECUTOR || trace[0].opcode == _COLD_EXIT); for (size_t i = 0; i < length; i++) { const _PyUOpInstruction *instruction = &trace[i]; group = &stencil_groups[instruction->opcode]; diff --git a/Python/optimizer.c b/Python/optimizer.c index 8d01d605ef4a2a..6a9b6824a531ac 100644 --- a/Python/optimizer.c +++ b/Python/optimizer.c @@ -205,8 +205,8 @@ static int executor_clear(PyObject *executor); static void unlink_executor(_PyExecutorObject *executor); -static void -free_executor(_PyExecutorObject *self) +void +_PyExecutor_Free(_PyExecutorObject *self) { #ifdef _Py_JIT _PyJIT_Free(self); @@ -242,7 +242,7 @@ _Py_ClearExecutorDeletionList(PyInterpreterState *interp) } else { *prev_to_next_ptr = exec->vm_data.links.next; - free_executor(exec); + _PyExecutor_Free(exec); } exec = *prev_to_next_ptr; } @@ -1129,7 +1129,7 @@ sanity_check(_PyExecutorObject *executor) } bool ended = false; uint32_t i = 0; - CHECK(executor->trace[0].opcode == _START_EXECUTOR); + CHECK(executor->trace[0].opcode == _START_EXECUTOR || executor->trace[0].opcode == _COLD_EXIT); for (; i < executor->code_size; i++) { const _PyUOpInstruction *inst = &executor->trace[i]; uint16_t opcode = inst->opcode; @@ -1182,9 +1182,11 @@ make_executor_from_uops(_PyUOpInstruction *buffer, int length, const _PyBloomFil } /* Initialize exits */ + _PyExecutorObject *cold = _PyExecutor_GetColdExecutor(); for (int i = 0; i < exit_count; i++) { - executor->exits[i].executor = NULL; + executor->exits[i].index = i; executor->exits[i].temperature = initial_temperature_backoff_counter(); + executor->exits[i].executor = cold; } int next_exit = exit_count-1; _PyUOpInstruction *dest = (_PyUOpInstruction *)&executor->trace[length]; @@ -1462,6 +1464,46 @@ _Py_ExecutorInit(_PyExecutorObject *executor, const _PyBloomFilter *dependency_s link_executor(executor); } +_PyExecutorObject * +_PyExecutor_GetColdExecutor(void) +{ + PyInterpreterState *interp = _PyInterpreterState_GET(); + if (interp->cold_executor != NULL) { + return interp->cold_executor; + } + _PyExecutorObject *cold = allocate_executor(0, 1); + if (cold == NULL) { + Py_FatalError("Cannot allocate core JIT code"); + } + ((_PyUOpInstruction *)cold->trace)->opcode = _COLD_EXIT; +#ifdef _Py_JIT + cold->jit_code = NULL; + cold->jit_side_entry = NULL; + cold->jit_size = 0; + // This is initialized to true so we can prevent the executor + // from being immediately detected as cold and invalidated. + cold->vm_data.warm = true; + if (_PyJIT_Compile(cold, cold->trace, 1)) { + Py_DECREF(cold); + Py_FatalError("Cannot allocate core JIT code"); + } +#endif + _Py_SetImmortal((PyObject *)cold); + interp->cold_executor = cold; + return cold; +} + +void +_PyExecutor_ClearExit(_PyExitData *exit) +{ + if (exit == NULL) { + return; + } + _PyExecutorObject *old = exit->executor; + exit->executor = _PyExecutor_GetColdExecutor(); + Py_DECREF(old); +} + /* Detaches the executor from the code object (if any) that * holds a reference to it */ void @@ -1492,14 +1534,18 @@ executor_clear(PyObject *op) assert(executor->vm_data.valid == 1); unlink_executor(executor); executor->vm_data.valid = 0; + /* It is possible for an executor to form a reference * cycle with itself, so decref'ing a side exit could * free the executor unless we hold a strong reference to it */ + _PyExecutorObject *cold = _PyExecutor_GetColdExecutor(); Py_INCREF(executor); for (uint32_t i = 0; i < executor->exit_count; i++) { executor->exits[i].temperature = initial_unreachable_backoff_counter(); - Py_CLEAR(executor->exits[i].executor); + _PyExecutorObject *e = executor->exits[i].executor; + executor->exits[i].executor = cold; + Py_DECREF(e); } _Py_ExecutorDetach(executor); Py_DECREF(executor); @@ -1741,4 +1787,11 @@ _PyDumpExecutors(FILE *out) return -1; } +void +_PyExecutor_Free(struct _PyExecutorObject *self) +{ + /* This should never be called */ + Py_UNREACHABLE(); +} + #endif /* _Py_TIER2 */ diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h index 99206f01618d79..6ec85a93f46b3e 100644 --- a/Python/optimizer_cases.c.h +++ b/Python/optimizer_cases.c.h @@ -3206,3 +3206,7 @@ break; } + case _COLD_EXIT: { + break; + } + diff --git a/Python/pystate.c b/Python/pystate.c index 04ca6edb4aaa0e..c77868bc717daf 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -815,7 +815,13 @@ interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate) /* Last garbage collection on this interpreter */ _PyGC_CollectNoFail(tstate); _PyGC_Fini(interp); - + struct _PyExecutorObject *cold = interp->cold_executor; + if (cold != NULL) { + interp->cold_executor = NULL; + assert(cold->vm_data.valid); + assert(cold->vm_data.warm); + _PyExecutor_Free(cold); + } /* We don't clear sysdict and builtins until the end of this function. Because clearing other attributes can execute arbitrary Python code which requires sysdict and builtins. */ @@ -1469,6 +1475,7 @@ init_threadstate(_PyThreadStateImpl *_tstate, tstate->datastack_limit = NULL; tstate->what_event = -1; tstate->current_executor = NULL; + tstate->jit_exit = NULL; tstate->dict_global_version = 0; _tstate->c_stack_soft_limit = UINTPTR_MAX; diff --git a/Tools/jit/template.c b/Tools/jit/template.c index d07f56e9ce6b42..7bbc44a08a0a98 100644 --- a/Tools/jit/template.c +++ b/Tools/jit/template.c @@ -51,7 +51,6 @@ do { \ OPT_STAT_INC(traces_executed); \ _PyExecutorObject *_executor = (EXECUTOR); \ - tstate->current_executor = (PyObject *)_executor; \ jit_func_preserve_none jitted = _executor->jit_side_entry; \ __attribute__((musttail)) return jitted(frame, stack_pointer, tstate); \ } while (0) From fe0e921817a7f96c62c91085884ab910859328ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 1 Aug 2025 19:45:40 +0200 Subject: [PATCH 13/87] gh-131876: Revert "gh-131876: extract `_hashlib` helpers into a separate directory (#136995) (#137307) Revert "gh-131876: extract `_hashlib` helpers into a separate directory (#136995)" This reverts commit 45138d35843297395b2d646f5391be108243957a. --- Makefile.pre.in | 37 +--- ...-07-22-14-47-45.gh-issue-131876.oaYEEP.rst | 2 - Modules/_hashlib/hashlib_buffer.c | 65 ------- Modules/_hashlib/hashlib_buffer.h | 48 ----- Modules/_hashlib/hashlib_fetch.h | 19 -- Modules/_hashlib/hashlib_mutex.h | 82 --------- Modules/_hashopenssl.c | 15 +- Modules/blake2module.c | 8 +- Modules/hashlib.h | 173 ++++++++++++++++++ Modules/hmacmodule.c | 8 +- Modules/md5module.c | 5 +- Modules/sha1module.c | 8 +- Modules/sha2module.c | 9 +- Modules/sha3module.c | 8 +- PCbuild/_hashlib.vcxproj | 5 - PCbuild/_hashlib.vcxproj.filters | 2 +- PCbuild/pythoncore.vcxproj | 4 - PCbuild/pythoncore.vcxproj.filters | 12 -- configure | 40 ++-- configure.ac | 17 +- 20 files changed, 221 insertions(+), 346 deletions(-) delete mode 100644 Misc/NEWS.d/next/Build/2025-07-22-14-47-45.gh-issue-131876.oaYEEP.rst delete mode 100644 Modules/_hashlib/hashlib_buffer.c delete mode 100644 Modules/_hashlib/hashlib_buffer.h delete mode 100644 Modules/_hashlib/hashlib_fetch.h delete mode 100644 Modules/_hashlib/hashlib_mutex.h create mode 100644 Modules/hashlib.h diff --git a/Makefile.pre.in b/Makefile.pre.in index e2253d3e35b3e6..67e963f83c128f 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -227,7 +227,6 @@ ENSUREPIP= @ENSUREPIP@ # Internal static libraries LIBMPDEC_A= Modules/_decimal/libmpdec/libmpdec.a LIBEXPAT_A= Modules/expat/libexpat.a -LIBHASHLIB_INTERNAL_A=Modules/_hashlib/libhashlib.a # HACL* build configuration LIBHACL_CFLAGS=@LIBHACL_CFLAGS@ @@ -762,17 +761,6 @@ LIBHACL_HMAC_HEADERS= \ $(LIBHACL_BLAKE2_HEADERS) \ $(LIBHACL_HEADERS) -########################################################################## -# Internal library for cryptographic primitives - -LIBHASHLIB_INTERNAL_OBJS= \ - Modules/_hashlib/hashlib_buffer.o - -LIBHASHLIB_INTERNAL_HEADERS= \ - Modules/_hashlib/hashlib_buffer.h \ - Modules/_hashlib/hashlib_fetch.h \ - Modules/_hashlib/hashlib_mutex.h - ######################################################################### # Rules @@ -1527,17 +1515,6 @@ $(LIBEXPAT_A): $(LIBEXPAT_OBJS) -rm -f $@ $(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS) -########################################################################## -# '_hashlib', '_hmac' and HACL*-based modules helpers -LIBHASHLIB_INTERNAL_CFLAGS=@LIBHASHLIB_INTERNAL_CFLAGS@ $(PY_STDMODULE_CFLAGS) $(CCSHARED) - -Modules/_hashlib/hashlib_buffer.o: Modules/_hashlib/hashlib_buffer.c $(LIBHASHLIB_INTERNAL_HEADERS) $(PYTHON_HEADERS) - $(CC) -I$(srcdir)/Modules/_hashlib -c $(LIBHASHLIB_INTERNAL_CFLAGS) -o $@ $(srcdir)/Modules/_hashlib/hashlib_buffer.c - -$(LIBHASHLIB_INTERNAL_A): $(LIBHASHLIB_INTERNAL_OBJS) - -rm -f $@ - $(AR) $(ARFLAGS) $@ $(LIBHASHLIB_INTERNAL_OBJS) - ########################################################################## # HACL* library build # @@ -3380,21 +3357,21 @@ MODULE__CTYPES_TEST_DEPS=$(srcdir)/Modules/_ctypes/_ctypes_test_generated.c.h MODULE__CTYPES_MALLOC_CLOSURE=@MODULE__CTYPES_MALLOC_CLOSURE@ MODULE__DECIMAL_DEPS=$(srcdir)/Modules/_decimal/docstrings.h @LIBMPDEC_INTERNAL@ MODULE__ELEMENTTREE_DEPS=$(srcdir)/Modules/pyexpat.c @LIBEXPAT_INTERNAL@ -MODULE__HASHLIB_DEPS=@LIBHASHLIB_INTERNAL@ +MODULE__HASHLIB_DEPS=$(srcdir)/Modules/hashlib.h MODULE__IO_DEPS=$(srcdir)/Modules/_io/_iomodule.h # HACL*-based cryptographic primitives -MODULE__MD5_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_MD5_HEADERS) $(LIBHACL_MD5_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__MD5_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_MD5_HEADERS) $(LIBHACL_MD5_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__MD5_LDEPS=$(LIBHACL_MD5_LIB_@LIBHACL_LDEPS_LIBTYPE@) -MODULE__SHA1_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_SHA1_HEADERS) $(LIBHACL_SHA1_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__SHA1_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_SHA1_HEADERS) $(LIBHACL_SHA1_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__SHA1_LDEPS=$(LIBHACL_SHA1_LIB_@LIBHACL_LDEPS_LIBTYPE@) -MODULE__SHA2_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_SHA2_HEADERS) $(LIBHACL_SHA2_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__SHA2_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_SHA2_HEADERS) $(LIBHACL_SHA2_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__SHA2_LDEPS=$(LIBHACL_SHA2_LIB_@LIBHACL_LDEPS_LIBTYPE@) -MODULE__SHA3_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_SHA3_HEADERS) $(LIBHACL_SHA3_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__SHA3_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_SHA3_HEADERS) $(LIBHACL_SHA3_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__SHA3_LDEPS=$(LIBHACL_SHA3_LIB_@LIBHACL_LDEPS_LIBTYPE@) -MODULE__BLAKE2_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_BLAKE2_HEADERS) $(LIBHACL_BLAKE2_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__BLAKE2_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_BLAKE2_HEADERS) $(LIBHACL_BLAKE2_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__BLAKE2_LDEPS=$(LIBHACL_BLAKE2_LIB_@LIBHACL_LDEPS_LIBTYPE@) -MODULE__HMAC_DEPS=$(MODULE__HASHLIB_DEPS) $(LIBHACL_HMAC_HEADERS) $(LIBHACL_HMAC_LIB_@LIBHACL_LDEPS_LIBTYPE@) +MODULE__HMAC_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HMAC_HEADERS) $(LIBHACL_HMAC_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__HMAC_LDEPS=$(LIBHACL_HMAC_LIB_@LIBHACL_LDEPS_LIBTYPE@) MODULE__SOCKET_DEPS=$(srcdir)/Modules/socketmodule.h $(srcdir)/Modules/addrinfo.h $(srcdir)/Modules/getaddrinfo.c $(srcdir)/Modules/getnameinfo.c diff --git a/Misc/NEWS.d/next/Build/2025-07-22-14-47-45.gh-issue-131876.oaYEEP.rst b/Misc/NEWS.d/next/Build/2025-07-22-14-47-45.gh-issue-131876.oaYEEP.rst deleted file mode 100644 index 304f2c30f664db..00000000000000 --- a/Misc/NEWS.d/next/Build/2025-07-22-14-47-45.gh-issue-131876.oaYEEP.rst +++ /dev/null @@ -1,2 +0,0 @@ -Remove :file:`!Modules/hashlib.h` and move its content into dedicated files -now located in ``Modules/_hashlib``. Patch by Bénédikt Tran. diff --git a/Modules/_hashlib/hashlib_buffer.c b/Modules/_hashlib/hashlib_buffer.c deleted file mode 100644 index 032f93ad53ad1b..00000000000000 --- a/Modules/_hashlib/hashlib_buffer.c +++ /dev/null @@ -1,65 +0,0 @@ -#include "hashlib_buffer.h" - -int -_Py_hashlib_data_argument(PyObject **res, PyObject *data, PyObject *string) -{ - if (data != NULL && string == NULL) { - // called as H(data) or H(data=...) - *res = data; - return 1; - } - else if (data == NULL && string != NULL) { - // called as H(string=...) - if (PyErr_WarnEx(PyExc_DeprecationWarning, - "the 'string' keyword parameter is deprecated since " - "Python 3.15 and slated for removal in Python 3.19; " - "use the 'data' keyword parameter or pass the data " - "to hash as a positional argument instead", 1) < 0) - { - *res = NULL; - return -1; - } - *res = string; - return 1; - } - else if (data == NULL && string == NULL) { - // fast path when no data is given - assert(!PyErr_Occurred()); - *res = NULL; - return 0; - } - else { - // called as H(data=..., string) - *res = NULL; - PyErr_SetString(PyExc_TypeError, - "'data' and 'string' are mutually exclusive " - "and support for 'string' keyword parameter " - "is slated for removal in a future version."); - return -1; - } -} - -int -_Py_hashlib_get_buffer_view(PyObject *obj, Py_buffer *view) -{ - if (PyUnicode_Check(obj)) { - PyErr_SetString(PyExc_TypeError, - "Strings must be encoded before hashing"); - return -1; - } - if (!PyObject_CheckBuffer(obj)) { - PyErr_SetString(PyExc_TypeError, - "object supporting the buffer API required"); - return -1; - } - if (PyObject_GetBuffer(obj, view, PyBUF_SIMPLE) == -1) { - return -1; - } - if (view->ndim > 1) { - PyErr_SetString(PyExc_BufferError, - "Buffer must be single dimension"); - PyBuffer_Release(view); - return -1; - } - return 0; -} diff --git a/Modules/_hashlib/hashlib_buffer.h b/Modules/_hashlib/hashlib_buffer.h deleted file mode 100644 index 809f19884f41b7..00000000000000 --- a/Modules/_hashlib/hashlib_buffer.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef _HASHLIB_HASHLIB_BUFFER_H -#define _HASHLIB_HASHLIB_BUFFER_H - -#include "Python.h" - -/* - * Allow to use the 'data' or 'string' keyword in hashlib.new() - * and other hash functions named constructors. - * - * - If 'data' and 'string' are both non-NULL, set an exception and return -1. - * - If 'data' and 'string' are both NULL, set '*res' to NULL and return 0. - * - Otherwise, set '*res' to 'data' or 'string' and return 1. A deprecation - * warning is set when 'string' is specified. - * - * The symbol is exported for '_hashlib' and HACL*-based extension modules. - */ -PyAPI_FUNC(int) -_Py_hashlib_data_argument(PyObject **res, PyObject *data, PyObject *string); - -/* - * Obtain a buffer view from a buffer-like object 'obj'. - * - * On success, store the result in 'view' and return 0. - * On error, set an exception and return -1. - * - * The symbol is exported for '_hashlib' and HACL*-based extension modules. - */ -PyAPI_FUNC(int) -_Py_hashlib_get_buffer_view(PyObject *obj, Py_buffer *view); - -/* - * Call _Py_hashlib_get_buffer_view() and check if it succeeded. - * - * On error, set an exception and execute the ERRACTION statements. - */ -#define GET_BUFFER_VIEW_OR_ERROR(OBJ, VIEW, ERRACTION) \ - do { \ - if (_Py_hashlib_get_buffer_view(OBJ, VIEW) < 0) { \ - assert(PyErr_Occurred()); \ - ERRACTION; \ - } \ - } while (0) - -/* Specialization of GET_BUFFER_VIEW_OR_ERROR() returning NULL on error. */ -#define GET_BUFFER_VIEW_OR_ERROUT(OBJ, VIEW) \ - GET_BUFFER_VIEW_OR_ERROR(OBJ, VIEW, return NULL) - -#endif // !_HASHLIB_HASHLIB_BUFFER_H diff --git a/Modules/_hashlib/hashlib_fetch.h b/Modules/_hashlib/hashlib_fetch.h deleted file mode 100644 index 09add71e0c798c..00000000000000 --- a/Modules/_hashlib/hashlib_fetch.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Utilities used when fetching a message digest from a digest-like identifier. - */ - -#ifndef _HASHLIB_HASHLIB_FETCH_H -#define _HASHLIB_HASHLIB_FETCH_H - -#include "Python.h" - -/* - * Internal error messages used for reporting an unsupported hash algorithm. - * The algorithm can be given by its name, a callable or a PEP-247 module. - * The same message is raised by Lib/hashlib.py::__get_builtin_constructor() - * and _hmacmodule.c::find_hash_info(). - */ -#define _Py_HASHLIB_UNSUPPORTED_ALGORITHM "unsupported hash algorithm %S" -#define _Py_HASHLIB_UNSUPPORTED_STR_ALGORITHM "unsupported hash algorithm %s" - -#endif // !_HASHLIB_HASHLIB_FETCH_H diff --git a/Modules/_hashlib/hashlib_mutex.h b/Modules/_hashlib/hashlib_mutex.h deleted file mode 100644 index d6924a2ef61e81..00000000000000 --- a/Modules/_hashlib/hashlib_mutex.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef _HASHLIB_HASHLIB_MUTEX_H -#define _HASHLIB_HASHLIB_MUTEX_H - -#include "Python.h" -#include "pycore_lock.h" // PyMutex - -/* - * Message length above which the GIL is to be released - * when performing hashing operations. - */ -#define HASHLIB_GIL_MINSIZE 2048 - -/* - * Helper code to synchronize access to the hash object when the GIL is - * released around a CPU consuming hashlib operation. - * - * Code accessing a mutable part of the hash object must be enclosed in - * an HASHLIB_{ACQUIRE,RELEASE}_LOCK block or explicitly acquire and release - * the mutex inside a Py_BEGIN_ALLOW_THREADS -- Py_END_ALLOW_THREADS block if - * they wish to release the GIL for an operation. - */ - -#define HASHLIB_OBJECT_HEAD \ - PyObject_HEAD \ - /* Guard against race conditions during incremental update(). */ \ - PyMutex mutex; - -#define HASHLIB_INIT_MUTEX(OBJ) \ - do { \ - (OBJ)->mutex = (PyMutex){0}; \ - } while (0) - -#define HASHLIB_ACQUIRE_LOCK(OBJ) PyMutex_Lock(&(OBJ)->mutex) -#define HASHLIB_RELEASE_LOCK(OBJ) PyMutex_Unlock(&(OBJ)->mutex) - -// Macros for executing code while conditionally holding the GIL. -// -// These only drop the GIL if the lock acquisition itself is likely to -// block. Thus the non-blocking acquire gating the GIL release for a -// blocking lock acquisition. The intent of these macros is to surround -// the assumed always "fast" operations that you aren't releasing the -// GIL around. - -/* - * Execute a suite of C statements 'STATEMENTS'. - * - * The GIL is held if 'SIZE' is below the HASHLIB_GIL_MINSIZE threshold. - */ -#define HASHLIB_EXTERNAL_INSTRUCTIONS_UNLOCKED(SIZE, STATEMENTS) \ - do { \ - if ((SIZE) > HASHLIB_GIL_MINSIZE) { \ - Py_BEGIN_ALLOW_THREADS \ - STATEMENTS; \ - Py_END_ALLOW_THREADS \ - } \ - else { \ - STATEMENTS; \ - } \ - } while (0) - -/* - * Lock 'OBJ' and execute a suite of C statements 'STATEMENTS'. - * - * The GIL is held if 'SIZE' is below the HASHLIB_GIL_MINSIZE threshold. - */ -#define HASHLIB_EXTERNAL_INSTRUCTIONS_LOCKED(OBJ, SIZE, STATEMENTS) \ - do { \ - if ((SIZE) > HASHLIB_GIL_MINSIZE) { \ - Py_BEGIN_ALLOW_THREADS \ - HASHLIB_ACQUIRE_LOCK(OBJ); \ - STATEMENTS; \ - HASHLIB_RELEASE_LOCK(OBJ); \ - Py_END_ALLOW_THREADS \ - } \ - else { \ - HASHLIB_ACQUIRE_LOCK(OBJ); \ - STATEMENTS; \ - HASHLIB_RELEASE_LOCK(OBJ); \ - } \ - } while (0) - -#endif // !_HASHLIB_HASHLIB_MUTEX_H diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c index 26412cb62430c9..00f98c090b3952 100644 --- a/Modules/_hashopenssl.c +++ b/Modules/_hashopenssl.c @@ -24,17 +24,14 @@ #include "Python.h" #include "pycore_hashtable.h" -#include "pycore_strhex.h" // _Py_strhex() -#include "pycore_pyatomic_ft_wrappers.h" // FT_ATOMIC_LOAD_PTR_RELAXED - -#include "_hashlib/hashlib_buffer.h" -#include "_hashlib/hashlib_fetch.h" -#include "_hashlib/hashlib_mutex.h" +#include "pycore_strhex.h" // _Py_strhex() +#include "pycore_pyatomic_ft_wrappers.h" // FT_ATOMIC_LOAD_PTR_RELAXED +#include "hashlib.h" /* EVP is the preferred interface to hashing in OpenSSL */ #include #include -#include // FIPS_mode() +#include // FIPS_mode() /* We use the object interface to discover what hashes OpenSSL supports. */ #include #include @@ -535,7 +532,7 @@ raise_unsupported_algorithm_error(_hashlibstate *state, PyObject *digestmod) { raise_unsupported_algorithm_impl( state->unsupported_digestmod_error, - _Py_HASHLIB_UNSUPPORTED_ALGORITHM, + HASHLIB_UNSUPPORTED_ALGORITHM, digestmod ); } @@ -545,7 +542,7 @@ raise_unsupported_str_algorithm_error(_hashlibstate *state, const char *name) { raise_unsupported_algorithm_impl( state->unsupported_digestmod_error, - _Py_HASHLIB_UNSUPPORTED_STR_ALGORITHM, + HASHLIB_UNSUPPORTED_STR_ALGORITHM, name ); } diff --git a/Modules/blake2module.c b/Modules/blake2module.c index 13c969056be354..163f238a4268d0 100644 --- a/Modules/blake2module.c +++ b/Modules/blake2module.c @@ -15,12 +15,10 @@ #endif #include "Python.h" -#include "pycore_moduleobject.h" -#include "pycore_strhex.h" // _Py_strhex() +#include "hashlib.h" +#include "pycore_strhex.h" // _Py_strhex() #include "pycore_typeobject.h" - -#include "_hashlib/hashlib_buffer.h" -#include "_hashlib/hashlib_mutex.h" +#include "pycore_moduleobject.h" // QUICK CPU AUTODETECTION // diff --git a/Modules/hashlib.h b/Modules/hashlib.h new file mode 100644 index 00000000000000..5ada4ef4b863ec --- /dev/null +++ b/Modules/hashlib.h @@ -0,0 +1,173 @@ +/* Common code for use by all hashlib related modules. */ + +#include "pycore_lock.h" // PyMutex + +/* + * Internal error messages used for reporting an unsupported hash algorithm. + * The algorithm can be given by its name, a callable or a PEP-247 module. + * The same message is raised by Lib/hashlib.py::__get_builtin_constructor() + * and _hmacmodule.c::find_hash_info(). + */ +#define HASHLIB_UNSUPPORTED_ALGORITHM "unsupported hash algorithm %S" +#define HASHLIB_UNSUPPORTED_STR_ALGORITHM "unsupported hash algorithm %s" + +/* + * Obtain a buffer view from a buffer-like object 'obj'. + * + * On success, store the result in 'view' and return 0. + * On error, set an exception and return -1. + */ +static inline int +_Py_hashlib_get_buffer_view(PyObject *obj, Py_buffer *view) +{ + if (PyUnicode_Check(obj)) { + PyErr_SetString(PyExc_TypeError, + "Strings must be encoded before hashing"); + return -1; + } + if (!PyObject_CheckBuffer(obj)) { + PyErr_SetString(PyExc_TypeError, + "object supporting the buffer API required"); + return -1; + } + if (PyObject_GetBuffer(obj, view, PyBUF_SIMPLE) == -1) { + return -1; + } + if (view->ndim > 1) { + PyErr_SetString(PyExc_BufferError, + "Buffer must be single dimension"); + PyBuffer_Release(view); + return -1; + } + return 0; +} + +/* + * Call _Py_hashlib_get_buffer_view() and check if it succeeded. + * + * On error, set an exception and execute the ERRACTION statements. + */ +#define GET_BUFFER_VIEW_OR_ERROR(OBJ, VIEW, ERRACTION) \ + do { \ + if (_Py_hashlib_get_buffer_view(OBJ, VIEW) < 0) { \ + assert(PyErr_Occurred()); \ + ERRACTION; \ + } \ + } while (0) + +#define GET_BUFFER_VIEW_OR_ERROUT(OBJ, VIEW) \ + GET_BUFFER_VIEW_OR_ERROR(OBJ, VIEW, return NULL) + +/* + * Helper code to synchronize access to the hash object when the GIL is + * released around a CPU consuming hashlib operation. + * + * Code accessing a mutable part of the hash object must be enclosed in + * an HASHLIB_{ACQUIRE,RELEASE}_LOCK block or explicitly acquire and release + * the mutex inside a Py_BEGIN_ALLOW_THREADS -- Py_END_ALLOW_THREADS block if + * they wish to release the GIL for an operation. + */ + +#define HASHLIB_OBJECT_HEAD \ + PyObject_HEAD \ + /* Guard against race conditions during incremental update(). */ \ + PyMutex mutex; + +#define HASHLIB_INIT_MUTEX(OBJ) \ + do { \ + (OBJ)->mutex = (PyMutex){0}; \ + } while (0) + +#define HASHLIB_ACQUIRE_LOCK(OBJ) PyMutex_Lock(&(OBJ)->mutex) +#define HASHLIB_RELEASE_LOCK(OBJ) PyMutex_Unlock(&(OBJ)->mutex) + +/* + * Message length above which the GIL is to be released + * when performing hashing operations. + */ +#define HASHLIB_GIL_MINSIZE 2048 + +// Macros for executing code while conditionally holding the GIL. +// +// These only drop the GIL if the lock acquisition itself is likely to +// block. Thus the non-blocking acquire gating the GIL release for a +// blocking lock acquisition. The intent of these macros is to surround +// the assumed always "fast" operations that you aren't releasing the +// GIL around. + +/* + * Execute a suite of C statements 'STATEMENTS'. + * + * The GIL is held if 'SIZE' is below the HASHLIB_GIL_MINSIZE threshold. + */ +#define HASHLIB_EXTERNAL_INSTRUCTIONS_UNLOCKED(SIZE, STATEMENTS) \ + do { \ + if ((SIZE) > HASHLIB_GIL_MINSIZE) { \ + Py_BEGIN_ALLOW_THREADS \ + STATEMENTS; \ + Py_END_ALLOW_THREADS \ + } \ + else { \ + STATEMENTS; \ + } \ + } while (0) + +/* + * Lock 'OBJ' and execute a suite of C statements 'STATEMENTS'. + * + * The GIL is held if 'SIZE' is below the HASHLIB_GIL_MINSIZE threshold. + */ +#define HASHLIB_EXTERNAL_INSTRUCTIONS_LOCKED(OBJ, SIZE, STATEMENTS) \ + do { \ + if ((SIZE) > HASHLIB_GIL_MINSIZE) { \ + Py_BEGIN_ALLOW_THREADS \ + HASHLIB_ACQUIRE_LOCK(OBJ); \ + STATEMENTS; \ + HASHLIB_RELEASE_LOCK(OBJ); \ + Py_END_ALLOW_THREADS \ + } \ + else { \ + HASHLIB_ACQUIRE_LOCK(OBJ); \ + STATEMENTS; \ + HASHLIB_RELEASE_LOCK(OBJ); \ + } \ + } while (0) + +static inline int +_Py_hashlib_data_argument(PyObject **res, PyObject *data, PyObject *string) +{ + if (data != NULL && string == NULL) { + // called as H(data) or H(data=...) + *res = data; + return 1; + } + else if (data == NULL && string != NULL) { + // called as H(string=...) + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "the 'string' keyword parameter is deprecated since " + "Python 3.15 and slated for removal in Python 3.19; " + "use the 'data' keyword parameter or pass the data " + "to hash as a positional argument instead", 1) < 0) + { + *res = NULL; + return -1; + } + *res = string; + return 1; + } + else if (data == NULL && string == NULL) { + // fast path when no data is given + assert(!PyErr_Occurred()); + *res = NULL; + return 0; + } + else { + // called as H(data=..., string) + *res = NULL; + PyErr_SetString(PyExc_TypeError, + "'data' and 'string' are mutually exclusive " + "and support for 'string' keyword parameter " + "is slated for removal in a future version."); + return -1; + } +} diff --git a/Modules/hmacmodule.c b/Modules/hmacmodule.c index 92be49c5a879f3..694e2a095744ff 100644 --- a/Modules/hmacmodule.c +++ b/Modules/hmacmodule.c @@ -20,10 +20,6 @@ #include "pycore_hashtable.h" #include "pycore_strhex.h" // _Py_strhex() -#include "_hashlib/hashlib_buffer.h" -#include "_hashlib/hashlib_fetch.h" -#include "_hashlib/hashlib_mutex.h" - /* * Taken from blake2module.c. In the future, detection of SIMD support * should be delegated to https://github.com/python/cpython/pull/125011. @@ -51,6 +47,8 @@ #include +#include "hashlib.h" + // --- Reusable error messages ------------------------------------------------ static inline void @@ -658,7 +656,7 @@ find_hash_info(hmacmodule_state *state, PyObject *hash_info_ref) } if (rc == 0) { PyErr_Format(state->unknown_hash_error, - _Py_HASHLIB_UNSUPPORTED_ALGORITHM, hash_info_ref); + HASHLIB_UNSUPPORTED_ALGORITHM, hash_info_ref); return NULL; } assert(info != NULL); diff --git a/Modules/md5module.c b/Modules/md5module.c index d5dc4f60a575d4..8b6dd4a8195dfb 100644 --- a/Modules/md5module.c +++ b/Modules/md5module.c @@ -22,10 +22,9 @@ #endif #include "Python.h" -#include "pycore_strhex.h" // _Py_strhex() +#include "pycore_strhex.h" // _Py_strhex() -#include "_hashlib/hashlib_buffer.h" -#include "_hashlib/hashlib_mutex.h" +#include "hashlib.h" #include "_hacl/Hacl_Hash_MD5.h" diff --git a/Modules/sha1module.c b/Modules/sha1module.c index 86e5691e8463e4..faa9dcccc5755b 100644 --- a/Modules/sha1module.c +++ b/Modules/sha1module.c @@ -20,11 +20,9 @@ #endif #include "Python.h" -#include "pycore_strhex.h" // _Py_strhex() -#include "pycore_typeobject.h" // _PyType_GetModuleState() - -#include "_hashlib/hashlib_buffer.h" -#include "_hashlib/hashlib_mutex.h" +#include "hashlib.h" +#include "pycore_strhex.h" // _Py_strhex() +#include "pycore_typeobject.h" // _PyType_GetModuleState() #include "_hacl/Hacl_Hash_SHA1.h" diff --git a/Modules/sha2module.c b/Modules/sha2module.c index dbf6dde1b8c121..36300ba899fd44 100644 --- a/Modules/sha2module.c +++ b/Modules/sha2module.c @@ -21,12 +21,11 @@ #endif #include "Python.h" -#include "pycore_moduleobject.h" // _PyModule_GetState() -#include "pycore_strhex.h" // _Py_strhex() -#include "pycore_typeobject.h" // _PyType_GetModuleState() +#include "pycore_moduleobject.h" // _PyModule_GetState() +#include "pycore_typeobject.h" // _PyType_GetModuleState() +#include "pycore_strhex.h" // _Py_strhex() -#include "_hashlib/hashlib_buffer.h" -#include "_hashlib/hashlib_mutex.h" +#include "hashlib.h" #include "_hacl/Hacl_Hash_SHA2.h" diff --git a/Modules/sha3module.c b/Modules/sha3module.c index c67bfadbe4664a..5764556bb680f3 100644 --- a/Modules/sha3module.c +++ b/Modules/sha3module.c @@ -21,11 +21,9 @@ #endif #include "Python.h" -#include "pycore_strhex.h" // _Py_strhex() -#include "pycore_typeobject.h" // _PyType_GetModuleState() - -#include "_hashlib/hashlib_buffer.h" -#include "_hashlib/hashlib_mutex.h" +#include "pycore_strhex.h" // _Py_strhex() +#include "pycore_typeobject.h" // _PyType_GetModuleState() +#include "hashlib.h" #include "_hacl/Hacl_Hash_SHA3.h" diff --git a/PCbuild/_hashlib.vcxproj b/PCbuild/_hashlib.vcxproj index cfb43cee935b86..2cd205224bc089 100644 --- a/PCbuild/_hashlib.vcxproj +++ b/PCbuild/_hashlib.vcxproj @@ -100,11 +100,6 @@ - - - - - diff --git a/PCbuild/_hashlib.vcxproj.filters b/PCbuild/_hashlib.vcxproj.filters index d465d92a956eda..7a0700c007f644 100644 --- a/PCbuild/_hashlib.vcxproj.filters +++ b/PCbuild/_hashlib.vcxproj.filters @@ -18,4 +18,4 @@ Resource Files - + \ No newline at end of file diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index c59b380d814ed9..517103acea8d8e 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -447,10 +447,6 @@ HACL_CAN_COMPILE_VEC128;%(PreprocessorDefinitions) /arch:AVX %(AdditionalOptions) - - - - diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index 1410cbbef6c849..e9eedfd1312fae 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -255,15 +255,6 @@ Include - - Modules\_hashlib - - - Modules\_hashlib - - - Modules\_hashlib - Modules @@ -980,9 +971,6 @@ Modules - - Modules\_hashlib - Modules diff --git a/configure b/configure index 0e7aefed5ee62d..74df430d10d6bd 100755 --- a/configure +++ b/configure @@ -725,8 +725,6 @@ LIBHACL_BLAKE2_SIMD128_OBJS LIBHACL_SIMD128_FLAGS LIBHACL_LDFLAGS LIBHACL_CFLAGS -LIBHASHLIB_INTERNAL -LIBHASHLIB_INTERNAL_CFLAGS MODULE_UNICODEDATA_FALSE MODULE_UNICODEDATA_TRUE MODULE__MULTIBYTECODEC_FALSE @@ -29951,7 +29949,6 @@ SRCDIRS="\ Modules/_decimal \ Modules/_decimal/libmpdec \ Modules/_hacl \ - Modules/_hashlib \ Modules/_io \ Modules/_multiprocessing \ Modules/_sqlite \ @@ -32528,15 +32525,6 @@ then : fi -############################################################################### -# Cryptographic primitives -LIBHASHLIB_INTERNAL_CFLAGS="-I\$(srcdir)/Modules/_hashlib" -LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" -LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" - - - - ############################################################################### # HACL* compilation and linking configuration (contact: @picnixz) # @@ -32785,8 +32773,8 @@ fi if test "x$py_cv_module__md5" = xyes then : - as_fn_append MODULE_BLOCK "MODULE__MD5_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__MD5_LDFLAGS=\$($LIBHACL_MD5_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__MD5_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__MD5_LDFLAGS=\$($LIBHACL_MD5_LDFLAGS)$as_nl" fi if test "$py_cv_module__md5" = yes; then @@ -32830,8 +32818,8 @@ fi if test "x$py_cv_module__sha1" = xyes then : - as_fn_append MODULE_BLOCK "MODULE__SHA1_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA1_LDFLAGS=\$($LIBHACL_SHA1_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA1_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA1_LDFLAGS=\$($LIBHACL_SHA1_LDFLAGS)$as_nl" fi if test "$py_cv_module__sha1" = yes; then @@ -32875,8 +32863,8 @@ fi if test "x$py_cv_module__sha2" = xyes then : - as_fn_append MODULE_BLOCK "MODULE__SHA2_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA2_LDFLAGS=\$($LIBHACL_SHA2_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA2_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA2_LDFLAGS=\$($LIBHACL_SHA2_LDFLAGS)$as_nl" fi if test "$py_cv_module__sha2" = yes; then @@ -32920,8 +32908,8 @@ fi if test "x$py_cv_module__sha3" = xyes then : - as_fn_append MODULE_BLOCK "MODULE__SHA3_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__SHA3_LDFLAGS=\$($LIBHACL_SHA3_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA3_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__SHA3_LDFLAGS=\$($LIBHACL_SHA3_LDFLAGS)$as_nl" fi if test "$py_cv_module__sha3" = yes; then @@ -32965,8 +32953,8 @@ fi if test "x$py_cv_module__blake2" = xyes then : - as_fn_append MODULE_BLOCK "MODULE__BLAKE2_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__BLAKE2_LDFLAGS=\$($LIBHACL_BLAKE2_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__BLAKE2_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__BLAKE2_LDFLAGS=\$($LIBHACL_BLAKE2_LDFLAGS)$as_nl" fi if test "$py_cv_module__blake2" = yes; then @@ -33011,8 +32999,8 @@ fi if test "x$py_cv_module__hmac" = xyes then : - as_fn_append MODULE_BLOCK "MODULE__HMAC_CFLAGS=$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__HMAC_LDFLAGS=\$($LIBHACL_HMAC_LDFLAGS) $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__HMAC_CFLAGS=$LIBHACL_CFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__HMAC_LDFLAGS=\$($LIBHACL_HMAC_LDFLAGS)$as_nl" fi if test "$py_cv_module__hmac" = yes; then @@ -33693,8 +33681,8 @@ fi if test "x$py_cv_module__hashlib" = xyes then : - as_fn_append MODULE_BLOCK "MODULE__HASHLIB_CFLAGS=$OPENSSL_INCLUDES $LIBHASHLIB_INTERNAL_CFLAGS$as_nl" - as_fn_append MODULE_BLOCK "MODULE__HASHLIB_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS $LIBHASHLIB_INTERNAL_LDFLAGS$as_nl" + as_fn_append MODULE_BLOCK "MODULE__HASHLIB_CFLAGS=$OPENSSL_INCLUDES$as_nl" + as_fn_append MODULE_BLOCK "MODULE__HASHLIB_LDFLAGS=$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS$as_nl" fi if test "$py_cv_module__hashlib" = yes; then diff --git a/configure.ac b/configure.ac index 1e590e1d0fd727..29e36f217402f1 100644 --- a/configure.ac +++ b/configure.ac @@ -7187,7 +7187,6 @@ SRCDIRS="\ Modules/_decimal \ Modules/_decimal/libmpdec \ Modules/_hacl \ - Modules/_hashlib \ Modules/_io \ Modules/_multiprocessing \ Modules/_sqlite \ @@ -7958,15 +7957,6 @@ PY_STDLIB_MOD_SIMPLE([_codecs_tw]) PY_STDLIB_MOD_SIMPLE([_multibytecodec]) PY_STDLIB_MOD_SIMPLE([unicodedata]) -############################################################################### -# Cryptographic primitives -LIBHASHLIB_INTERNAL_CFLAGS="-I\$(srcdir)/Modules/_hashlib" -LIBHASHLIB_INTERNAL_LDFLAGS="-lm \$(LIBHASHLIB_INTERNAL_A)" -LIBHASHLIB_INTERNAL="\$(LIBHASHLIB_INTERNAL_HEADERS) \$(LIBHASHLIB_INTERNAL_A)" - -AC_SUBST([LIBHASHLIB_INTERNAL_CFLAGS]) -AC_SUBST([LIBHASHLIB_INTERNAL]) - ############################################################################### # HACL* compilation and linking configuration (contact: @picnixz) # @@ -8103,9 +8093,7 @@ dnl The EXTNAME is the name of the extension module being built. AC_DEFUN([PY_HACL_CREATE_MODULE], [ AS_VAR_PUSHDEF([v], [[LIBHACL_][$1][_LDFLAGS]]) AS_VAR_SET([v], [[LIBHACL_][$1][_LIB_${LIBHACL_LDEPS_LIBTYPE}]]) - PY_STDLIB_MOD([$2], [$3], [], - [$LIBHACL_CFLAGS $LIBHASHLIB_INTERNAL_CFLAGS], - [\$($v) $LIBHASHLIB_INTERNAL_LDFLAGS]) + PY_STDLIB_MOD([$2], [$3], [], [$LIBHACL_CFLAGS], [\$($v)]) AS_VAR_POPDEF([v]) ]) @@ -8186,8 +8174,7 @@ dnl OpenSSL bindings PY_STDLIB_MOD([_ssl], [], [test "$ac_cv_working_openssl_ssl" = yes], [$OPENSSL_INCLUDES], [$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $OPENSSL_LIBS]) PY_STDLIB_MOD([_hashlib], [], [test "$ac_cv_working_openssl_hashlib" = yes], - [$OPENSSL_INCLUDES $LIBHASHLIB_INTERNAL_CFLAGS], - [$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS $LIBHASHLIB_INTERNAL_LDFLAGS]) + [$OPENSSL_INCLUDES], [$OPENSSL_LDFLAGS $OPENSSL_LDFLAGS_RPATH $LIBCRYPTO_LIBS]) dnl test modules PY_STDLIB_MOD([_testcapi], From b74f3bed51378896f2c7c720e505e87373e68c79 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Sat, 2 Aug 2025 14:57:01 +0300 Subject: [PATCH 14/87] gh-137308: Replace a single docstring with `pass` in `-OO` mode (#137318) This is required so we would never have empty node bodies. Refs #130087 --- Lib/test/test_ast/test_ast.py | 125 ++++++++++++++++++ ...-08-02-10-27-53.gh-issue-137308.at05p_.rst | 3 + Python/ast_preprocess.c | 27 +++- 3 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-08-02-10-27-53.gh-issue-137308.at05p_.rst diff --git a/Lib/test/test_ast/test_ast.py b/Lib/test/test_ast/test_ast.py index 13dcb5238945b6..1e6f60074308e2 100644 --- a/Lib/test/test_ast/test_ast.py +++ b/Lib/test/test_ast/test_ast.py @@ -220,6 +220,131 @@ def test_negative_locations_for_compile(self): # This also must not crash: ast.parse(tree, optimize=2) + def test_docstring_optimization_single_node(self): + # https://github.com/python/cpython/issues/137308 + class_example1 = textwrap.dedent(''' + class A: + """Docstring""" + ''') + class_example2 = textwrap.dedent(''' + class A: + """ + Docstring""" + ''') + def_example1 = textwrap.dedent(''' + def some(): + """Docstring""" + ''') + def_example2 = textwrap.dedent(''' + def some(): + """Docstring + """ + ''') + async_def_example1 = textwrap.dedent(''' + async def some(): + """Docstring""" + ''') + async_def_example2 = textwrap.dedent(''' + async def some(): + """ + Docstring + """ + ''') + for code in [ + class_example1, + class_example2, + def_example1, + def_example2, + async_def_example1, + async_def_example2, + ]: + for opt_level in [0, 1, 2]: + with self.subTest(code=code, opt_level=opt_level): + mod = ast.parse(code, optimize=opt_level) + self.assertEqual(len(mod.body[0].body), 1) + if opt_level == 2: + pass_stmt = mod.body[0].body[0] + self.assertIsInstance(pass_stmt, ast.Pass) + self.assertEqual( + vars(pass_stmt), + { + 'lineno': 3, + 'col_offset': 4, + 'end_lineno': 3, + 'end_col_offset': 8, + }, + ) + else: + self.assertIsInstance(mod.body[0].body[0], ast.Expr) + self.assertIsInstance( + mod.body[0].body[0].value, + ast.Constant, + ) + + compile(code, "a", "exec") + compile(code, "a", "exec", optimize=opt_level) + compile(mod, "a", "exec") + compile(mod, "a", "exec", optimize=opt_level) + + def test_docstring_optimization_multiple_nodes(self): + # https://github.com/python/cpython/issues/137308 + class_example = textwrap.dedent( + """ + class A: + ''' + Docstring + ''' + x = 1 + """ + ) + + def_example = textwrap.dedent( + """ + def some(): + ''' + Docstring + + ''' + x = 1 + """ + ) + + async_def_example = textwrap.dedent( + """ + async def some(): + + '''Docstring + + ''' + x = 1 + """ + ) + + for code in [ + class_example, + def_example, + async_def_example, + ]: + for opt_level in [0, 1, 2]: + with self.subTest(code=code, opt_level=opt_level): + mod = ast.parse(code, optimize=opt_level) + if opt_level == 2: + self.assertNotIsInstance( + mod.body[0].body[0], + (ast.Pass, ast.Expr), + ) + else: + self.assertIsInstance(mod.body[0].body[0], ast.Expr) + self.assertIsInstance( + mod.body[0].body[0].value, + ast.Constant, + ) + + compile(code, "a", "exec") + compile(code, "a", "exec", optimize=opt_level) + compile(mod, "a", "exec") + compile(mod, "a", "exec", optimize=opt_level) + def test_slice(self): slc = ast.parse("x[::]").body[0].value.slice self.assertIsNone(slc.upper) diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-08-02-10-27-53.gh-issue-137308.at05p_.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-02-10-27-53.gh-issue-137308.at05p_.rst new file mode 100644 index 00000000000000..8003de422b2919 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-02-10-27-53.gh-issue-137308.at05p_.rst @@ -0,0 +1,3 @@ +A standalone docstring in a node body is optimized as a :keyword:`pass` +statement to ensure that the node's body is never empty. There was a +:exc:`ValueError` in :func:`compile` otherwise. diff --git a/Python/ast_preprocess.c b/Python/ast_preprocess.c index bafd67ed790b20..44d3075098be75 100644 --- a/Python/ast_preprocess.c +++ b/Python/ast_preprocess.c @@ -435,13 +435,38 @@ stmt_seq_remove_item(asdl_stmt_seq *stmts, Py_ssize_t idx) return 1; } +static int +remove_docstring(asdl_stmt_seq *stmts, Py_ssize_t idx, PyArena *ctx_) +{ + assert(_PyAST_GetDocString(stmts) != NULL); + // In case there's just the docstring in the body, replace it with `pass` + // keyword, so body won't be empty. + if (asdl_seq_LEN(stmts) == 1) { + stmt_ty docstring = (stmt_ty)asdl_seq_GET(stmts, 0); + stmt_ty pass = _PyAST_Pass( + docstring->lineno, docstring->col_offset, + // we know that `pass` always takes 4 chars and a single line, + // while docstring can span on multiple lines + docstring->lineno, docstring->col_offset + 4, + ctx_ + ); + if (pass == NULL) { + return 0; + } + asdl_seq_SET(stmts, 0, pass); + return 1; + } + // In case there are more than 1 body items, just remove the docstring. + return stmt_seq_remove_item(stmts, idx); +} + static int astfold_body(asdl_stmt_seq *stmts, PyArena *ctx_, _PyASTPreprocessState *state) { int docstring = _PyAST_GetDocString(stmts) != NULL; if (docstring && (state->optimize >= 2)) { /* remove the docstring */ - if (!stmt_seq_remove_item(stmts, 0)) { + if (!remove_docstring(stmts, 0, ctx_)) { return 0; } docstring = 0; From f195c2803002d4a4827c61171d8c327e230842b6 Mon Sep 17 00:00:00 2001 From: Inada Naoki Date: Sat, 2 Aug 2025 23:32:18 +0900 Subject: [PATCH 15/87] Doc: remove unused images (#137323) --- Doc/library/tulip_coro.dia | Bin 4459 -> 0 bytes Doc/library/tulip_coro.png | Bin 36812 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Doc/library/tulip_coro.dia delete mode 100644 Doc/library/tulip_coro.png diff --git a/Doc/library/tulip_coro.dia b/Doc/library/tulip_coro.dia deleted file mode 100644 index 70a33e3c00cf6e45d425e4c56e9a17561fa8c4ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4459 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 Date: Sat, 2 Aug 2025 16:37:25 +0200 Subject: [PATCH 16/87] Remove incorrect feature coverage comment from msgfmt script's docstring (#112862) Remove feature coverage comment from msgfmt script's docstring msgfmt handles plural forms since cb081b83. The comment was incorrectly applied in 637a33b -- original patch was from before the cb081b83 commit. Co-authored-by: Tomas R. --- Tools/i18n/msgfmt.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Tools/i18n/msgfmt.py b/Tools/i18n/msgfmt.py index cd5f1ed9f3e268..65254a7c375456 100755 --- a/Tools/i18n/msgfmt.py +++ b/Tools/i18n/msgfmt.py @@ -5,8 +5,7 @@ This program converts a textual Uniforum-style message catalog (.po file) into a binary GNU catalog (.mo file). This is essentially the same function as the -GNU msgfmt program, however, it is a simpler implementation. Currently it -does not handle plural forms but it does handle message contexts. +GNU msgfmt program, however, it is a simpler implementation. Usage: msgfmt.py [OPTIONS] filename.po From 801cf3fcdd27d8b6dd0fdd3c39e6c996e2b2f7fa Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Sat, 2 Aug 2025 16:49:34 +0100 Subject: [PATCH 17/87] GH-137276: Don't mark uop as escaping if the escaping call is on an exit branch (GH-137277) --- Include/internal/pycore_opcode_metadata.h | 6 +- Include/internal/pycore_uop_metadata.h | 8 +- Tools/cases_generator/analyzer.py | 144 +++++++++++++++------- 3 files changed, 108 insertions(+), 50 deletions(-) diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h index dd1bf2d1d2b51a..9f626cecd13630 100644 --- a/Include/internal/pycore_opcode_metadata.h +++ b/Include/internal/pycore_opcode_metadata.h @@ -1218,14 +1218,14 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[267] = { [LOAD_FAST_AND_CLEAR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG }, [LOAD_FAST_BORROW] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_PURE_FLAG }, [LOAD_FAST_BORROW_LOAD_FAST_BORROW] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG }, - [LOAD_FAST_CHECK] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, + [LOAD_FAST_CHECK] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG }, [LOAD_FAST_LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG }, [LOAD_FROM_DICT_OR_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, [LOAD_FROM_DICT_OR_GLOBALS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, [LOAD_GLOBAL] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, [LOAD_GLOBAL_BUILTIN] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG }, [LOAD_GLOBAL_MODULE] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG }, - [LOAD_LOCALS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, + [LOAD_LOCALS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG }, [LOAD_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, [LOAD_SMALL_INT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG }, [LOAD_SPECIAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, @@ -1250,7 +1250,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[267] = { [POP_TOP] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG | HAS_PURE_FLAG }, [PUSH_EXC_INFO] = { true, INSTR_FMT_IX, 0 }, [PUSH_NULL] = { true, INSTR_FMT_IX, HAS_PURE_FLAG }, - [RAISE_VARARGS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, + [RAISE_VARARGS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG }, [RERAISE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, [RESERVED] = { true, INSTR_FMT_IX, 0 }, [RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, diff --git a/Include/internal/pycore_uop_metadata.h b/Include/internal/pycore_uop_metadata.h index 3348ce0f204f5a..d6afdb0b4b5805 100644 --- a/Include/internal/pycore_uop_metadata.h +++ b/Include/internal/pycore_uop_metadata.h @@ -24,7 +24,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = { [_CHECK_PERIODIC] = HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_CHECK_PERIODIC_IF_NOT_YIELD_FROM] = HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_RESUME_CHECK] = HAS_DEOPT_FLAG, - [_LOAD_FAST_CHECK] = HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, + [_LOAD_FAST_CHECK] = HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG, [_LOAD_FAST_0] = HAS_LOCAL_FLAG | HAS_PURE_FLAG, [_LOAD_FAST_1] = HAS_LOCAL_FLAG | HAS_PURE_FLAG, [_LOAD_FAST_2] = HAS_LOCAL_FLAG | HAS_PURE_FLAG, @@ -148,7 +148,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = { [_DELETE_ATTR] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_STORE_GLOBAL] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_DELETE_GLOBAL] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG, - [_LOAD_LOCALS] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, + [_LOAD_LOCALS] = HAS_ERROR_FLAG, [_LOAD_NAME] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_LOAD_GLOBAL] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_PUSH_NULL_CONDITIONAL] = HAS_ARG_FLAG, @@ -308,7 +308,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = { [_SWAP] = HAS_ARG_FLAG | HAS_PURE_FLAG, [_GUARD_IS_TRUE_POP] = HAS_EXIT_FLAG, [_GUARD_IS_FALSE_POP] = HAS_EXIT_FLAG, - [_GUARD_IS_NONE_POP] = HAS_EXIT_FLAG | HAS_ESCAPES_FLAG, + [_GUARD_IS_NONE_POP] = HAS_EXIT_FLAG, [_GUARD_IS_NOT_NONE_POP] = HAS_EXIT_FLAG | HAS_ESCAPES_FLAG, [_JUMP_TO_TOP] = 0, [_SET_IP] = 0, @@ -330,7 +330,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = { [_LOAD_CONST_UNDER_INLINE] = 0, [_LOAD_CONST_UNDER_INLINE_BORROW] = 0, [_CHECK_FUNCTION] = HAS_DEOPT_FLAG, - [_START_EXECUTOR] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG, + [_START_EXECUTOR] = HAS_DEOPT_FLAG, [_MAKE_WARM] = 0, [_FATAL_ERROR] = 0, [_DEOPT] = 0, diff --git a/Tools/cases_generator/analyzer.py b/Tools/cases_generator/analyzer.py index 6466d2615cd14e..a3c38ecdea3e1f 100644 --- a/Tools/cases_generator/analyzer.py +++ b/Tools/cases_generator/analyzer.py @@ -5,7 +5,7 @@ import re from typing import Optional, Callable -from parser import Stmt, SimpleStmt, BlockStmt, IfStmt, WhileStmt +from parser import Stmt, SimpleStmt, BlockStmt, IfStmt, WhileStmt, ForStmt, MacroIfStmt @dataclass class EscapingCall: @@ -723,53 +723,57 @@ def visit(stmt: Stmt) -> None: if error is not None: raise analysis_error(f"Escaping call '{error.text} in condition", error) +def escaping_call_in_simple_stmt(stmt: SimpleStmt, result: dict[SimpleStmt, EscapingCall]) -> None: + tokens = stmt.contents + for idx, tkn in enumerate(tokens): + try: + next_tkn = tokens[idx+1] + except IndexError: + break + if next_tkn.kind != lexer.LPAREN: + continue + if tkn.kind == lexer.IDENTIFIER: + if tkn.text.upper() == tkn.text: + # simple macro + continue + #if not tkn.text.startswith(("Py", "_Py", "monitor")): + # continue + if tkn.text.startswith(("sym_", "optimize_", "PyJitRef")): + # Optimize functions + continue + if tkn.text.endswith("Check"): + continue + if tkn.text.startswith("Py_Is"): + continue + if tkn.text.endswith("CheckExact"): + continue + if tkn.text in NON_ESCAPING_FUNCTIONS: + continue + elif tkn.kind == "RPAREN": + prev = tokens[idx-1] + if prev.text.endswith("_t") or prev.text == "*" or prev.text == "int": + #cast + continue + elif tkn.kind != "RBRACKET": + continue + if tkn.text in ("PyStackRef_CLOSE", "PyStackRef_XCLOSE"): + if len(tokens) <= idx+2: + raise analysis_error("Unexpected end of file", next_tkn) + kills = tokens[idx+2] + if kills.kind != "IDENTIFIER": + raise analysis_error(f"Expected identifier, got '{kills.text}'", kills) + else: + kills = None + result[stmt] = EscapingCall(stmt, tkn, kills) + + def find_escaping_api_calls(instr: parser.CodeDef) -> dict[SimpleStmt, EscapingCall]: result: dict[SimpleStmt, EscapingCall] = {} def visit(stmt: Stmt) -> None: if not isinstance(stmt, SimpleStmt): return - tokens = stmt.contents - for idx, tkn in enumerate(tokens): - try: - next_tkn = tokens[idx+1] - except IndexError: - break - if next_tkn.kind != lexer.LPAREN: - continue - if tkn.kind == lexer.IDENTIFIER: - if tkn.text.upper() == tkn.text: - # simple macro - continue - #if not tkn.text.startswith(("Py", "_Py", "monitor")): - # continue - if tkn.text.startswith(("sym_", "optimize_", "PyJitRef")): - # Optimize functions - continue - if tkn.text.endswith("Check"): - continue - if tkn.text.startswith("Py_Is"): - continue - if tkn.text.endswith("CheckExact"): - continue - if tkn.text in NON_ESCAPING_FUNCTIONS: - continue - elif tkn.kind == "RPAREN": - prev = tokens[idx-1] - if prev.text.endswith("_t") or prev.text == "*" or prev.text == "int": - #cast - continue - elif tkn.kind != "RBRACKET": - continue - if tkn.text in ("PyStackRef_CLOSE", "PyStackRef_XCLOSE"): - if len(tokens) <= idx+2: - raise analysis_error("Unexpected end of file", next_tkn) - kills = tokens[idx+2] - if kills.kind != "IDENTIFIER": - raise analysis_error(f"Expected identifier, got '{kills.text}'", kills) - else: - kills = None - result[stmt] = EscapingCall(stmt, tkn, kills) + escaping_call_in_simple_stmt(stmt, result) instr.block.accept(visit) check_escaping_calls(instr, result) @@ -822,6 +826,60 @@ def stack_effect_only_peeks(instr: parser.InstDef) -> bool: ) +def stmt_is_simple_exit(stmt: Stmt) -> bool: + if not isinstance(stmt, SimpleStmt): + return False + tokens = stmt.contents + if len(tokens) < 4: + return False + return ( + tokens[0].text in ("ERROR_IF", "DEOPT_IF", "EXIT_IF") + and + tokens[1].text == "(" + and + tokens[2].text in ("true", "1") + and + tokens[3].text == ")" + ) + + +def stmt_list_escapes(stmts: list[Stmt]) -> bool: + if not stmts: + return False + if stmt_is_simple_exit(stmts[-1]): + return False + for stmt in stmts: + if stmt_escapes(stmt): + return True + return False + + +def stmt_escapes(stmt: Stmt) -> bool: + if isinstance(stmt, BlockStmt): + return stmt_list_escapes(stmt.body) + elif isinstance(stmt, SimpleStmt): + for tkn in stmt.contents: + if tkn.text == "DECREF_INPUTS": + return True + d: dict[SimpleStmt, EscapingCall] = {} + escaping_call_in_simple_stmt(stmt, d) + return bool(d) + elif isinstance(stmt, IfStmt): + if stmt.else_body and stmt_escapes(stmt.else_body): + return True + return stmt_escapes(stmt.body) + elif isinstance(stmt, MacroIfStmt): + if stmt.else_body and stmt_list_escapes(stmt.else_body): + return True + return stmt_list_escapes(stmt.body) + elif isinstance(stmt, ForStmt): + return stmt_escapes(stmt.body) + elif isinstance(stmt, WhileStmt): + return stmt_escapes(stmt.body) + else: + assert False, "Unexpected statement type" + + def compute_properties(op: parser.CodeDef) -> Properties: escaping_calls = find_escaping_api_calls(op) has_free = ( @@ -843,7 +901,7 @@ def compute_properties(op: parser.CodeDef) -> Properties: ) error_with_pop = has_error_with_pop(op) error_without_pop = has_error_without_pop(op) - escapes = bool(escaping_calls) or variable_used(op, "DECREF_INPUTS") + escapes = stmt_escapes(op.block) pure = False if isinstance(op, parser.LabelDef) else "pure" in op.annotations no_save_ip = False if isinstance(op, parser.LabelDef) else "no_save_ip" in op.annotations return Properties( From 158b28dd1906c5d3fac7955f87ba808f1e89fdad Mon Sep 17 00:00:00 2001 From: sobolevn Date: Sun, 3 Aug 2025 10:40:55 +0300 Subject: [PATCH 18/87] gh-137191: Fix how type parameters are collected from `Protocol` and `Generic` bases with parameters (#137281) --- Doc/whatsnew/3.15.rst | 9 ++++ Lib/test/test_typing.py | 42 +++++++++++++++++++ Lib/typing.py | 32 ++++++++++++-- ...-07-31-16-43-16.gh-issue-137191.FIogE8.rst | 4 ++ 4 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-07-31-16-43-16.gh-issue-137191.FIogE8.rst diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 1e54a61a449adc..010f6ce7f50e1e 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -477,6 +477,15 @@ typing or ``TD = TypedDict("TD", {})`` instead. (Contributed by Bénédikt Tran in :gh:`133823`.) +* Code like ``class ExtraTypeVars(P1[S], Protocol[T, T2]): ...`` now raises + a :exc:`TypeError`, because ``S`` is not listed in ``Protocol`` parameters. + (Contributed by Nikita Sobolev in :gh:`137191`.) + +* Code like ``class B2(A[T2], Protocol[T1, T2]): ...`` now correctly handles + type parameters order: it is ``(T1, T2)``, not ``(T2, T1)`` + as it was incorrectly infered in runtime before. + (Contributed by Nikita Sobolev in :gh:`137191`.) + wave ---- diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index b1615bbff383c2..6317d4657619f0 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -3958,6 +3958,7 @@ class C: pass def test_defining_generic_protocols(self): T = TypeVar('T') + T2 = TypeVar('T2') S = TypeVar('S') @runtime_checkable @@ -3967,17 +3968,26 @@ def meth(self): pass class P(PR[int, T], Protocol[T]): y = 1 + self.assertEqual(P.__parameters__, (T,)) + with self.assertRaises(TypeError): PR[int] with self.assertRaises(TypeError): P[int, str] + with self.assertRaisesRegex( + TypeError, + re.escape('Some type variables (~S) are not listed in Protocol[~T, ~T2]'), + ): + class ExtraTypeVars(P[S], Protocol[T, T2]): ... class C(PR[int, T]): pass + self.assertEqual(C.__parameters__, (T,)) self.assertIsInstance(C[str](), C) def test_defining_generic_protocols_old_style(self): T = TypeVar('T') + T2 = TypeVar('T2') S = TypeVar('S') @runtime_checkable @@ -3996,9 +4006,19 @@ class P(PR[int, str], Protocol): class P1(Protocol, Generic[T]): def bar(self, x: T) -> str: ... + self.assertEqual(P1.__parameters__, (T,)) + class P2(Generic[T], Protocol): def bar(self, x: T) -> str: ... + self.assertEqual(P2.__parameters__, (T,)) + + msg = re.escape('Some type variables (~S) are not listed in Protocol[~T, ~T2]') + with self.assertRaisesRegex(TypeError, msg): + class ExtraTypeVars(P1[S], Protocol[T, T2]): ... + with self.assertRaisesRegex(TypeError, msg): + class ExtraTypeVars(P2[S], Protocol[T, T2]): ... + @runtime_checkable class PSub(P1[str], Protocol): x = 1 @@ -4011,6 +4031,28 @@ def bar(self, x: str) -> str: self.assertIsInstance(Test(), PSub) + def test_protocol_parameter_order(self): + # https://github.com/python/cpython/issues/137191 + T1 = TypeVar("T1") + T2 = TypeVar("T2", default=object) + + class A(Protocol[T1]): ... + + class B0(A[T2], Generic[T1, T2]): ... + self.assertEqual(B0.__parameters__, (T1, T2)) + + class B1(A[T2], Protocol, Generic[T1, T2]): ... + self.assertEqual(B1.__parameters__, (T1, T2)) + + class B2(A[T2], Protocol[T1, T2]): ... + self.assertEqual(B2.__parameters__, (T1, T2)) + + class B3[T1, T2](A[T2], Protocol): + @staticmethod + def get_typeparams(): + return (T1, T2) + self.assertEqual(B3.__parameters__, B3.get_typeparams()) + def test_pep695_generic_protocol_callable_members(self): @runtime_checkable class Foo[T](Protocol): diff --git a/Lib/typing.py b/Lib/typing.py index f1455c273d31ca..036636f7e0e6a8 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -256,16 +256,27 @@ def _type_repr(obj): return _lazy_annotationlib.type_repr(obj) -def _collect_type_parameters(args, *, enforce_default_ordering: bool = True): +def _collect_type_parameters( + args, + *, + enforce_default_ordering: bool = True, + validate_all: bool = False, +): """Collect all type parameters in args in order of first appearance (lexicographic order). + Having an explicit `Generic` or `Protocol` base class determines + the exact parameter order. + For example:: >>> P = ParamSpec('P') >>> T = TypeVar('T') >>> _collect_type_parameters((T, Callable[P, T])) (~T, ~P) + >>> _collect_type_parameters((list[T], Generic[P, T])) + (~P, ~T) + """ # required type parameter cannot appear after parameter with default default_encountered = False @@ -297,6 +308,17 @@ def _collect_type_parameters(args, *, enforce_default_ordering: bool = True): ' follows type parameter with a default') parameters.append(t) + elif ( + not validate_all + and isinstance(t, _GenericAlias) + and t.__origin__ in (Generic, Protocol) + ): + # If we see explicit `Generic[...]` or `Protocol[...]` base classes, + # we need to just copy them as-is. + # Unless `validate_all` is passed, in this case it means that + # we are doing a validation of `Generic` subclasses, + # then we collect all unique parameters to be able to inspect them. + parameters = t.__parameters__ else: if _is_unpacked_typevartuple(t): type_var_tuple_encountered = True @@ -1156,20 +1178,22 @@ def _generic_init_subclass(cls, *args, **kwargs): if error: raise TypeError("Cannot inherit from plain Generic") if '__orig_bases__' in cls.__dict__: - tvars = _collect_type_parameters(cls.__orig_bases__) + tvars = _collect_type_parameters(cls.__orig_bases__, validate_all=True) # Look for Generic[T1, ..., Tn]. # If found, tvars must be a subset of it. # If not found, tvars is it. # Also check for and reject plain Generic, # and reject multiple Generic[...]. gvars = None + basename = None for base in cls.__orig_bases__: if (isinstance(base, _GenericAlias) and - base.__origin__ is Generic): + base.__origin__ in (Generic, Protocol)): if gvars is not None: raise TypeError( "Cannot inherit from Generic[...] multiple times.") gvars = base.__parameters__ + basename = base.__origin__.__name__ if gvars is not None: tvarset = set(tvars) gvarset = set(gvars) @@ -1177,7 +1201,7 @@ def _generic_init_subclass(cls, *args, **kwargs): s_vars = ', '.join(str(t) for t in tvars if t not in gvarset) s_args = ', '.join(str(g) for g in gvars) raise TypeError(f"Some type variables ({s_vars}) are" - f" not listed in Generic[{s_args}]") + f" not listed in {basename}[{s_args}]") tvars = gvars cls.__parameters__ = tuple(tvars) diff --git a/Misc/NEWS.d/next/Library/2025-07-31-16-43-16.gh-issue-137191.FIogE8.rst b/Misc/NEWS.d/next/Library/2025-07-31-16-43-16.gh-issue-137191.FIogE8.rst new file mode 100644 index 00000000000000..b2dba81251eed6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-07-31-16-43-16.gh-issue-137191.FIogE8.rst @@ -0,0 +1,4 @@ +Fix how type parameters are collected, when :class:`typing.Protocol` are +specified with explicit parameters. Now, :class:`typing.Generic` and +:class:`typing.Protocol` always dictate the parameter number +and parameter ordering of types. Previous behavior was a bug. From 676748d4da3671205f537ecd61a492861e37b77b Mon Sep 17 00:00:00 2001 From: Rogdham <3994389+Rogdham@users.noreply.github.com> Date: Sun, 3 Aug 2025 17:04:45 +0200 Subject: [PATCH 19/87] gh-132983: Fix docstrings in ``ZstdDict`` (#137321) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- Modules/_zstd/clinic/zstddict.c.h | 4 ++-- Modules/_zstd/zstddict.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Modules/_zstd/clinic/zstddict.c.h b/Modules/_zstd/clinic/zstddict.c.h index 79db85405d6e6b..166d925a542352 100644 --- a/Modules/_zstd/clinic/zstddict.c.h +++ b/Modules/_zstd/clinic/zstddict.c.h @@ -198,7 +198,7 @@ PyDoc_STRVAR(_zstd_ZstdDict_as_prefix__doc__, "1. Prefix is compatible with long distance matching, while dictionary is not.\n" "2. It only works for the first frame, then the compressor/decompressor will\n" " return to no prefix state.\n" -"3. When decompressing, must use the same prefix as when compressing.\""); +"3. When decompressing, must use the same prefix as when compressing."); #if defined(_zstd_ZstdDict_as_prefix_DOCSTR) # undef _zstd_ZstdDict_as_prefix_DOCSTR #endif @@ -222,4 +222,4 @@ _zstd_ZstdDict_as_prefix_get(PyObject *self, void *Py_UNUSED(context)) { return _zstd_ZstdDict_as_prefix_get_impl((ZstdDict *)self); } -/*[clinic end generated code: output=4696cbc722e5fdfc input=a9049054013a1b77]*/ +/*[clinic end generated code: output=f41d9e2e2cc2928f input=a9049054013a1b77]*/ diff --git a/Modules/_zstd/zstddict.c b/Modules/_zstd/zstddict.c index 35d6ca8e55a265..76e966f5b1b52a 100644 --- a/Modules/_zstd/zstddict.c +++ b/Modules/_zstd/zstddict.c @@ -119,10 +119,10 @@ ZstdDict_dealloc(PyObject *ob) } PyDoc_STRVAR(ZstdDict_dictid_doc, -"the Zstandard dictionary, an int between 0 and 2**32.\n\n" -"A non-zero value represents an ordinary Zstandard dictionary, " +"The Zstandard dictionary, an int between 0 and 2**32.\n\n" +"A non-zero value represents an ordinary Zstandard dictionary,\n" "conforming to the standardised format.\n\n" -"The special value '0' means a 'raw content' dictionary," +"A value of zero indicates a 'raw content' dictionary,\n" "without any restrictions on format or content."); static PyObject * @@ -210,12 +210,12 @@ compress(dat, zstd_dict=zd.as_prefix) 1. Prefix is compatible with long distance matching, while dictionary is not. 2. It only works for the first frame, then the compressor/decompressor will return to no prefix state. -3. When decompressing, must use the same prefix as when compressing." +3. When decompressing, must use the same prefix as when compressing. [clinic start generated code]*/ static PyObject * _zstd_ZstdDict_as_prefix_get_impl(ZstdDict *self) -/*[clinic end generated code: output=6f7130c356595a16 input=d59757b0b5a9551a]*/ +/*[clinic end generated code: output=6f7130c356595a16 input=45b3b6110f36d127]*/ { return Py_BuildValue("Oi", self, DICT_TYPE_PREFIX); } From 0153d82a5ab0c6ac16c046bdd4438ea11b58d59d Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Sun, 3 Aug 2025 17:10:51 +0100 Subject: [PATCH 20/87] gh-137314: Fix incorrect treatment of format specs in raw fstrings (#137328) --- Lib/test/test_fstring.py | 28 +++++++++++++++++++ ...-08-02-23-04-57.gh-issue-137314.wjEdzD.rst | 5 ++++ Parser/action_helpers.c | 10 ++++++- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-08-02-23-04-57.gh-issue-137314.wjEdzD.rst diff --git a/Lib/test/test_fstring.py b/Lib/test/test_fstring.py index b41e02c3a16379..41cefe0e286d50 100644 --- a/Lib/test/test_fstring.py +++ b/Lib/test/test_fstring.py @@ -1831,6 +1831,34 @@ def test_newlines_in_format_specifiers(self): for case in valid_cases: compile(case, "", "exec") + def test_raw_fstring_format_spec(self): + # Test raw f-string format spec behavior (Issue #137314). + # + # Raw f-strings should preserve literal backslashes in format specifications, + # not interpret them as escape sequences. + class UnchangedFormat: + """Test helper that returns the format spec unchanged.""" + def __format__(self, format): + return format + + # Test basic escape sequences + self.assertEqual(f"{UnchangedFormat():\xFF}", 'ÿ') + self.assertEqual(rf"{UnchangedFormat():\xFF}", '\\xFF') + + # Test nested expressions with raw/non-raw combinations + self.assertEqual(rf"{UnchangedFormat():{'\xFF'}}", 'ÿ') + self.assertEqual(f"{UnchangedFormat():{r'\xFF'}}", '\\xFF') + self.assertEqual(rf"{UnchangedFormat():{r'\xFF'}}", '\\xFF') + + # Test continuation character in format specs + self.assertEqual(f"""{UnchangedFormat():{'a'\ + 'b'}}""", 'ab') + self.assertEqual(rf"""{UnchangedFormat():{'a'\ + 'b'}}""", 'ab') + + # Test multiple format specs in same raw f-string + self.assertEqual(rf"{UnchangedFormat():\xFF} {UnchangedFormat():\n}", '\\xFF \\n') + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-08-02-23-04-57.gh-issue-137314.wjEdzD.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-02-23-04-57.gh-issue-137314.wjEdzD.rst new file mode 100644 index 00000000000000..09d0c3e68fc1ed --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-02-23-04-57.gh-issue-137314.wjEdzD.rst @@ -0,0 +1,5 @@ +Fixed a regression where raw f-strings incorrectly interpreted +escape sequences in format specifications. Raw f-strings now properly preserve +literal backslashes in format specs, matching the behavior from Python 3.11. +For example, ``rf"{obj:\xFF}"`` now correctly produces ``'\\xFF'`` instead of +``'ÿ'``. Patch by Pablo Galindo. diff --git a/Parser/action_helpers.c b/Parser/action_helpers.c index ebc94715b6f361..0763866576733f 100644 --- a/Parser/action_helpers.c +++ b/Parser/action_helpers.c @@ -1404,7 +1404,15 @@ expr_ty _PyPegen_decoded_constant_from_token(Parser* p, Token* tok) { if (PyBytes_AsStringAndSize(tok->bytes, &bstr, &bsize) == -1) { return NULL; } - PyObject* str = _PyPegen_decode_string(p, 0, bstr, bsize, tok); + + // Check if we're inside a raw f-string for format spec decoding + int is_raw = 0; + if (INSIDE_FSTRING(p->tok)) { + tokenizer_mode *mode = TOK_GET_MODE(p->tok); + is_raw = mode->raw; + } + + PyObject* str = _PyPegen_decode_string(p, is_raw, bstr, bsize, tok); if (str == NULL) { return NULL; } From 1612dcbafe763014deefd679fe75ac5831a14a43 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 3 Aug 2025 19:41:12 +0300 Subject: [PATCH 21/87] gh-137341: Remove more word duplications (GH-137342) --- Doc/c-api/object.rst | 4 ++-- Doc/library/urllib.request.rst | 2 +- Doc/whatsnew/3.15.rst | 2 +- Lib/asyncio/base_events.py | 4 ++-- Lib/test/libregrtest/utils.py | 2 +- Lib/test/support/__init__.py | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Doc/c-api/object.rst b/Doc/c-api/object.rst index 55f0d0f9fb7ff8..78599e704b1317 100644 --- a/Doc/c-api/object.rst +++ b/Doc/c-api/object.rst @@ -197,7 +197,7 @@ Object Protocol in favour of using :c:func:`PyObject_DelAttr`, but there are currently no plans to remove it. - The function must not be called with ``NULL`` *v* and an an exception set. + The function must not be called with a ``NULL`` *v* and an exception set. This case can arise from forgetting ``NULL`` checks and would delete the attribute. @@ -214,7 +214,7 @@ Object Protocol If *v* is ``NULL``, the attribute is deleted, but this feature is deprecated in favour of using :c:func:`PyObject_DelAttrString`. - The function must not be called with ``NULL`` *v* and an an exception set. + The function must not be called with a ``NULL`` *v* and an exception set. This case can arise from forgetting ``NULL`` checks and would delete the attribute. diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst index e514b98fc5d553..5f796578eaa64e 100644 --- a/Doc/library/urllib.request.rst +++ b/Doc/library/urllib.request.rst @@ -837,7 +837,7 @@ The following attribute and methods should only be used by classes derived from 1. a :class:`Request` object, #. a file-like object with the HTTP error body, #. the three-digit code of the error, as a string, - #. the user-visible explanation of the code, as as string, and + #. the user-visible explanation of the code, as a string, and #. the headers of the error, as a mapping object. Return values and exceptions raised should be the same as those of diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 010f6ce7f50e1e..e716d7bb0f2a5c 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -183,7 +183,7 @@ Other language changes compatibility between versions of Python, ensure that an explicit ``encoding`` argument is always provided. The :ref:`opt-in encoding warning ` can be used to identify code that may be affected by this change. - The special special ``encoding='locale'`` argument uses the current locale + The special ``encoding='locale'`` argument uses the current locale encoding, and has been supported since Python 3.10. To retain the previous behaviour, Python's UTF-8 mode may be disabled with diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 520d4b398545bf..8cbb71f708537f 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -636,7 +636,7 @@ def _check_running(self): def _run_forever_setup(self): """Prepare the run loop to process events. - This method exists so that custom custom event loop subclasses (e.g., event loops + This method exists so that custom event loop subclasses (e.g., event loops that integrate a GUI event loop with Python's event loop) have access to all the loop setup logic. """ @@ -656,7 +656,7 @@ def _run_forever_setup(self): def _run_forever_cleanup(self): """Clean up after an event loop finishes the looping over events. - This method exists so that custom custom event loop subclasses (e.g., event loops + This method exists so that custom event loop subclasses (e.g., event loops that integrate a GUI event loop with Python's event loop) have access to all the loop cleanup logic. """ diff --git a/Lib/test/libregrtest/utils.py b/Lib/test/libregrtest/utils.py index 72b8ea89e62ee0..d94fb84a743828 100644 --- a/Lib/test/libregrtest/utils.py +++ b/Lib/test/libregrtest/utils.py @@ -536,7 +536,7 @@ def normalize_test_name(test_full_name: str, *, if is_error and short_name in _TEST_LIFECYCLE_HOOKS: if test_full_name.startswith(('setUpModule (', 'tearDownModule (')): # if setUpModule() or tearDownModule() failed, don't filter - # tests with the test file name, don't use use filters. + # tests with the test file name, don't use filters. return None # This means that we have a failure in a life-cycle hook, diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index cea2f09aae5d51..29cf32966d4e4a 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -1686,7 +1686,7 @@ def check__all__(test_case, module, name_of_module=None, extra=(), 'module'. The 'name_of_module' argument can specify (as a string or tuple thereof) - what module(s) an API could be defined in in order to be detected as a + what module(s) an API could be defined in order to be detected as a public API. One case for this is when 'module' imports part of its public API from other modules, possibly a C backend (like 'csv' and its '_csv'). From 13e21b2fd6343ba8309ed857a2cbf6d6995ca5f2 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Sun, 3 Aug 2025 20:32:46 +0200 Subject: [PATCH 22/87] GH-136155: Use ``sphinxext-opengraph`` v0.11.0 (#137348) --- Doc/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/requirements.txt b/Doc/requirements.txt index a2960ea9aa0203..924e218c9f67d9 100644 --- a/Doc/requirements.txt +++ b/Doc/requirements.txt @@ -11,7 +11,7 @@ sphinx~=8.2.0 blurb -sphinxext-opengraph~=0.10.0 +sphinxext-opengraph~=0.11.0 sphinx-notfound-page~=1.0.0 # The theme used by the documentation is stored separately, so we need From 406dc714f6b4dbc18d4e5119a10621386bccbee3 Mon Sep 17 00:00:00 2001 From: Kliment Lamonov Date: Sun, 3 Aug 2025 21:43:13 +0300 Subject: [PATCH 23/87] gh-136567: Add information about lost prefixes to `Tools/cases_generator/interpreter_definition.md` (#136780) --- Tools/cases_generator/interpreter_definition.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Tools/cases_generator/interpreter_definition.md b/Tools/cases_generator/interpreter_definition.md index 72020133738fa5..29e4e74da72154 100644 --- a/Tools/cases_generator/interpreter_definition.md +++ b/Tools/cases_generator/interpreter_definition.md @@ -174,7 +174,13 @@ list of annotations and their meanings are as follows: * `override`. For external use by other interpreter definitions to override the current instruction definition. * `pure`. This instruction has no side effects. -* 'tierN'. This instruction is only used by the tier N interpreter. +* `tierN`. This instruction is only used by the tier N interpreter. +* `specializing`. A prefix for an instructions related to adaptive interpreter. +* `replaced`. This instruction will be replaced in the final bytecode by its directed + version (either forward or backward). +* `register`. Currently does nothing. +* `replicate(N)`. Replicate the instruction N times to store the oparg "inside" the instruction. +* `no_save_ip`. This instruction does not affect the instruction pointer. ### Special functions/macros From 57eab1b8f78039142d58d207d39ae734d67952cf Mon Sep 17 00:00:00 2001 From: Rogdham <3994389+Rogdham@users.noreply.github.com> Date: Mon, 4 Aug 2025 03:36:12 +0200 Subject: [PATCH 24/87] gh-132983: Use ``Py_UNREACHABLE`` in ``_zstd_load_impl()`` (#137320) --- Modules/_zstd/decompressor.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Modules/_zstd/decompressor.c b/Modules/_zstd/decompressor.c index b00ee05d2f51bf..026d39f68291da 100644 --- a/Modules/_zstd/decompressor.c +++ b/Modules/_zstd/decompressor.c @@ -157,10 +157,7 @@ _zstd_load_impl(ZstdDecompressor *self, ZstdDict *zd, zd->dict_len); } else { - /* Impossible code path */ - PyErr_SetString(PyExc_SystemError, - "load_d_dict() impossible code path"); - return -1; + Py_UNREACHABLE(); } /* Check error */ From 506542b5966073203f0da71a487de24e596b7979 Mon Sep 17 00:00:00 2001 From: Richard Si Date: Sun, 3 Aug 2025 22:00:17 -0400 Subject: [PATCH 25/87] gh-137257: Upgrade bundled pip to 25.2 (GH-137258) --- Lib/ensurepip/__init__.py | 2 +- ...none-any.whl => pip-25.2-py3-none-any.whl} | Bin 1825227 -> 1752557 bytes ...-07-30-18-07-33.gh-issue-137257.XBtzf2.rst | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) rename Lib/ensurepip/_bundled/{pip-25.1.1-py3-none-any.whl => pip-25.2-py3-none-any.whl} (58%) create mode 100644 Misc/NEWS.d/next/Library/2025-07-30-18-07-33.gh-issue-137257.XBtzf2.rst diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index aa641e94a8b336..4bd85990e8614a 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -10,7 +10,7 @@ __all__ = ["version", "bootstrap"] -_PIP_VERSION = "25.1.1" +_PIP_VERSION = "25.2" # Directory of system wheel packages. Some Linux distribution packaging # policies recommend against bundling dependencies. For example, Fedora diff --git a/Lib/ensurepip/_bundled/pip-25.1.1-py3-none-any.whl b/Lib/ensurepip/_bundled/pip-25.2-py3-none-any.whl similarity index 58% rename from Lib/ensurepip/_bundled/pip-25.1.1-py3-none-any.whl rename to Lib/ensurepip/_bundled/pip-25.2-py3-none-any.whl index 2fdcfbf9ff8139505ddc15b8379388ddba678397..e14bb3f37c0ff4cfa105c71d5e536f2f496cb160 100644 GIT binary patch delta 713191 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

>EhaPAN_gI(5HQr-ckk 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

8D3kaDT@qdQcO; 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ư^IIM3JyOx7Pf2yjkr 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

rukjQ+&2;X9U|%@=l@@97A{Y0VkI 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%0AUjShI6BYLxci``0|n>9>kY<&qc9Ji&T1>^W!l% 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

>n0R^UZKTK%{l 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

DXoKSV9mWGLz2 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 zℜ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


EC|A(>*%R# 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

r?e{_FzB>rZEO_4 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%0DGoY4Lh)esXP3WRYl0a}JKJzafK5 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

    mzsTt6* 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¨H7Z^2xULN*!4u<~ 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 z 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

    Jm; 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

    `hdh@30ozYuCaJ?2SO68sc_XIIn9Ga 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

    wQ!f*aL;yg5xj@DtSg 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 diff --git a/Misc/NEWS.d/next/Library/2025-07-30-18-07-33.gh-issue-137257.XBtzf2.rst b/Misc/NEWS.d/next/Library/2025-07-30-18-07-33.gh-issue-137257.XBtzf2.rst new file mode 100644 index 00000000000000..fad609854025c0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-07-30-18-07-33.gh-issue-137257.XBtzf2.rst @@ -0,0 +1 @@ +Bump the version of pip bundled in ensurepip to version 25.2 From b266fbc9ecd25d08ab572ecb91913e86b6ddc75e Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Mon, 4 Aug 2025 05:15:59 +0300 Subject: [PATCH 26/87] gh-122450: Expand documentation for ``Rational`` and ``Fraction`` (#136800) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Serhiy Storchaka --- Doc/library/fractions.rst | 11 ++++++----- Doc/library/numbers.rst | 4 ++-- Lib/numbers.py | 11 ++++++++++- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Doc/library/fractions.rst b/Doc/library/fractions.rst index 8796056b4b8722..d6d1c7a461c51c 100644 --- a/Doc/library/fractions.rst +++ b/Doc/library/fractions.rst @@ -14,8 +14,8 @@ The :mod:`fractions` module provides support for rational number arithmetic. -A Fraction instance can be constructed from a pair of integers, from -another rational number, or from a string. +A Fraction instance can be constructed from a pair of rational numbers, from +a single number, or from a string. .. index:: single: as_integer_ratio() @@ -25,8 +25,8 @@ another rational number, or from a string. The first version requires that *numerator* and *denominator* are instances of :class:`numbers.Rational` and returns a new :class:`Fraction` instance - with value equal to ``numerator/denominator`` where the denominator is positive. - If *denominator* is ``0``, it raises a :exc:`ZeroDivisionError`. + with a value equal to ``numerator/denominator``. + If *denominator* is zero, it raises a :exc:`ZeroDivisionError`. The second version requires that *number* is an instance of :class:`numbers.Rational` or has the :meth:`!as_integer_ratio` method @@ -125,7 +125,8 @@ another rational number, or from a string. .. attribute:: denominator - Denominator of the Fraction in lowest term. + Denominator of the Fraction in lowest terms. + Guaranteed to be positive. .. method:: as_integer_ratio() diff --git a/Doc/library/numbers.rst b/Doc/library/numbers.rst index 681d0b76f2a14b..57b35017072c97 100644 --- a/Doc/library/numbers.rst +++ b/Doc/library/numbers.rst @@ -69,11 +69,11 @@ The numeric tower .. attribute:: numerator - Abstract. + Abstract. The numerator of this rational number. .. attribute:: denominator - Abstract. + Abstract. The denominator of this rational number. .. class:: Integral diff --git a/Lib/numbers.py b/Lib/numbers.py index a2913e32cfada7..37fddb8917727b 100644 --- a/Lib/numbers.py +++ b/Lib/numbers.py @@ -290,18 +290,27 @@ def conjugate(self): class Rational(Real): - """.numerator and .denominator should be in lowest terms.""" + """To Real, Rational adds numerator and denominator properties. + + The numerator and denominator values should be in lowest terms, + with a positive denominator. + """ __slots__ = () @property @abstractmethod def numerator(self): + """The numerator of a rational number in lowest terms.""" raise NotImplementedError @property @abstractmethod def denominator(self): + """The denominator of a rational number in lowest terms. + + This denominator should be positive. + """ raise NotImplementedError # Concrete implementation of Real's conversion to float. From 3ec3d053452af8a769c18826ea61ba66fc73c8da Mon Sep 17 00:00:00 2001 From: Alexander Urieles Date: Mon, 4 Aug 2025 04:53:01 +0200 Subject: [PATCH 27/87] gh-81325: Support path-like objects with streaming TarFile (#137188) Co-authored-by: Emma Smith --- Lib/tarfile.py | 2 +- Lib/test/test_tarfile.py | 10 ++++++++++ .../2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 45f58eb8ac93cf..4bcca096651569 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -353,7 +353,7 @@ def __init__(self, name, mode, comptype, fileobj, bufsize, fileobj = _StreamProxy(fileobj) comptype = fileobj.getcomptype() - self.name = name or "" + self.name = os.fspath(name) if name is not None else "" self.mode = mode self.comptype = comptype self.fileobj = fileobj diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 28914df6b010d0..624468a222a200 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -1737,6 +1737,16 @@ def test_file_mode(self): finally: os.umask(original_umask) + def test_pathlike_name(self): + expected_name = os.path.abspath(tmpname) + tarpath = os_helper.FakePath(tmpname) + + for func in (tarfile.open, tarfile.TarFile.open): + with self.subTest(): + with func(tarpath, self.mode) as tar: + self.assertEqual(tar.name, expected_name) + os_helper.unlink(tmpname) + class GzipStreamWriteTest(GzipTest, StreamWriteTest): def test_source_directory_not_leaked(self): diff --git a/Misc/NEWS.d/next/Library/2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst b/Misc/NEWS.d/next/Library/2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst new file mode 100644 index 00000000000000..3d89b6eb92a0d6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst @@ -0,0 +1,2 @@ +:class:`tarfile.TarFile` now accepts a :term:`path-like ` when working on a tar archive. +(Contributed by Alexander Enrique Urieles Nieto in :gh:`81325`.) From a46ed665ff382a4c5cdd214a6a8ac0bcc60a03dd Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Mon, 4 Aug 2025 11:29:14 +0100 Subject: [PATCH 28/87] Remove Alex Waygood as a codeowner for pre-commit config (#137372) --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 02a7b5d45b4627..8dbc8fb102cc60 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -8,7 +8,7 @@ .github/** @ezio-melotti @hugovk @AA-Turner # pre-commit -.pre-commit-config.yaml @hugovk @AlexWaygood +.pre-commit-config.yaml @hugovk .ruff.toml @hugovk @AlexWaygood @AA-Turner # Build system From 4dd85b347fd8264453811e0873e0dffa333d9838 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Mon, 4 Aug 2025 16:30:29 +0300 Subject: [PATCH 29/87] gh-137368: document __index__() support for PyLong_AsInt32/64() (GH-137369) --- Doc/c-api/long.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Doc/c-api/long.rst b/Doc/c-api/long.rst index 2d0bda76697e81..31e2cd57034467 100644 --- a/Doc/c-api/long.rst +++ b/Doc/c-api/long.rst @@ -372,6 +372,10 @@ distinguished from a number. Use :c:func:`PyErr_Occurred` to disambiguate. Set *\*value* to a signed C :c:expr:`int32_t` or :c:expr:`int64_t` representation of *obj*. + If *obj* is not an instance of :c:type:`PyLongObject`, first call its + :meth:`~object.__index__` method (if present) to convert it to a + :c:type:`PyLongObject`. + If the *obj* value is out of range, raise an :exc:`OverflowError`. Set *\*value* and return ``0`` on success. From 8943bb722f2f88a95ea6c5ee36bb5d540740d792 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Mon, 4 Aug 2025 15:40:42 +0200 Subject: [PATCH 30/87] gh-136520: Clarify docs for _pack_ & _align_ (GH-137036) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move docs to the reference section & reduce the “tutorial” part to a quick intro & link. Clarify what values are accepted. Add macro/attribute equivalents. Discourage _align_ values that aren't powers of two. --- Doc/library/ctypes.rst | 44 ++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst index 09f596101b4d1e..d8dac24c8ab532 100644 --- a/Doc/library/ctypes.rst +++ b/Doc/library/ctypes.rst @@ -700,14 +700,10 @@ compiler does it. It is possible to override this behavior entirely by specifyi :attr:`~Structure._layout_` class attribute in the subclass definition; see the attribute documentation for details. -It is possible to specify the maximum alignment for the fields by setting -the :attr:`~Structure._pack_` class attribute to a positive integer. -This matches what ``#pragma pack(n)`` does in MSVC. - -It is also possible to set a minimum alignment for how the subclass itself is packed in the -same way ``#pragma align(n)`` works in MSVC. -This can be achieved by specifying a :attr:`~Structure._align_` class attribute -in the subclass definition. +It is possible to specify the maximum alignment for the fields and/or for the +structure itself by setting the class attributes :attr:`~Structure._pack_` +and/or :attr:`~Structure._align_`, respectively. +See the attribute documentation for details. :mod:`ctypes` uses the native byte order for Structures and Unions. To build structures with non-native byte order, you can use one of the @@ -2792,11 +2788,18 @@ fields, or any other data types containing pointer type fields. .. attribute:: _pack_ An optional small integer that allows overriding the alignment of - structure fields in the instance. :attr:`_pack_` must already be defined - when :attr:`_fields_` is assigned, otherwise it will have no effect. - Setting this attribute to 0 is the same as not setting it at all. + structure fields in the instance. + + This is only implemented for the MSVC-compatible memory layout + (see :attr:`_layout_`). - This is only implemented for the MSVC-compatible memory layout. + Setting :attr:`!_pack_` to 0 is the same as not setting it at all. + Otherwise, the value must be a positive power of two. + The effect is equivalent to ``#pragma pack(N)`` in C, except + :mod:`ctypes` may allow larger *n* than what the compiler accepts. + + :attr:`!_pack_` must already be defined + when :attr:`_fields_` is assigned, otherwise it will have no effect. .. deprecated-removed:: 3.14 3.19 @@ -2809,9 +2812,22 @@ fields, or any other data types containing pointer type fields. .. attribute:: _align_ - An optional small integer that allows overriding the alignment of + An optional small integer that allows increasing the alignment of the structure when being packed or unpacked to/from memory. - Setting this attribute to 0 is the same as not setting it at all. + + The value must not be negative. + The effect is equivalent to ``__attribute__((aligned(N)))`` on GCC + or ``#pragma align(N)`` on MSVC, except :mod:`ctypes` may allow + values that the compiler would reject. + + :attr:`!_align_` can only *increase* a structure's alignment + requirements. Setting it to 0 or 1 has no effect. + + Using values that are not powers of two is discouraged and may lead to + surprising behavior. + + :attr:`!_align_` must already be defined + when :attr:`_fields_` is assigned, otherwise it will have no effect. .. versionadded:: 3.13 From e8251dc0ae6a85f6a0e427ae64fb0fe847eb3cf8 Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Mon, 4 Aug 2025 10:35:00 -0400 Subject: [PATCH 31/87] gh-134170: Add colorization to unraisable exceptions (#134183) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Default implementation of sys.unraisablehook() now uses traceback._print_exception_bltin() to print exceptions with colorized text. Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Victor Stinner --- Doc/library/sys.rst | 7 ++++- Doc/whatsnew/3.15.rst | 4 +++ Lib/test/test_capi/test_exceptions.py | 10 ++++++- Lib/test/test_cmd_line.py | 1 + .../test_concurrent_futures/test_shutdown.py | 1 + Lib/test/test_signal.py | 3 ++- Lib/test/test_sys.py | 1 + Lib/test/test_threading.py | 1 + Lib/traceback.py | 5 ++-- ...-05-18-10-50-46.gh-issue-134170.J0Hvmi.rst | 1 + Python/errors.c | 27 ++++++++++++++++++- 11 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-05-18-10-50-46.gh-issue-134170.J0Hvmi.rst diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 52f0af31c68726..771e0f2709a4aa 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -2152,11 +2152,16 @@ always available. Unless explicitly noted otherwise, all variables are read-only The default hook formats :attr:`!err_msg` and :attr:`!object` as: ``f'{err_msg}: {object!r}'``; use "Exception ignored in" error message - if :attr:`!err_msg` is ``None``. + if :attr:`!err_msg` is ``None``. Similar to the :mod:`traceback` module, + this adds color to exceptions by default. This can be disabled using + :ref:`environment variables `. :func:`sys.unraisablehook` can be overridden to control how unraisable exceptions are handled. + .. versionchanged:: next + Exceptions are now printed with colorful text. + .. seealso:: :func:`excepthook` which handles uncaught exceptions. diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index e716d7bb0f2a5c..54964da473760d 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -200,6 +200,10 @@ Other language changes * Several error messages incorrectly using the term "argument" have been corrected. (Contributed by Stan Ulbrych in :gh:`133382`.) +* Unraisable exceptions are now highlighted with color by default. This can be + controlled by :ref:`environment variables `. + (Contributed by Peter Bierma in :gh:`134170`.) + New modules =========== diff --git a/Lib/test/test_capi/test_exceptions.py b/Lib/test/test_capi/test_exceptions.py index ade55338e63b69..4967f02b007e06 100644 --- a/Lib/test/test_capi/test_exceptions.py +++ b/Lib/test/test_capi/test_exceptions.py @@ -6,7 +6,7 @@ import textwrap from test import support -from test.support import import_helper +from test.support import import_helper, force_not_colorized from test.support.os_helper import TESTFN, TESTFN_UNDECODABLE from test.support.script_helper import assert_python_failure, assert_python_ok from test.support.testcase import ExceptionIsLikeMixin @@ -337,6 +337,10 @@ def test_err_writeunraisable(self): self.assertIsNone(cm.unraisable.err_msg) self.assertIsNone(cm.unraisable.object) + @force_not_colorized + def test_err_writeunraisable_lines(self): + writeunraisable = _testcapi.err_writeunraisable + with (support.swap_attr(sys, 'unraisablehook', None), support.captured_stderr() as stderr): writeunraisable(CustomError('oops!'), hex) @@ -387,6 +391,10 @@ def test_err_formatunraisable(self): self.assertIsNone(cm.unraisable.err_msg) self.assertIsNone(cm.unraisable.object) + @force_not_colorized + def test_err_formatunraisable_lines(self): + formatunraisable = _testcapi.err_formatunraisable + with (support.swap_attr(sys, 'unraisablehook', None), support.captured_stderr() as stderr): formatunraisable(CustomError('oops!'), b'Error in %R', []) diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py index f30a1874ab96d4..3ed7a360d64e3c 100644 --- a/Lib/test/test_cmd_line.py +++ b/Lib/test/test_cmd_line.py @@ -489,6 +489,7 @@ def test_unmached_quote(self): self.assertRegex(err.decode('ascii', 'ignore'), 'SyntaxError') self.assertEqual(b'', out) + @force_not_colorized def test_stdout_flush_at_shutdown(self): # Issue #5319: if stdout.flush() fails at shutdown, an error should # be printed out. diff --git a/Lib/test/test_concurrent_futures/test_shutdown.py b/Lib/test/test_concurrent_futures/test_shutdown.py index 99b315b47e2530..43812248104c91 100644 --- a/Lib/test/test_concurrent_futures/test_shutdown.py +++ b/Lib/test/test_concurrent_futures/test_shutdown.py @@ -49,6 +49,7 @@ def test_interpreter_shutdown(self): self.assertFalse(err) self.assertEqual(out.strip(), b"apple") + @support.force_not_colorized def test_submit_after_interpreter_shutdown(self): # Test the atexit hook for shutdown of worker threads and processes rc, out, err = assert_python_ok('-c', """if 1: diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py index 6d62d6119255a8..d6cc22558ec4fa 100644 --- a/Lib/test/test_signal.py +++ b/Lib/test/test_signal.py @@ -14,7 +14,7 @@ import unittest from test import support from test.support import ( - is_apple, is_apple_mobile, os_helper, threading_helper + force_not_colorized, is_apple, is_apple_mobile, os_helper, threading_helper ) from test.support.script_helper import assert_python_ok, spawn_python try: @@ -353,6 +353,7 @@ def check_signum(signals): @unittest.skipIf(_testcapi is None, 'need _testcapi') @unittest.skipUnless(hasattr(os, "pipe"), "requires os.pipe()") + @force_not_colorized def test_wakeup_write_error(self): # Issue #16105: write() errors in the C signal handler should not # pass silently. diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 486bf10a0b5647..f89237931b7185 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -1340,6 +1340,7 @@ def test_disable_gil_abi(self): @test.support.cpython_only +@force_not_colorized class UnraisableHookTest(unittest.TestCase): def test_original_unraisablehook(self): _testcapi = import_helper.import_module('_testcapi') diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 002a1feeb85c94..0ba78b9a1807d2 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -2494,6 +2494,7 @@ def test_atexit_called_once(self): self.assertFalse(err) + @force_not_colorized def test_atexit_after_shutdown(self): # The only way to do this is by registering an atexit within # an atexit, which is intended to raise an exception. diff --git a/Lib/traceback.py b/Lib/traceback.py index f0dbb6352f7760..318ec13cf91121 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -137,8 +137,9 @@ def print_exception(exc, /, value=_sentinel, tb=_sentinel, limit=None, \ BUILTIN_EXCEPTION_LIMIT = object() -def _print_exception_bltin(exc, /): - file = sys.stderr if sys.stderr is not None else sys.__stderr__ +def _print_exception_bltin(exc, file=None, /): + if file is None: + file = sys.stderr if sys.stderr is not None else sys.__stderr__ colorize = _colorize.can_colorize(file=file) return print_exception(exc, limit=BUILTIN_EXCEPTION_LIMIT, file=file, colorize=colorize) diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-05-18-10-50-46.gh-issue-134170.J0Hvmi.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-05-18-10-50-46.gh-issue-134170.J0Hvmi.rst new file mode 100644 index 00000000000000..f33a30c7e120dc --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-05-18-10-50-46.gh-issue-134170.J0Hvmi.rst @@ -0,0 +1 @@ +Add colorization to :func:`sys.unraisablehook` by default. diff --git a/Python/errors.c b/Python/errors.c index a3122f76bdd87d..2688396004e98b 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -1444,12 +1444,16 @@ make_unraisable_hook_args(PyThreadState *tstate, PyObject *exc_type, It can be called to log the exception of a custom sys.unraisablehook. - Do nothing if sys.stderr attribute doesn't exist or is set to None. */ + This assumes 'file' is neither NULL nor None. + */ static int write_unraisable_exc_file(PyThreadState *tstate, PyObject *exc_type, PyObject *exc_value, PyObject *exc_tb, PyObject *err_msg, PyObject *obj, PyObject *file) { + assert(file != NULL); + assert(!Py_IsNone(file)); + if (obj != NULL && obj != Py_None) { if (err_msg != NULL && err_msg != Py_None) { if (PyFile_WriteObject(err_msg, file, Py_PRINT_RAW) < 0) { @@ -1484,6 +1488,27 @@ write_unraisable_exc_file(PyThreadState *tstate, PyObject *exc_type, } } + // Try printing the exception using the stdlib module. + // If this fails, then we have to use the C implementation. + PyObject *print_exception_fn = PyImport_ImportModuleAttrString("traceback", + "_print_exception_bltin"); + if (print_exception_fn != NULL && PyCallable_Check(print_exception_fn)) { + PyObject *args[2] = {exc_value, file}; + PyObject *result = PyObject_Vectorcall(print_exception_fn, args, 2, NULL); + int ok = (result != NULL); + Py_DECREF(print_exception_fn); + Py_XDECREF(result); + if (ok) { + // Nothing else to do + return 0; + } + } + else { + Py_XDECREF(print_exception_fn); + } + // traceback module failed, fall back to pure C + _PyErr_Clear(tstate); + if (exc_tb != NULL && exc_tb != Py_None) { if (PyTraceBack_Print(exc_tb, file) < 0) { /* continue even if writing the traceback failed */ From 08ce7c695899d2c62b2b32dbb733052e1ce9301c Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 4 Aug 2025 16:48:24 +0200 Subject: [PATCH 32/87] gh-129033: Remove dead code in test.support.has_no_debug_ranges() (#137379) --- Lib/test/support/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 29cf32966d4e4a..4bfd01ed14a0a1 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -541,7 +541,6 @@ def has_no_debug_ranges(): except ImportError: raise unittest.SkipTest("_testinternalcapi required") return not _testcapi.config_get('code_debug_ranges') - return not bool(config['code_debug_ranges']) def requires_debug_ranges(reason='requires co_positions / debug_ranges'): try: From c5cebe1b5afa58fc0ee95153a4b1905229dce7dc Mon Sep 17 00:00:00 2001 From: alexey semenyuk Date: Mon, 4 Aug 2025 21:44:29 +0500 Subject: [PATCH 33/87] gh-137128: Remove outdated todo about coro_fns in asyncio (#137385) --- Lib/asyncio/staggered.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/asyncio/staggered.py b/Lib/asyncio/staggered.py index 2ad65d8648e6c5..845aed4c6a3b35 100644 --- a/Lib/asyncio/staggered.py +++ b/Lib/asyncio/staggered.py @@ -62,7 +62,6 @@ async def staggered_race(coro_fns, delay, *, loop=None): coroutine's entry is ``None``. """ - # TODO: when we have aiter() and anext(), allow async iterables in coro_fns. loop = loop or events.get_running_loop() parent_task = tasks.current_task(loop) enum_coro_fns = enumerate(coro_fns) From 4dae9b1ff16feae03bddb57ec3be5c42de14b1d2 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:45:51 +0200 Subject: [PATCH 34/87] gh-132661: PEP 750 documentation: second pass (#137020) --- Doc/glossary.rst | 2 + Doc/library/ast.rst | 36 +-- Doc/library/dis.rst | 8 +- Doc/library/stdtypes.rst | 7 +- Doc/library/string.rst | 18 +- Doc/library/string.templatelib.rst | 399 ++++++++++++++++------------- Doc/reference/lexical_analysis.rst | 68 ++--- Doc/tutorial/inputoutput.rst | 10 +- 8 files changed, 295 insertions(+), 253 deletions(-) diff --git a/Doc/glossary.rst b/Doc/glossary.rst index b7bd547d38fd1e..a4dc986c313c57 100644 --- a/Doc/glossary.rst +++ b/Doc/glossary.rst @@ -462,6 +462,7 @@ Glossary core and with user code. f-string + f-strings String literals prefixed with ``f`` or ``F`` are commonly called "f-strings" which is short for :ref:`formatted string literals `. See also :pep:`498`. @@ -1323,6 +1324,7 @@ Glossary See also :term:`borrowed reference`. t-string + t-strings String literals prefixed with ``t`` or ``T`` are commonly called "t-strings" which is short for :ref:`template string literals `. diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst index b24459b5c6346f..319b2c81505f48 100644 --- a/Doc/library/ast.rst +++ b/Doc/library/ast.rst @@ -289,9 +289,9 @@ Literals * ``conversion`` is an integer: * -1: no formatting - * 115 (``ord('s')``): ``!s`` string formatting - * 114 (``ord('r')``): ``!r`` repr formatting - * 97 (``ord('a')``): ``!a`` ASCII formatting + * 97 (``ord('a')``): ``!a`` :func:`ASCII ` formatting + * 114 (``ord('r')``): ``!r`` :func:`repr` formatting + * 115 (``ord('s')``): ``!s`` :func:`string ` formatting * ``format_spec`` is a :class:`JoinedStr` node representing the formatting of the value, or ``None`` if no format was specified. Both @@ -325,14 +325,18 @@ Literals Constant(value='.3')]))])) -.. class:: TemplateStr(values) +.. class:: TemplateStr(values, /) - A t-string, comprising a series of :class:`Interpolation` and :class:`Constant` - nodes. + .. versionadded:: 3.14 + + Node representing a template string literal, comprising a series of + :class:`Interpolation` and :class:`Constant` nodes. + These nodes may be any order, and do not need to be interleaved. .. doctest:: - >>> print(ast.dump(ast.parse('t"{name} finished {place:ordinal}"', mode='eval'), indent=4)) + >>> expr = ast.parse('t"{name} finished {place:ordinal}"', mode='eval') + >>> print(ast.dump(expr, indent=4)) Expression( body=TemplateStr( values=[ @@ -349,28 +353,28 @@ Literals values=[ Constant(value='ordinal')]))])) - .. versionadded:: 3.14 - +.. class:: Interpolation(value, str, conversion, format_spec=None) -.. class:: Interpolation(value, str, conversion, format_spec) + .. versionadded:: 3.14 - Node representing a single interpolation field in a t-string. + Node representing a single interpolation field in a template string literal. * ``value`` is any expression node (such as a literal, a variable, or a function call). + This has the same meaning as ``FormattedValue.value``. * ``str`` is a constant containing the text of the interpolation expression. * ``conversion`` is an integer: * -1: no conversion - * 115: ``!s`` string conversion - * 114: ``!r`` repr conversion - * 97: ``!a`` ascii conversion + * 97 (``ord('a')``): ``!a`` :func:`ASCII ` conversion + * 114 (``ord('r')``): ``!r`` :func:`repr` conversion + * 115 (``ord('s')``): ``!s`` :func:`string ` conversion + This has the same meaning as ``FormattedValue.conversion``. * ``format_spec`` is a :class:`JoinedStr` node representing the formatting of the value, or ``None`` if no format was specified. Both ``conversion`` and ``format_spec`` can be set at the same time. - - .. versionadded:: 3.14 + This has the same meaning as ``FormattedValue.format_spec``. .. class:: List(elts, ctx) diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index ac8a911c40a860..7360f4aa804724 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -1122,8 +1122,8 @@ iterations of the loop. .. opcode:: BUILD_TEMPLATE - Constructs a new :class:`~string.templatelib.Template` from a tuple - of strings and a tuple of interpolations and pushes the resulting instance + Constructs a new :class:`~string.templatelib.Template` instance from a tuple + of strings and a tuple of interpolations and pushes the resulting object onto the stack:: interpolations = STACK.pop() @@ -1135,8 +1135,8 @@ iterations of the loop. .. opcode:: BUILD_INTERPOLATION (format) - Constructs a new :class:`~string.templatelib.Interpolation` from a - value and its source expression and pushes the resulting instance onto the + Constructs a new :class:`~string.templatelib.Interpolation` instance from a + value and its source expression and pushes the resulting object onto the stack. If no conversion or format specification is present, ``format`` is set to diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 90683c0b00d78a..a81a6704142dcc 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -2673,9 +2673,10 @@ For example: The formatting operations described here exhibit a variety of quirks that lead to a number of common errors (such as failing to display tuples and - dictionaries correctly). Using the newer :ref:`formatted string literals - `, the :meth:`str.format` interface, or :ref:`template strings - ($-strings) ` may help avoid these errors. + dictionaries correctly). + + Using :ref:`formatted string literals `, the :meth:`str.format` + interface, or :class:`string.Template` may help avoid these errors. Each of these alternatives provides their own trade-offs and benefits of simplicity, flexibility, and/or extensibility. diff --git a/Doc/library/string.rst b/Doc/library/string.rst index 83e8ee2722ed8a..6336a0ec47b91e 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -200,7 +200,7 @@ syntax for format strings (although in the case of :class:`Formatter`, subclasses can define their own format string syntax). The syntax is related to that of :ref:`formatted string literals ` and :ref:`template string literals `, but it is less sophisticated -and, in particular, does not support arbitrary expressions. +and, in particular, does not support arbitrary expressions in interpolations. .. index:: single: {} (curly brackets); in string formatting @@ -799,13 +799,15 @@ Template strings ($-strings) .. note:: - The feature described here was introduced in Python 2.4. It is unrelated - to, and should not be confused with, the newer - :ref:`template strings ` and - :ref:`t-string literal syntax ` introduced in Python 3.14. - T-string literals evaluate to instances of a different - :class:`~string.templatelib.Template` class, found in the - :mod:`string.templatelib` module. + The feature described here was introduced in Python 2.4; + a simple templating method based upon regular expressions. + It predates :meth:`str.format`, :ref:`formatted string literals `, + and :ref:`template string literals `. + + It is unrelated to template string literals (t-strings), + which were introduced in Python 3.14. + These evaluate to :class:`string.templatelib.Template` objects, + found in the :mod:`string.templatelib` module. Template strings provide simpler string substitutions as described in :pep:`292`. A primary use case for template strings is for diff --git a/Doc/library/string.templatelib.rst b/Doc/library/string.templatelib.rst index 31b90d75f411f0..19daf352bdc5fc 100644 --- a/Doc/library/string.templatelib.rst +++ b/Doc/library/string.templatelib.rst @@ -11,8 +11,8 @@ .. seealso:: * :ref:`Format strings ` - * :ref:`T-string literal syntax ` - + * :ref:`Template string literal (t-string) syntax ` + * :pep:`750` .. _template-strings: @@ -21,278 +21,311 @@ Template strings .. versionadded:: 3.14 -Template strings are a formatting mechanism that allows for deep control over -how strings are processed. You can create templates using -:ref:`t-string literal syntax `, which is identical to -:ref:`f-string syntax ` but uses a ``t`` instead of an ``f``. -While f-strings evaluate to ``str``, t-strings create a :class:`Template` -instance that gives you access to the static and interpolated (in curly braces) -parts of a string *before* they are combined. - - -.. _templatelib-template: +Template strings are a mechanism for custom string processing. +They have the full flexibility of Python's :ref:`f-strings`, +but return a :class:`Template` instance that gives access +to the static and interpolated (in curly braces) parts of a string +*before* they are combined. -Template --------- +To write a t-string, use a ``'t'`` prefix instead of an ``'f'``, like so: -The :class:`!Template` class describes the contents of a template string. +.. code-block:: pycon -:class:`!Template` instances are immutable: their attributes cannot be -reassigned. + >>> pi = 3.14 + >>> t't-strings are new in Python {pi!s}!' + Template( + strings=('t-strings are new in Python ', '.'), + interpolations=(Interpolation(3.14, 'pi', 's', ''),) + ) -.. class:: Template(*args) +Types +----- - Create a new :class:`!Template` object. +.. class:: Template - :param args: A mix of strings and :class:`Interpolation` instances in any order. - :type args: str | Interpolation + The :class:`!Template` class describes the contents of a template string. + It is immutable, meaning that attributes of a template cannot be reassigned. The most common way to create a :class:`!Template` instance is to use the - :ref:`t-string literal syntax `. This syntax is identical to that of - :ref:`f-strings ` except that it uses a ``t`` instead of an ``f``: + :ref:`template string literal syntax `. + This syntax is identical to that of :ref:`f-strings `, + except that it uses a ``t`` prefix in place of an ``f``: - >>> name = "World" - >>> template = t"Hello {name}!" + >>> cheese = 'Red Leicester' + >>> template = t"We're fresh out of {cheese}, sir." >>> type(template) - Templates ars stored as sequences of literal :attr:`~Template.strings` + Templates are stored as sequences of literal :attr:`~Template.strings` and dynamic :attr:`~Template.interpolations`. - A :attr:`~Template.values` attribute holds the interpolation values: + A :attr:`~Template.values` attribute holds the values of the interpolations: + >>> cheese = 'Camembert' + >>> template = t'Ah! We do have {cheese}.' >>> template.strings - ('Hello ', '!') + ('Ah! We do have ', '.') >>> template.interpolations - (Interpolation('World', ...),) + (Interpolation('Camembert', ...),) >>> template.values - ('World',) + ('Camembert',) The :attr:`!strings` tuple has one more element than :attr:`!interpolations` and :attr:`!values`; the interpolations “belong” between the strings. - This may be easier to understand when tuples are aligned:: + This may be easier to understand when tuples are aligned - template.strings: ('Hello ', '!') - template.values: ( 'World', ) + .. code-block:: python - While literal syntax is the most common way to create :class:`!Template` - instances, it is also possible to create them directly using the constructor: + template.strings: ('Ah! We do have ', '.') + template.values: ( 'Camembert', ) - >>> from string.templatelib import Interpolation, Template - >>> name = "World" - >>> template = Template("Hello, ", Interpolation(name, "name"), "!") - >>> list(template) - ['Hello, ', Interpolation('World', 'name', None, ''), '!'] + .. rubric:: Attributes - If two or more consecutive strings are passed, they will be concatenated - into a single value in the :attr:`~Template.strings` attribute. For example, - the following code creates a :class:`Template` with a single final string: + .. attribute:: strings + :type: tuple[str, ...] - >>> from string.templatelib import Template - >>> template = Template("Hello ", "World", "!") - >>> template.strings - ('Hello World!',) + A :class:`tuple` of the static strings in the template. - If two or more consecutive interpolations are passed, they will be treated - as separate interpolations and an empty string will be inserted between them. - For example, the following code creates a template with empty placeholders - in the :attr:`~Template.strings` attribute: + >>> cheese = 'Camembert' + >>> template = t'Ah! We do have {cheese}.' + >>> template.strings + ('Ah! We do have ', '.') - >>> from string.templatelib import Interpolation, Template - >>> template = Template(Interpolation("World", "name"), Interpolation("!", "punctuation")) - >>> template.strings - ('', '', '') + Empty strings *are* included in the tuple: - .. attribute:: strings - :type: tuple[str, ...] + >>> response = 'We do have ' + >>> cheese = 'Camembert' + >>> template = t'Ah! {response}{cheese}.' + >>> template.strings + ('Ah! ', '', '.') - A :ref:`tuple ` of the static strings in the template. + The ``strings`` tuple is never empty, and always contains one more + string than the ``interpolations`` and ``values`` tuples: - >>> name = "World" - >>> t"Hello {name}!".strings - ('Hello ', '!') + >>> t''.strings + ('',) + >>> t''.values + () + >>> t'{'cheese'}'.strings + ('', '') + >>> t'{'cheese'}'.values + ('cheese',) - Empty strings *are* included in the tuple: + .. attribute:: interpolations + :type: tuple[Interpolation, ...] - >>> name = "World" - >>> t"Hello {name}{name}!".strings - ('Hello ', '', '!') + A :class:`tuple` of the interpolations in the template. - The ``strings`` tuple is never empty, and always contains one more - string than the ``interpolations`` and ``values`` tuples: + >>> cheese = 'Camembert' + >>> template = t'Ah! We do have {cheese}.' + >>> template.interpolations + (Interpolation('Camembert', 'cheese', None, ''),) - >>> t"".strings - ('',) - >>> t"".values - () - >>> t"{'cheese'}".strings - ('', '') - >>> t"{'cheese'}".values - ('cheese',) + The ``interpolations`` tuple may be empty and always contains one fewer + values than the ``strings`` tuple: - .. attribute:: interpolations - :type: tuple[Interpolation, ...] + >>> t'Red Leicester'.interpolations + () - A tuple of the interpolations in the template. + .. attribute:: values + :type: tuple[object, ...] - >>> name = "World" - >>> t"Hello {name}!".interpolations - (Interpolation('World', 'name', None, ''),) + A tuple of all interpolated values in the template. - The ``interpolations`` tuple may be empty and always contains one fewer - values than the ``strings`` tuple: + >>> cheese = 'Camembert' + >>> template = t'Ah! We do have {cheese}.' + >>> template.values + ('Camembert',) - >>> t"Hello!".interpolations - () + The ``values`` tuple always has the same length as the + ``interpolations`` tuple. It is always equivalent to + ``tuple(i.value for i in template.interpolations)``. - .. attribute:: values - :type: tuple[Any, ...] + .. rubric:: Methods - A tuple of all interpolated values in the template. + .. method:: __new__(*args: str | Interpolation) - >>> name = "World" - >>> t"Hello {name}!".values - ('World',) + While literal syntax is the most common way to create a :class:`!Template`, + it is also possible to create them directly using the constructor: - The ``values`` tuple always has the same length as the - ``interpolations`` tuple. It is equivalent to - ``tuple(i.value for i in template.interpolations)``. + >>> from string.templatelib import Interpolation, Template + >>> cheese = 'Camembert' + >>> template = Template( + ... 'Ah! We do have ', Interpolation(cheese, 'cheese'), '.' + ... ) + >>> list(template) + ['Ah! We do have ', Interpolation('Camembert', 'cheese', None, ''), '.'] - .. describe:: iter(template) + If multiple strings are passed consecutively, they will be concatenated + into a single value in the :attr:`~Template.strings` attribute. For example, + the following code creates a :class:`Template` with a single final string: - Iterate over the template, yielding each string and - :class:`Interpolation` in order. + >>> from string.templatelib import Template + >>> template = Template('Ah! We do have ', 'Camembert', '.') + >>> template.strings + ('Ah! We do have Camembert.',) - >>> name = "World" - >>> list(t"Hello {name}!") - ['Hello ', Interpolation('World', 'name', None, ''), '!'] + If multiple interpolations are passed consecutively, they will be treated + as separate interpolations and an empty string will be inserted between them. + For example, the following code creates a template with empty placeholders + in the :attr:`~Template.strings` attribute: - Empty strings are *not* included in the iteration: + >>> from string.templatelib import Interpolation, Template + >>> template = Template( + ... Interpolation('Camembert', 'cheese'), + ... Interpolation('.', 'punctuation'), + ... ) + >>> template.strings + ('', '', '') - >>> name = "World" - >>> list(t"Hello {name}{name}") - ['Hello ', Interpolation('World', 'name', None, ''), Interpolation('World', 'name', None, '')] + .. describe:: iter(template) - .. describe:: template + other - template += other + Iterate over the template, yielding each non-empty string and + :class:`Interpolation` in the correct order: - Concatenate this template with another, returning a new - :class:`!Template` instance: + >>> cheese = 'Camembert' + >>> list(t'Ah! We do have {cheese}.') + ['Ah! We do have ', Interpolation('Camembert', 'cheese', None, ''), '.'] - >>> name = "World" - >>> list(t"Hello " + t"there {name}!") - ['Hello there ', Interpolation('World', 'name', None, ''), '!'] + .. caution:: - Concatenation between a :class:`!Template` and a ``str`` is *not* supported. - This is because it is ambiguous whether the string should be treated as - a static string or an interpolation. If you want to concatenate a - :class:`!Template` with a string, you should either wrap the string - directly in a :class:`!Template` (to treat it as a static string) or use - an :class:`!Interpolation` (to treat it as dynamic): + Empty strings are **not** included in the iteration: - >>> from string.templatelib import Template, Interpolation - >>> template = t"Hello " - >>> # Treat "there " as a static string - >>> template += Template("there ") - >>> # Treat name as an interpolation - >>> name = "World" - >>> template += Template(Interpolation(name, "name")) - >>> list(template) - ['Hello there ', Interpolation('World', 'name', None, '')] + >>> response = 'We do have ' + >>> cheese = 'Camembert' + >>> list(t'Ah! {response}{cheese}.') # doctest: +NORMALIZE_WHITESPACE + ['Ah! ', + Interpolation('We do have ', 'response', None, ''), + Interpolation('Camembert', 'cheese', None, ''), + '.'] + .. describe:: template + other + template += other -.. class:: Interpolation(value, expression="", conversion=None, format_spec="") + Concatenate this template with another, returning a new + :class:`!Template` instance: - Create a new :class:`!Interpolation` object. + >>> cheese = 'Camembert' + >>> list(t'Ah! ' + t'We do have {cheese}.') + ['Ah! We do have ', Interpolation('Camembert', 'cheese', None, ''), '.'] - :param value: The evaluated, in-scope result of the interpolation. - :type value: object + Concatenating a :class:`!Template` and a ``str`` is **not** supported. + This is because it is unclear whether the string should be treated as + a static string or an interpolation. + If you want to concatenate a :class:`!Template` with a string, + you should either wrap the string directly in a :class:`!Template` + (to treat it as a static string) + or use an :class:`!Interpolation` (to treat it as dynamic): - :param expression: The text of a valid Python expression, or an empty string. - :type expression: str + >>> from string.templatelib import Interpolation, Template + >>> template = t'Ah! ' + >>> # Treat 'We do have ' as a static string + >>> template += Template('We do have ') + >>> # Treat cheese as an interpolation + >>> cheese = 'Camembert' + >>> template += Template(Interpolation(cheese, 'cheese')) + >>> list(template) + ['Ah! We do have ', Interpolation('Camembert', 'cheese', None, '')] - :param conversion: The optional :ref:`conversion ` to be used, one of r, s, and a. - :type conversion: ``Literal["a", "r", "s"] | None`` - :param format_spec: An optional, arbitrary string used as the :ref:`format specification ` to present the value. - :type format_spec: str +.. class:: Interpolation The :class:`!Interpolation` type represents an expression inside a template string. + It is immutable, meaning that attributes of an interpolation cannot be reassigned. - :class:`!Interpolation` instances are immutable: their attributes cannot be - reassigned. + Interpolations support pattern matching, allowing you to match against + their attributes with the :ref:`match statement `: + + >>> from string.templatelib import Interpolation + >>> interpolation = t'{1. + 2.:.2f}'.interpolations[0] + >>> interpolation + Interpolation(3.0, '1. + 2.', None, '.2f') + >>> match interpolation: + ... case Interpolation(value, expression, conversion, format_spec): + ... print(value, expression, conversion, format_spec, sep=' | ') + ... + 3.0 | 1. + 2. | None | .2f + + .. rubric:: Attributes .. attribute:: value + :type: object - :returns: The evaluated value of the interpolation. - :type: object + The evaluated value of the interpolation. - >>> t"{1 + 2}".interpolations[0].value - 3 + >>> t'{1 + 2}'.interpolations[0].value + 3 .. attribute:: expression + :type: str - :returns: The text of a valid Python expression, or an empty string. - :type: str + The text of a valid Python expression, or an empty string. - The :attr:`~Interpolation.expression` is the original text of the - interpolation's Python expression, if the interpolation was created - from a t-string literal. Developers creating interpolations manually - should either set this to an empty string or choose a suitable valid - Python expression. + The :attr:`.expression` is the original text of the + interpolation's Python expression, if the interpolation was created + from a t-string literal. Developers creating interpolations manually + should either set this to an empty string or choose a suitable valid + Python expression. - >>> t"{1 + 2}".interpolations[0].expression - '1 + 2' + >>> t'{1 + 2}'.interpolations[0].expression + '1 + 2' .. attribute:: conversion + :type: typing.Literal['a', 'r', 's'] | None - :returns: The conversion to apply to the value, or ``None``. - :type: ``Literal["a", "r", "s"] | None`` + The conversion to apply to the value, or ``None``. - The :attr:`!Interpolation.conversion` is the optional conversion to apply - to the value: + The :attr:`!conversion` is the optional conversion to apply + to the value: - >>> t"{1 + 2!a}".interpolations[0].conversion - 'a' + >>> t'{1 + 2!a}'.interpolations[0].conversion + 'a' - .. note:: + .. note:: Unlike f-strings, where conversions are applied automatically, the expected behavior with t-strings is that code that *processes* the :class:`!Template` will decide how to interpret and whether to apply - the :attr:`!Interpolation.conversion`. + the :attr:`!conversion`. + For convenience, the :func:`convert` function can be used to mimic + f-string conversion semantics. .. attribute:: format_spec + :type: str - :returns: The format specification to apply to the value. - :type: str + The format specification to apply to the value. - The :attr:`!Interpolation.format_spec` is an optional, arbitrary string - used as the format specification to present the value: + The :attr:`!format_spec` is an optional, arbitrary string + used as the format specification to present the value: - >>> t"{1 + 2:.2f}".interpolations[0].format_spec - '.2f' + >>> t'{1 + 2:.2f}'.interpolations[0].format_spec + '.2f' - .. note:: + .. note:: Unlike f-strings, where format specifications are applied automatically via the :func:`format` protocol, the expected behavior with - t-strings is that code that *processes* the :class:`!Template` will + t-strings is that code that *processes* the interpolation will decide how to interpret and whether to apply the format specification. - As a result, :attr:`!Interpolation.format_spec` values in - :class:`!Template` instances can be arbitrary strings, even those that - do not necessarily conform to the rules of Python's :func:`format` - protocol. + As a result, :attr:`!format_spec` values in interpolations + can be arbitrary strings, + including those that do not conform to the :func:`format` protocol. - Interpolations support pattern matching, allowing you to match against - their attributes with the :ref:`match statement `: + .. rubric:: Methods - >>> from string.templatelib import Interpolation - >>> interpolation = Interpolation(3.0, "1 + 2", None, ".2f") - >>> match interpolation: - ... case Interpolation(value, expression, conversion, format_spec): - ... print(value, expression, conversion, format_spec) - ... - 3.0 1 + 2 None .2f + .. method:: __new__(value: object, \ + expression: str, \ + conversion: typing.Literal['a', 'r', 's'] | None = None, \ + format_spec: str = '') + + Create a new :class:`!Interpolation` object from component parts. + + :param value: The evaluated, in-scope result of the interpolation. + :param expression: The text of a valid Python expression, + or an empty string. + :param conversion: The :ref:`conversion ` to be used, + one of ``None``, ``'a'``, ``'r'``, or ``'s'``. + :param format_spec: An optional, arbitrary string used as the + :ref:`format specification ` to present the value. Helper functions @@ -306,8 +339,8 @@ Helper functions Three conversion flags are currently supported: - * ``'s'`` which calls :func:`str` on the value, - * ``'r'`` which calls :func:`repr`, and - * ``'a'`` which calls :func:`ascii`. + * ``'s'`` which calls :func:`str` on the value (like ``!s``), + * ``'r'`` which calls :func:`repr` (like ``!r``), and + * ``'a'`` which calls :func:`ascii` (like ``!a``). If the conversion flag is ``None``, *obj* is returned unchanged. diff --git a/Doc/reference/lexical_analysis.rst b/Doc/reference/lexical_analysis.rst index cf241829b71120..e320eedfa67a27 100644 --- a/Doc/reference/lexical_analysis.rst +++ b/Doc/reference/lexical_analysis.rst @@ -599,9 +599,9 @@ The allowed prefixes are: See the linked sections for details on each type. -Prefixes are case-insensitive (for example, ``B`` works the same as ``b``). -The ``r`` prefix can be combined with ``f``, ``t`` or ``b``, so ``fr``, -``rf``, ``tr``, ``rt``, ``br`` and ``rb`` are also valid prefixes. +Prefixes are case-insensitive (for example, '``B``' works the same as '``b``'). +The '``r``' prefix can be combined with '``f``', '``t``' or '``b``', so '``fr``', +'``rf``', '``tr``', '``rt``', '``br``', and '``rb``' are also valid prefixes. .. versionadded:: 3.3 The ``'rb'`` prefix of raw bytes literals has been added as a synonym @@ -661,7 +661,7 @@ quote. Escape sequences ---------------- -Unless an ``'r'`` or ``'R'`` prefix is present, escape sequences in string and +Unless an '``r``' or '``R``' prefix is present, escape sequences in string and bytes literals are interpreted according to rules similar to those used by Standard C. The recognized escape sequences are: @@ -852,7 +852,7 @@ unrecognized escapes. Bytes literals -------------- -:dfn:`Bytes literals` are always prefixed with ``'b'`` or ``'B'``; they produce an +:dfn:`Bytes literals` are always prefixed with '``b``' or '``B``'; they produce an instance of the :class:`bytes` type instead of the :class:`str` type. They may only contain ASCII characters; bytes with a numeric value of 128 or greater must be expressed with escape sequences (typically @@ -878,8 +878,8 @@ Similarly, a zero byte must be expressed using an escape sequence (typically Raw string literals ------------------- -Both string and bytes literals may optionally be prefixed with a letter ``'r'`` -or ``'R'``; such constructs are called :dfn:`raw string literals` +Both string and bytes literals may optionally be prefixed with a letter '``r``' +or '``R``'; such constructs are called :dfn:`raw string literals` and :dfn:`raw bytes literals` respectively and treat backslashes as literal characters. As a result, in raw string literals, :ref:`escape sequences ` @@ -923,7 +923,7 @@ f-strings .. versionadded:: 3.6 A :dfn:`formatted string literal` or :dfn:`f-string` is a string literal -that is prefixed with ``f`` or ``F``. These strings may contain +that is prefixed with '``f``' or '``F``'. These strings may contain replacement fields, which are expressions delimited by curly braces ``{}``. While other string literals always have a constant value, formatted strings are really expressions evaluated at run time. @@ -1089,37 +1089,37 @@ t-strings .. versionadded:: 3.14 A :dfn:`template string literal` or :dfn:`t-string` is a string literal -that is prefixed with ``t`` or ``T``. These strings follow the same -syntax and evaluation rules as :ref:`formatted string literals `, with -the following differences: +that is prefixed with '``t``' or '``T``'. +These strings follow the same syntax and evaluation rules as +:ref:`formatted string literals `, with the following differences: -- Rather than evaluating to a ``str`` object, t-strings evaluate to a - :class:`~string.templatelib.Template` object from the - :mod:`string.templatelib` module. +* Rather than evaluating to a ``str`` object, template string literals evaluate + to a :class:`string.templatelib.Template` object. -- The :func:`format` protocol is not used. Instead, the format specifier and - conversions (if any) are passed to a new :class:`~string.templatelib.Interpolation` - object that is created for each evaluated expression. It is up to code that - processes the resulting :class:`~string.templatelib.Template` object to - decide how to handle format specifiers and conversions. +* The :func:`format` protocol is not used. + Instead, the format specifier and conversions (if any) are passed to + a new :class:`~string.templatelib.Interpolation` object that is created + for each evaluated expression. + It is up to code that processes the resulting :class:`~string.templatelib.Template` + object to decide how to handle format specifiers and conversions. -- Format specifiers containing nested replacement fields are evaluated eagerly, +* Format specifiers containing nested replacement fields are evaluated eagerly, prior to being passed to the :class:`~string.templatelib.Interpolation` object. For instance, an interpolation of the form ``{amount:.{precision}f}`` will - evaluate the expression ``{precision}`` before setting the ``format_spec`` - attribute of the resulting :class:`!Interpolation` object; if ``precision`` - is (for example) ``2``, the resulting format specifier will be ``'.2f'``. - -- When the equal sign ``'='`` is provided in an interpolation expression, the - resulting :class:`~string.templatelib.Template` object will have the expression - text along with a ``'='`` character placed in its - :attr:`~string.templatelib.Template.strings` attribute. The - :attr:`~string.templatelib.Template.interpolations` attribute will also - contain an ``Interpolation`` instance for the expression. By default, the - :attr:`~string.templatelib.Interpolation.conversion` attribute will be set to - ``'r'`` (that is, :func:`repr`), unless there is a conversion explicitly - specified (in which case it overrides the default) or a format specifier is - provided (in which case, the ``conversion`` defaults to ``None``). + evaluate the inner expression ``{precision}`` to determine the value of the + ``format_spec`` attribute. + If ``precision`` were to be ``2``, the resulting format specifier + would be ``'.2f'``. + +* When the equals sign ``'='`` is provided in an interpolation expression, + the text of the expression is appended to the literal string that precedes + the relevant interpolation. + This includes the equals sign and any surrounding whitespace. + The :class:`!Interpolation` instance for the expression will be created as + normal, except that :attr:`~string.templatelib.Interpolation.conversion` will + be set to '``r``' (:func:`repr`) by default. + If an explicit conversion or format specifier are provided, + this will override the default behaviour. .. _numbers: diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst index ea546c6a29df44..a00f06cf46c41a 100644 --- a/Doc/tutorial/inputoutput.rst +++ b/Doc/tutorial/inputoutput.rst @@ -95,11 +95,11 @@ Some examples:: >>> repr((x, y, ('spam', 'eggs'))) "(32.5, 40000, ('spam', 'eggs'))" -The :mod:`string` module also contains support for so-called -:ref:`$-strings ` that offer yet another way to -substitute values into strings, using placeholders like ``$x`` and replacing -them with values from a dictionary. This syntax is easy to use, although -it offers much less control of the formatting. +The :mod:`string` module contains support for a simple templating approach +based upon regular expressions, via :class:`string.Template`. +This offers yet another way to substitute values into strings, +using placeholders like ``$x`` and replacing them with values from a dictionary. +This syntax is easy to use, although it offers much less control for formatting. .. index:: single: formatted string literal From 001461a29235216eb9c8295c66c323fdd34a7d59 Mon Sep 17 00:00:00 2001 From: markmcclain Date: Mon, 4 Aug 2025 18:08:26 -0400 Subject: [PATCH 35/87] gh-137390: Add missing line continuation character in configure.ac (#137391) --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 29e36f217402f1..c526ba5a03d35c 100644 --- a/configure.ac +++ b/configure.ac @@ -5219,7 +5219,7 @@ AC_CHECK_FUNCS([ \ posix_spawn_file_actions_addclosefrom_np \ pread preadv preadv2 process_vm_readv \ pthread_cond_timedwait_relative_np pthread_condattr_setclock pthread_init \ - pthread_kill pthread_get_name_np pthread_getname_np pthread_set_name_np + pthread_kill pthread_get_name_np pthread_getname_np pthread_set_name_np \ pthread_setname_np pthread_getattr_np \ ptsname ptsname_r pwrite pwritev pwritev2 readlink readlinkat readv realpath renameat \ rtpSpawn sched_get_priority_max sched_rr_get_interval sched_setaffinity \ From 0af7556b94eac47041957f36e98e230650b56bbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Tue, 5 Aug 2025 09:50:34 +0200 Subject: [PATCH 36/87] gh-136306: fix `test_ssl.ContextTests.test_set_groups` on FIPS builds (#137405) X25519 is not a valid curve if OpenSSL is built with FIPS mode, and ignoring unknown groups in `SSL_CTX_set1_groups_list()` is only supported since OpenSSL 3.3, so we use two curves that are known to be FIPS-compliant, namely P-256 and P-384. --- Lib/test/test_ssl.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index c8939383c75d6d..b5263129baed3f 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -49,6 +49,7 @@ HOST = socket_helper.HOST IS_OPENSSL_3_0_0 = ssl.OPENSSL_VERSION_INFO >= (3, 0, 0) CAN_GET_SELECTED_OPENSSL_GROUP = ssl.OPENSSL_VERSION_INFO >= (3, 2) +CAN_IGNORE_UNKNOWN_OPENSSL_GROUPS = ssl.OPENSSL_VERSION_INFO >= (3, 3) CAN_GET_AVAILABLE_OPENSSL_GROUPS = ssl.OPENSSL_VERSION_INFO >= (3, 5) PY_SSL_DEFAULT_CIPHERS = sysconfig.get_config_var('PY_SSL_DEFAULT_CIPHERS') @@ -964,8 +965,14 @@ def test_get_ciphers(self): def test_set_groups(self): ctx = ssl.create_default_context() - self.assertIsNone(ctx.set_groups('P-256:X25519')) - self.assertRaises(ssl.SSLError, ctx.set_groups, 'P-256:xxx') + # We use P-256 and P-384 (FIPS 186-4) that are alloed by OpenSSL + # even if FIPS module is enabled. Ignoring unknown groups is only + # supported since OpenSSL 3.3. + self.assertIsNone(ctx.set_groups('P-256:P-384')) + + self.assertRaises(ssl.SSLError, ctx.set_groups, 'P-256:foo') + if CAN_IGNORE_UNKNOWN_OPENSSL_GROUPS: + self.assertIsNone(ctx.set_groups('P-256:?foo')) @unittest.skipUnless(CAN_GET_AVAILABLE_OPENSSL_GROUPS, "OpenSSL version doesn't support getting groups") From 7f416c867445dd94d11ee9df5f1a2d9d6eb8d883 Mon Sep 17 00:00:00 2001 From: Furkan Onder Date: Tue, 5 Aug 2025 08:32:21 +0000 Subject: [PATCH 37/87] gh-137397: Skip test_os_open on NetBSD due to indefinite hang (#137398) --- Lib/test/_test_eintr.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/test/_test_eintr.py b/Lib/test/_test_eintr.py index 0ce42276bfe3d6..4a050792df73c4 100644 --- a/Lib/test/_test_eintr.py +++ b/Lib/test/_test_eintr.py @@ -380,6 +380,8 @@ def os_open(self, path): @unittest.skipIf(sys.platform == "darwin", "hangs under macOS; see bpo-25234, bpo-35363") + @unittest.skipIf(sys.platform.startswith('netbsd'), + "hangs on NetBSD; see gh-137397") def test_os_open(self): self._test_open("fd = os.open(path, os.O_RDONLY)\nos.close(fd)", self.os_open) From a50822ff94ae0625f0b46480857fb141531c0688 Mon Sep 17 00:00:00 2001 From: naweiss Date: Tue, 5 Aug 2025 13:16:14 +0300 Subject: [PATCH 38/87] gh-107545: Fix misleading setsockopt() error messages (GH-107546) --- Lib/test/test_socket.py | 34 +++++++ ...-07-11-12-29-09.gh-issue-107545.ipfl7U.rst | 2 + Modules/socketmodule.c | 93 ++++++++++++------- 3 files changed, 98 insertions(+), 31 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-07-11-12-29-09.gh-issue-107545.ipfl7U.rst diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 3dd67b2a2aba97..76fd33c7dc8767 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -1538,6 +1538,40 @@ def testSetSockOpt(self): reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) self.assertFalse(reuse == 0, "failed to set reuse mode") + def test_setsockopt_errors(self): + # See issue #107546. + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.addCleanup(sock.close) + + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # No error expected. + + with self.assertRaises(OverflowError): + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 2 ** 100) + + with self.assertRaises(OverflowError): + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, - 2 ** 100) + + with self.assertRaises(OverflowError): + sock.setsockopt(socket.SOL_SOCKET, 2 ** 100, 1) + + with self.assertRaises(OverflowError): + sock.setsockopt(2 ** 100, socket.SO_REUSEADDR, 1) + + with self.assertRaisesRegex(TypeError, "socket option should be int, bytes-like object or None"): + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, dict()) + + with self.assertRaisesRegex(TypeError, "requires 4 arguments when the third argument is None"): + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, None) + + with self.assertRaisesRegex(TypeError, "only takes 4 arguments when the third argument is None"): + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1, 2) + + with self.assertRaisesRegex(TypeError, "takes at least 3 arguments"): + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) + + with self.assertRaisesRegex(TypeError, "takes at most 4 arguments"): + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1, 2, 3) + def testSendAfterClose(self): # testing send() after close() with timeout with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-07-11-12-29-09.gh-issue-107545.ipfl7U.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-07-11-12-29-09.gh-issue-107545.ipfl7U.rst new file mode 100644 index 00000000000000..23122415e8a46f --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-07-11-12-29-09.gh-issue-107545.ipfl7U.rst @@ -0,0 +1,2 @@ +Improve the error messages that may be raised by +:meth:`~socket.socket.setsockopt`. diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index f3ad01854de93b..bca9e7bb712e38 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -3332,32 +3332,59 @@ sock_setsockopt(PyObject *self, PyObject *args) { PySocketSockObject *s = _PySocketSockObject_CAST(self); + Py_ssize_t arglen; int level; int optname; int res; - Py_buffer optval; + Py_buffer buffer; int flag; unsigned int optlen; - PyObject *none; + PyObject *optval; + + if (!PyArg_ParseTuple(args, "iiO|I:setsockopt", + &level, &optname, &optval, &optlen)) + { + return NULL; + } + + arglen = PyTuple_Size(args); + if (arglen == 3 && optval == Py_None) { + PyErr_Format(PyExc_TypeError, + "setsockopt() requires 4 arguments when the third argument is None", + arglen); + return NULL; + } + if (arglen == 4 && optval != Py_None) { + PyErr_Format(PyExc_TypeError, + "setsockopt() only takes 4 arguments when the third argument is None (got %T)", + optval); + return NULL; + } #ifdef AF_VSOCK if (s->sock_family == AF_VSOCK) { + if (!PyIndex_Check(optval)) { + PyErr_Format(PyExc_TypeError, + "setsockopt() argument 3 for AF_VSOCK must be an int (got %T)", + optval); + } uint64_t vflag; // Must be set width of 64 bits /* setsockopt(level, opt, flag) */ - if (PyArg_ParseTuple(args, "iiK:setsockopt", - &level, &optname, &vflag)) { - // level should always be set to AF_VSOCK - res = setsockopt(get_sock_fd(s), level, optname, - (void*)&vflag, sizeof vflag); - goto done; + if (!PyArg_Parse(optval, "K", &vflag)) { + return NULL; } - return NULL; + // level should always be set to AF_VSOCK + res = setsockopt(get_sock_fd(s), level, optname, + (void*)&vflag, sizeof vflag); + goto done; } #endif /* setsockopt(level, opt, flag) */ - if (PyArg_ParseTuple(args, "iii:setsockopt", - &level, &optname, &flag)) { + if (PyIndex_Check(optval)) { + if (!PyArg_Parse(optval, "i", &flag)) { + return NULL; + } #ifdef MS_WINDOWS if (optname == SIO_TCP_SET_ACK_FREQUENCY) { DWORD dummy; @@ -3374,36 +3401,40 @@ sock_setsockopt(PyObject *self, PyObject *args) goto done; } - PyErr_Clear(); - /* setsockopt(level, opt, None, flag) */ - if (PyArg_ParseTuple(args, "iiO!I:setsockopt", - &level, &optname, Py_TYPE(Py_None), &none, &optlen)) { + /* setsockopt(level, opt, None, optlen) */ + if (optval == Py_None) { assert(sizeof(socklen_t) >= sizeof(unsigned int)); res = setsockopt(get_sock_fd(s), level, optname, NULL, (socklen_t)optlen); goto done; } - PyErr_Clear(); /* setsockopt(level, opt, buffer) */ - if (!PyArg_ParseTuple(args, "iiy*:setsockopt", - &level, &optname, &optval)) - return NULL; - + if (PyObject_CheckBuffer(optval)) { + if (!PyArg_Parse(optval, "y*", &buffer)) { + return NULL; + } #ifdef MS_WINDOWS - if (optval.len > INT_MAX) { - PyBuffer_Release(&optval); - PyErr_Format(PyExc_OverflowError, - "socket option is larger than %i bytes", - INT_MAX); - return NULL; - } - res = setsockopt(get_sock_fd(s), level, optname, - optval.buf, (int)optval.len); + if (buffer.len > INT_MAX) { + PyBuffer_Release(&buffer); + PyErr_Format(PyExc_OverflowError, + "socket option is larger than %i bytes", + INT_MAX); + return NULL; + } + res = setsockopt(get_sock_fd(s), level, optname, + buffer.buf, (int)buffer.len); #else - res = setsockopt(get_sock_fd(s), level, optname, optval.buf, optval.len); + res = setsockopt(get_sock_fd(s), level, optname, buffer.buf, buffer.len); #endif - PyBuffer_Release(&optval); + PyBuffer_Release(&buffer); + goto done; + } + + PyErr_Format(PyExc_TypeError, + "socket option should be int, bytes-like object or None (got %T)", + optval); + return NULL; done: if (res < 0) { From 485b16b4f7b28cefdfb524c2869d473078e349bf Mon Sep 17 00:00:00 2001 From: Sam Gross Date: Tue, 5 Aug 2025 09:32:22 -0400 Subject: [PATCH 39/87] gh-137238: Fix data race in `_Py_slot_tp_getattr_hook` (gh-137240) Replacing the slot isn't thread-safe if the GIL is disabled. Don't require that the slot has been replaced when specializing. --- Objects/typeobject.c | 3 +++ Python/specialize.c | 9 +-------- Tools/tsan/suppressions_free_threading.txt | 1 - 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 6e67b6e01cb8b8..14bc5a4bc49f84 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -10585,7 +10585,10 @@ _Py_slot_tp_getattr_hook(PyObject *self, PyObject *name) getattr = _PyType_LookupRef(tp, &_Py_ID(__getattr__)); if (getattr == NULL) { /* No __getattr__ hook: use a simpler dispatcher */ +#ifndef Py_GIL_DISABLED + // Replacing the slot is only thread-safe if there is a GIL. tp->tp_getattro = _Py_slot_tp_getattro; +#endif return _Py_slot_tp_getattro(self, name); } /* speed hack: we could use lookup_maybe, but that would resolve the diff --git a/Python/specialize.c b/Python/specialize.c index fe8d04cf3442f1..38df5741f32520 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -935,8 +935,7 @@ analyze_descriptor_load(PyTypeObject *type, PyObject *name, PyObject **descr, un PyObject *getattr = _PyType_Lookup(type, &_Py_ID(__getattr__)); has_getattr = getattr != NULL; if (has_custom_getattribute) { - if (getattro_slot == _Py_slot_tp_getattro && - !has_getattr && + if (!has_getattr && Py_IS_TYPE(getattribute, &PyFunction_Type)) { *descr = getattribute; *tp_version = ga_version; @@ -1259,12 +1258,6 @@ do_specialize_instance_load_attr(PyObject* owner, _Py_CODEUNIT* instr, PyObject* return -1; case GETATTRIBUTE_IS_PYTHON_FUNCTION: { - #ifndef Py_GIL_DISABLED - // In free-threaded builds it's possible for tp_getattro to change - // after the call to analyze_descriptor. That is fine: the version - // guard will fail. - assert(type->tp_getattro == _Py_slot_tp_getattro); - #endif assert(Py_IS_TYPE(descr, &PyFunction_Type)); _PyLoadMethodCache *lm_cache = (_PyLoadMethodCache *)(instr + 1); if (!function_check_args(descr, 2, LOAD_ATTR)) { diff --git a/Tools/tsan/suppressions_free_threading.txt b/Tools/tsan/suppressions_free_threading.txt index 52d7c25a5bb37a..6bd31e8e6ecb9d 100644 --- a/Tools/tsan/suppressions_free_threading.txt +++ b/Tools/tsan/suppressions_free_threading.txt @@ -43,6 +43,5 @@ race:list_inplace_repeat_lock_held race:PyObject_Realloc # gh-133467. Some of these could be hard to trigger. -race_top:_Py_slot_tp_getattr_hook race_top:set_tp_bases race_top:type_set_bases_unlocked From 525784aa65d35a5609aba53c873a9a3a578f992b Mon Sep 17 00:00:00 2001 From: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Date: Tue, 5 Aug 2025 16:55:05 +0200 Subject: [PATCH 40/87] gh-123441: Correct the supported languages of the iso-8859-4 codec (GH-137034) --- Doc/library/codecs.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/codecs.rst b/Doc/library/codecs.rst index f96f2f8281f450..5932012c535b56 100644 --- a/Doc/library/codecs.rst +++ b/Doc/library/codecs.rst @@ -1251,7 +1251,7 @@ particular, the following variants typically exist: +-----------------+--------------------------------+--------------------------------+ | iso8859_3 | iso-8859-3, latin3, L3 | Esperanto, Maltese | +-----------------+--------------------------------+--------------------------------+ -| iso8859_4 | iso-8859-4, latin4, L4 | Baltic languages | +| iso8859_4 | iso-8859-4, latin4, L4 | Northern Europe | +-----------------+--------------------------------+--------------------------------+ | iso8859_5 | iso-8859-5, cyrillic | Belarusian, Bulgarian, | | | | Macedonian, Russian, Serbian | From 1f2026b8a239b3169c0cad0157eb08358152b4c1 Mon Sep 17 00:00:00 2001 From: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Date: Tue, 5 Aug 2025 19:25:57 +0100 Subject: [PATCH 41/87] gh-137288: Fix bug where boolean expressions are not associated with the correct exception handler (#137310) --- Include/internal/pycore_magic_number.h | 3 ++- Lib/test/test_compile.py | 15 +++++++++++++++ ...2025-08-01-18-54-31.gh-issue-137288.FhE7ku.rst | 2 ++ Python/flowgraph.c | 7 +++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-08-01-18-54-31.gh-issue-137288.FhE7ku.rst diff --git a/Include/internal/pycore_magic_number.h b/Include/internal/pycore_magic_number.h index 347d9762f26bff..a570ae684379a4 100644 --- a/Include/internal/pycore_magic_number.h +++ b/Include/internal/pycore_magic_number.h @@ -281,6 +281,7 @@ Known values: Python 3.15a1 3651 (Simplify LOAD_CONST) Python 3.15a1 3652 (Virtual iterators) Python 3.15a1 3653 (Fix handling of opcodes that may leave operands on the stack when optimizing LOAD_FAST) + Python 3.15a1 3654 (Fix missing exception handlers in logical expression) Python 3.16 will start with 3700 @@ -294,7 +295,7 @@ PC/launcher.c must also be updated. */ -#define PYC_MAGIC_NUMBER 3653 +#define PYC_MAGIC_NUMBER 3654 /* This is equivalent to converting PYC_MAGIC_NUMBER to 2 bytes (little-endian) and then appending b'\r\n'. */ #define PYC_MAGIC_NUMBER_TOKEN \ diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 57e5f29b015637..8a66be9b331262 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -1723,6 +1723,21 @@ def test_compound(self): self.assertIs(res, v[3]) self.assertEqual([e.called for e in v], [1, 1, 0, 1, 0]) + def test_exception(self): + # See gh-137288 + class Foo: + def __bool__(self): + raise NotImplementedError() + + a = Foo() + b = Foo() + + with self.assertRaises(NotImplementedError): + bool(a) + + with self.assertRaises(NotImplementedError): + c = a or b + @requires_debug_ranges() class TestSourcePositions(unittest.TestCase): # Ensure that compiled code snippets have correct line and column numbers diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-08-01-18-54-31.gh-issue-137288.FhE7ku.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-01-18-54-31.gh-issue-137288.FhE7ku.rst new file mode 100644 index 00000000000000..37c143f18e76f7 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-01-18-54-31.gh-issue-137288.FhE7ku.rst @@ -0,0 +1,2 @@ +Fix bug where some bytecode instructions of a boolean expression are not +associated with the correct exception handler. diff --git a/Python/flowgraph.c b/Python/flowgraph.c index 1cb6f03169e3b5..d82da15a43cac6 100644 --- a/Python/flowgraph.c +++ b/Python/flowgraph.c @@ -3472,11 +3472,13 @@ convert_pseudo_conditional_jumps(cfg_builder *g) instr->i_opcode = instr->i_opcode == JUMP_IF_FALSE ? POP_JUMP_IF_FALSE : POP_JUMP_IF_TRUE; location loc = instr->i_loc; + basicblock *except = instr->i_except; cfg_instr copy = { .i_opcode = COPY, .i_oparg = 1, .i_loc = loc, .i_target = NULL, + .i_except = except, }; RETURN_IF_ERROR(basicblock_insert_instruction(b, i++, ©)); cfg_instr to_bool = { @@ -3484,6 +3486,7 @@ convert_pseudo_conditional_jumps(cfg_builder *g) .i_oparg = 0, .i_loc = loc, .i_target = NULL, + .i_except = except, }; RETURN_IF_ERROR(basicblock_insert_instruction(b, i++, &to_bool)); } @@ -3726,6 +3729,7 @@ insert_prefix_instructions(_PyCompile_CodeUnitMetadata *umd, basicblock *entrybl .i_oparg = 0, .i_loc = loc, .i_target = NULL, + .i_except = NULL, }; RETURN_IF_ERROR(basicblock_insert_instruction(entryblock, 0, &make_gen)); cfg_instr pop_top = { @@ -3733,6 +3737,7 @@ insert_prefix_instructions(_PyCompile_CodeUnitMetadata *umd, basicblock *entrybl .i_oparg = 0, .i_loc = loc, .i_target = NULL, + .i_except = NULL, }; RETURN_IF_ERROR(basicblock_insert_instruction(entryblock, 1, &pop_top)); } @@ -3763,6 +3768,7 @@ insert_prefix_instructions(_PyCompile_CodeUnitMetadata *umd, basicblock *entrybl .i_oparg = oldindex, .i_loc = NO_LOCATION, .i_target = NULL, + .i_except = NULL, }; if (basicblock_insert_instruction(entryblock, ncellsused, &make_cell) < 0) { PyMem_RawFree(sorted); @@ -3779,6 +3785,7 @@ insert_prefix_instructions(_PyCompile_CodeUnitMetadata *umd, basicblock *entrybl .i_oparg = nfreevars, .i_loc = NO_LOCATION, .i_target = NULL, + .i_except = NULL, }; RETURN_IF_ERROR(basicblock_insert_instruction(entryblock, 0, ©_frees)); } From 9745976ac6b3e1633838fb6c192328b08ca3f8ce Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Tue, 5 Aug 2025 14:44:27 -0500 Subject: [PATCH 42/87] Fix buildbot release status link in CONTRIBUTING.rst (GH-137429) The existing link works, but includes the legacy `/all` part of the path which causes a scary-looking banner about a misconfiguration on the `Home` page when in reality it's the link that includes a deprecated path. --- .github/CONTRIBUTING.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.rst b/.github/CONTRIBUTING.rst index 2ef9cdc191481e..5b86302bdd1ec4 100644 --- a/.github/CONTRIBUTING.rst +++ b/.github/CONTRIBUTING.rst @@ -4,7 +4,7 @@ Contributing to Python Build Status ------------ -- `Buildbot status overview `_ +- `Buildbot status overview `_ - `GitHub Actions status `_ From 39bd7c3156b00dda85ea09dffdde3e3536f37a55 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Tue, 5 Aug 2025 22:14:31 +0200 Subject: [PATCH 43/87] GH-136155: Use ``sphinxext-opengraph`` v0.12.0 (#137393) --- Doc/conf.py | 19 ++++++++----------- Doc/requirements.txt | 2 +- ...-07-01-21-04-47.gh-issue-136155.ufmH4Q.rst | 1 - 3 files changed, 9 insertions(+), 13 deletions(-) delete mode 100644 Misc/NEWS.d/next/Documentation/2025-07-01-21-04-47.gh-issue-136155.ufmH4Q.rst diff --git a/Doc/conf.py b/Doc/conf.py index 1c1f36e5bc0737..35e0b3eaeafe94 100644 --- a/Doc/conf.py +++ b/Doc/conf.py @@ -567,14 +567,11 @@ 'image': '_static/og-image.png', 'line_color': '#3776ab', } -if 'builder_html' in tags: # noqa: F821 - ogp_custom_meta_tags = [ - '', - ] - if 'create-social-cards' not in tags: # noqa: F821 - # Define a static preview image when not creating social cards - ogp_image = '_static/og-image.png' - ogp_custom_meta_tags += [ - '', - '', - ] +ogp_custom_meta_tags = ('',) +if 'create-social-cards' not in tags: # noqa: F821 + # Define a static preview image when not creating social cards + ogp_image = '_static/og-image.png' + ogp_custom_meta_tags += ( + '', + '', + ) diff --git a/Doc/requirements.txt b/Doc/requirements.txt index 924e218c9f67d9..7b7286429a1041 100644 --- a/Doc/requirements.txt +++ b/Doc/requirements.txt @@ -11,7 +11,7 @@ sphinx~=8.2.0 blurb -sphinxext-opengraph~=0.11.0 +sphinxext-opengraph~=0.12.0 sphinx-notfound-page~=1.0.0 # The theme used by the documentation is stored separately, so we need diff --git a/Misc/NEWS.d/next/Documentation/2025-07-01-21-04-47.gh-issue-136155.ufmH4Q.rst b/Misc/NEWS.d/next/Documentation/2025-07-01-21-04-47.gh-issue-136155.ufmH4Q.rst deleted file mode 100644 index 0341b5f7f0d5e6..00000000000000 --- a/Misc/NEWS.d/next/Documentation/2025-07-01-21-04-47.gh-issue-136155.ufmH4Q.rst +++ /dev/null @@ -1 +0,0 @@ -EPUB builds are fixed by excluding non-XHTML-compatible tags. From 44ff6b545149ea59837fc74122d435572f21e489 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Tue, 5 Aug 2025 16:30:38 -0400 Subject: [PATCH 44/87] Docs: add dunder and walrus to the glossary (#137430) --- Doc/glossary.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Doc/glossary.rst b/Doc/glossary.rst index a4dc986c313c57..69e8857af894e4 100644 --- a/Doc/glossary.rst +++ b/Doc/glossary.rst @@ -435,6 +435,11 @@ Glossary with :term:`abstract base classes `.) Instead, it typically employs :func:`hasattr` tests or :term:`EAFP` programming. + dunder + An informal short-hand for "double underscore", used when talking about a + :term:`special method`. For example, ``__init__`` is often pronounced + "dunder init". + EAFP Easier to ask for forgiveness than permission. This common Python coding style assumes the existence of valid keys or attributes and catches @@ -1474,6 +1479,11 @@ Glossary A computer defined entirely in software. Python's virtual machine executes the :term:`bytecode` emitted by the bytecode compiler. + walrus operator + A light-hearted way to refer to the :ref:`assignment expression + ` operator ``:=`` because it looks a bit like a + walrus if you turn your head. + Zen of Python Listing of Python design principles and philosophies that are helpful in understanding and using the language. The listing can be found by typing From 532c37695d03f84fc6d12f891d26b901ef402ac4 Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" <68491+gpshead@users.noreply.github.com> Date: Tue, 5 Aug 2025 13:50:51 -0700 Subject: [PATCH 45/87] gh-137134: Update SQLite to 3.50.4 for binary releases (GH-137135) * Update SQLite to 3.50.3 for binary releases. * macOS and Windows news entries. what about Android? * update sbom hash * newline fix via regen-sbom * news wording * Update SQLite to 3.50.4 for binary releases. * update 3.50.4.0.tar.gz hash in sbom & regen-sbom to fix whitespace * Postpone to a separate PR the build-installer changes to support additional hash types Co-authored-by: Erlend E. Aasland Co-authored-by: Claude Co-authored-by: Ned Deily --- Android/android.py | 2 +- Mac/BuildScript/build-installer.py | 6 +++--- .../2025-07-27-02-16-53.gh-issue-137134.W0WpDF.rst | 1 + .../macOS/2025-07-27-02-17-40.gh-issue-137134.pjgITs.rst | 1 + Misc/externals.spdx.json | 8 ++++---- PCbuild/get_externals.bat | 2 +- PCbuild/python.props | 2 +- PCbuild/readme.txt | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 Misc/NEWS.d/next/Windows/2025-07-27-02-16-53.gh-issue-137134.W0WpDF.rst create mode 100644 Misc/NEWS.d/next/macOS/2025-07-27-02-17-40.gh-issue-137134.pjgITs.rst diff --git a/Android/android.py b/Android/android.py index 75f73cd30993da..e6090aa1d80db0 100755 --- a/Android/android.py +++ b/Android/android.py @@ -187,7 +187,7 @@ def unpack_deps(host, prefix_dir): os.chdir(prefix_dir) deps_url = "https://github.com/beeware/cpython-android-source-deps/releases/download" for name_ver in ["bzip2-1.0.8-3", "libffi-3.4.4-3", "openssl-3.0.15-4", - "sqlite-3.49.1-0", "xz-5.4.6-1", "zstd-1.5.7-1"]: + "sqlite-3.50.4-0", "xz-5.4.6-1", "zstd-1.5.7-1"]: filename = f"{name_ver}-{host}.tar.gz" download(f"{deps_url}/{name_ver}/{filename}") shutil.unpack_archive(filename) diff --git a/Mac/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py index b31cb766a468f4..8ae2cff93d2082 100755 --- a/Mac/BuildScript/build-installer.py +++ b/Mac/BuildScript/build-installer.py @@ -359,9 +359,9 @@ def library_recipes(): ), ), dict( - name="SQLite 3.49.1", - url="https://sqlite.org/2025/sqlite-autoconf-3490100.tar.gz", - checksum="106642d8ccb36c5f7323b64e4152e9b719f7c0215acf5bfeac3d5e7f97b59254", + name="SQLite 3.50.4", + url="https://www.sqlite.org/2025/sqlite-autoconf-3500400.tar.gz", + checksum="a3db587a1b92ee5ddac2f66b3edb41b26f9c867275782d46c3a088977d6a5b18", extra_cflags=('-Os ' '-DSQLITE_ENABLE_FTS5 ' '-DSQLITE_ENABLE_FTS4 ' diff --git a/Misc/NEWS.d/next/Windows/2025-07-27-02-16-53.gh-issue-137134.W0WpDF.rst b/Misc/NEWS.d/next/Windows/2025-07-27-02-16-53.gh-issue-137134.W0WpDF.rst new file mode 100644 index 00000000000000..ddccf95b7d039a --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2025-07-27-02-16-53.gh-issue-137134.W0WpDF.rst @@ -0,0 +1 @@ +Update Windows installer to ship with SQLite 3.50.4. diff --git a/Misc/NEWS.d/next/macOS/2025-07-27-02-17-40.gh-issue-137134.pjgITs.rst b/Misc/NEWS.d/next/macOS/2025-07-27-02-17-40.gh-issue-137134.pjgITs.rst new file mode 100644 index 00000000000000..957270f5abae93 --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2025-07-27-02-17-40.gh-issue-137134.pjgITs.rst @@ -0,0 +1 @@ +Update macOS installer to ship with SQLite version 3.50.4. diff --git a/Misc/externals.spdx.json b/Misc/externals.spdx.json index 69f3beec82ed34..a87af7f9173780 100644 --- a/Misc/externals.spdx.json +++ b/Misc/externals.spdx.json @@ -91,21 +91,21 @@ "checksums": [ { "algorithm": "SHA256", - "checksumValue": "e335aeb44fa36cde60ecbb6a9f8be6f5d449d645ce9b0199ee53a7e6728d19d2" + "checksumValue": "fb5ab81f27612b0a7b4861ba655906c76dc85ee969e7a4905d2075aff931e8d0" } ], - "downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/sqlite-3.49.1.0.tar.gz", + "downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/sqlite-3.50.4.0.tar.gz", "externalRefs": [ { "referenceCategory": "SECURITY", - "referenceLocator": "cpe:2.3:a:sqlite:sqlite:3.49.1.0:*:*:*:*:*:*:*", + "referenceLocator": "cpe:2.3:a:sqlite:sqlite:3.50.4.0:*:*:*:*:*:*:*", "referenceType": "cpe23Type" } ], "licenseConcluded": "NOASSERTION", "name": "sqlite", "primaryPackagePurpose": "SOURCE", - "versionInfo": "3.49.1.0" + "versionInfo": "3.50.4.0" }, { "SPDXID": "SPDXRef-PACKAGE-tcl-core", diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat index e29054f5734d49..eff8d1ccd7f146 100644 --- a/PCbuild/get_externals.bat +++ b/PCbuild/get_externals.bat @@ -56,7 +56,7 @@ set libraries=%libraries% bzip2-1.0.8 if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.4.4 if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-3.0.16 set libraries=%libraries% mpdecimal-4.0.0 -set libraries=%libraries% sqlite-3.49.1.0 +set libraries=%libraries% sqlite-3.50.4.0 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.15.0 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.15.0 set libraries=%libraries% xz-5.2.5 diff --git a/PCbuild/python.props b/PCbuild/python.props index ddc7696d2762fe..e1c2ff3fe3cc11 100644 --- a/PCbuild/python.props +++ b/PCbuild/python.props @@ -74,7 +74,7 @@ - $(ExternalsDir)sqlite-3.49.1.0\ + $(ExternalsDir)sqlite-3.50.4.0\ $(ExternalsDir)bzip2-1.0.8\ $(ExternalsDir)xz-5.2.5\ $(ExternalsDir)libffi-3.4.4\ diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 3ae3255d933967..27c0d382281bdb 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -237,7 +237,7 @@ _ssl again when building. _sqlite3 - Wraps SQLite 3.49.1, which is itself built by sqlite3.vcxproj + Wraps SQLite 3.50.4, which is itself built by sqlite3.vcxproj Homepage: https://www.sqlite.org/ From c2428ca9ea0c4eac9c7f2b41aff5f77660f21298 Mon Sep 17 00:00:00 2001 From: Sina Zel taat <111974143+SZeltaat@users.noreply.github.com> Date: Tue, 5 Aug 2025 22:52:33 +0200 Subject: [PATCH 46/87] gh-136823: Update documentation on excluded headers in Python.h (#136824) Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com> --- Doc/extending/extending.rst | 37 +++++++++++++++++++++++++++++++------ Include/Python.h | 1 + 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/Doc/extending/extending.rst b/Doc/extending/extending.rst index a89a69043c0f9f..17c6fb224265ca 100644 --- a/Doc/extending/extending.rst +++ b/Doc/extending/extending.rst @@ -75,12 +75,37 @@ the module and a copyright notice if you like). See :ref:`arg-parsing-string-and-buffers` for a description of this macro. All user-visible symbols defined by :file:`Python.h` have a prefix of ``Py`` or -``PY``, except those defined in standard header files. For convenience, and -since they are used extensively by the Python interpreter, ``"Python.h"`` -includes a few standard header files: ````, ````, -````, and ````. If the latter header file does not exist on -your system, it declares the functions :c:func:`malloc`, :c:func:`free` and -:c:func:`realloc` directly. +``PY``, except those defined in standard header files. + +.. tip:: + + For backward compatibility, :file:`Python.h` includes several standard header files. + C extensions should include the standard headers that they use, + and should not rely on these implicit includes. + If using the limited C API version 3.13 or newer, the implicit includes are: + + * ```` + * ```` (on Windows) + * ```` + * ```` + * ```` + * ```` + * ```` + * ```` (if present) + + If :c:macro:`Py_LIMITED_API` is not defined, or is set to version 3.12 or older, + the headers below are also included: + + * ```` + * ```` (on POSIX) + + If :c:macro:`Py_LIMITED_API` is not defined, or is set to version 3.10 or older, + the headers below are also included: + + * ```` + * ```` + * ```` + * ```` The next thing we add to our module file is the C function that will be called when the Python expression ``spam.system(string)`` is evaluated (we'll see diff --git a/Include/Python.h b/Include/Python.h index 3f49b78947c9a6..b6ee500aada791 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -16,6 +16,7 @@ // Include standard header files +// When changing these files, remember to update Doc/extending/extending.rst. #include // assert() #include // uintptr_t #include // INT_MAX From 54a5fdffc8e20f111e7a7d2df352e8be057177ff Mon Sep 17 00:00:00 2001 From: Furkan Onder Date: Wed, 6 Aug 2025 07:19:56 +0000 Subject: [PATCH 47/87] gh-137056: Fix DTrace build support on NetBSD (GH-137057) --- Makefile.pre.in | 4 ++-- configure | 22 ++++++++++++++++++++-- configure.ac | 21 +++++++++++++++++++-- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 67e963f83c128f..bcf19654adfb35 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -2230,7 +2230,7 @@ Python/frozen.o: $(FROZEN_FILES_OUT) # an include guard, so we can't use a pipeline to transform its output. Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d $(MKDIR_P) Include - CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -h -s $< + CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -h -s $(srcdir)/Include/pydtrace.d : sed in-place edit with POSIX-only tools sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp mv $@.tmp $@ @@ -2240,7 +2240,7 @@ Python/gc.o: $(srcdir)/Include/pydtrace.h Python/import.o: $(srcdir)/Include/pydtrace.h Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS) - CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -G -s $< $(DTRACE_DEPS) + CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -G -s $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS) Objects/typeobject.o: Objects/typeslots.inc diff --git a/configure b/configure index 74df430d10d6bd..451f72fdfd4ec3 100755 --- a/configure +++ b/configure @@ -19037,15 +19037,27 @@ printf "%s\n" "#define WITH_DTRACE 1" >>confdefs.h # linked into the binary. Correspondingly, dtrace(1) is missing the ELF # generation flag '-G'. We check for presence of this flag, rather than # hardcoding support by OS, in the interest of robustness. + # + # NetBSD DTrace requires the -x nolibs flag to avoid system library conflicts + # and uses header generation for testing instead of object generation. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether DTrace probes require linking" >&5 printf %s "checking whether DTrace probes require linking... " >&6; } if test ${ac_cv_dtrace_link+y} then : printf %s "(cached) " >&6 else case e in #( - e) ac_cv_dtrace_link=no + e) + ac_cv_dtrace_link=no echo 'BEGIN{}' > conftest.d - "$DTRACE" $DFLAGS -G -s conftest.d -o conftest.o > /dev/null 2>&1 && \ + case $host in + *netbsd*) + DTRACE_TEST_FLAGS="-x nolibs -h" + ;; + *) + DTRACE_TEST_FLAGS="-G" + ;; + esac + "$DTRACE" $DFLAGS $DTRACE_TEST_FLAGS -s conftest.d -o conftest.o > /dev/null 2>&1 && \ ac_cv_dtrace_link=yes ;; esac @@ -19055,6 +19067,12 @@ printf "%s\n" "$ac_cv_dtrace_link" >&6; } if test "$ac_cv_dtrace_link" = "yes"; then DTRACE_OBJS="Python/pydtrace.o" fi + # Set NetBSD-specific DTrace flags in DFLAGS + case $host in + *netbsd*) + DFLAGS="$DFLAGS -x nolibs" + ;; + esac fi PLATFORM_HEADERS= diff --git a/configure.ac b/configure.ac index c526ba5a03d35c..f0e9eb2ee88c03 100644 --- a/configure.ac +++ b/configure.ac @@ -5104,16 +5104,33 @@ then # linked into the binary. Correspondingly, dtrace(1) is missing the ELF # generation flag '-G'. We check for presence of this flag, rather than # hardcoding support by OS, in the interest of robustness. + # + # NetBSD DTrace requires the -x nolibs flag to avoid system library conflicts + # and uses header generation for testing instead of object generation. AC_CACHE_CHECK([whether DTrace probes require linking], - [ac_cv_dtrace_link], [dnl + [ac_cv_dtrace_link], [ ac_cv_dtrace_link=no echo 'BEGIN{}' > conftest.d - "$DTRACE" $DFLAGS -G -s conftest.d -o conftest.o > /dev/null 2>&1 && \ + case $host in + *netbsd*) + DTRACE_TEST_FLAGS="-x nolibs -h" + ;; + *) + DTRACE_TEST_FLAGS="-G" + ;; + esac + "$DTRACE" $DFLAGS $DTRACE_TEST_FLAGS -s conftest.d -o conftest.o > /dev/null 2>&1 && \ ac_cv_dtrace_link=yes ]) if test "$ac_cv_dtrace_link" = "yes"; then DTRACE_OBJS="Python/pydtrace.o" fi + # Set NetBSD-specific DTrace flags in DFLAGS + case $host in + *netbsd*) + DFLAGS="$DFLAGS -x nolibs" + ;; + esac fi dnl Platform-specific C and header files. From 247dab27fdde1f37a28fbebdaeb3e6ee369a009a Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Wed, 6 Aug 2025 10:47:18 +0200 Subject: [PATCH 48/87] gh-133390: Amend gh-135659 (sqlite3 docs update) (#137447) * gh-133390: Amend gh-135659 (sqlite3 docs update) --- Doc/library/sqlite3.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index a14af6d3d88df2..d317ead66f9bcb 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -509,7 +509,7 @@ Module constants .. data:: SQLITE_KEYWORDS - A :class:`tuple` containing all sqlite3 keywords. + A :class:`tuple` containing all SQLite keywords. This constant is only available if Python was compiled with SQLite 3.24.0 or greater. From 781eb1a688e0575a38c79575493f3ff83208a33e Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Wed, 6 Aug 2025 07:21:30 -0400 Subject: [PATCH 49/87] gh-137450: macOS installer shell path management improvements (#137451) Separate the installer `Shell profile updater` postinstall script from the `Update Shell Profile.command` to enable more robust error handling. --- Mac/BuildScript/build-installer.py | 2 +- .../resources/update_shell_profile.command | 116 +++++++++++++ .../scripts/postflight.patch-profile | 156 ++++++++---------- ...-08-06-06-29-12.gh-issue-137450.JZypb7.rst | 3 + 4 files changed, 192 insertions(+), 85 deletions(-) create mode 100755 Mac/BuildScript/resources/update_shell_profile.command create mode 100644 Misc/NEWS.d/next/macOS/2025-08-06-06-29-12.gh-issue-137450.JZypb7.rst diff --git a/Mac/BuildScript/build-installer.py b/Mac/BuildScript/build-installer.py index 8ae2cff93d2082..4da6d924848889 100755 --- a/Mac/BuildScript/build-installer.py +++ b/Mac/BuildScript/build-installer.py @@ -1747,7 +1747,7 @@ def main(): fn = os.path.join(folder, "ReadMe.rtf") patchFile("resources/ReadMe.rtf", fn) fn = os.path.join(folder, "Update Shell Profile.command") - patchScript("scripts/postflight.patch-profile", fn) + patchScript("resources/update_shell_profile.command", fn) fn = os.path.join(folder, "Install Certificates.command") patchScript("resources/install_certificates.command", fn) os.chmod(folder, STAT_0o755) diff --git a/Mac/BuildScript/resources/update_shell_profile.command b/Mac/BuildScript/resources/update_shell_profile.command new file mode 100755 index 00000000000000..3cf4d74de9f09a --- /dev/null +++ b/Mac/BuildScript/resources/update_shell_profile.command @@ -0,0 +1,116 @@ +#!/bin/sh + +echo "This script will update your shell profile when the 'bin' directory" +echo "of python is not early enough of the PATH of your shell." +echo "These changes will be effective only in shell windows that you open" +echo "after running this script." + +PYVER=@PYVER@ +PYTHON_ROOT="/Library/Frameworks/Python.framework/Versions/@PYVER@" + +if [ `id -ur` = 0 ]; then + # Run from the installer, do some trickery to fetch the information + # we need. + theShell="`finger $USER | grep Shell: | head -1 | awk '{ print $NF }'`" + +else + theShell="${SHELL}" +fi + +# Make sure the directory ${PYTHON_ROOT}/bin is on the users PATH. +BSH="`basename "${theShell}"`" +case "${BSH}" in +bash|ksh|sh|*csh|zsh|fish) + if [ `id -ur` = 0 ]; then + P=`su - ${USER} -c 'echo A-X-4-X@@$PATH@@X-4-X-A' | grep 'A-X-4-X@@.*@@X-4-X-A' | sed -e 's/^A-X-4-X@@//g' -e 's/@@X-4-X-A$//g'` + else + P="`(exec -l ${theShell} -c 'echo $PATH')`" + fi + ;; +*) + echo "Sorry, I don't know how to patch $BSH shells" + exit 0 + ;; +esac + +# Now ensure that our bin directory is on $P and before /usr/bin at that +for elem in `echo $P | tr ':' ' '` +do + if [ "${elem}" = "${PYTHON_ROOT}/bin" ]; then + echo "All right, you're a python lover already" + exit 0 + elif [ "${elem}" = "/usr/bin" ]; then + break + fi +done + +echo "${PYTHON_ROOT}/bin is not on your PATH or at least not early enough" +case "${BSH}" in +*csh) + if [ -f "${HOME}/.tcshrc" ]; then + RC="${HOME}/.tcshrc" + else + RC="${HOME}/.cshrc" + fi + # Create backup copy before patching + if [ -f "${RC}" ]; then + cp -fp "${RC}" "${RC}.pysave" + fi + echo "" >> "${RC}" + echo "# Setting PATH for Python ${PYVER}" >> "${RC}" + echo "# The original version is saved in .cshrc.pysave" >> "${RC}" + echo "set path=(${PYTHON_ROOT}/bin "'$path'")" >> "${RC}" + if [ `id -ur` = 0 ]; then + chown -h "${USER}" "${RC}" + fi + exit 0 + ;; +bash) + if [ -e "${HOME}/.bash_profile" ]; then + PR="${HOME}/.bash_profile" + elif [ -e "${HOME}/.bash_login" ]; then + PR="${HOME}/.bash_login" + elif [ -e "${HOME}/.profile" ]; then + PR="${HOME}/.profile" + else + PR="${HOME}/.bash_profile" + fi + ;; +fish) + CONFIG_DIR="${HOME}/.config/fish/conf.d/" + RC="${CONFIG_DIR}/python-${PYVER}.fish" + mkdir -p "$CONFIG_DIR" + if [ -f "${RC}" ]; then + cp -fp "${RC}" "${RC}.pysave" + fi + echo "# Setting PATH for Python ${PYVER}" > "${RC}" + if [ -f "${RC}.pysave" ]; then + echo "# The original version is saved in ${RC}.pysave" >> "${RC}" + fi + echo "fish_add_path -g \"${PYTHON_ROOT}/bin\"" >> "${RC}" + if [ `id -ur` = 0 ]; then + chown -h "${USER}" "${RC}" + fi + exit 0 + ;; +zsh) + PR="${HOME}/.zprofile" + ;; +*sh) + PR="${HOME}/.profile" + ;; +esac + +# Create backup copy before patching +if [ -f "${PR}" ]; then + cp -fp "${PR}" "${PR}.pysave" +fi +echo "" >> "${PR}" +echo "# Setting PATH for Python ${PYVER}" >> "${PR}" +echo "# The original version is saved in `basename ${PR}`.pysave" >> "${PR}" +echo 'PATH="'"${PYTHON_ROOT}/bin"':${PATH}"' >> "${PR}" +echo 'export PATH' >> "${PR}" +if [ `id -ur` = 0 ]; then + chown -h "${USER}" "${PR}" +fi +exit 0 diff --git a/Mac/BuildScript/scripts/postflight.patch-profile b/Mac/BuildScript/scripts/postflight.patch-profile index 9caf62211ddd16..ce8720f895d1b5 100755 --- a/Mac/BuildScript/scripts/postflight.patch-profile +++ b/Mac/BuildScript/scripts/postflight.patch-profile @@ -1,116 +1,104 @@ #!/bin/sh -echo "This script will update your shell profile when the 'bin' directory" -echo "of python is not early enough of the PATH of your shell." -echo "These changes will be effective only in shell windows that you open" -echo "after running this script." - PYVER=@PYVER@ PYTHON_ROOT="/Library/Frameworks/Python.framework/Versions/@PYVER@" -if [ `id -ur` = 0 ]; then - # Run from the installer, do some trickery to fetch the information - # we need. - theShell="`finger $USER | grep Shell: | head -1 | awk '{ print $NF }'`" -else - theShell="${SHELL}" -fi +# Run from the installer, do some trickery to fetch the information +# we need. +theShell="`finger $USER | grep Shell: | head -1 | awk '{ print $NF }'`" # Make sure the directory ${PYTHON_ROOT}/bin is on the users PATH. BSH="`basename "${theShell}"`" case "${BSH}" in bash|ksh|sh|*csh|zsh|fish) - if [ `id -ur` = 0 ]; then - P=`su - ${USER} -c 'echo A-X-4-X@@$PATH@@X-4-X-A' | grep 'A-X-4-X@@.*@@X-4-X-A' | sed -e 's/^A-X-4-X@@//g' -e 's/@@X-4-X-A$//g'` - else - P="`(exec -l ${theShell} -c 'echo $PATH')`" - fi - ;; + true + ;; *) - echo "Sorry, I don't know how to patch $BSH shells" - exit 0 - ;; + exit 0 + ;; esac -# Now ensure that our bin directory is on $P and before /usr/bin at that -for elem in `echo $P | tr ':' ' '` -do - if [ "${elem}" = "${PYTHON_ROOT}/bin" ]; then - echo "All right, you're a python lover already" - exit 0 - elif [ "${elem}" = "/usr/bin" ]; then - break - fi -done - -echo "${PYTHON_ROOT}/bin is not on your PATH or at least not early enough" case "${BSH}" in *csh) - if [ -f "${HOME}/.tcshrc" ]; then - RC="${HOME}/.tcshrc" - else - RC="${HOME}/.cshrc" - fi - # Create backup copy before patching - if [ -f "${RC}" ]; then - cp -fp "${RC}" "${RC}.pysave" - fi - echo "" >> "${RC}" - echo "# Setting PATH for Python ${PYVER}" >> "${RC}" - echo "# The original version is saved in .cshrc.pysave" >> "${RC}" - echo "set path=(${PYTHON_ROOT}/bin "'$path'")" >> "${RC}" - if [ `id -ur` = 0 ]; then - chown "${USER}" "${RC}" - fi - exit 0 - ;; + if [ -f "${HOME}/.tcshrc" ]; then + RC="${HOME}/.tcshrc" + else + RC="${HOME}/.cshrc" + fi + + # Drop privileges while writing files. + su -m ${USER} <> "${RC}" + echo "# Setting PATH for Python ${PYVER}" >> "${RC}" + echo "# The original version is saved in .cshrc.pysave" >> "${RC}" + echo "set path=(${PYTHON_ROOT}/bin "'\$path'")" >> "${RC}" +EOFC + + if [ `id -ur` = 0 ]; then + chown -h "${USER}" "${RC}" + fi + exit 0 + ;; bash) - if [ -e "${HOME}/.bash_profile" ]; then - PR="${HOME}/.bash_profile" - elif [ -e "${HOME}/.bash_login" ]; then - PR="${HOME}/.bash_login" - elif [ -e "${HOME}/.profile" ]; then - PR="${HOME}/.profile" - else - PR="${HOME}/.bash_profile" - fi - ;; + if [ -e "${HOME}/.bash_profile" ]; then + PR="${HOME}/.bash_profile" + elif [ -e "${HOME}/.bash_login" ]; then + PR="${HOME}/.bash_login" + elif [ -e "${HOME}/.profile" ]; then + PR="${HOME}/.profile" + else + PR="${HOME}/.bash_profile" + fi + ;; fish) - CONFIG_DIR="${HOME}/.config/fish/conf.d/" - RC="${CONFIG_DIR}/python-${PYVER}.fish" - mkdir -p "$CONFIG_DIR" - if [ -f "${RC}" ]; then - cp -fp "${RC}" "${RC}.pysave" - fi - echo "# Setting PATH for Python ${PYVER}" > "${RC}" - if [ -f "${RC}.pysave" ]; then - echo "# The original version is saved in ${RC}.pysave" >> "${RC}" - fi - echo "fish_add_path -g \"${PYTHON_ROOT}/bin\"" >> "${RC}" - if [ `id -ur` = 0 ]; then - chown "${USER}" "${RC}" - fi - exit 0 - ;; + CONFIG_DIR="${HOME}/.config/fish/conf.d/" + RC="${CONFIG_DIR}/python-${PYVER}.fish" + + # Drop privileges while writing files. + su -m ${USER} < "${RC}" + if [ -f "${RC}.pysave" ]; then + echo "# The original version is saved in ${RC}.pysave" >> "${RC}" + fi + echo "fish_add_path -g \"${PYTHON_ROOT}/bin\"" >> "${RC}" +EOFF + + if [ `id -ur` = 0 ]; then + chown -h "${USER}" "${RC}" + fi + exit 0 + ;; zsh) - PR="${HOME}/.zprofile" - ;; + PR="${HOME}/.zprofile" + ;; *sh) - PR="${HOME}/.profile" - ;; + PR="${HOME}/.profile" + ;; esac +# Drop privileges while writing files. +su -m ${USER} <> "${PR}" echo "# Setting PATH for Python ${PYVER}" >> "${PR}" echo "# The original version is saved in `basename ${PR}`.pysave" >> "${PR}" -echo 'PATH="'"${PYTHON_ROOT}/bin"':${PATH}"' >> "${PR}" +echo 'PATH="'"${PYTHON_ROOT}/bin"':\${PATH}"' >> "${PR}" echo 'export PATH' >> "${PR}" +EOFS + if [ `id -ur` = 0 ]; then - chown "${USER}" "${PR}" + chown -h "${USER}" "${PR}" fi exit 0 diff --git a/Misc/NEWS.d/next/macOS/2025-08-06-06-29-12.gh-issue-137450.JZypb7.rst b/Misc/NEWS.d/next/macOS/2025-08-06-06-29-12.gh-issue-137450.JZypb7.rst new file mode 100644 index 00000000000000..5efd74660c95d2 --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2025-08-06-06-29-12.gh-issue-137450.JZypb7.rst @@ -0,0 +1,3 @@ +macOS installer shell path management improvements: separate the installer +``Shell profile updater`` postinstall script from the +``Update Shell Profile.command`` to enable more robust error handling. From 3a79a122624bafe27252299b7f47f66a6059f732 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 6 Aug 2025 14:33:28 +0200 Subject: [PATCH 50/87] Use PyConfig_Get() in frozenmain.c (#137421) Replace private _Py_GetConfig() with public PyConfig_Get(). Remove also explicit PyRuntime initialization, it's not needed. --- Python/frozenmain.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Python/frozenmain.c b/Python/frozenmain.c index ec4566bd4f84bc..3de587c0423226 100644 --- a/Python/frozenmain.c +++ b/Python/frozenmain.c @@ -1,8 +1,7 @@ /* Python interpreter main program for frozen scripts */ #include "Python.h" -#include "pycore_pystate.h" // _Py_GetConfig() -#include "pycore_runtime.h" // _PyRuntime_Initialize() +#include "pycore_pystate.h" // _PyInterpreterState_SetRunningMain() #ifdef HAVE_UNISTD_H # include // isatty() @@ -20,11 +19,6 @@ extern int PyInitFrozenExtensions(void); int Py_FrozenMain(int argc, char **argv) { - PyStatus status = _PyRuntime_Initialize(); - if (PyStatus_Exception(status)) { - Py_ExitStatusException(status); - } - PyConfig config; PyConfig_InitPythonConfig(&config); // Suppress errors from getpath.c @@ -32,7 +26,7 @@ Py_FrozenMain(int argc, char **argv) // Don't parse command line options like -E config.parse_argv = 0; - status = PyConfig_SetBytesArgv(&config, argc, argv); + PyStatus status = PyConfig_SetBytesArgv(&config, argc, argv); if (PyStatus_Exception(status)) { PyConfig_Clear(&config); Py_ExitStatusException(status); @@ -64,7 +58,12 @@ Py_FrozenMain(int argc, char **argv) PyWinFreeze_ExeInit(); #endif - if (_Py_GetConfig()->verbose) { + int verbose; + if (PyConfig_GetInt("verbose", &verbose) < 0) { + verbose = 0; + PyErr_Clear(); + } + if (verbose) { fprintf(stderr, "Python %s\n%s\n", Py_GetVersion(), Py_GetCopyright()); } From c17f378c0efb67afb245fe2ef9e7dd2272541ff9 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 6 Aug 2025 14:34:56 +0200 Subject: [PATCH 51/87] Use PyInitConfig API in _freeze_module.c (#137423) --- Programs/_freeze_module.c | 45 +++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/Programs/_freeze_module.c b/Programs/_freeze_module.c index 06d1ee016dc2a8..a5809b37b6b493 100644 --- a/Programs/_freeze_module.c +++ b/Programs/_freeze_module.c @@ -45,27 +45,40 @@ static const char header[] = static void runtime_init(void) { - PyConfig config; - PyConfig_InitIsolatedConfig(&config); - - config.site_import = 0; + PyInitConfig *config = PyInitConfig_Create(); + if (config == NULL) { + printf("memory allocation failed\n"); + exit(1); + } - PyStatus status; - status = PyConfig_SetString(&config, &config.program_name, - L"./_freeze_module"); - if (PyStatus_Exception(status)) { - PyConfig_Clear(&config); - Py_ExitStatusException(status); + if (PyInitConfig_SetInt(config, "site_import", 0) < 0) { + goto error; + } + if (PyInitConfig_SetStr(config, "program_name", "./_freeze_module") < 0) { + goto error; } /* Don't install importlib, since it could execute outdated bytecode. */ - config._install_importlib = 0; - config._init_main = 0; + if (PyInitConfig_SetInt(config, "_install_importlib", 0) < 0) { + goto error; + } + if (PyInitConfig_SetInt(config, "_init_main", 0) < 0) { + goto error; + } + + if (Py_InitializeFromInitConfig(config) < 0) { + goto error; + } + PyInitConfig_Free(config); + return; - status = Py_InitializeFromConfig(&config); - PyConfig_Clear(&config); - if (PyStatus_Exception(status)) { - Py_ExitStatusException(status); +error: + { + const char *err_msg; + (void)PyInitConfig_GetError(config, &err_msg); + printf("Python init error: %s\n", err_msg); + PyInitConfig_Free(config); + exit(1); } } From ce1b747ff68754635b7b12870dfc527184ee3b39 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 6 Aug 2025 14:35:27 +0200 Subject: [PATCH 52/87] gh-58124: Avoid CP_UTF8 in UnicodeDecodeError (#137415) Fix name of the Python encoding in Unicode errors of the code page codec: use "cp65000" and "cp65001" instead of "CP_UTF7" and "CP_UTF8" which are not valid Python code names. --- Lib/test/test_codecs.py | 2 +- .../2025-08-05-17-22-24.gh-issue-58124.q1__53.rst | 3 +++ Objects/unicodeobject.c | 4 ---- Python/codecs.c | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-08-05-17-22-24.gh-issue-58124.q1__53.rst diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index d8666f7290e72e..fd7769e8c275d3 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -3293,7 +3293,7 @@ def test_code_page_name(self): codecs.code_page_encode, 932, '\xff') self.assertRaisesRegex(UnicodeDecodeError, 'cp932', codecs.code_page_decode, 932, b'\x81\x00', 'strict', True) - self.assertRaisesRegex(UnicodeDecodeError, 'CP_UTF8', + self.assertRaisesRegex(UnicodeDecodeError, 'cp65001', codecs.code_page_decode, self.CP_UTF8, b'\xff', 'strict', True) def check_decode(self, cp, tests): diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-08-05-17-22-24.gh-issue-58124.q1__53.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-05-17-22-24.gh-issue-58124.q1__53.rst new file mode 100644 index 00000000000000..f875d4c5e785c6 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-05-17-22-24.gh-issue-58124.q1__53.rst @@ -0,0 +1,3 @@ +Fix name of the Python encoding in Unicode errors of the code page codec: +use "cp65000" and "cp65001" instead of "CP_UTF7" and "CP_UTF8" which are not +valid Python code names. Patch by Victor Stinner. diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 8df7a48284dccd..425e4681f0a4dc 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -7684,10 +7684,6 @@ code_page_name(UINT code_page, PyObject **obj) *obj = NULL; if (code_page == CP_ACP) return "mbcs"; - if (code_page == CP_UTF7) - return "CP_UTF7"; - if (code_page == CP_UTF8) - return "CP_UTF8"; *obj = PyBytes_FromFormat("cp%u", code_page); if (*obj == NULL) diff --git a/Python/codecs.c b/Python/codecs.c index caf8d9d5f3c188..4e9aecfe75c2c9 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -1204,7 +1204,7 @@ get_standard_encoding_impl(const char *encoding, int *bytelength) } } } - else if (strcmp(encoding, "CP_UTF8") == 0) { + else if (strcmp(encoding, "cp65001") == 0) { *bytelength = 3; return ENC_UTF8; } From 481d5b54556e97fed4cf1f48a2ccbc7b4f7aaa42 Mon Sep 17 00:00:00 2001 From: Alexander Urieles Date: Wed, 6 Aug 2025 14:59:22 +0200 Subject: [PATCH 53/87] gh-75989: TarFile.extractall and TarFile.extract now overwrite symlinks when extracting hardlinks (GH-137316) --- Lib/tarfile.py | 3 ++ Lib/test/test_tarfile.py | 51 +++++++++++++++++++ ...5-08-01-23-52-49.gh-issue-75989.5aYXNJ.rst | 3 ++ 3 files changed, 57 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2025-08-01-23-52-49.gh-issue-75989.5aYXNJ.rst diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 4bcca096651569..c603ba019ab481 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -2723,6 +2723,9 @@ def makelink_with_filter(self, tarinfo, targetpath, return else: if os.path.exists(tarinfo._link_target): + if os.path.lexists(targetpath): + # Avoid FileExistsError on following os.link. + os.unlink(targetpath) os.link(tarinfo._link_target, targetpath) return except symlink_exception: diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 624468a222a200..860413b88eb6b5 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -841,6 +841,57 @@ def test_next_on_empty_tarfile(self): with tarfile.open(fileobj=fd, mode="r") as tf: self.assertEqual(tf.next(), None) + def _setup_symlink_to_target(self, temp_dirpath): + target_filepath = os.path.join(temp_dirpath, "target") + ustar_dirpath = os.path.join(temp_dirpath, "ustar") + hardlink_filepath = os.path.join(ustar_dirpath, "lnktype") + with open(target_filepath, "wb") as f: + f.write(b"target") + os.makedirs(ustar_dirpath) + os.symlink(target_filepath, hardlink_filepath) + return target_filepath, hardlink_filepath + + def _assert_on_file_content(self, filepath, digest): + with open(filepath, "rb") as f: + data = f.read() + self.assertEqual(sha256sum(data), digest) + + @unittest.skipUnless( + hasattr(os, "link"), "Missing hardlink implementation" + ) + @os_helper.skip_unless_symlink + def test_extract_hardlink_on_symlink(self): + """ + This test verifies that extracting a hardlink will not follow an + existing symlink after a FileExistsError on os.link. + """ + with os_helper.temp_dir() as DIR: + target_filepath, hardlink_filepath = self._setup_symlink_to_target(DIR) + with tarfile.open(tarname, encoding="iso8859-1") as tar: + tar.extract("ustar/regtype", DIR, filter="data") + tar.extract("ustar/lnktype", DIR, filter="data") + self._assert_on_file_content(target_filepath, sha256sum(b"target")) + self._assert_on_file_content(hardlink_filepath, sha256_regtype) + + @unittest.skipUnless( + hasattr(os, "link"), "Missing hardlink implementation" + ) + @os_helper.skip_unless_symlink + def test_extractall_hardlink_on_symlink(self): + """ + This test verifies that extracting a hardlink will not follow an + existing symlink after a FileExistsError on os.link. + """ + with os_helper.temp_dir() as DIR: + target_filepath, hardlink_filepath = self._setup_symlink_to_target(DIR) + with tarfile.open(tarname, encoding="iso8859-1") as tar: + tar.extractall( + DIR, members=["ustar/regtype", "ustar/lnktype"], filter="data", + ) + self._assert_on_file_content(target_filepath, sha256sum(b"target")) + self._assert_on_file_content(hardlink_filepath, sha256_regtype) + + class MiscReadTest(MiscReadTestBase, unittest.TestCase): test_fail_comp = None diff --git a/Misc/NEWS.d/next/Library/2025-08-01-23-52-49.gh-issue-75989.5aYXNJ.rst b/Misc/NEWS.d/next/Library/2025-08-01-23-52-49.gh-issue-75989.5aYXNJ.rst new file mode 100644 index 00000000000000..00b15503b50ba3 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-08-01-23-52-49.gh-issue-75989.5aYXNJ.rst @@ -0,0 +1,3 @@ +:func:`tarfile.TarFile.extractall` and :func:`tarfile.TarFile.extract` now +overwrite symlinks when extracting hardlinks. +(Contributed by Alexander Enrique Urieles Nieto in :gh:`75989`.) From f0a3c6ebc9bee22ddb318db1143317dc2cf06de1 Mon Sep 17 00:00:00 2001 From: Barney Gale Date: Wed, 6 Aug 2025 17:13:58 +0100 Subject: [PATCH 54/87] GH-137466: Remove deprecated and undocumented `glob.glob0()` and `glob1()` (#137467) --- Doc/whatsnew/3.15.rst | 9 ++++++ Lib/glob.py | 15 --------- Lib/test/test_glob.py | 31 ------------------- ...-08-06-16-13-47.gh-issue-137466.Whv0-A.rst | 3 ++ 4 files changed, 12 insertions(+), 46 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-08-06-16-13-47.gh-issue-137466.Whv0-A.rst diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 54964da473760d..89644a509a0bb4 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -418,6 +418,15 @@ ctypes (Contributed by Bénédikt Tran in :gh:`133866`.) +glob +---- + +* Removed the undocumented :func:`!glob.glob0` and :func:`!glob.glob1` + functions, which have been deprecated since Python 3.13. Use + :func:`glob.glob` and pass a directory to its *root_dir* argument instead. + (Contributed by Barney Gale in :gh:`137466`.) + + http.server ----------- diff --git a/Lib/glob.py b/Lib/glob.py index 1e48fe43167200..5d42077003a240 100644 --- a/Lib/glob.py +++ b/Lib/glob.py @@ -122,21 +122,6 @@ def _glob0(dirname, basename, dir_fd, dironly, include_hidden=False): return [basename] return [] -_deprecated_function_message = ( - "{name} is deprecated and will be removed in Python {remove}. Use " - "glob.glob and pass a directory to its root_dir argument instead." -) - -def glob0(dirname, pattern): - import warnings - warnings._deprecated("glob.glob0", _deprecated_function_message, remove=(3, 15)) - return _glob0(dirname, pattern, None, False) - -def glob1(dirname, pattern): - import warnings - warnings._deprecated("glob.glob1", _deprecated_function_message, remove=(3, 15)) - return _glob1(dirname, pattern, None, False) - # This helper function recursively yields relative pathnames inside a literal # directory. diff --git a/Lib/test/test_glob.py b/Lib/test/test_glob.py index d0ed5129253cdf..9e4e82b2542c15 100644 --- a/Lib/test/test_glob.py +++ b/Lib/test/test_glob.py @@ -4,7 +4,6 @@ import shutil import sys import unittest -import warnings from test.support import is_wasi, Py_DEBUG from test.support.os_helper import (TESTFN, skip_unless_symlink, @@ -393,36 +392,6 @@ def test_glob_many_open_files(self): for it in iters: self.assertEqual(next(it), p) - def test_glob0(self): - with self.assertWarns(DeprecationWarning): - glob.glob0(self.tempdir, 'a') - - with warnings.catch_warnings(): - warnings.simplefilter('ignore') - eq = self.assertSequencesEqual_noorder - eq(glob.glob0(self.tempdir, 'a'), ['a']) - eq(glob.glob0(self.tempdir, '.bb'), ['.bb']) - eq(glob.glob0(self.tempdir, '.b*'), []) - eq(glob.glob0(self.tempdir, 'b'), []) - eq(glob.glob0(self.tempdir, '?'), []) - eq(glob.glob0(self.tempdir, '*a'), []) - eq(glob.glob0(self.tempdir, 'a*'), []) - - def test_glob1(self): - with self.assertWarns(DeprecationWarning): - glob.glob1(self.tempdir, 'a') - - with warnings.catch_warnings(): - warnings.simplefilter('ignore') - eq = self.assertSequencesEqual_noorder - eq(glob.glob1(self.tempdir, 'a'), ['a']) - eq(glob.glob1(self.tempdir, '.bb'), ['.bb']) - eq(glob.glob1(self.tempdir, '.b*'), ['.bb']) - eq(glob.glob1(self.tempdir, 'b'), []) - eq(glob.glob1(self.tempdir, '?'), ['a']) - eq(glob.glob1(self.tempdir, '*a'), ['a', 'aaa']) - eq(glob.glob1(self.tempdir, 'a*'), ['a', 'aaa', 'aab']) - def test_translate_matching(self): match = re.compile(glob.translate('*')).match self.assertIsNotNone(match('foo')) diff --git a/Misc/NEWS.d/next/Library/2025-08-06-16-13-47.gh-issue-137466.Whv0-A.rst b/Misc/NEWS.d/next/Library/2025-08-06-16-13-47.gh-issue-137466.Whv0-A.rst new file mode 100644 index 00000000000000..918019aa8c03eb --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-08-06-16-13-47.gh-issue-137466.Whv0-A.rst @@ -0,0 +1,3 @@ +Remove undocumented :func:`!glob.glob0` and :func:`!glob.glob1` functions, +which have been deprecated since Python 3.13. Use :func:`glob.glob` and pass +a directory to its *root_dir* argument instead. From ffb5a5372dd7c1f7c6cdc54021b5d6cc4d45862c Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Wed, 6 Aug 2025 20:53:08 +0200 Subject: [PATCH 55/87] Further CODEOWNERS listings for Adam Turner (#137483) --- .github/CODEOWNERS | 51 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8dbc8fb102cc60..57022de2b0e5ca 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,17 +4,23 @@ # It uses the same pattern rule for gitignore file # https://git-scm.com/docs/gitignore#_pattern_format -# GitHub +# Azure Pipelines +.azure-pipelines/ @AA-Turner + +# GitHub & related scripts .github/** @ezio-melotti @hugovk @AA-Turner +Tools/build/compute-changes.py @AA-Turner +Tools/build/verify_ensurepip_wheels.py @AA-Turner # pre-commit .pre-commit-config.yaml @hugovk .ruff.toml @hugovk @AlexWaygood @AA-Turner -# Build system -configure* @erlend-aasland @corona10 -Makefile.pre.in @erlend-aasland -Modules/Setup* @erlend-aasland +# Build system (autotools) +configure* @erlend-aasland @corona10 @AA-Turner +Makefile.pre.in @erlend-aasland @AA-Turner +Modules/Setup* @erlend-aasland @AA-Turner +Tools/build/regen-configure.sh @AA-Turner # argparse **/*argparse* @savannahostrowski @@ -67,6 +73,7 @@ Doc/make.bat @AA-Turner @hugovk Doc/requirements.txt @AA-Turner @hugovk Doc/_static/** @AA-Turner @hugovk Doc/tools/** @AA-Turner @hugovk +.readthedocs.yml @AA-Turner # runtime state/lifecycle **/*pylifecycle* @ericsnowcurrently @ZeroIntensity @@ -155,6 +162,10 @@ Doc/c-api/module.rst @ericsnowcurrently **/*importlib/resources/* @jaraco @warsaw @FFY00 **/*importlib/metadata/* @jaraco @warsaw +# Calendar +Lib/calendar.py @AA-Turner +Lib/test/test_calendar.py @AA-Turner + # Dates and times **/*datetime* @pganssle @abalkin **/*str*time* @pganssle @abalkin @@ -205,6 +216,11 @@ Lib/test/test_ast/ @eclips4 @tomasr8 # multiprocessing **/*multiprocessing* @gpshead +# pydoc +Lib/pydoc.py @AA-Turner +Lib/pydoc_data/ @AA-Turner +Lib/test/test_pydoc/ @AA-Turner + # SQLite 3 **/*sqlite* @berkerpeksag @erlend-aasland @@ -217,6 +233,11 @@ Lib/test/test_ast/ @eclips4 @tomasr8 **/*pdb* @gaogaotiantian **/*bdb* @gaogaotiantian +# types +Lib/test/test_types.py @AA-Turner +Lib/types.py @AA-Turner +Modules/_typesmodule.c @AA-Turner + # Limited C API & stable ABI Tools/build/stable_abi.py @encukou Misc/stable_abi.toml @encukou @@ -234,6 +255,11 @@ Doc/c-api/stable.rst @encukou /Tools/msi/ @python/windows-team /Tools/nuget/ @python/windows-team +# Zstandard +Lib/compression/zstd/ @AA-Turner +Lib/test/test_zstd.py @AA-Turner +Modules/_zstd/ @AA-Turner + # Misc **/*itertools* @rhettinger **/*collections* @rhettinger @@ -266,6 +292,9 @@ Doc/c-api/stable.rst @encukou **/*cjkcodecs* @corona10 +# Patchcheck +Tools/patchcheck/ @AA-Turner + # macOS /Mac/ @python/macos-team **/*osx_support* @python/macos-team @@ -277,9 +306,9 @@ Doc/c-api/stable.rst @encukou **/*zipfile/_path/* @jaraco # Argument Clinic -/Tools/clinic/** @erlend-aasland -/Lib/test/test_clinic.py @erlend-aasland -Doc/howto/clinic.rst @erlend-aasland +/Tools/clinic/** @erlend-aasland @AA-Turner +/Lib/test/test_clinic.py @erlend-aasland @AA-Turner +Doc/howto/clinic.rst @erlend-aasland @AA-Turner # Subinterpreters **/*interpreteridobject.* @ericsnowcurrently @@ -323,6 +352,7 @@ Lib/test/test_configparser.py @jaraco # Doc sections Doc/reference/ @willingc @AA-Turner +Doc/whatsnew/ @AA-Turner **/*weakref* @kumaraditya303 @@ -336,7 +366,7 @@ Modules/_xxtestfuzz/ @ammaraskar # t-strings **/*interpolationobject* @lysnikolaou **/*templateobject* @lysnikolaou -**/*templatelib* @lysnikolaou +**/*templatelib* @lysnikolaou @AA-Turner **/*tstring* @lysnikolaou # Remote debugging @@ -346,3 +376,6 @@ Modules/_remote_debugging_module.c @pablogsal @ambv @1st1 # gettext **/*gettext* @tomasr8 + +# Internal Docs +InternalDocs/ @AA-Turner From 0953200b136bcb3293cc1bd57a062796ffcd529d Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 6 Aug 2025 12:28:54 -0700 Subject: [PATCH 56/87] GH-137484: Have `Tools/wasm/wasi` use the build triple instead of "build" (GH-37485) This should help prevent issuse where something like a container is used to do one build and then someone tries to build again locally. --- ...25-08-06-11-54-55.gh-issue-137484.8iFAQs.rst | 2 ++ Tools/wasm/wasi/__main__.py | 17 ++++++----------- 2 files changed, 8 insertions(+), 11 deletions(-) create mode 100644 Misc/NEWS.d/next/Tools-Demos/2025-08-06-11-54-55.gh-issue-137484.8iFAQs.rst diff --git a/Misc/NEWS.d/next/Tools-Demos/2025-08-06-11-54-55.gh-issue-137484.8iFAQs.rst b/Misc/NEWS.d/next/Tools-Demos/2025-08-06-11-54-55.gh-issue-137484.8iFAQs.rst new file mode 100644 index 00000000000000..bd7bc0984ecfcc --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2025-08-06-11-54-55.gh-issue-137484.8iFAQs.rst @@ -0,0 +1,2 @@ +Have ``Tools/wasm/wasi`` put the build Python into a directory named after +the build triple instead of "build". diff --git a/Tools/wasm/wasi/__main__.py b/Tools/wasm/wasi/__main__.py index fdd93d5c0aa4af..973d78caa0849e 100644 --- a/Tools/wasm/wasi/__main__.py +++ b/Tools/wasm/wasi/__main__.py @@ -20,7 +20,8 @@ assert (CHECKOUT / "configure").is_file(), "Please update the location of the file" CROSS_BUILD_DIR = CHECKOUT / "cross-build" -BUILD_DIR = CROSS_BUILD_DIR / "build" +# Build platform can also be found via `config.guess`. +BUILD_DIR = CROSS_BUILD_DIR / sysconfig.get_config_var("BUILD_GNU_TYPE") LOCAL_SETUP = CHECKOUT / "Modules" / "Setup.local" LOCAL_SETUP_MARKER = ("# Generated by Tools/wasm/wasi .\n" @@ -80,7 +81,7 @@ def wrapper(context): print("📁", working_dir) if (clean_ok and getattr(context, "clean", False) and working_dir.exists()): - print(f"🚮 Deleting directory (--clean)...") + print("🚮 Deleting directory (--clean)...") shutil.rmtree(working_dir) working_dir.mkdir(parents=True, exist_ok=True) @@ -120,12 +121,6 @@ def call(command, *, context=None, quiet=False, logdir=None, **kwargs): subprocess.check_call(command, **kwargs, stdout=stdout, stderr=stderr) -def build_platform(): - """The name of the build/host platform.""" - # Can also be found via `config.guess`. - return sysconfig.get_config_var("BUILD_GNU_TYPE") - - def build_python_path(): """The path to the build Python binary.""" binary = BUILD_DIR / "python" @@ -274,7 +269,7 @@ def configure_wasi_python(context, working_dir): # executed from within a checkout. configure = [os.path.relpath(CHECKOUT / 'configure', working_dir), f"--host={context.host_triple}", - f"--build={build_platform()}", + f"--build={BUILD_DIR.name}", f"--with-build-python={build_python}"] if build_python_is_pydebug(): configure.append("--with-pydebug") @@ -357,8 +352,8 @@ def main(): "Python)") make_host = subcommands.add_parser("make-host", help="Run `make` for the host/WASI") - clean = subcommands.add_parser("clean", help="Delete files and directories " - "created by this script") + subcommands.add_parser("clean", help="Delete files and directories " + "created by this script") for subcommand in build, configure_build, make_build, configure_host, make_host: subcommand.add_argument("--quiet", action="store_true", default=False, dest="quiet", From 470cbe97a528c5f31823a0cd4e283bf02d5d11e7 Mon Sep 17 00:00:00 2001 From: Daniele Parmeggiani <8658291+dpdani@users.noreply.github.com> Date: Wed, 6 Aug 2025 22:10:40 +0200 Subject: [PATCH 57/87] gh-134861: Add CSV output format to ``python -m asyncio ps`` (#134862) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- Lib/asyncio/__main__.py | 10 ++-- Lib/asyncio/tools.py | 52 +++++++++++++++---- ...-05-29-19-00-37.gh-issue-134861.y2-fu-.rst | 1 + 3 files changed, 51 insertions(+), 12 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-05-29-19-00-37.gh-issue-134861.y2-fu-.rst diff --git a/Lib/asyncio/__main__.py b/Lib/asyncio/__main__.py index ff3a69d1e17297..4b43ba5dd70514 100644 --- a/Lib/asyncio/__main__.py +++ b/Lib/asyncio/__main__.py @@ -1,7 +1,6 @@ import argparse import ast import asyncio -import asyncio.tools import concurrent.futures import contextvars import inspect @@ -11,6 +10,9 @@ import threading import types import warnings +from asyncio.tools import (TaskTableOutputFormat, + display_awaited_by_tasks_table, + display_awaited_by_tasks_tree) from _colorize import get_theme from _pyrepl.console import InteractiveColoredConsole @@ -153,6 +155,8 @@ def interrupt(self) -> None: "ps", help="Display a table of all pending tasks in a process" ) ps.add_argument("pid", type=int, help="Process ID to inspect") + formats = [fmt.value for fmt in TaskTableOutputFormat] + ps.add_argument("--format", choices=formats, default="table") pstree = subparsers.add_parser( "pstree", help="Display a tree of all pending tasks in a process" ) @@ -160,10 +164,10 @@ def interrupt(self) -> None: args = parser.parse_args() match args.command: case "ps": - asyncio.tools.display_awaited_by_tasks_table(args.pid) + display_awaited_by_tasks_table(args.pid, format=args.format) sys.exit(0) case "pstree": - asyncio.tools.display_awaited_by_tasks_tree(args.pid) + display_awaited_by_tasks_tree(args.pid) sys.exit(0) case None: pass # continue to the interactive shell diff --git a/Lib/asyncio/tools.py b/Lib/asyncio/tools.py index 2683f34cc7113b..efa8e1844cf3d2 100644 --- a/Lib/asyncio/tools.py +++ b/Lib/asyncio/tools.py @@ -1,8 +1,9 @@ """Tools to analyze tasks running in asyncio programs.""" -from collections import defaultdict, namedtuple +from collections import defaultdict +import csv from itertools import count -from enum import Enum +from enum import Enum, StrEnum, auto import sys from _remote_debugging import RemoteUnwinder, FrameInfo @@ -232,18 +233,51 @@ def _get_awaited_by_tasks(pid: int) -> list: sys.exit(1) -def display_awaited_by_tasks_table(pid: int) -> None: +class TaskTableOutputFormat(StrEnum): + table = auto() + csv = auto() + + +def display_awaited_by_tasks_table(pid, *, format=TaskTableOutputFormat.table): """Build and print a table of all pending tasks under `pid`.""" tasks = _get_awaited_by_tasks(pid) table = build_task_table(tasks) - # Print the table in a simple tabular format - print( - f"{'tid':<10} {'task id':<20} {'task name':<20} {'coroutine stack':<50} {'awaiter chain':<50} {'awaiter name':<15} {'awaiter id':<15}" - ) - print("-" * 180) + format = TaskTableOutputFormat(format) + if format == TaskTableOutputFormat.table: + _display_awaited_by_tasks_table(table) + else: + _display_awaited_by_tasks_csv(table, format=format) + + +_row_header = ('tid', 'task id', 'task name', 'coroutine stack', + 'awaiter chain', 'awaiter name', 'awaiter id') + + +def _display_awaited_by_tasks_table(table): + """Print the table in a simple tabular format.""" + print(_fmt_table_row(*_row_header)) + print('-' * 180) for row in table: - print(f"{row[0]:<10} {row[1]:<20} {row[2]:<20} {row[3]:<50} {row[4]:<50} {row[5]:<15} {row[6]:<15}") + print(_fmt_table_row(*row)) + + +def _fmt_table_row(tid, task_id, task_name, coro_stack, + awaiter_chain, awaiter_name, awaiter_id): + # Format a single row for the table format + return (f'{tid:<10} {task_id:<20} {task_name:<20} {coro_stack:<50} ' + f'{awaiter_chain:<50} {awaiter_name:<15} {awaiter_id:<15}') + + +def _display_awaited_by_tasks_csv(table, *, format): + """Print the table in CSV format""" + if format == TaskTableOutputFormat.csv: + delimiter = ',' + else: + raise ValueError(f"Unknown output format: {format}") + csv_writer = csv.writer(sys.stdout, delimiter=delimiter) + csv_writer.writerow(_row_header) + csv_writer.writerows(table) def display_awaited_by_tasks_tree(pid: int) -> None: diff --git a/Misc/NEWS.d/next/Library/2025-05-29-19-00-37.gh-issue-134861.y2-fu-.rst b/Misc/NEWS.d/next/Library/2025-05-29-19-00-37.gh-issue-134861.y2-fu-.rst new file mode 100644 index 00000000000000..07e4c61b404ba4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-05-29-19-00-37.gh-issue-134861.y2-fu-.rst @@ -0,0 +1 @@ +Add CSV as an output format for :program:`python -m asyncio ps`. From ee72c95aa947e5a87308e3657b6b3983805a086e Mon Sep 17 00:00:00 2001 From: Daniele Parmeggiani <8658291+dpdani@users.noreply.github.com> Date: Wed, 6 Aug 2025 22:42:34 +0200 Subject: [PATCH 58/87] =?UTF-8?q?gh-134861:=20Add=20=F0=9F=8D=8CSV=20outpu?= =?UTF-8?q?t=20format=20to=20``python=20-m=20asyncio=20ps``=20(#137486)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- Lib/asyncio/__main__.py | 5 ++++- Lib/asyncio/tools.py | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib/asyncio/__main__.py b/Lib/asyncio/__main__.py index 4b43ba5dd70514..5ef2e1f9efc9ed 100644 --- a/Lib/asyncio/__main__.py +++ b/Lib/asyncio/__main__.py @@ -156,7 +156,10 @@ def interrupt(self) -> None: ) ps.add_argument("pid", type=int, help="Process ID to inspect") formats = [fmt.value for fmt in TaskTableOutputFormat] - ps.add_argument("--format", choices=formats, default="table") + formats_to_show = [fmt for fmt in formats + if fmt != TaskTableOutputFormat.bsv.value] + ps.add_argument("--format", choices=formats, default="table", + metavar=f"{{{','.join(formats_to_show)}}}") pstree = subparsers.add_parser( "pstree", help="Display a tree of all pending tasks in a process" ) diff --git a/Lib/asyncio/tools.py b/Lib/asyncio/tools.py index efa8e1844cf3d2..3887fb8ab5bf52 100644 --- a/Lib/asyncio/tools.py +++ b/Lib/asyncio/tools.py @@ -236,6 +236,9 @@ def _get_awaited_by_tasks(pid: int) -> list: class TaskTableOutputFormat(StrEnum): table = auto() csv = auto() + bsv = auto() + # 🍌SV is not just a format. It's a lifestyle. A philosophy. + # https://www.youtube.com/watch?v=RrsVi1P6n0w def display_awaited_by_tasks_table(pid, *, format=TaskTableOutputFormat.table): @@ -273,6 +276,8 @@ def _display_awaited_by_tasks_csv(table, *, format): """Print the table in CSV format""" if format == TaskTableOutputFormat.csv: delimiter = ',' + elif format == TaskTableOutputFormat.bsv: + delimiter = '\N{BANANA}' else: raise ValueError(f"Unknown output format: {format}") csv_writer = csv.writer(sys.stdout, delimiter=delimiter) From 37b9a5df9331fa76cdfc9d4fc05765c1136118ab Mon Sep 17 00:00:00 2001 From: Mendel Feygelson Date: Wed, 6 Aug 2025 16:51:59 -0500 Subject: [PATCH 59/87] Docs: Use the correct example module in warnings.rst (#137402) --- Doc/library/warnings.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/warnings.rst b/Doc/library/warnings.rst index 00bafd1be4bd0c..05e061cc697778 100644 --- a/Doc/library/warnings.rst +++ b/Doc/library/warnings.rst @@ -458,7 +458,7 @@ Available Functions lower.one_way(**kw) This makes the warning refer to both the ``example.lower.one_way()`` and - ``package.higher.another_way()`` call sites only from calling code living + ``example.higher.another_way()`` call sites only from calling code living outside of ``example`` package. *source*, if supplied, is the destroyed object which emitted a From c653fba0167bfafa69f9726c7d6dc1680dcca825 Mon Sep 17 00:00:00 2001 From: Greg Stein Date: Wed, 6 Aug 2025 16:58:24 -0500 Subject: [PATCH 60/87] Docs: Small clarity change for ``except*`` (#121073) Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- Doc/reference/compound_stmts.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 7ac4d8587ce7d5..4e49a49c08167a 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -386,7 +386,7 @@ have ambiguous semantics. It is not possible to mix :keyword:`except` and :keyword:`!except*` in the same :keyword:`try`. -:keyword:`break`, :keyword:`continue` and :keyword:`return` +The :keyword:`break`, :keyword:`continue`, and :keyword:`return` statements cannot appear in an :keyword:`!except*` clause. From 3000594e929aea768fe0dd2437e0722ecfa2dbdc Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 6 Aug 2025 17:05:41 -0500 Subject: [PATCH 61/87] gh-84683: Check `/share/zoneinfo` for zoneinfo files on Windows (GH-28495) --- Lib/sysconfig/__init__.py | 8 +++++++- .../Library/2021-09-21-17-17-29.gh-issue-84683.wDSRsG.rst | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2021-09-21-17-17-29.gh-issue-84683.wDSRsG.rst diff --git a/Lib/sysconfig/__init__.py b/Lib/sysconfig/__init__.py index 49e0986517ce97..c583b74ce54fc6 100644 --- a/Lib/sysconfig/__init__.py +++ b/Lib/sysconfig/__init__.py @@ -412,7 +412,13 @@ def _init_non_posix(vars): vars['EXE'] = '.exe' vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) - vars['TZPATH'] = '' + # No standard path exists on Windows for this, but we'll check + # whether someone is imitating a POSIX-like layout + check_tzpath = os.path.join(vars['prefix'], 'share', 'zoneinfo') + if os.path.exists(check_tzpath): + vars['TZPATH'] = check_tzpath + else: + vars['TZPATH'] = '' # # public APIs diff --git a/Misc/NEWS.d/next/Library/2021-09-21-17-17-29.gh-issue-84683.wDSRsG.rst b/Misc/NEWS.d/next/Library/2021-09-21-17-17-29.gh-issue-84683.wDSRsG.rst new file mode 100644 index 00000000000000..66f76bda6ad7a7 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-09-21-17-17-29.gh-issue-84683.wDSRsG.rst @@ -0,0 +1 @@ +:mod:`zoneinfo`: Check in ``/share/zoneinfo`` for data files on Windows From 3c1471d971ea2759d9de76e22230cd71cf4b7a07 Mon Sep 17 00:00:00 2001 From: tobiasjcat <70606111+tobiasjcat@users.noreply.github.com> Date: Wed, 6 Aug 2025 22:41:16 -0700 Subject: [PATCH 62/87] gh-137499: Fixed dead link to NIST website (#137500) --- Doc/library/time.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/time.rst b/Doc/library/time.rst index df9be68bf4f69d..b05c0a312dbe34 100644 --- a/Doc/library/time.rst +++ b/Doc/library/time.rst @@ -935,7 +935,7 @@ These constants are used as parameters for :func:`clock_getres` and .. data:: CLOCK_TAI - `International Atomic Time `_ + `International Atomic Time `_ The system must have a current leap second table in order for this to give the correct answer. PTP or NTP software can maintain a leap second table. From 5be872350d562e6c9987b09ff4b7bda80a2f9cd0 Mon Sep 17 00:00:00 2001 From: Guilherme Leobas Date: Thu, 7 Aug 2025 03:10:56 -0300 Subject: [PATCH 63/87] gh-137463: Update `validate_abstract_methods` in `test_collections.py` (#137464) Update `validate_abstract_methods` in `test_collections.py` The test for missing abstract methods in `validate_abstract_methods` incorrectly attempted to instantiate the generated class `C` with an argument (`C(name)`), which always raises a `TypeError: C() takes no arguments`. Although the test originally passes, it passes for the wrong reason. This change makes the test correctly validate the enforcement of abstract methods in ABCs. --- Lib/test/test_collections.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py index d9d61e5c2053e3..f33e4b3256a9b9 100644 --- a/Lib/test/test_collections.py +++ b/Lib/test/test_collections.py @@ -736,7 +736,7 @@ def validate_abstract_methods(self, abc, *names): stubs = methodstubs.copy() del stubs[name] C = type('C', (abc,), stubs) - self.assertRaises(TypeError, C, name) + self.assertRaises(TypeError, C) def validate_isinstance(self, abc, name): stub = lambda s, *args: 0 @@ -963,7 +963,7 @@ class AnextOnly: async def __anext__(self): raise StopAsyncIteration self.assertNotIsInstance(AnextOnly(), AsyncIterator) - self.validate_abstract_methods(AsyncIterator, '__anext__', '__aiter__') + self.validate_abstract_methods(AsyncIterator, '__anext__') def test_Iterable(self): # Check some non-iterables @@ -1159,7 +1159,7 @@ def test_Iterator(self): for x in samples: self.assertIsInstance(x, Iterator) self.assertIsSubclass(type(x), Iterator) - self.validate_abstract_methods(Iterator, '__next__', '__iter__') + self.validate_abstract_methods(Iterator, '__next__') # Issue 10565 class NextOnly: @@ -1843,8 +1843,7 @@ def test_Mapping(self): for sample in [dict]: self.assertIsInstance(sample(), Mapping) self.assertIsSubclass(sample, Mapping) - self.validate_abstract_methods(Mapping, '__contains__', '__iter__', '__len__', - '__getitem__') + self.validate_abstract_methods(Mapping, '__iter__', '__len__', '__getitem__') class MyMapping(Mapping): def __len__(self): return 0 @@ -1859,7 +1858,7 @@ def test_MutableMapping(self): for sample in [dict]: self.assertIsInstance(sample(), MutableMapping) self.assertIsSubclass(sample, MutableMapping) - self.validate_abstract_methods(MutableMapping, '__contains__', '__iter__', '__len__', + self.validate_abstract_methods(MutableMapping, '__iter__', '__len__', '__getitem__', '__setitem__', '__delitem__') def test_MutableMapping_subclass(self): @@ -1898,8 +1897,7 @@ def test_Sequence(self): self.assertIsInstance(memoryview(b""), Sequence) self.assertIsSubclass(memoryview, Sequence) self.assertIsSubclass(str, Sequence) - self.validate_abstract_methods(Sequence, '__contains__', '__iter__', '__len__', - '__getitem__') + self.validate_abstract_methods(Sequence, '__len__', '__getitem__') def test_Sequence_mixins(self): class SequenceSubclass(Sequence): @@ -1954,8 +1952,8 @@ def test_MutableSequence(self): self.assertIsSubclass(sample, MutableSequence) self.assertIsSubclass(array.array, MutableSequence) self.assertNotIsSubclass(str, MutableSequence) - self.validate_abstract_methods(MutableSequence, '__contains__', '__iter__', - '__len__', '__getitem__', '__setitem__', '__delitem__', 'insert') + self.validate_abstract_methods(MutableSequence, '__len__', '__getitem__', + '__setitem__', '__delitem__', 'insert') def test_MutableSequence_mixins(self): # Test the mixins of MutableSequence by creating a minimal concrete From baefaa6cba1d69efd2f930cdc56bca682c54b139 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Thu, 7 Aug 2025 11:06:37 +0300 Subject: [PATCH 64/87] gh-137044: Support large limit values in getrlimit() and setrlimit() (GH-137338) * Return large limit values as positive integers instead of negative integers in resource.getrlimit(). * Accept large values and reject negative values (except RLIM_INFINITY) for limits in resource.setrlimit(). --- Lib/test/test_resource.py | 215 +++++++++++------- ...-08-03-13-16-39.gh-issue-137044.0hPVL_.rst | 4 + Modules/clinic/resource.c.h | 18 +- Modules/resource.c | 84 ++++--- 4 files changed, 200 insertions(+), 121 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-08-03-13-16-39.gh-issue-137044.0hPVL_.rst diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py index d23d3623235f38..fe05224828bd27 100644 --- a/Lib/test/test_resource.py +++ b/Lib/test/test_resource.py @@ -14,89 +14,154 @@ class ResourceTest(unittest.TestCase): def test_args(self): self.assertRaises(TypeError, resource.getrlimit) - self.assertRaises(TypeError, resource.getrlimit, 42, 42) + self.assertRaises(TypeError, resource.getrlimit, 0, 42) + self.assertRaises(OverflowError, resource.getrlimit, 2**1000) + self.assertRaises(OverflowError, resource.getrlimit, -2**1000) + self.assertRaises(TypeError, resource.getrlimit, '0') self.assertRaises(TypeError, resource.setrlimit) - self.assertRaises(TypeError, resource.setrlimit, 42, 42, 42) + self.assertRaises(TypeError, resource.setrlimit, 0) + self.assertRaises(TypeError, resource.setrlimit, 0, 42) + self.assertRaises(TypeError, resource.setrlimit, 0, 42, 42) + self.assertRaises(OverflowError, resource.setrlimit, 2**1000, (42, 42)) + self.assertRaises(OverflowError, resource.setrlimit, -2**1000, (42, 42)) + self.assertRaises(ValueError, resource.setrlimit, 0, (42,)) + self.assertRaises(ValueError, resource.setrlimit, 0, (42, 42, 42)) + self.assertRaises(TypeError, resource.setrlimit, '0', (42, 42)) + self.assertRaises(TypeError, resource.setrlimit, 0, ('42', 42)) + self.assertRaises(TypeError, resource.setrlimit, 0, (42, '42')) @unittest.skipIf(sys.platform == "vxworks", "setting RLIMIT_FSIZE is not supported on VxWorks") + @unittest.skipUnless(hasattr(resource, 'RLIMIT_FSIZE'), 'requires resource.RLIMIT_FSIZE') def test_fsize_ismax(self): - try: - (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) - except AttributeError: - pass - else: - # RLIMIT_FSIZE should be RLIM_INFINITY, which will be a really big - # number on a platform with large file support. On these platforms, - # we need to test that the get/setrlimit functions properly convert - # the number to a C long long and that the conversion doesn't raise - # an error. - self.assertEqual(resource.RLIM_INFINITY, max) - resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + # RLIMIT_FSIZE should be RLIM_INFINITY, which will be a really big + # number on a platform with large file support. On these platforms, + # we need to test that the get/setrlimit functions properly convert + # the number to a C long long and that the conversion doesn't raise + # an error. + self.assertEqual(resource.RLIM_INFINITY, max) + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + @unittest.skipIf(sys.platform == "vxworks", + "setting RLIMIT_FSIZE is not supported on VxWorks") + @unittest.skipUnless(hasattr(resource, 'RLIMIT_FSIZE'), 'requires resource.RLIMIT_FSIZE') def test_fsize_enforced(self): + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + # Check to see what happens when the RLIMIT_FSIZE is small. Some + # versions of Python were terminated by an uncaught SIGXFSZ, but + # pythonrun.c has been fixed to ignore that exception. If so, the + # write() should return EFBIG when the limit is exceeded. + + # At least one platform has an unlimited RLIMIT_FSIZE and attempts + # to change it raise ValueError instead. try: - (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) - except AttributeError: - pass - else: - # Check to see what happens when the RLIMIT_FSIZE is small. Some - # versions of Python were terminated by an uncaught SIGXFSZ, but - # pythonrun.c has been fixed to ignore that exception. If so, the - # write() should return EFBIG when the limit is exceeded. - - # At least one platform has an unlimited RLIMIT_FSIZE and attempts - # to change it raise ValueError instead. try: + resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max)) + limit_set = True + except ValueError: + limit_set = False + f = open(os_helper.TESTFN, "wb") + try: + f.write(b"X" * 1024) try: - resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max)) - limit_set = True - except ValueError: - limit_set = False - f = open(os_helper.TESTFN, "wb") - try: - f.write(b"X" * 1024) - try: - f.write(b"Y") + f.write(b"Y") + f.flush() + # On some systems (e.g., Ubuntu on hppa) the flush() + # doesn't always cause the exception, but the close() + # does eventually. Try flushing several times in + # an attempt to ensure the file is really synced and + # the exception raised. + for i in range(5): + time.sleep(.1) f.flush() - # On some systems (e.g., Ubuntu on hppa) the flush() - # doesn't always cause the exception, but the close() - # does eventually. Try flushing several times in - # an attempt to ensure the file is really synced and - # the exception raised. - for i in range(5): - time.sleep(.1) - f.flush() - except OSError: - if not limit_set: - raise - if limit_set: - # Close will attempt to flush the byte we wrote - # Restore limit first to avoid getting a spurious error - resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) - finally: - f.close() - finally: + except OSError: + if not limit_set: + raise if limit_set: + # Close will attempt to flush the byte we wrote + # Restore limit first to avoid getting a spurious error resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) - os_helper.unlink(os_helper.TESTFN) + finally: + f.close() + finally: + if limit_set: + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + os_helper.unlink(os_helper.TESTFN) - def test_fsize_toobig(self): + @unittest.skipIf(sys.platform == "vxworks", + "setting RLIMIT_FSIZE is not supported on VxWorks") + @unittest.skipUnless(hasattr(resource, 'RLIMIT_FSIZE'), 'requires resource.RLIMIT_FSIZE') + def test_fsize_too_big(self): # Be sure that setrlimit is checking for really large values too_big = 10**50 + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + try: + resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max)) + except (OverflowError, ValueError): + pass try: - (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) - except AttributeError: + resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big)) + except (OverflowError, ValueError): pass + + @unittest.skipIf(sys.platform == "vxworks", + "setting RLIMIT_FSIZE is not supported on VxWorks") + @unittest.skipUnless(hasattr(resource, 'RLIMIT_FSIZE'), 'requires resource.RLIMIT_FSIZE') + def test_fsize_not_too_big(self): + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + self.addCleanup(resource.setrlimit, resource.RLIMIT_FSIZE, (cur, max)) + + def expected(cur): + if resource.RLIM_INFINITY < 0: + return [(cur, max), (resource.RLIM_INFINITY, max)] + elif resource.RLIM_INFINITY < cur: + return [(resource.RLIM_INFINITY, max)] + else: + return [(cur, max)] + + resource.setrlimit(resource.RLIMIT_FSIZE, (2**31-5, max)) + self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**31-5, max)) + + try: + resource.setrlimit(resource.RLIMIT_FSIZE, (2**32, max)) + except OverflowError: + resource.setrlimit(resource.RLIMIT_FSIZE, (2**31, max)) + self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**31)) + resource.setrlimit(resource.RLIMIT_FSIZE, (2**32-5, max)) + self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**32-5)) else: + self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**32)) + resource.setrlimit(resource.RLIMIT_FSIZE, (2**31, max)) + self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**31, max)) + resource.setrlimit(resource.RLIMIT_FSIZE, (2**32-5, max)) + self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**32-5, max)) + + resource.setrlimit(resource.RLIMIT_FSIZE, (2**63-5, max)) + self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**63-5)) try: - resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max)) - except (OverflowError, ValueError): - pass - try: - resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big)) - except (OverflowError, ValueError): + resource.setrlimit(resource.RLIMIT_FSIZE, (2**63, max)) + except ValueError: + # There is a hard limit on macOS. pass + else: + self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**63)) + resource.setrlimit(resource.RLIMIT_FSIZE, (2**64-5, max)) + self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**64-5)) + + @unittest.skipIf(sys.platform == "vxworks", + "setting RLIMIT_FSIZE is not supported on VxWorks") + @unittest.skipUnless(hasattr(resource, 'RLIMIT_FSIZE'), 'requires resource.RLIMIT_FSIZE') + def test_fsize_negative(self): + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + for value in -5, -2**31, -2**32-5, -2**63, -2**64-5, -2**1000: + with self.subTest(value=value): + # This test assumes that the values don't map to RLIM_INFINITY, + # though Posix doesn't guarantee it. + self.assertNotEqual(value, resource.RLIM_INFINITY) + + self.assertRaises(ValueError, resource.setrlimit, resource.RLIMIT_FSIZE, (value, max)) + self.assertRaises(ValueError, resource.setrlimit, resource.RLIMIT_FSIZE, (cur, value)) @unittest.skipUnless(hasattr(resource, "getrusage"), "needs getrusage") def test_getrusage(self): @@ -117,21 +182,18 @@ def test_getrusage(self): # Issue 6083: Reference counting bug @unittest.skipIf(sys.platform == "vxworks", "setting RLIMIT_CPU is not supported on VxWorks") + @unittest.skipUnless(hasattr(resource, 'RLIMIT_CPU'), 'requires resource.RLIMIT_CPU') def test_setrusage_refcount(self): - try: - limits = resource.getrlimit(resource.RLIMIT_CPU) - except AttributeError: - pass - else: - class BadSequence: - def __len__(self): - return 2 - def __getitem__(self, key): - if key in (0, 1): - return len(tuple(range(1000000))) - raise IndexError + limits = resource.getrlimit(resource.RLIMIT_CPU) + class BadSequence: + def __len__(self): + return 2 + def __getitem__(self, key): + if key in (0, 1): + return len(tuple(range(1000000))) + raise IndexError - resource.setrlimit(resource.RLIMIT_CPU, BadSequence()) + resource.setrlimit(resource.RLIMIT_CPU, BadSequence()) def test_pagesize(self): pagesize = resource.getpagesize() @@ -168,7 +230,8 @@ class BadSeq: def __len__(self): return 2 def __getitem__(self, key): - return limits[key] - 1 # new reference + lim = limits[key] + return lim - 1 if lim > 0 else lim + sys.maxsize*2 # new reference limits = resource.getrlimit(resource.RLIMIT_AS) self.assertEqual(resource.prlimit(0, resource.RLIMIT_AS, BadSeq()), diff --git a/Misc/NEWS.d/next/Library/2025-08-03-13-16-39.gh-issue-137044.0hPVL_.rst b/Misc/NEWS.d/next/Library/2025-08-03-13-16-39.gh-issue-137044.0hPVL_.rst new file mode 100644 index 00000000000000..f5f96263823e86 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-08-03-13-16-39.gh-issue-137044.0hPVL_.rst @@ -0,0 +1,4 @@ +Return large limit values as positive integers instead of negative integers +in :func:`resource.getrlimit`. Accept large values and reject negative +values (except :data:`~resource.RLIM_INFINITY`) for limits in +:func:`resource.setrlimit`. diff --git a/Modules/clinic/resource.c.h b/Modules/clinic/resource.c.h index 9eda7de27532a1..e4ef93900d1797 100644 --- a/Modules/clinic/resource.c.h +++ b/Modules/clinic/resource.c.h @@ -2,6 +2,8 @@ preserve [clinic start generated code]*/ +#include "pycore_modsupport.h" // _PyArg_CheckPositional() + #if defined(HAVE_GETRUSAGE) PyDoc_STRVAR(resource_getrusage__doc__, @@ -66,7 +68,7 @@ PyDoc_STRVAR(resource_setrlimit__doc__, "\n"); #define RESOURCE_SETRLIMIT_METHODDEF \ - {"setrlimit", (PyCFunction)(void(*)(void))resource_setrlimit, METH_FASTCALL, resource_setrlimit__doc__}, + {"setrlimit", _PyCFunction_CAST(resource_setrlimit), METH_FASTCALL, resource_setrlimit__doc__}, static PyObject * resource_setrlimit_impl(PyObject *module, int resource, PyObject *limits); @@ -78,8 +80,7 @@ resource_setrlimit(PyObject *module, PyObject *const *args, Py_ssize_t nargs) int resource; PyObject *limits; - if (nargs != 2) { - PyErr_Format(PyExc_TypeError, "setrlimit expected 2 arguments, got %zd", nargs); + if (!_PyArg_CheckPositional("setrlimit", nargs, 2, 2)) { goto exit; } resource = PyLong_AsInt(args[0]); @@ -101,7 +102,7 @@ PyDoc_STRVAR(resource_prlimit__doc__, "\n"); #define RESOURCE_PRLIMIT_METHODDEF \ - {"prlimit", (PyCFunction)(void(*)(void))resource_prlimit, METH_FASTCALL, resource_prlimit__doc__}, + {"prlimit", _PyCFunction_CAST(resource_prlimit), METH_FASTCALL, resource_prlimit__doc__}, static PyObject * resource_prlimit_impl(PyObject *module, pid_t pid, int resource, @@ -115,12 +116,7 @@ resource_prlimit(PyObject *module, PyObject *const *args, Py_ssize_t nargs) int resource; PyObject *limits = Py_None; - if (nargs < 2) { - PyErr_Format(PyExc_TypeError, "prlimit expected at least 2 arguments, got %zd", nargs); - goto exit; - } - if (nargs > 3) { - PyErr_Format(PyExc_TypeError, "prlimit expected at most 3 arguments, got %zd", nargs); + if (!_PyArg_CheckPositional("prlimit", nargs, 2, 3)) { goto exit; } pid = PyLong_AsPid(args[0]); @@ -178,4 +174,4 @@ resource_getpagesize(PyObject *module, PyObject *Py_UNUSED(ignored)) #ifndef RESOURCE_PRLIMIT_METHODDEF #define RESOURCE_PRLIMIT_METHODDEF #endif /* !defined(RESOURCE_PRLIMIT_METHODDEF) */ -/*[clinic end generated code: output=e45883ace510414a input=a9049054013a1b77]*/ +/*[clinic end generated code: output=8e905b2f5c35170e input=a9049054013a1b77]*/ diff --git a/Modules/resource.c b/Modules/resource.c index 3fe18e7c98e3d8..2353bc6653abd8 100644 --- a/Modules/resource.c +++ b/Modules/resource.c @@ -1,7 +1,5 @@ -// Need limited C API version 3.13 for PySys_Audit() -#include "pyconfig.h" // Py_GIL_DISABLED -#ifndef Py_GIL_DISABLED -# define Py_LIMITED_API 0x030d0000 +#ifndef Py_BUILD_CORE_BUILTIN +# define Py_BUILD_CORE_MODULE 1 #endif #include "Python.h" @@ -150,6 +148,35 @@ resource_getrusage_impl(PyObject *module, int who) } #endif +static int +py2rlim(PyObject *obj, rlim_t *out) +{ + obj = PyNumber_Index(obj); + if (obj == NULL) { + return -1; + } + int neg = PyLong_IsNegative(obj); + assert(neg >= 0); + Py_ssize_t bytes = PyLong_AsNativeBytes(obj, out, sizeof(*out), + Py_ASNATIVEBYTES_NATIVE_ENDIAN | + Py_ASNATIVEBYTES_UNSIGNED_BUFFER); + Py_DECREF(obj); + if (bytes < 0) { + return -1; + } + else if (neg && (*out != RLIM_INFINITY || bytes > (Py_ssize_t)sizeof(*out))) { + PyErr_SetString(PyExc_ValueError, + "Cannot convert negative int"); + return -1; + } + else if (bytes > (Py_ssize_t)sizeof(*out)) { + PyErr_SetString(PyExc_OverflowError, + "Python int too large to convert to C rlim_t"); + return -1; + } + return 0; +} + static int py2rlimit(PyObject *limits, struct rlimit *rl_out) { @@ -166,26 +193,13 @@ py2rlimit(PyObject *limits, struct rlimit *rl_out) } curobj = PyTuple_GetItem(limits, 0); // borrowed maxobj = PyTuple_GetItem(limits, 1); // borrowed -#if !defined(HAVE_LARGEFILE_SUPPORT) - rl_out->rlim_cur = PyLong_AsLong(curobj); - if (rl_out->rlim_cur == (rlim_t)-1 && PyErr_Occurred()) - goto error; - rl_out->rlim_max = PyLong_AsLong(maxobj); - if (rl_out->rlim_max == (rlim_t)-1 && PyErr_Occurred()) - goto error; -#else - /* The limits are probably bigger than a long */ - rl_out->rlim_cur = PyLong_AsLongLong(curobj); - if (rl_out->rlim_cur == (rlim_t)-1 && PyErr_Occurred()) - goto error; - rl_out->rlim_max = PyLong_AsLongLong(maxobj); - if (rl_out->rlim_max == (rlim_t)-1 && PyErr_Occurred()) + if (py2rlim(curobj, &rl_out->rlim_cur) < 0 || + py2rlim(maxobj, &rl_out->rlim_max) < 0) + { goto error; -#endif + } Py_DECREF(limits); - rl_out->rlim_cur = rl_out->rlim_cur & RLIM_INFINITY; - rl_out->rlim_max = rl_out->rlim_max & RLIM_INFINITY; return 0; error: @@ -193,15 +207,24 @@ py2rlimit(PyObject *limits, struct rlimit *rl_out) return -1; } +static PyObject* +rlim2py(rlim_t value) +{ + if (value == RLIM_INFINITY) { + return PyLong_FromNativeBytes(&value, sizeof(value), -1); + } + return PyLong_FromUnsignedNativeBytes(&value, sizeof(value), -1); +} + static PyObject* rlimit2py(struct rlimit rl) { - if (sizeof(rl.rlim_cur) > sizeof(long)) { - return Py_BuildValue("LL", - (long long) rl.rlim_cur, - (long long) rl.rlim_max); + PyObject *cur = rlim2py(rl.rlim_cur); + if (cur == NULL) { + return NULL; } - return Py_BuildValue("ll", (long) rl.rlim_cur, (long) rl.rlim_max); + PyObject *max = rlim2py(rl.rlim_max); + return Py_BuildValue("NN", cur, max); } /*[clinic input] @@ -495,14 +518,7 @@ resource_exec(PyObject *module) ADD_INT(module, RLIMIT_KQUEUES); #endif - PyObject *v; - if (sizeof(RLIM_INFINITY) > sizeof(long)) { - v = PyLong_FromLongLong((long long) RLIM_INFINITY); - } else - { - v = PyLong_FromLong((long) RLIM_INFINITY); - } - if (PyModule_Add(module, "RLIM_INFINITY", v) < 0) { + if (PyModule_Add(module, "RLIM_INFINITY", rlim2py(RLIM_INFINITY)) < 0) { return -1; } return 0; From 7ab68cd50658f76abc9e0f12e6212736e2440720 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20S=C5=82awecki?= Date: Thu, 7 Aug 2025 15:50:49 +0200 Subject: [PATCH 65/87] gh-137440: Update comment in Python/hamt.c on importing for testing (GH-137441) Switch from `_testcapi` to `_testinternalcapi`. --- Python/hamt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/hamt.c b/Python/hamt.c index 906149cc6cdbdc..e372b1a1b4c18b 100644 --- a/Python/hamt.c +++ b/Python/hamt.c @@ -256,9 +256,9 @@ Debug ===== The HAMT datatype is accessible for testing purposes under the -`_testcapi` module: +`_testinternalcapi` module: - >>> from _testcapi import hamt + >>> from _testinternalcapi import hamt >>> h = hamt() >>> h2 = h.set('a', 2) >>> h3 = h2.set('b', 3) From dec624e0afe6d22d38409d2e7dd9636ea0170378 Mon Sep 17 00:00:00 2001 From: Nice Zombies Date: Thu, 7 Aug 2025 17:21:56 +0200 Subject: [PATCH 66/87] gh-135336: Add fast path to json string encoding (#133239) Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> Co-authored-by: Serhiy Storchaka Co-authored-by: Victor Stinner --- ...-06-11-15-08-02.gh-issue-135336.6Gq6MI.rst | 1 + Modules/_json.c | 188 ++++++++++++++---- 2 files changed, 145 insertions(+), 44 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-06-11-15-08-02.gh-issue-135336.6Gq6MI.rst diff --git a/Misc/NEWS.d/next/Library/2025-06-11-15-08-02.gh-issue-135336.6Gq6MI.rst b/Misc/NEWS.d/next/Library/2025-06-11-15-08-02.gh-issue-135336.6Gq6MI.rst new file mode 100644 index 00000000000000..8a1d492ff08944 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-06-11-15-08-02.gh-issue-135336.6Gq6MI.rst @@ -0,0 +1 @@ +:mod:`json` now encodes strings up to 2.2x faster if they consist solely of characters that don’t require escaping. diff --git a/Modules/_json.c b/Modules/_json.c index 7580b589e2d937..e1d6042cb78ab5 100644 --- a/Modules/_json.c +++ b/Modules/_json.c @@ -51,7 +51,7 @@ typedef struct _PyEncoderObject { char sort_keys; char skipkeys; int allow_nan; - PyCFunction fast_encode; + int (*fast_encode)(PyUnicodeWriter *, PyObject *); } PyEncoderObject; #define PyEncoderObject_CAST(op) ((PyEncoderObject *)(op)) @@ -102,8 +102,10 @@ static PyObject * _encoded_const(PyObject *obj); static void raise_errmsg(const char *msg, PyObject *s, Py_ssize_t end); -static PyObject * -encoder_encode_string(PyEncoderObject *s, PyObject *obj); +static int +_steal_accumulate(PyUnicodeWriter *writer, PyObject *stolen); +static int +encoder_write_string(PyEncoderObject *s, PyUnicodeWriter *writer, PyObject *obj); static PyObject * encoder_encode_float(PyEncoderObject *s, PyObject *obj); @@ -146,22 +148,11 @@ ascii_escape_unichar(Py_UCS4 c, unsigned char *output, Py_ssize_t chars) return chars; } -static PyObject * -ascii_escape_unicode(PyObject *pystr) +static Py_ssize_t +ascii_escape_size(const void *input, int kind, Py_ssize_t input_chars) { - /* Take a PyUnicode pystr and return a new ASCII-only escaped PyUnicode */ Py_ssize_t i; - Py_ssize_t input_chars; Py_ssize_t output_size; - Py_ssize_t chars; - PyObject *rval; - const void *input; - Py_UCS1 *output; - int kind; - - input_chars = PyUnicode_GET_LENGTH(pystr); - input = PyUnicode_DATA(pystr); - kind = PyUnicode_KIND(pystr); /* Compute the output size */ for (i = 0, output_size = 2; i < input_chars; i++) { @@ -181,11 +172,22 @@ ascii_escape_unicode(PyObject *pystr) } if (output_size > PY_SSIZE_T_MAX - d) { PyErr_SetString(PyExc_OverflowError, "string is too long to escape"); - return NULL; + return -1; } output_size += d; } + return output_size; +} + +static PyObject * +ascii_escape_unicode_and_size(const void *input, int kind, Py_ssize_t input_chars, Py_ssize_t output_size) +{ + Py_ssize_t i; + Py_ssize_t chars; + PyObject *rval; + Py_UCS1 *output; + rval = PyUnicode_New(output_size, 127); if (rval == NULL) { return NULL; @@ -210,23 +212,62 @@ ascii_escape_unicode(PyObject *pystr) } static PyObject * -escape_unicode(PyObject *pystr) +ascii_escape_unicode(PyObject *pystr) +{ + /* Take a PyUnicode pystr and return a new ASCII-only escaped PyUnicode */ + Py_ssize_t input_chars = PyUnicode_GET_LENGTH(pystr); + const void *input = PyUnicode_DATA(pystr); + int kind = PyUnicode_KIND(pystr); + + Py_ssize_t output_size = ascii_escape_size(input, kind, input_chars); + if (output_size < 0) { + return NULL; + } + + return ascii_escape_unicode_and_size(input, kind, input_chars, output_size); +} + +static int +write_escaped_ascii(PyUnicodeWriter *writer, PyObject *pystr) { - /* Take a PyUnicode pystr and return a new escaped PyUnicode */ - Py_ssize_t i; Py_ssize_t input_chars; - Py_ssize_t output_size; - Py_ssize_t chars; - PyObject *rval; const void *input; int kind; - Py_UCS4 maxchar; - maxchar = PyUnicode_MAX_CHAR_VALUE(pystr); input_chars = PyUnicode_GET_LENGTH(pystr); input = PyUnicode_DATA(pystr); kind = PyUnicode_KIND(pystr); + Py_ssize_t output_size = ascii_escape_size(input, kind, input_chars); + if (output_size < 0) { + return -1; + } + + if (output_size == input_chars + 2) { + /* No need to escape anything */ + if (PyUnicodeWriter_WriteChar(writer, '"') < 0) { + return -1; + } + if (PyUnicodeWriter_WriteStr(writer, pystr) < 0) { + return -1; + } + return PyUnicodeWriter_WriteChar(writer, '"'); + } + + PyObject *rval = ascii_escape_unicode_and_size(input, kind, input_chars, output_size); + if (rval == NULL) { + return -1; + } + + return _steal_accumulate(writer, rval); +} + +static Py_ssize_t +escape_size(const void *input, int kind, Py_ssize_t input_chars) +{ + Py_ssize_t i; + Py_ssize_t output_size; + /* Compute the output size */ for (i = 0, output_size = 2; i < input_chars; i++) { Py_UCS4 c = PyUnicode_READ(kind, input, i); @@ -244,11 +285,21 @@ escape_unicode(PyObject *pystr) } if (output_size > PY_SSIZE_T_MAX - d) { PyErr_SetString(PyExc_OverflowError, "string is too long to escape"); - return NULL; + return -1; } output_size += d; } + return output_size; +} + +static PyObject * +escape_unicode_and_size(const void *input, int kind, Py_UCS4 maxchar, Py_ssize_t input_chars, Py_ssize_t output_size) +{ + Py_ssize_t i; + Py_ssize_t chars; + PyObject *rval; + rval = PyUnicode_New(output_size, maxchar); if (rval == NULL) return NULL; @@ -303,6 +354,55 @@ escape_unicode(PyObject *pystr) return rval; } +static PyObject * +escape_unicode(PyObject *pystr) +{ + /* Take a PyUnicode pystr and return a new escaped PyUnicode */ + Py_ssize_t input_chars = PyUnicode_GET_LENGTH(pystr); + const void *input = PyUnicode_DATA(pystr); + int kind = PyUnicode_KIND(pystr); + Py_UCS4 maxchar = PyUnicode_MAX_CHAR_VALUE(pystr); + + Py_ssize_t output_size = escape_size(input, kind, input_chars); + if (output_size < 0) { + return NULL; + } + + return escape_unicode_and_size(input, kind, maxchar, input_chars, output_size); +} + +static int +write_escaped_unicode(PyUnicodeWriter *writer, PyObject *pystr) +{ + Py_ssize_t input_chars = PyUnicode_GET_LENGTH(pystr); + const void *input = PyUnicode_DATA(pystr); + int kind = PyUnicode_KIND(pystr); + Py_UCS4 maxchar = PyUnicode_MAX_CHAR_VALUE(pystr); + + Py_ssize_t output_size = escape_size(input, kind, input_chars); + if (output_size < 0) { + return -1; + } + + if (output_size == input_chars + 2) { + /* No need to escape anything */ + if (PyUnicodeWriter_WriteChar(writer, '"') < 0) { + return -1; + } + if (PyUnicodeWriter_WriteStr(writer, pystr) < 0) { + return -1; + } + return PyUnicodeWriter_WriteChar(writer, '"'); + } + + PyObject *rval = escape_unicode_and_size(input, kind, maxchar, input_chars, output_size); + if (rval == NULL) { + return -1; + } + + return _steal_accumulate(writer, rval); +} + static void raise_errmsg(const char *msg, PyObject *s, Py_ssize_t end) { @@ -1256,8 +1356,11 @@ encoder_new(PyTypeObject *type, PyObject *args, PyObject *kwds) if (PyCFunction_Check(s->encoder)) { PyCFunction f = PyCFunction_GetFunction(s->encoder); - if (f == py_encode_basestring_ascii || f == py_encode_basestring) { - s->fast_encode = f; + if (f == py_encode_basestring_ascii) { + s->fast_encode = write_escaped_ascii; + } + else if (f == py_encode_basestring) { + s->fast_encode = write_escaped_unicode; } } @@ -1438,24 +1541,27 @@ encoder_encode_float(PyEncoderObject *s, PyObject *obj) return PyFloat_Type.tp_repr(obj); } -static PyObject * -encoder_encode_string(PyEncoderObject *s, PyObject *obj) +static int +encoder_write_string(PyEncoderObject *s, PyUnicodeWriter *writer, PyObject *obj) { /* Return the JSON representation of a string */ PyObject *encoded; if (s->fast_encode) { - return s->fast_encode(NULL, obj); + return s->fast_encode(writer, obj); } encoded = PyObject_CallOneArg(s->encoder, obj); - if (encoded != NULL && !PyUnicode_Check(encoded)) { + if (encoded == NULL) { + return -1; + } + if (!PyUnicode_Check(encoded)) { PyErr_Format(PyExc_TypeError, "encoder() must return a string, not %.80s", Py_TYPE(encoded)->tp_name); Py_DECREF(encoded); - return NULL; + return -1; } - return encoded; + return _steal_accumulate(writer, encoded); } static int @@ -1486,10 +1592,7 @@ encoder_listencode_obj(PyEncoderObject *s, PyUnicodeWriter *writer, return PyUnicodeWriter_WriteASCII(writer, "false", 5); } else if (PyUnicode_Check(obj)) { - PyObject *encoded = encoder_encode_string(s, obj); - if (encoded == NULL) - return -1; - return _steal_accumulate(writer, encoded); + return encoder_write_string(s, writer, obj); } else if (PyLong_Check(obj)) { if (PyLong_CheckExact(obj)) { @@ -1578,7 +1681,7 @@ encoder_encode_key_value(PyEncoderObject *s, PyUnicodeWriter *writer, bool *firs PyObject *item_separator) { PyObject *keystr = NULL; - PyObject *encoded; + int rv; if (PyUnicode_Check(key)) { keystr = Py_NewRef(key); @@ -1624,13 +1727,10 @@ encoder_encode_key_value(PyEncoderObject *s, PyUnicodeWriter *writer, bool *firs } } - encoded = encoder_encode_string(s, keystr); + rv = encoder_write_string(s, writer, keystr); Py_DECREF(keystr); - if (encoded == NULL) { - return -1; - } - if (_steal_accumulate(writer, encoded) < 0) { + if (rv < 0) { return -1; } if (PyUnicodeWriter_WriteStr(writer, s->key_separator) < 0) { From 082f370cdd0ec1484b033c70ec81b4b7a972ee2c Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Thu, 7 Aug 2025 11:24:50 -0400 Subject: [PATCH 67/87] gh-137514: Add a free-threading wrapper for mutexes (GH-137515) Add `FT_MUTEX_LOCK`/`FT_MUTEX_UNLOCK`, which call `PyMutex_Lock` and `PyMutex_Unlock` on the free-threaded build, and no-op otherwise. --- .../internal/pycore_pyatomic_ft_wrappers.h | 4 +++ Modules/_ctypes/malloc_closure.c | 15 ++++------- Objects/codeobject.c | 18 ++++--------- Objects/unicodeobject.c | 20 ++++++--------- Parser/pegen.c | 25 +++++++------------ Python/ceval_gil.c | 8 ++---- Python/codecs.c | 19 +++++--------- Python/legacy_tracing.c | 15 +++-------- Python/pystate.c | 8 ++---- 9 files changed, 44 insertions(+), 88 deletions(-) diff --git a/Include/internal/pycore_pyatomic_ft_wrappers.h b/Include/internal/pycore_pyatomic_ft_wrappers.h index 3e41e2fd1569ca..c31c33657002ec 100644 --- a/Include/internal/pycore_pyatomic_ft_wrappers.h +++ b/Include/internal/pycore_pyatomic_ft_wrappers.h @@ -111,6 +111,8 @@ extern "C" { _Py_atomic_load_ullong_relaxed(&value) #define FT_ATOMIC_ADD_SSIZE(value, new_value) \ (void)_Py_atomic_add_ssize(&value, new_value) +#define FT_MUTEX_LOCK(lock) PyMutex_Lock(lock) +#define FT_MUTEX_UNLOCK(lock) PyMutex_Unlock(lock) #else #define FT_ATOMIC_LOAD_PTR(value) value @@ -159,6 +161,8 @@ extern "C" { #define FT_ATOMIC_LOAD_ULLONG_RELAXED(value) value #define FT_ATOMIC_STORE_ULLONG_RELAXED(value, new_value) value = new_value #define FT_ATOMIC_ADD_SSIZE(value, new_value) (void)(value += new_value) +#define FT_MUTEX_LOCK(lock) do {} while (0) +#define FT_MUTEX_UNLOCK(lock) do {} while (0) #endif diff --git a/Modules/_ctypes/malloc_closure.c b/Modules/_ctypes/malloc_closure.c index 80ba96614bff79..db405acf8727b5 100644 --- a/Modules/_ctypes/malloc_closure.c +++ b/Modules/_ctypes/malloc_closure.c @@ -30,11 +30,6 @@ #ifdef Py_GIL_DISABLED static PyMutex malloc_closure_lock; -# define MALLOC_CLOSURE_LOCK() PyMutex_Lock(&malloc_closure_lock) -# define MALLOC_CLOSURE_UNLOCK() PyMutex_Unlock(&malloc_closure_lock) -#else -# define MALLOC_CLOSURE_LOCK() ((void)0) -# define MALLOC_CLOSURE_UNLOCK() ((void)0) #endif typedef union _tagITEM { @@ -120,11 +115,11 @@ void Py_ffi_closure_free(void *p) } #endif #endif - MALLOC_CLOSURE_LOCK(); + FT_MUTEX_LOCK(&malloc_closure_lock); ITEM *item = (ITEM *)p; item->next = free_list; free_list = item; - MALLOC_CLOSURE_UNLOCK(); + FT_MUTEX_UNLOCK(&malloc_closure_lock); } /* return one item from the free list, allocating more if needed */ @@ -143,13 +138,13 @@ void *Py_ffi_closure_alloc(size_t size, void** codeloc) } #endif #endif - MALLOC_CLOSURE_LOCK(); + FT_MUTEX_LOCK(&malloc_closure_lock); ITEM *item; if (!free_list) { more_core(); } if (!free_list) { - MALLOC_CLOSURE_UNLOCK(); + FT_MUTEX_UNLOCK(&malloc_closure_lock); return NULL; } item = free_list; @@ -160,6 +155,6 @@ void *Py_ffi_closure_alloc(size_t size, void** codeloc) #else *codeloc = (void *)item; #endif - MALLOC_CLOSURE_UNLOCK(); + FT_MUTEX_UNLOCK(&malloc_closure_lock); return (void *)item; } diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 42e021679b583f..478c571345cd03 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -550,16 +550,12 @@ init_code(PyCodeObject *co, struct _PyCodeConstructor *con) co->co_framesize = nlocalsplus + con->stacksize + FRAME_SPECIALS_SIZE; co->co_ncellvars = ncellvars; co->co_nfreevars = nfreevars; -#ifdef Py_GIL_DISABLED - PyMutex_Lock(&interp->func_state.mutex); -#endif + FT_MUTEX_LOCK(&interp->func_state.mutex); co->co_version = interp->func_state.next_version; if (interp->func_state.next_version != 0) { interp->func_state.next_version++; } -#ifdef Py_GIL_DISABLED - PyMutex_Unlock(&interp->func_state.mutex); -#endif + FT_MUTEX_UNLOCK(&interp->func_state.mutex); co->_co_monitoring = NULL; co->_co_instrumentation_version = 0; /* not set */ @@ -689,7 +685,7 @@ intern_code_constants(struct _PyCodeConstructor *con) #ifdef Py_GIL_DISABLED PyInterpreterState *interp = _PyInterpreterState_GET(); struct _py_code_state *state = &interp->code_state; - PyMutex_Lock(&state->mutex); + FT_MUTEX_LOCK(&state->mutex); #endif if (intern_strings(con->names) < 0) { goto error; @@ -700,15 +696,11 @@ intern_code_constants(struct _PyCodeConstructor *con) if (intern_strings(con->localsplusnames) < 0) { goto error; } -#ifdef Py_GIL_DISABLED - PyMutex_Unlock(&state->mutex); -#endif + FT_MUTEX_UNLOCK(&state->mutex); return 0; error: -#ifdef Py_GIL_DISABLED - PyMutex_Unlock(&state->mutex); -#endif + FT_MUTEX_UNLOCK(&state->mutex); return -1; } diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 425e4681f0a4dc..47802c5e915be2 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -114,14 +114,6 @@ NOTE: In the interpreter's initialization phase, some globals are currently # define _PyUnicode_CHECK(op) PyUnicode_Check(op) #endif -#ifdef Py_GIL_DISABLED -# define LOCK_INTERNED(interp) PyMutex_Lock(&_Py_INTERP_CACHED_OBJECT(interp, interned_mutex)) -# define UNLOCK_INTERNED(interp) PyMutex_Unlock(&_Py_INTERP_CACHED_OBJECT(interp, interned_mutex)) -#else -# define LOCK_INTERNED(interp) -# define UNLOCK_INTERNED(interp) -#endif - static inline char* _PyUnicode_UTF8(PyObject *op) { return FT_ATOMIC_LOAD_PTR_ACQUIRE(_PyCompactUnicodeObject_CAST(op)->utf8); @@ -15988,14 +15980,16 @@ intern_common(PyInterpreterState *interp, PyObject *s /* stolen */, /* Do a setdefault on the per-interpreter cache. */ PyObject *interned = get_interned_dict(interp); assert(interned != NULL); - - LOCK_INTERNED(interp); +#ifdef Py_GIL_DISABLED +# define INTERN_MUTEX &_Py_INTERP_CACHED_OBJECT(interp, interned_mutex) +#endif + FT_MUTEX_LOCK(INTERN_MUTEX); PyObject *t; { int res = PyDict_SetDefaultRef(interned, s, s, &t); if (res < 0) { PyErr_Clear(); - UNLOCK_INTERNED(interp); + FT_MUTEX_UNLOCK(INTERN_MUTEX); return s; } else if (res == 1) { @@ -16005,7 +15999,7 @@ intern_common(PyInterpreterState *interp, PyObject *s /* stolen */, PyUnicode_CHECK_INTERNED(t) == SSTATE_INTERNED_MORTAL) { immortalize_interned(t); } - UNLOCK_INTERNED(interp); + FT_MUTEX_UNLOCK(INTERN_MUTEX); return t; } else { @@ -16038,7 +16032,7 @@ intern_common(PyInterpreterState *interp, PyObject *s /* stolen */, immortalize_interned(s); } - UNLOCK_INTERNED(interp); + FT_MUTEX_UNLOCK(INTERN_MUTEX); return s; } diff --git a/Parser/pegen.c b/Parser/pegen.c index 50641de27d37fd..70493031656028 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -5,6 +5,7 @@ #include "pycore_pyerrors.h" // PyExc_IncompleteInputError #include "pycore_runtime.h" // _PyRuntime #include "pycore_unicodeobject.h" // _PyUnicode_InternImmortal +#include "pycore_pyatomic_ft_wrappers.h" #include #include "lexer/lexer.h" @@ -299,22 +300,14 @@ _PyPegen_fill_token(Parser *p) #define NSTATISTICS _PYPEGEN_NSTATISTICS #define memo_statistics _PyRuntime.parser.memo_statistics -#ifdef Py_GIL_DISABLED -#define MUTEX_LOCK() PyMutex_Lock(&_PyRuntime.parser.mutex) -#define MUTEX_UNLOCK() PyMutex_Unlock(&_PyRuntime.parser.mutex) -#else -#define MUTEX_LOCK() -#define MUTEX_UNLOCK() -#endif - void _PyPegen_clear_memo_statistics(void) { - MUTEX_LOCK(); + FT_MUTEX_LOCK(&_PyRuntime.parser.mutex); for (int i = 0; i < NSTATISTICS; i++) { memo_statistics[i] = 0; } - MUTEX_UNLOCK(); + FT_MUTEX_UNLOCK(&_PyRuntime.parser.mutex); } PyObject * @@ -325,22 +318,22 @@ _PyPegen_get_memo_statistics(void) return NULL; } - MUTEX_LOCK(); + FT_MUTEX_LOCK(&_PyRuntime.parser.mutex); for (int i = 0; i < NSTATISTICS; i++) { PyObject *value = PyLong_FromLong(memo_statistics[i]); if (value == NULL) { - MUTEX_UNLOCK(); + FT_MUTEX_UNLOCK(&_PyRuntime.parser.mutex); Py_DECREF(ret); return NULL; } // PyList_SetItem borrows a reference to value. if (PyList_SetItem(ret, i, value) < 0) { - MUTEX_UNLOCK(); + FT_MUTEX_UNLOCK(&_PyRuntime.parser.mutex); Py_DECREF(ret); return NULL; } } - MUTEX_UNLOCK(); + FT_MUTEX_UNLOCK(&_PyRuntime.parser.mutex); return ret; } #endif @@ -366,9 +359,9 @@ _PyPegen_is_memoized(Parser *p, int type, void *pres) if (count <= 0) { count = 1; } - MUTEX_LOCK(); + FT_MUTEX_LOCK(&_PyRuntime.parser.mutex); memo_statistics[type] += count; - MUTEX_UNLOCK(); + FT_MUTEX_UNLOCK(&_PyRuntime.parser.mutex); } #endif p->mark = m->mark; diff --git a/Python/ceval_gil.c b/Python/ceval_gil.c index aa68371ac8febf..6bf64868cbb2d3 100644 --- a/Python/ceval_gil.c +++ b/Python/ceval_gil.c @@ -907,13 +907,9 @@ unsignal_pending_calls(PyThreadState *tstate, PyInterpreterState *interp) static void clear_pending_handling_thread(struct _pending_calls *pending) { -#ifdef Py_GIL_DISABLED - PyMutex_Lock(&pending->mutex); - pending->handling_thread = NULL; - PyMutex_Unlock(&pending->mutex); -#else + FT_MUTEX_LOCK(&pending->mutex); pending->handling_thread = NULL; -#endif + FT_MUTEX_UNLOCK(&pending->mutex); } static int diff --git a/Python/codecs.c b/Python/codecs.c index 4e9aecfe75c2c9..8eb9f2db41359e 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -16,7 +16,7 @@ Copyright (c) Corporation for National Research Initiatives. #include "pycore_runtime.h" // _Py_ID() #include "pycore_ucnhash.h" // _PyUnicode_Name_CAPI #include "pycore_unicodeobject.h" // _PyUnicode_InternMortal() - +#include "pycore_pyatomic_ft_wrappers.h" static const char *codecs_builtin_error_handlers[] = { "strict", "ignore", "replace", @@ -40,13 +40,10 @@ int PyCodec_Register(PyObject *search_function) PyErr_SetString(PyExc_TypeError, "argument must be callable"); goto onError; } -#ifdef Py_GIL_DISABLED - PyMutex_Lock(&interp->codecs.search_path_mutex); -#endif + FT_MUTEX_LOCK(&interp->codecs.search_path_mutex); int ret = PyList_Append(interp->codecs.search_path, search_function); -#ifdef Py_GIL_DISABLED - PyMutex_Unlock(&interp->codecs.search_path_mutex); -#endif + FT_MUTEX_UNLOCK(&interp->codecs.search_path_mutex); + return ret; onError: @@ -66,9 +63,7 @@ PyCodec_Unregister(PyObject *search_function) PyObject *codec_search_path = interp->codecs.search_path; assert(PyList_CheckExact(codec_search_path)); for (Py_ssize_t i = 0; i < PyList_GET_SIZE(codec_search_path); i++) { -#ifdef Py_GIL_DISABLED - PyMutex_Lock(&interp->codecs.search_path_mutex); -#endif + FT_MUTEX_LOCK(&interp->codecs.search_path_mutex); PyObject *item = PyList_GetItemRef(codec_search_path, i); int ret = 1; if (item == search_function) { @@ -76,9 +71,7 @@ PyCodec_Unregister(PyObject *search_function) // while we hold search_path_mutex. ret = PyList_SetSlice(codec_search_path, i, i+1, NULL); } -#ifdef Py_GIL_DISABLED - PyMutex_Unlock(&interp->codecs.search_path_mutex); -#endif + FT_MUTEX_UNLOCK(&interp->codecs.search_path_mutex); Py_DECREF(item); if (ret != 1) { assert(interp->codecs.search_cache != NULL); diff --git a/Python/legacy_tracing.c b/Python/legacy_tracing.c index dbd19d7755c237..ee9b0cd0e9cfc3 100644 --- a/Python/legacy_tracing.c +++ b/Python/legacy_tracing.c @@ -20,13 +20,6 @@ typedef struct _PyLegacyEventHandler { #define _PyLegacyEventHandler_CAST(op) ((_PyLegacyEventHandler *)(op)) -#ifdef Py_GIL_DISABLED -#define LOCK_SETUP() PyMutex_Lock(&_PyRuntime.ceval.sys_trace_profile_mutex); -#define UNLOCK_SETUP() PyMutex_Unlock(&_PyRuntime.ceval.sys_trace_profile_mutex); -#else -#define LOCK_SETUP() -#define UNLOCK_SETUP() -#endif /* The Py_tracefunc function expects the following arguments: * obj: the trace object (PyObject *) * frame: the current frame (PyFrameObject *) @@ -509,9 +502,9 @@ _PyEval_SetProfile(PyThreadState *tstate, Py_tracefunc func, PyObject *arg) // needs to be decref'd outside of the lock PyObject *old_profileobj; - LOCK_SETUP(); + FT_MUTEX_LOCK(&_PyRuntime.ceval.sys_trace_profile_mutex); Py_ssize_t profiling_threads = setup_profile(tstate, func, arg, &old_profileobj); - UNLOCK_SETUP(); + FT_MUTEX_UNLOCK(&_PyRuntime.ceval.sys_trace_profile_mutex); Py_XDECREF(old_profileobj); uint32_t events = 0; @@ -605,10 +598,10 @@ _PyEval_SetTrace(PyThreadState *tstate, Py_tracefunc func, PyObject *arg) } // needs to be decref'd outside of the lock PyObject *old_traceobj; - LOCK_SETUP(); + FT_MUTEX_LOCK(&_PyRuntime.ceval.sys_trace_profile_mutex); assert(tstate->interp->sys_tracing_threads >= 0); Py_ssize_t tracing_threads = setup_tracing(tstate, func, arg, &old_traceobj); - UNLOCK_SETUP(); + FT_MUTEX_UNLOCK(&_PyRuntime.ceval.sys_trace_profile_mutex); Py_XDECREF(old_traceobj); if (tracing_threads < 0) { return -1; diff --git a/Python/pystate.c b/Python/pystate.c index c77868bc717daf..cd62bf86837f83 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -1689,9 +1689,7 @@ PyThreadState_Clear(PyThreadState *tstate) "PyThreadState_Clear: warning: thread still has a generator\n"); } -#ifdef Py_GIL_DISABLED - PyMutex_Lock(&_PyRuntime.ceval.sys_trace_profile_mutex); -#endif + FT_MUTEX_LOCK(&_PyRuntime.ceval.sys_trace_profile_mutex); if (tstate->c_profilefunc != NULL) { tstate->interp->sys_profiling_threads--; @@ -1702,9 +1700,7 @@ PyThreadState_Clear(PyThreadState *tstate) tstate->c_tracefunc = NULL; } -#ifdef Py_GIL_DISABLED - PyMutex_Unlock(&_PyRuntime.ceval.sys_trace_profile_mutex); -#endif + FT_MUTEX_UNLOCK(&_PyRuntime.ceval.sys_trace_profile_mutex); Py_CLEAR(tstate->c_profileobj); Py_CLEAR(tstate->c_traceobj); From db8742e2b4e118e226054156c4e1a9ba878463f2 Mon Sep 17 00:00:00 2001 From: maurycy <5383+maurycy@users.noreply.github.com> Date: Thu, 7 Aug 2025 17:38:14 +0200 Subject: [PATCH 68/87] Remove redundant assignment in asyncio.streams.StreamReaderProtocol.connection_lost() (GH-137524) The _stream_writer attribute was removed in a355f60 (gh-114914). --- Lib/asyncio/streams.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/asyncio/streams.py b/Lib/asyncio/streams.py index 64aac4cc50d15a..c8c01f36474183 100644 --- a/Lib/asyncio/streams.py +++ b/Lib/asyncio/streams.py @@ -271,7 +271,6 @@ def connection_lost(self, exc): self._closed.set_exception(exc) super().connection_lost(exc) self._stream_reader_wr = None - self._stream_writer = None self._task = None self._transport = None From d0f4e76de06660210e76ccca40b805fc2f4332d5 Mon Sep 17 00:00:00 2001 From: Ee Durbin Date: Thu, 7 Aug 2025 15:35:39 -0400 Subject: [PATCH 69/87] add floss.fund manifest provenance (#137529) ref: https://fundingjson.org/#wellknown --- .well-known/funding-manifest-urls | 1 + 1 file changed, 1 insertion(+) create mode 100644 .well-known/funding-manifest-urls diff --git a/.well-known/funding-manifest-urls b/.well-known/funding-manifest-urls new file mode 100644 index 00000000000000..d56ca9eb52f004 --- /dev/null +++ b/.well-known/funding-manifest-urls @@ -0,0 +1 @@ +https://www.python.org/funding.json From 244c7b8c4c579972e7db54132bdd74de3d3b3c0a Mon Sep 17 00:00:00 2001 From: Sebastien Williams-Wynn Date: Thu, 7 Aug 2025 20:36:05 +0100 Subject: [PATCH 70/87] gh-137526: Fix broken link to drdobbs journal in difflib.rst (#137527) --- Doc/library/difflib.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index ce948a6860f02c..ec8b575a1ba999 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -351,9 +351,9 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. .. seealso:: - `Pattern Matching: The Gestalt Approach `_ + `Pattern Matching: The Gestalt Approach `_ Discussion of a similar algorithm by John W. Ratcliff and D. E. Metzener. This - was published in `Dr. Dobb's Journal `_ in July, 1988. + was published in Dr. Dobb's Journal in July, 1988. .. _sequence-matcher: From e3ad9003c5af314ae82d4e9f40d9c0375a34149f Mon Sep 17 00:00:00 2001 From: Abhinav Upadhyay Date: Fri, 8 Aug 2025 02:01:11 +0530 Subject: [PATCH 71/87] GH-119085: Move comment in Python/gc.c to correct place. In GH-116206, the comment about moving reachable objects to next generation got moved from its original place to a place where there is no code below it. Put the comment back to where the actual movement of reachable objects happens. --- Python/gc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Python/gc.c b/Python/gc.c index 2e697faac032b5..807bd5b65b2332 100644 --- a/Python/gc.c +++ b/Python/gc.c @@ -1710,12 +1710,13 @@ gc_collect_region(PyThreadState *tstate, deduce_unreachable(from, &unreachable); validate_consistent_old_space(from); untrack_tuples(from); + + /* Move reachable objects to next generation. */ validate_consistent_old_space(to); if (from != to) { gc_list_merge(from, to); } validate_consistent_old_space(to); - /* Move reachable objects to next generation. */ /* All objects in unreachable are trash, but objects reachable from * legacy finalizers (e.g. tp_del) can't safely be deleted. From 375f484f976a1ed84c145a6ce4e467cd5b57db75 Mon Sep 17 00:00:00 2001 From: Dino Viehland Date: Thu, 7 Aug 2025 14:54:12 -0700 Subject: [PATCH 72/87] gh-137291: Support perf profiler with an evaluation hook (#137292) Support perf profiler with an evaluation hook --- Include/internal/pycore_interp_structs.h | 1 + Lib/test/test_perf_profiler.py | 81 ++++++++++--------- ...-07-31-23-02-02.gh-issue-137291.kIxVZd.rst | 1 + Python/perf_trampoline.c | 18 ++--- 4 files changed, 54 insertions(+), 47 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-07-31-23-02-02.gh-issue-137291.kIxVZd.rst diff --git a/Include/internal/pycore_interp_structs.h b/Include/internal/pycore_interp_structs.h index 758bf5447ee32a..7cb5bce546ac74 100644 --- a/Include/internal/pycore_interp_structs.h +++ b/Include/internal/pycore_interp_structs.h @@ -88,6 +88,7 @@ struct _ceval_runtime_state { struct trampoline_api_st trampoline_api; FILE *map_file; Py_ssize_t persist_after_fork; + _PyFrameEvalFunction prev_eval_frame; #else int _not_used; #endif diff --git a/Lib/test/test_perf_profiler.py b/Lib/test/test_perf_profiler.py index 0207843cc0e8f7..13424991639215 100644 --- a/Lib/test/test_perf_profiler.py +++ b/Lib/test/test_perf_profiler.py @@ -162,48 +162,55 @@ def baz(): @unittest.skipIf(support.check_bolt_optimized(), "fails on BOLT instrumented binaries") def test_sys_api(self): - code = """if 1: - import sys - def foo(): - pass - - def spam(): - pass + for define_eval_hook in (False, True): + code = """if 1: + import sys + def foo(): + pass - def bar(): - sys.deactivate_stack_trampoline() - foo() - sys.activate_stack_trampoline("perf") - spam() + def spam(): + pass - def baz(): - bar() + def bar(): + sys.deactivate_stack_trampoline() + foo() + sys.activate_stack_trampoline("perf") + spam() - sys.activate_stack_trampoline("perf") - baz() - """ - with temp_dir() as script_dir: - script = make_script(script_dir, "perftest", code) - env = {**os.environ, "PYTHON_JIT": "0"} - with subprocess.Popen( - [sys.executable, script], - text=True, - stderr=subprocess.PIPE, - stdout=subprocess.PIPE, - env=env, - ) as process: - stdout, stderr = process.communicate() + def baz(): + bar() - self.assertEqual(stderr, "") - self.assertEqual(stdout, "") + sys.activate_stack_trampoline("perf") + baz() + """ + if define_eval_hook: + set_eval_hook = """if 1: + import _testinternalcapi + _testinternalcapi.set_eval_frame_record([]) +""" + code = set_eval_hook + code + with temp_dir() as script_dir: + script = make_script(script_dir, "perftest", code) + env = {**os.environ, "PYTHON_JIT": "0"} + with subprocess.Popen( + [sys.executable, script], + text=True, + stderr=subprocess.PIPE, + stdout=subprocess.PIPE, + env=env, + ) as process: + stdout, stderr = process.communicate() - perf_file = pathlib.Path(f"/tmp/perf-{process.pid}.map") - self.assertTrue(perf_file.exists()) - perf_file_contents = perf_file.read_text() - self.assertNotIn(f"py::foo:{script}", perf_file_contents) - self.assertIn(f"py::spam:{script}", perf_file_contents) - self.assertIn(f"py::bar:{script}", perf_file_contents) - self.assertIn(f"py::baz:{script}", perf_file_contents) + self.assertEqual(stderr, "") + self.assertEqual(stdout, "") + + perf_file = pathlib.Path(f"/tmp/perf-{process.pid}.map") + self.assertTrue(perf_file.exists()) + perf_file_contents = perf_file.read_text() + self.assertNotIn(f"py::foo:{script}", perf_file_contents) + self.assertIn(f"py::spam:{script}", perf_file_contents) + self.assertIn(f"py::bar:{script}", perf_file_contents) + self.assertIn(f"py::baz:{script}", perf_file_contents) def test_sys_api_with_existing_trampoline(self): code = """if 1: diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-07-31-23-02-02.gh-issue-137291.kIxVZd.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-07-31-23-02-02.gh-issue-137291.kIxVZd.rst new file mode 100644 index 00000000000000..0995e3b4644e7c --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-07-31-23-02-02.gh-issue-137291.kIxVZd.rst @@ -0,0 +1 @@ +The perf profiler can now be used if a previous frame evaluation API has been provided. diff --git a/Python/perf_trampoline.c b/Python/perf_trampoline.c index a2da3c7d56df50..987e8d2a11a659 100644 --- a/Python/perf_trampoline.c +++ b/Python/perf_trampoline.c @@ -202,6 +202,7 @@ enum perf_trampoline_type { #define perf_map_file _PyRuntime.ceval.perf.map_file #define persist_after_fork _PyRuntime.ceval.perf.persist_after_fork #define perf_trampoline_type _PyRuntime.ceval.perf.perf_trampoline_type +#define prev_eval_frame _PyRuntime.ceval.perf.prev_eval_frame static void perf_map_write_entry(void *state, const void *code_addr, @@ -407,9 +408,12 @@ py_trampoline_evaluator(PyThreadState *ts, _PyInterpreterFrame *frame, f = new_trampoline; } assert(f != NULL); - return f(ts, frame, throw, _PyEval_EvalFrameDefault); + return f(ts, frame, throw, prev_eval_frame != NULL ? prev_eval_frame : _PyEval_EvalFrameDefault); default_eval: // Something failed, fall back to the default evaluator. + if (prev_eval_frame) { + return prev_eval_frame(ts, frame, throw); + } return _PyEval_EvalFrameDefault(ts, frame, throw); } #endif // PY_HAVE_PERF_TRAMPOLINE @@ -481,18 +485,12 @@ _PyPerfTrampoline_Init(int activate) { #ifdef PY_HAVE_PERF_TRAMPOLINE PyThreadState *tstate = _PyThreadState_GET(); - if (tstate->interp->eval_frame && - tstate->interp->eval_frame != py_trampoline_evaluator) { - PyErr_SetString(PyExc_RuntimeError, - "Trampoline cannot be initialized as a custom eval " - "frame is already present"); - return -1; - } if (!activate) { - _PyInterpreterState_SetEvalFrameFunc(tstate->interp, NULL); + _PyInterpreterState_SetEvalFrameFunc(tstate->interp, prev_eval_frame); perf_status = PERF_STATUS_NO_INIT; } - else { + else if (tstate->interp->eval_frame != py_trampoline_evaluator) { + prev_eval_frame = _PyInterpreterState_GetEvalFrameFunc(tstate->interp); _PyInterpreterState_SetEvalFrameFunc(tstate->interp, py_trampoline_evaluator); extra_code_index = _PyEval_RequestCodeExtraIndex(NULL); if (extra_code_index == -1) { From deb385a14337bc3e38442b4cee3aac4a57364adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Fri, 8 Aug 2025 00:31:56 +0200 Subject: [PATCH 73/87] gh-137412: fix `default_builtin_hashes` values in `test_hashlib.py` (#137413) fix `default_builtin_hashes` in test_hashlib --- Lib/test/test_hashlib.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index b2b64a76a9f0f6..33845d8a9e2651 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -27,24 +27,17 @@ from http.client import HTTPException -default_builtin_hashes = {'md5', 'sha1', 'sha256', 'sha512', 'sha3', 'blake2'} +default_builtin_hashes = {'md5', 'sha1', 'sha2', 'sha3', 'blake2'} # --with-builtin-hashlib-hashes override builtin_hashes = sysconfig.get_config_var("PY_BUILTIN_HASHLIB_HASHES") if builtin_hashes is None: builtin_hashes = default_builtin_hashes else: - builtin_hashes = { - m.strip() for m in builtin_hashes.strip('"').lower().split(",") - } + builtin_hash_names = builtin_hashes.strip('"').lower().split(",") + builtin_hashes = set(map(str.strip, builtin_hash_names)) -# hashlib with and without OpenSSL backend for PBKDF2 -# only import builtin_hashlib when all builtin hashes are available. -# Otherwise import prints noise on stderr +# Public 'hashlib' module with OpenSSL backend for PBKDF2. openssl_hashlib = import_fresh_module('hashlib', fresh=['_hashlib']) -if builtin_hashes == default_builtin_hashes: - builtin_hashlib = import_fresh_module('hashlib', blocked=['_hashlib']) -else: - builtin_hashlib = None try: from _hashlib import HASH, HASHXOF, openssl_md_meth_names, get_fips_mode From 350c58ba4ee13019b0cde70b49bfeadc63f4ceb8 Mon Sep 17 00:00:00 2001 From: Neil Schemenauer Date: Thu, 7 Aug 2025 16:32:17 -0700 Subject: [PATCH 74/87] GH-135552: Make the GC clear weakrefs later (GH-136189) Fix a bug caused by the garbage collector clearing weakrefs too early. The weakrefs in the ``tp_subclasses`` dictionary are needed in order to correctly invalidate type caches (for example, by calling ``PyType_Modified()``). Clearing weakrefs before calling finalizers causes the caches to not be correctly invalidated. That can cause crashes since the caches can refer to invalid objects. Defer the clearing of weakrefs without callbacks until after finalizers are executed. --- InternalDocs/garbage_collector.md | 26 ++- Lib/test/test_finalization.py | 46 ++-- Lib/test/test_gc.py | 27 ++- Lib/test/test_io.py | 22 +- ...-07-03-06-04-42.gh-issue-135552.CbBQof.rst | 7 + Modules/_datetimemodule.c | 2 +- Modules/gc_weakref.txt | 10 + Python/gc.c | 199 +++++++++++------- Python/gc_free_threading.c | 120 ++++++++--- 9 files changed, 318 insertions(+), 141 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-07-03-06-04-42.gh-issue-135552.CbBQof.rst diff --git a/InternalDocs/garbage_collector.md b/InternalDocs/garbage_collector.md index 9c35684c945b3e..a7d872f3ec4392 100644 --- a/InternalDocs/garbage_collector.md +++ b/InternalDocs/garbage_collector.md @@ -329,15 +329,16 @@ Once the GC knows the list of unreachable objects, a very delicate process start with the objective of completely destroying these objects. Roughly, the process follows these steps in order: -1. Handle and clear weak references (if any). Weak references to unreachable objects - are set to `None`. If the weak reference has an associated callback, the callback - is enqueued to be called once the clearing of weak references is finished. We only - invoke callbacks for weak references that are themselves reachable. If both the weak - reference and the pointed-to object are unreachable we do not execute the callback. - This is partly for historical reasons: the callback could resurrect an unreachable - object and support for weak references predates support for object resurrection. - Ignoring the weak reference's callback is fine because both the object and the weakref - are going away, so it's legitimate to say the weak reference is going away first. +1. Handle weak references with callbacks (if any). If the weak reference has + an associated callback, the callback is enqueued to be called after the weak + reference is cleared. We only invoke callbacks for weak references that + are themselves reachable. If both the weak reference and the pointed-to + object are unreachable we do not execute the callback. This is partly for + historical reasons: the callback could resurrect an unreachable object + and support for weak references predates support for object resurrection. + Ignoring the weak reference's callback is fine because both the object and + the weakref are going away, so it's legitimate to say the weak reference is + going away first. 2. If an object has legacy finalizers (`tp_del` slot) move it to the `gc.garbage` list. 3. Call the finalizers (`tp_finalize` slot) and mark the objects as already @@ -346,7 +347,12 @@ follows these steps in order: 4. Deal with resurrected objects. If some objects have been resurrected, the GC finds the new subset of objects that are still unreachable by running the cycle detection algorithm again and continues with them. -5. Call the `tp_clear` slot of every object so all internal links are broken and +5. Clear any weak references that still refer to unreachable objects. The + `wr_object` attribute for these weakrefs are set to `None`. Note that some + of these weak references maybe have been newly created during the running of + finalizers in step 3. Also, clear any weak references that are part of the + unreachable set. +6. Call the `tp_clear` slot of every object so all internal links are broken and the reference counts fall to 0, triggering the destruction of all unreachable objects. diff --git a/Lib/test/test_finalization.py b/Lib/test/test_finalization.py index 42871f8a09b16b..9dd68cf8d57413 100644 --- a/Lib/test/test_finalization.py +++ b/Lib/test/test_finalization.py @@ -174,7 +174,7 @@ def test_simple(self): gc.collect() self.assert_del_calls(ids) self.assert_survivors([]) - self.assertIs(wr(), None) + self.assertIsNone(wr()) gc.collect() self.assert_del_calls(ids) self.assert_survivors([]) @@ -188,12 +188,12 @@ def test_simple_resurrect(self): gc.collect() self.assert_del_calls(ids) self.assert_survivors(ids) - self.assertIsNot(wr(), None) + self.assertIsNotNone(wr()) self.clear_survivors() gc.collect() self.assert_del_calls(ids) self.assert_survivors([]) - self.assertIs(wr(), None) + self.assertIsNone(wr()) @support.cpython_only def test_non_gc(self): @@ -265,7 +265,7 @@ def test_simple(self): gc.collect() self.assert_del_calls(ids) self.assert_survivors([]) - self.assertIs(wr(), None) + self.assertIsNone(wr()) gc.collect() self.assert_del_calls(ids) self.assert_survivors([]) @@ -276,19 +276,24 @@ def test_simple_resurrect(self): s = SelfCycleResurrector() ids = [id(s)] wr = weakref.ref(s) + wrc = weakref.ref(s, lambda x: None) del s gc.collect() self.assert_del_calls(ids) self.assert_survivors(ids) - # XXX is this desirable? - self.assertIs(wr(), None) + # This used to be None because weakrefs were cleared before + # calling finalizers. Now they are cleared after. + self.assertIsNotNone(wr()) + # A weakref with a callback is still cleared before calling + # finalizers. + self.assertIsNone(wrc()) # When trying to destroy the object a second time, __del__ # isn't called anymore (and the object isn't resurrected). self.clear_survivors() gc.collect() self.assert_del_calls(ids) self.assert_survivors([]) - self.assertIs(wr(), None) + self.assertIsNone(wr()) def test_simple_suicide(self): # Test the GC is able to deal with an object that kills its last @@ -301,11 +306,11 @@ def test_simple_suicide(self): gc.collect() self.assert_del_calls(ids) self.assert_survivors([]) - self.assertIs(wr(), None) + self.assertIsNone(wr()) gc.collect() self.assert_del_calls(ids) self.assert_survivors([]) - self.assertIs(wr(), None) + self.assertIsNone(wr()) class ChainedBase: @@ -378,18 +383,27 @@ def check_non_resurrecting_chain(self, classes): def check_resurrecting_chain(self, classes): N = len(classes) + def dummy_callback(ref): + pass with SimpleBase.test(): nodes = self.build_chain(classes) N = len(nodes) ids = [id(s) for s in nodes] survivor_ids = [id(s) for s in nodes if isinstance(s, SimpleResurrector)] wrs = [weakref.ref(s) for s in nodes] + wrcs = [weakref.ref(s, dummy_callback) for s in nodes] del nodes gc.collect() self.assert_del_calls(ids) self.assert_survivors(survivor_ids) - # XXX desirable? - self.assertEqual([wr() for wr in wrs], [None] * N) + for wr in wrs: + # These values used to be None because weakrefs were cleared + # before calling finalizers. Now they are cleared after. + self.assertIsNotNone(wr()) + for wr in wrcs: + # Weakrefs with callbacks are still cleared before calling + # finalizers. + self.assertIsNone(wr()) self.clear_survivors() gc.collect() self.assert_del_calls(ids) @@ -491,7 +505,7 @@ def test_legacy(self): self.assert_del_calls(ids) self.assert_tp_del_calls(ids) self.assert_survivors([]) - self.assertIs(wr(), None) + self.assertIsNone(wr()) gc.collect() self.assert_del_calls(ids) self.assert_tp_del_calls(ids) @@ -507,13 +521,13 @@ def test_legacy_resurrect(self): self.assert_tp_del_calls(ids) self.assert_survivors(ids) # weakrefs are cleared before tp_del is called. - self.assertIs(wr(), None) + self.assertIsNone(wr()) self.clear_survivors() gc.collect() self.assert_del_calls(ids) self.assert_tp_del_calls(ids * 2) self.assert_survivors(ids) - self.assertIs(wr(), None) + self.assertIsNone(wr()) def test_legacy_self_cycle(self): # Self-cycles with legacy finalizers end up in gc.garbage. @@ -527,11 +541,11 @@ def test_legacy_self_cycle(self): self.assert_tp_del_calls([]) self.assert_survivors([]) self.assert_garbage(ids) - self.assertIsNot(wr(), None) + self.assertIsNotNone(wr()) # Break the cycle to allow collection gc.garbage[0].ref = None self.assert_garbage([]) - self.assertIs(wr(), None) + self.assertIsNone(wr()) if __name__ == "__main__": diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py index 96ebb23f73de9d..3ec211531c4c70 100644 --- a/Lib/test/test_gc.py +++ b/Lib/test/test_gc.py @@ -309,6 +309,26 @@ def func(): self.assertRegex(stdout, rb"""\A\s*func=None""") self.assertFalse(stderr) + def test_datetime_weakref_cycle(self): + # https://github.com/python/cpython/issues/132413 + # If the weakref used by the datetime extension gets cleared by the GC (due to being + # in an unreachable cycle) then datetime functions would crash (get_module_state() + # was returning a NULL pointer). This bug is fixed by clearing weakrefs without + # callbacks *after* running finalizers. + code = """if 1: + import _datetime + class C: + def __del__(self): + print('__del__ called') + _datetime.timedelta(days=1) # crash? + + l = [C()] + l.append(l) + """ + rc, stdout, stderr = assert_python_ok("-c", code) + self.assertEqual(rc, 0) + self.assertEqual(stdout.strip(), b'__del__ called') + @refcount_test def test_frame(self): def f(): @@ -658,9 +678,8 @@ def callback(ignored): gc.collect() self.assertEqual(len(ouch), 2) # else the callbacks didn't run for x in ouch: - # If the callback resurrected one of these guys, the instance - # would be damaged, with an empty __dict__. - self.assertEqual(x, None) + # The weakref should be cleared before executing the callback. + self.assertIsNone(x) def test_bug21435(self): # This is a poor test - its only virtue is that it happened to @@ -1335,6 +1354,7 @@ def setUp(self): def tearDown(self): gc.disable() + @unittest.skipIf(Py_GIL_DISABLED, "requires GC generations or increments") def test_bug1055820c(self): # Corresponds to temp2c.py in the bug report. This is pretty # elaborate. @@ -1410,6 +1430,7 @@ def callback(ignored): self.assertEqual(x, None) @gc_threshold(1000, 0, 0) + @unittest.skipIf(Py_GIL_DISABLED, "requires GC generations or increments") def test_bug1055820d(self): # Corresponds to temp2d.py in the bug report. This is very much like # test_bug1055820c, but uses a __del__ method instead of a weakref diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index b487bcabf01ca4..92be2763e5ed1e 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -808,7 +808,12 @@ def test_closefd_attr(self): def test_garbage_collection(self): # FileIO objects are collected, and collecting them flushes # all data to disk. - with warnings_helper.check_warnings(('', ResourceWarning)): + # + # Note that using warnings_helper.check_warnings() will keep the + # file alive due to the `source` argument to warn(). So, use + # catch_warnings() instead. + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ResourceWarning) f = self.FileIO(os_helper.TESTFN, "wb") f.write(b"abcxxx") f.f = f @@ -1809,7 +1814,11 @@ def test_garbage_collection(self): # C BufferedReader objects are collected. # The Python version has __del__, so it ends into gc.garbage instead self.addCleanup(os_helper.unlink, os_helper.TESTFN) - with warnings_helper.check_warnings(('', ResourceWarning)): + # Note that using warnings_helper.check_warnings() will keep the + # file alive due to the `source` argument to warn(). So, use + # catch_warnings() instead. + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ResourceWarning) rawio = self.FileIO(os_helper.TESTFN, "w+b") f = self.tp(rawio) f.f = f @@ -2158,7 +2167,11 @@ def test_garbage_collection(self): # all data to disk. # The Python version has __del__, so it ends into gc.garbage instead self.addCleanup(os_helper.unlink, os_helper.TESTFN) - with warnings_helper.check_warnings(('', ResourceWarning)): + # Note that using warnings_helper.check_warnings() will keep the + # file alive due to the `source` argument to warn(). So, use + # catch_warnings() instead. + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ResourceWarning) rawio = self.FileIO(os_helper.TESTFN, "w+b") f = self.tp(rawio) f.write(b"123xxx") @@ -4080,7 +4093,8 @@ def test_garbage_collection(self): # C TextIOWrapper objects are collected, and collecting them flushes # all data to disk. # The Python version has __del__, so it ends in gc.garbage instead. - with warnings_helper.check_warnings(('', ResourceWarning)): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ResourceWarning) rawio = self.FileIO(os_helper.TESTFN, "wb") b = self.BufferedWriter(rawio) t = self.TextIOWrapper(b, encoding="ascii") diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-07-03-06-04-42.gh-issue-135552.CbBQof.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-07-03-06-04-42.gh-issue-135552.CbBQof.rst new file mode 100644 index 00000000000000..ea30a43fc25d41 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-07-03-06-04-42.gh-issue-135552.CbBQof.rst @@ -0,0 +1,7 @@ +Fix a bug caused by the garbage collector clearing weakrefs too early. The +weakrefs in the ``tp_subclasses`` dictionary are needed in order to correctly +invalidate type caches (for example, by calling ``PyType_Modified()``). +Clearing weakrefs before calling finalizers causes the caches to not be +correctly invalidated. That can cause crashes since the caches can refer to +invalid objects. Defer the clearing of weakrefs without callbacks until after +finalizers are executed. diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 01039dfeec0719..3f7afbe27d7358 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -214,7 +214,7 @@ clear_current_module(PyInterpreterState *interp, PyObject *expected) if (PyDict_GetItemRef(dict, INTERP_KEY, &ref) < 0) { goto error; } - if (ref != NULL) { + if (ref != NULL && ref != Py_None) { PyObject *current = NULL; int rc = PyWeakref_GetRef(ref, ¤t); /* We only need "current" for pointer comparison. */ diff --git a/Modules/gc_weakref.txt b/Modules/gc_weakref.txt index f53fb99dd6cdcb..c3b8cc743ccd21 100644 --- a/Modules/gc_weakref.txt +++ b/Modules/gc_weakref.txt @@ -1,6 +1,16 @@ Intro ===== +************************************************************************** +Note: this document was written long ago, before PEP 442 (safe object +finalization) was implemented. While that has changed some things, this +document is still mostly accurate. Just note that the rules being discussed +here apply to the unreachable set of objects *after* non-legacy finalizers +have been called. Also, the clearing of weakrefs has been changed to happen +later in the collection (after running finalizers but before tp_clear is +called). +************************************************************************** + The basic rule for dealing with weakref callbacks (and __del__ methods too, for that matter) during cyclic gc: diff --git a/Python/gc.c b/Python/gc.c index 807bd5b65b2332..1050eae60fd337 100644 --- a/Python/gc.c +++ b/Python/gc.c @@ -858,60 +858,65 @@ move_legacy_finalizer_reachable(PyGC_Head *finalizers) } } -/* Clear all weakrefs to unreachable objects, and if such a weakref has a - * callback, invoke it if necessary. Note that it's possible for such - * weakrefs to be outside the unreachable set -- indeed, those are precisely - * the weakrefs whose callbacks must be invoked. See gc_weakref.txt for - * overview & some details. Some weakrefs with callbacks may be reclaimed - * directly by this routine; the number reclaimed is the return value. Other - * weakrefs with callbacks may be moved into the `old` generation. Objects - * moved into `old` have gc_refs set to GC_REACHABLE; the objects remaining in - * unreachable are left at GC_TENTATIVELY_UNREACHABLE. When this returns, - * no object in `unreachable` is weakly referenced anymore. +/* Handle weakref callbacks. Note that it's possible for such weakrefs to be + * outside the unreachable set -- indeed, those are precisely the weakrefs + * whose callbacks must be invoked. See gc_weakref.txt for overview & some + * details. + * + * The clearing of weakrefs is suble and must be done carefully, as there was + * previous bugs related to this. First, weakrefs to the unreachable set of + * objects must be cleared before we start calling `tp_clear`. If we don't, + * those weakrefs can reveal unreachable objects to Python-level code and that + * is not safe. Many objects are not usable after `tp_clear` has been called + * and could even cause crashes if accessed (see bpo-38006 and gh-91636 as + * example bugs). + * + * Weakrefs with callbacks always need to be cleared before executing the + * callback. That's because sometimes a callback will call the ref object, + * to check if the reference is actually dead (KeyedRef does this, for + * example). We want to indicate that it is dead, even though it is possible + * a finalizer might resurrect it. Clearing also prevents the callback from + * executing more than once. + * + * Since Python 2.3, all weakrefs to cyclic garbage have been cleared *before* + * calling finalizers. However, since tp_subclasses started being necessary + * to invalidate caches (e.g. by PyType_Modified), that clearing has created + * a bug. If the weakref to the subclass is cleared before a finalizer is + * called, the cache may not be correctly invalidated. That can lead to + * segfaults since the caches can refer to deallocated objects (GH-91636 + * is an example). Now, we delay the clear of weakrefs without callbacks + * until *after* finalizers have been executed. That means weakrefs without + * callbacks are still usable while finalizers are being executed. + * + * The weakrefs that are inside the unreachable set must also be cleared. + * The reason this is required is not immediately obvious. If the weakref + * refers to an object outside of the unreachable set, that object might go + * away when we start clearing objects. Normally, the object should also be + * part of the unreachable set but that's not true in the case of incomplete + * or missing `tp_traverse` methods. When that object goes away, the callback + * for weakref can be executed and that could reveal unreachable objects to + * Python-level code. See bpo-38006 as an example bug. */ static int -handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old, bool allow_callbacks) +handle_weakref_callbacks(PyGC_Head *unreachable, PyGC_Head *old) { PyGC_Head *gc; - PyObject *op; /* generally FROM_GC(gc) */ - PyWeakReference *wr; /* generally a cast of op */ PyGC_Head wrcb_to_call; /* weakrefs with callbacks to call */ PyGC_Head *next; int num_freed = 0; - if (allow_callbacks) { - gc_list_init(&wrcb_to_call); - } + gc_list_init(&wrcb_to_call); - /* Clear all weakrefs to the objects in unreachable. If such a weakref - * also has a callback, move it into `wrcb_to_call` if the callback - * needs to be invoked. Note that we cannot invoke any callbacks until - * all weakrefs to unreachable objects are cleared, lest the callback - * resurrect an unreachable object via a still-active weakref. We - * make another pass over wrcb_to_call, invoking callbacks, after this - * pass completes. + /* Find all weakrefs with callbacks and move into `wrcb_to_call` if the + * callback needs to be invoked. We make another pass over wrcb_to_call, + * invoking callbacks, after this pass completes. */ for (gc = GC_NEXT(unreachable); gc != unreachable; gc = next) { PyWeakReference **wrlist; - op = FROM_GC(gc); + PyObject *op = FROM_GC(gc); next = GC_NEXT(gc); - if (PyWeakref_Check(op)) { - /* A weakref inside the unreachable set must be cleared. If we - * allow its callback to execute inside delete_garbage(), it - * could expose objects that have tp_clear already called on - * them. Or, it could resurrect unreachable objects. One way - * this can happen is if some container objects do not implement - * tp_traverse. Then, wr_object can be outside the unreachable - * set but can be deallocated as a result of breaking the - * reference cycle. If we don't clear the weakref, the callback - * will run and potentially cause a crash. See bpo-38006 for - * one example. - */ - _PyWeakref_ClearRef((PyWeakReference *)op); - } - if (! _PyType_SUPPORTS_WEAKREFS(Py_TYPE(op))) { continue; } @@ -923,30 +928,29 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old, bool allow_callbacks) */ wrlist = _PyObject_GET_WEAKREFS_LISTPTR_FROM_OFFSET(op); - /* `op` may have some weakrefs. March over the list, clear - * all the weakrefs, and move the weakrefs with callbacks - * that must be called into wrcb_to_call. + /* `op` may have some weakrefs. March over the list and move the + * weakrefs with callbacks that must be called into wrcb_to_call. */ - for (wr = *wrlist; wr != NULL; wr = *wrlist) { - PyGC_Head *wrasgc; /* AS_GC(wr) */ - - /* _PyWeakref_ClearRef clears the weakref but leaves - * the callback pointer intact. Obscure: it also - * changes *wrlist. - */ - _PyObject_ASSERT((PyObject *)wr, wr->wr_object == op); - _PyWeakref_ClearRef(wr); - _PyObject_ASSERT((PyObject *)wr, wr->wr_object == Py_None); - - if (!allow_callbacks) { - continue; - } + PyWeakReference *next_wr; + for (PyWeakReference *wr = *wrlist; wr != NULL; wr = next_wr) { + // Get the next list element to get iterator progress if we omit + // clearing of the weakref (because _PyWeakref_ClearRef changes + // next pointer in the wrlist). + next_wr = wr->wr_next; if (wr->wr_callback == NULL) { /* no callback */ continue; } + // Clear the weakref. See the comments above this function for + // reasons why we need to clear weakrefs that have callbacks. + // Note that _PyWeakref_ClearRef clears the weakref but leaves the + // callback pointer intact. Obscure: it also changes *wrlist. + _PyObject_ASSERT((PyObject *)wr, wr->wr_object == op); + _PyWeakref_ClearRef(wr); + _PyObject_ASSERT((PyObject *)wr, wr->wr_object == Py_None); + /* Headache time. `op` is going away, and is weakly referenced by * `wr`, which has a callback. Should the callback be invoked? If wr * is also trash, no: @@ -962,10 +966,10 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old, bool allow_callbacks) * outside the current generation, CT may be reachable from the * callback. Then the callback could resurrect insane objects. * - * Since the callback is never needed and may be unsafe in this case, - * wr is simply left in the unreachable set. Note that because we - * already called _PyWeakref_ClearRef(wr), its callback will never - * trigger. + * Since the callback is never needed and may be unsafe in this + * case, wr is simply left in the unreachable set. Note that + * clear_weakrefs() will ensure its callback will not trigger + * inside delete_garbage(). * * OTOH, if wr isn't part of CT, we should invoke the callback: the * weakref outlived the trash. Note that since wr isn't CT in this @@ -976,8 +980,6 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old, bool allow_callbacks) * is moved to wrcb_to_call in this case. */ if (gc_is_collecting(AS_GC((PyObject *)wr))) { - /* it should already have been cleared above */ - _PyObject_ASSERT((PyObject*)wr, wr->wr_object == Py_None); continue; } @@ -987,17 +989,13 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old, bool allow_callbacks) Py_INCREF(wr); /* Move wr to wrcb_to_call, for the next pass. */ - wrasgc = AS_GC((PyObject *)wr); + PyGC_Head *wrasgc = AS_GC((PyObject *)wr); // wrasgc is reachable, but next isn't, so they can't be the same _PyObject_ASSERT((PyObject *)wr, wrasgc != next); gc_list_move(wrasgc, &wrcb_to_call); } } - if (!allow_callbacks) { - return 0; - } - /* Invoke the callbacks we decided to honor. It's safe to invoke them * because they can't reference unreachable objects. */ @@ -1007,9 +1005,9 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old, bool allow_callbacks) PyObject *callback; gc = (PyGC_Head*)wrcb_to_call._gc_next; - op = FROM_GC(gc); + PyObject *op = FROM_GC(gc); _PyObject_ASSERT(op, PyWeakref_Check(op)); - wr = (PyWeakReference *)op; + PyWeakReference *wr = (PyWeakReference *)op; callback = wr->wr_callback; _PyObject_ASSERT(op, callback != NULL); @@ -1048,6 +1046,56 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old, bool allow_callbacks) return num_freed; } +/* Clear all weakrefs to unreachable objects. When this returns, no object in + * `unreachable` is weakly referenced anymore. See the comments above + * handle_weakref_callbacks() for why these weakrefs need to be cleared. + */ +static void +clear_weakrefs(PyGC_Head *unreachable) +{ + PyGC_Head *gc; + PyGC_Head *next; + + for (gc = GC_NEXT(unreachable); gc != unreachable; gc = next) { + PyWeakReference **wrlist; + + PyObject *op = FROM_GC(gc); + next = GC_NEXT(gc); + + if (PyWeakref_Check(op)) { + /* A weakref inside the unreachable set is always cleared. See + * the comments above handle_weakref_callbacks() for why these + * must be cleared. + */ + _PyWeakref_ClearRef((PyWeakReference *)op); + } + + if (! _PyType_SUPPORTS_WEAKREFS(Py_TYPE(op))) { + continue; + } + + /* It supports weakrefs. Does it have any? + * + * This is never triggered for static types so we can avoid the + * (slightly) more costly _PyObject_GET_WEAKREFS_LISTPTR(). + */ + wrlist = _PyObject_GET_WEAKREFS_LISTPTR_FROM_OFFSET(op); + + /* `op` may have some weakrefs. March over the list, clear + * all the weakrefs. + */ + for (PyWeakReference *wr = *wrlist; wr != NULL; wr = *wrlist) { + /* _PyWeakref_ClearRef clears the weakref but leaves + * the callback pointer intact. Obscure: it also + * changes *wrlist. + */ + _PyObject_ASSERT((PyObject *)wr, wr->wr_object == op); + _PyWeakref_ClearRef(wr); + _PyObject_ASSERT((PyObject *)wr, wr->wr_object == Py_None); + } + } +} + static void debug_cycle(const char *msg, PyObject *op) { @@ -1739,8 +1787,8 @@ gc_collect_region(PyThreadState *tstate, } } - /* Clear weakrefs and invoke callbacks as necessary. */ - stats->collected += handle_weakrefs(&unreachable, to, true); + /* Invoke weakref callbacks as necessary. */ + stats->collected += handle_weakref_callbacks(&unreachable, to); gc_list_validate_space(to, gcstate->visited_space); validate_list(to, collecting_clear_unreachable_clear); validate_list(&unreachable, collecting_set_unreachable_clear); @@ -1754,13 +1802,10 @@ gc_collect_region(PyThreadState *tstate, gc_list_init(&final_unreachable); handle_resurrected_objects(&unreachable, &final_unreachable, to); - /* Clear weakrefs to objects in the unreachable set. No Python-level - * code must be allowed to access those unreachable objects. During - * delete_garbage(), finalizers outside the unreachable set might run - * and create new weakrefs. If those weakrefs were not cleared, they - * could reveal unreachable objects. Callbacks are not executed. + /* Clear weakrefs to objects in the unreachable set. See the comments + * above handle_weakref_callbacks() for details. */ - handle_weakrefs(&final_unreachable, NULL, false); + clear_weakrefs(&final_unreachable); /* Call tp_clear on objects in the final_unreachable set. This will cause * the reference cycles to be broken. It may also cause some objects diff --git a/Python/gc_free_threading.c b/Python/gc_free_threading.c index 0b0ddf227e4952..842aa3401548c9 100644 --- a/Python/gc_free_threading.c +++ b/Python/gc_free_threading.c @@ -1492,22 +1492,49 @@ move_legacy_finalizer_reachable(struct collection_state *state) return 0; } -// Clear all weakrefs to unreachable objects. Weakrefs with callbacks are -// optionally enqueued in `wrcb_to_call`, but not invoked yet. +// Weakrefs with callbacks are enqueued in `wrcb_to_call`, but not invoked +// yet. Note that it's possible for such weakrefs to be outside the +// unreachable set -- indeed, those are precisely the weakrefs whose callbacks +// must be invoked. See gc_weakref.txt for overview & some details. +// +// The clearing of weakrefs is suble and must be done carefully, as there was +// previous bugs related to this. First, weakrefs to the unreachable set of +// objects must be cleared before we start calling `tp_clear`. If we don't, +// those weakrefs can reveal unreachable objects to Python-level code and that +// is not safe. Many objects are not usable after `tp_clear` has been called +// and could even cause crashes if accessed (see bpo-38006 and gh-91636 as +// example bugs). +// +// Weakrefs with callbacks always need to be cleared before executing the +// callback. That's because sometimes a callback will call the ref object, +// to check if the reference is actually dead (KeyedRef does this, for +// example). We want to indicate that it is dead, even though it is possible +// a finalizer might resurrect it. Clearing also prevents the callback from +// executing more than once. +// +// Since Python 2.3, all weakrefs to cyclic garbage have been cleared *before* +// calling finalizers. However, since tp_subclasses started being necessary +// to invalidate caches (e.g. by PyType_Modified), that clearing has created +// a bug. If the weakref to the subclass is cleared before a finalizer is +// called, the cache may not be correctly invalidated. That can lead to +// segfaults since the caches can refer to deallocated objects (GH-91636 +// is an example). Now, we delay the clear of weakrefs without callbacks +// until *after* finalizers have been executed. That means weakrefs without +// callbacks are still usable while finalizers are being executed. +// +// The weakrefs that are inside the unreachable set must also be cleared. +// The reason this is required is not immediately obvious. If the weakref +// refers to an object outside of the unreachable set, that object might go +// away when we start clearing objects. Normally, the object should also be +// part of the unreachable set but that's not true in the case of incomplete +// or missing `tp_traverse` methods. When that object goes away, the callback +// for weakref can be executed and that could reveal unreachable objects to +// Python-level code. See bpo-38006 as an example bug. static void -clear_weakrefs(struct collection_state *state, bool enqueue_callbacks) +find_weakref_callbacks(struct collection_state *state) { PyObject *op; WORKSTACK_FOR_EACH(&state->unreachable, op) { - if (PyWeakref_Check(op)) { - // Clear weakrefs that are themselves unreachable to ensure their - // callbacks will not be executed later from a `tp_clear()` - // inside delete_garbage(). That would be unsafe: it could - // resurrect a dead object or access a an already cleared object. - // See bpo-38006 for one example. - _PyWeakref_ClearRef((PyWeakReference *)op); - } - if (!_PyType_SUPPORTS_WEAKREFS(Py_TYPE(op))) { continue; } @@ -1519,16 +1546,21 @@ clear_weakrefs(struct collection_state *state, bool enqueue_callbacks) // `op` may have some weakrefs. March over the list, clear // all the weakrefs, and enqueue the weakrefs with callbacks // that must be called into wrcb_to_call. - for (PyWeakReference *wr = *wrlist; wr != NULL; wr = *wrlist) { - // _PyWeakref_ClearRef clears the weakref but leaves - // the callback pointer intact. Obscure: it also - // changes *wrlist. - _PyObject_ASSERT((PyObject *)wr, wr->wr_object == op); - _PyWeakref_ClearRef(wr); - _PyObject_ASSERT((PyObject *)wr, wr->wr_object == Py_None); - - if (!enqueue_callbacks) { - continue; + PyWeakReference *next_wr; + for (PyWeakReference *wr = *wrlist; wr != NULL; wr = next_wr) { + // Get the next list element to get iterator progress if we omit + // clearing of the weakref (because _PyWeakref_ClearRef changes + // next pointer in the wrlist). + next_wr = wr->wr_next; + + // Weakrefs with callbacks always need to be cleared before + // executing the callback. + if (wr->wr_callback != NULL) { + // _PyWeakref_ClearRef clears the weakref but leaves the + // callback pointer intact. Obscure: it also changes *wrlist. + _PyObject_ASSERT((PyObject *)wr, wr->wr_object == op); + _PyWeakref_ClearRef(wr); + _PyObject_ASSERT((PyObject *)wr, wr->wr_object == Py_None); } // We do not invoke callbacks for weakrefs that are themselves @@ -1550,6 +1582,39 @@ clear_weakrefs(struct collection_state *state, bool enqueue_callbacks) } } +// Clear weakrefs to objects in the unreachable set. See comments +// above find_weakref_callbacks() for why this clearing is required. +static void +clear_weakrefs(struct collection_state *state) +{ + PyObject *op; + WORKSTACK_FOR_EACH(&state->unreachable, op) { + if (PyWeakref_Check(op)) { + // Clear weakrefs that are themselves unreachable. + _PyWeakref_ClearRef((PyWeakReference *)op); + } + + if (!_PyType_SUPPORTS_WEAKREFS(Py_TYPE(op))) { + continue; + } + + // NOTE: This is never triggered for static types so we can avoid the + // (slightly) more costly _PyObject_GET_WEAKREFS_LISTPTR(). + PyWeakReference **wrlist = _PyObject_GET_WEAKREFS_LISTPTR_FROM_OFFSET(op); + + // `op` may have some weakrefs. March over the list, clear + // all the weakrefs. + for (PyWeakReference *wr = *wrlist; wr != NULL; wr = *wrlist) { + // _PyWeakref_ClearRef clears the weakref but leaves + // the callback pointer intact. Obscure: it also + // changes *wrlist. + _PyObject_ASSERT((PyObject *)wr, wr->wr_object == op); + _PyWeakref_ClearRef(wr); + _PyObject_ASSERT((PyObject *)wr, wr->wr_object == Py_None); + } + } +} + static void call_weakref_callbacks(struct collection_state *state) { @@ -2222,8 +2287,8 @@ gc_collect_internal(PyInterpreterState *interp, struct collection_state *state, // Record the number of live GC objects interp->gc.long_lived_total = state->long_lived_total; - // Clear weakrefs and enqueue callbacks (but do not call them). - clear_weakrefs(state, true); + // Find weakref callbacks we will honor (but do not call them). + find_weakref_callbacks(state); _PyEval_StartTheWorld(interp); // Deallocate any object from the refcount merge step @@ -2240,12 +2305,7 @@ gc_collect_internal(PyInterpreterState *interp, struct collection_state *state, // Clear free lists in all threads _PyGC_ClearAllFreeLists(interp); if (err == 0) { - // Clear weakrefs to objects in the unreachable set. No Python-level - // code must be allowed to access those unreachable objects. During - // delete_garbage(), finalizers outside the unreachable set might - // run and create new weakrefs. If those weakrefs were not cleared, - // they could reveal unreachable objects. - clear_weakrefs(state, false); + clear_weakrefs(state); } _PyEval_StartTheWorld(interp); From 37b5a0d671685645db8f1d5ecfa1260587f1fc28 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Fri, 8 Aug 2025 02:43:18 +0300 Subject: [PATCH 75/87] gh-130102: drop "require numeric arguments" from pow() docs (#137456) Co-authored-by: Senthil Kumaran --- Doc/library/functions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 80bd1275973f8d..857b40f3ba155c 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1577,7 +1577,7 @@ are always available. They are listed here in alphabetical order. ``pow(base, exp) % mod``). The two-argument form ``pow(base, exp)`` is equivalent to using the power operator: ``base**exp``. - The arguments must have numeric types. With mixed operand types, the + When arguments are builtin numeric types with mixed operand types, the coercion rules for binary arithmetic operators apply. For :class:`int` operands, the result has the same type as the operands (after coercion) unless the second argument is negative; in that case, all arguments are From 25518f51dc9fd3ffe4f8ae5d53baa3728936be2b Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Thu, 7 Aug 2025 17:45:33 -0700 Subject: [PATCH 76/87] GH-135552: Add tests to check weakref clearing (GH-136304) These are tests to ensure behaviour introduced by GH-136189 is working as expected. Co-authored-by: Mikhail Borisov <43937008+fxeqxmulfx@users.noreply.github.com> Co-authored-by: Kumar Aditya Co-authored-by: Neil Schemenauer --- Lib/test/test_gc.py | 31 +++++++++++++++++++++++++++++++ Lib/test/test_weakref.py | 26 ++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py index 3ec211531c4c70..7c9adf3049a131 100644 --- a/Lib/test/test_gc.py +++ b/Lib/test/test_gc.py @@ -1155,6 +1155,37 @@ def test_something(self): """) assert_python_ok("-c", source) + def test_do_not_cleanup_type_subclasses_before_finalization(self): + # See https://github.com/python/cpython/issues/135552 + # If we cleanup weakrefs for tp_subclasses before calling + # the finalizer (__del__) then the line `fail = BaseNode.next.next` + # should fail because we are trying to access a subclass + # attribute. But subclass type cache was not properly invalidated. + code = """ + class BaseNode: + def __del__(self): + BaseNode.next = BaseNode.next.next + fail = BaseNode.next.next + + class Node(BaseNode): + pass + + BaseNode.next = Node() + BaseNode.next.next = Node() + """ + # this test checks garbage collection while interp + # finalization + assert_python_ok("-c", textwrap.dedent(code)) + + code_inside_function = textwrap.dedent(F""" + def test(): + {textwrap.indent(code, ' ')} + + test() + """) + # this test checks regular garbage collection + assert_python_ok("-c", code_inside_function) + class IncrementalGCTests(unittest.TestCase): @unittest.skipIf(_testinternalcapi is None, "requires _testinternalcapi") diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 4c7c900eb56ae1..47f6b46061ac30 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -1044,6 +1044,32 @@ def callback(obj): stderr = res.err.decode("ascii", "backslashreplace") self.assertNotRegex(stderr, "_Py_Dealloc: Deallocator of type 'TestObj'") + def test_clearing_weakrefs_in_gc(self): + # This test checks that when finalizers are called: + # 1. weakrefs with callbacks have been cleared + # 2. weakrefs without callbacks have not been cleared + errors = [] + def test(): + class Class: + def __init__(self): + self._self = self + self.wr1 = weakref.ref(Class, lambda x: None) + self.wr2 = weakref.ref(Class) + + def __del__(self): + # we can't use assert* here, because gc will swallow + # exceptions + if self.wr1() is not None: + errors.append("weakref with callback as cleared") + if self.wr2() is not Class: + errors.append("weakref without callback was cleared") + + Class() + + test() + gc.collect() + self.assertEqual(errors, []) + class SubclassableWeakrefTestCase(TestBase): From b4a1974aa2af63c4754846af9abfb436372e19c7 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Date: Fri, 8 Aug 2025 03:32:20 +0200 Subject: [PATCH 77/87] GH-136155: Fail the EPUB check on fatal errors (#137351) --- .github/workflows/reusable-docs.yml | 39 ++++++++++++++++++++--------- Doc/tools/check-epub.py | 36 +++++++++++++++----------- 2 files changed, 48 insertions(+), 27 deletions(-) diff --git a/.github/workflows/reusable-docs.yml b/.github/workflows/reusable-docs.yml index 7b9dc4818577eb..65154aae4c41d5 100644 --- a/.github/workflows/reusable-docs.yml +++ b/.github/workflows/reusable-docs.yml @@ -75,18 +75,6 @@ jobs: --fail-if-regression \ --fail-if-improved \ --fail-if-new-news-nit - - name: 'Build EPUB documentation' - continue-on-error: true - run: | - set -Eeuo pipefail - make -C Doc/ PYTHON=../python SPHINXOPTS="--quiet" epub - pip install epubcheck - epubcheck Doc/build/epub/Python.epub &> Doc/epubcheck.txt - - name: 'Check for fatal errors in EPUB' - if: github.event_name == 'pull_request' - continue-on-error: true # until gh-136155 is fixed - run: | - python Doc/tools/check-epub.py # Run "doctest" on HEAD as new syntax doesn't exist in the latest stable release doctest: @@ -114,3 +102,30 @@ jobs: # Use "xvfb-run" since some doctest tests open GUI windows - name: 'Run documentation doctest' run: xvfb-run make -C Doc/ PYTHON=../python SPHINXERRORHANDLING="--fail-on-warning" doctest + + check-epub: + name: 'Check EPUB' + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - name: 'Set up Python' + uses: actions/setup-python@v5 + with: + python-version: '3' + cache: 'pip' + cache-dependency-path: 'Doc/requirements.txt' + - name: 'Install build dependencies' + run: | + make -C Doc/ venv + python -m pip install epubcheck + - name: 'Build EPUB documentation' + run: make -C Doc/ PYTHON=../python epub + - name: 'Run epubcheck' + continue-on-error: true + run: epubcheck Doc/build/epub/Python.epub &> Doc/epubcheck.txt + - run: cat Doc/epubcheck.txt + - name: 'Check for fatal errors in EPUB' + run: python Doc/tools/check-epub.py diff --git a/Doc/tools/check-epub.py b/Doc/tools/check-epub.py index 693dc239c8ad58..6a10096c117542 100644 --- a/Doc/tools/check-epub.py +++ b/Doc/tools/check-epub.py @@ -1,24 +1,30 @@ -import sys from pathlib import Path +CPYTHON_ROOT = Path( + __file__, # cpython/Doc/tools/check-epub.py + '..', # cpython/Doc/tools + '..', # cpython/Doc + '..', # cpython +).resolve() +EPUBCHECK_PATH = CPYTHON_ROOT / 'Doc' / 'epubcheck.txt' -def main() -> int: - wrong_directory_msg = "Must run this script from the repo root" - if not Path("Doc").exists() or not Path("Doc").is_dir(): - raise RuntimeError(wrong_directory_msg) - - with Path("Doc/epubcheck.txt").open(encoding="UTF-8") as f: - messages = [message.split(" - ") for message in f.read().splitlines()] - fatal_errors = [message for message in messages if message[0] == "FATAL"] +def main() -> int: + lines = EPUBCHECK_PATH.read_text(encoding='utf-8').splitlines() + fatal_errors = [line for line in lines if line.startswith('FATAL')] if fatal_errors: - print("\nError: must not contain fatal errors:\n") - for error in fatal_errors: - print(" - ".join(error)) + err_count = len(fatal_errors) + s = 's' * (err_count != 1) + print() + print(f'Error: epubcheck reported {err_count} fatal error{s}:') + print() + print('\n'.join(fatal_errors)) + return 1 - return len(fatal_errors) + print('Success: no fatal errors found.') + return 0 -if __name__ == "__main__": - sys.exit(main()) +if __name__ == '__main__': + raise SystemExit(main()) From f06fcb7f4b430993ece308e4e11cba939a676c69 Mon Sep 17 00:00:00 2001 From: Adorilson Bezerra Date: Fri, 8 Aug 2025 03:04:59 +0100 Subject: [PATCH 78/87] [Doc] Remove unnecessary quotes from typing module (#137207) * gh-106320: Remove private _PyInterpreterState functions (#106335) Remove private _PyThreadState and _PyInterpreterState C API functions: move them to the internal C API (pycore_pystate.h and pycore_interp.h). Don't export most of these functions anymore, but still export functions used by tests. Remove _PyThreadState_Prealloc() and _PyThreadState_Init() from the C API, but keep it in the stable API. * Doc: minor change * Revert "Doc: minor change" This reverts commit ebfa0937c2caf0110ab1540f14956d56fe925092. * [Doc] Remove unnecessary quotes from typing (See Also section) * [Doc] Remove unnecessary quotes from typing --------- Co-authored-by: Victor Stinner --- Doc/library/typing.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 16013763dae210..9dbac8ce75d489 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -45,15 +45,15 @@ provides backports of these new features to older versions of Python. .. seealso:: - `"Typing cheat sheet" `_ + `Typing cheat sheet `_ A quick overview of type hints (hosted at the mypy docs) - "Type System Reference" section of `the mypy docs `_ + Type System Reference section of `the mypy docs `_ The Python typing system is standardised via PEPs, so this reference should broadly apply to most Python type checkers. (Some parts may still be specific to mypy.) - `"Static Typing with Python" `_ + `Static Typing with Python `_ Type-checker-agnostic documentation written by the community detailing type system features, useful typing related tools and typing best practices. @@ -64,7 +64,7 @@ Specification for the Python Type System ======================================== The canonical, up-to-date specification of the Python type system can be -found at `"Specification for the Python type system" `_. +found at `Specification for the Python type system `_. .. _type-aliases: @@ -2573,7 +2573,7 @@ types. at runtime as soon as the class has been created. Monkey-patching attributes onto a runtime-checkable protocol will still work, but will have no impact on :func:`isinstance` checks comparing objects to the - protocol. See :ref:`"What's new in Python 3.12" ` + protocol. See :ref:`What's new in Python 3.12 ` for more details. From fb1cb00030c706366dfd1a457dd5de324d5619ea Mon Sep 17 00:00:00 2001 From: sobolevn Date: Fri, 8 Aug 2025 10:14:51 +0300 Subject: [PATCH 79/87] Bump mypy to 1.17.1 (#137542) --- Tools/requirements-dev.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tools/requirements-dev.txt b/Tools/requirements-dev.txt index 0beaab2d3e7157..73236767374378 100644 --- a/Tools/requirements-dev.txt +++ b/Tools/requirements-dev.txt @@ -1,7 +1,7 @@ # Requirements file for external linters and checks we run on # Tools/clinic, Tools/cases_generator/, and Tools/peg_generator/ in CI -mypy==1.16.1 +mypy==1.17.1 # needed for peg_generator: -types-psutil==7.0.0.20250601 -types-setuptools==80.9.0.20250529 +types-psutil==7.0.0.20250801 +types-setuptools==80.9.0.20250801 From 9743d069bd53e9d3a8f09df899ec1c906a79da24 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev Date: Fri, 8 Aug 2025 13:36:42 +0300 Subject: [PATCH 80/87] gh-128813: deprecate cval field of the PyComplexObject struct (#137271) Co-authored-by: Petr Viktorin Co-authored-by: Victor Stinner --- Doc/c-api/complex.rst | 10 ++++++++++ Doc/deprecations/c-api-pending-removal-in-3.20.rst | 7 +++++++ Doc/deprecations/index.rst | 2 ++ Doc/whatsnew/3.15.rst | 7 +++++++ .../2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst | 5 +++-- 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 Doc/deprecations/c-api-pending-removal-in-3.20.rst diff --git a/Doc/c-api/complex.rst b/Doc/c-api/complex.rst index 34488848f87cd1..a1fd27ad0acd2e 100644 --- a/Doc/c-api/complex.rst +++ b/Doc/c-api/complex.rst @@ -118,6 +118,16 @@ Complex Numbers as Python Objects This subtype of :c:type:`PyObject` represents a Python complex number object. + .. c:member:: Py_complex cval + + The complex number value, using the C :c:type:`Py_complex` representation. + + .. deprecated-removed:: next 3.20 + Use :c:func:`PyComplex_AsCComplex` and + :c:func:`PyComplex_FromCComplex` to convert a + Python complex number to/from the C :c:type:`Py_complex` + representation. + .. c:var:: PyTypeObject PyComplex_Type diff --git a/Doc/deprecations/c-api-pending-removal-in-3.20.rst b/Doc/deprecations/c-api-pending-removal-in-3.20.rst new file mode 100644 index 00000000000000..82f975d6ed4020 --- /dev/null +++ b/Doc/deprecations/c-api-pending-removal-in-3.20.rst @@ -0,0 +1,7 @@ +Pending removal in Python 3.20 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* The ``cval`` field in :c:type:`PyComplexObject` (:gh:`128813`). + Use :c:func:`PyComplex_AsCComplex` and :c:func:`PyComplex_FromCComplex` + to convert a Python complex number to/from the C :c:type:`Py_complex` + representation. diff --git a/Doc/deprecations/index.rst b/Doc/deprecations/index.rst index d064f2bec42c22..c6e05c176b2aa1 100644 --- a/Doc/deprecations/index.rst +++ b/Doc/deprecations/index.rst @@ -18,4 +18,6 @@ C API deprecations .. include:: c-api-pending-removal-in-3.18.rst +.. include:: c-api-pending-removal-in-3.20.rst + .. include:: c-api-pending-removal-in-future.rst diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 89644a509a0bb4..93f56eed857068 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -570,6 +570,13 @@ Deprecated C APIs signed integer type of the same size is now deprecated. (Contributed by Serhiy Storchaka in :gh:`132629`.) +* Deprecate :c:member:`~PyComplexObject.cval` field of the the + :c:type:`PyComplexObject` type. + Use :c:func:`PyComplex_AsCComplex` and :c:func:`PyComplex_FromCComplex` + to convert a Python complex number to/from the C :c:type:`Py_complex` + representation. + (Contributed by Sergey B Kirpichev in :gh:`128813`.) + * Functions :c:func:`_Py_c_sum`, :c:func:`_Py_c_diff`, :c:func:`_Py_c_neg`, :c:func:`_Py_c_prod`, :c:func:`_Py_c_quot`, :c:func:`_Py_c_pow` and :c:func:`_Py_c_abs` are :term:`soft deprecated`. diff --git a/Misc/NEWS.d/next/C_API/2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst b/Misc/NEWS.d/next/C_API/2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst index 625989b33704a7..caa8f3e9c985cd 100644 --- a/Misc/NEWS.d/next/C_API/2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst +++ b/Misc/NEWS.d/next/C_API/2025-07-31-04-30-42.gh-issue-128813.opL-Pv.rst @@ -1,4 +1,5 @@ Functions :c:func:`_Py_c_sum`, :c:func:`_Py_c_diff`, :c:func:`_Py_c_neg`, -:c:func:`_Py_c_prod`, :c:func:`_Py_c_quot`, :c:func:`_Py_c_pow` and -previously undocumented :c:func:`_Py_c_abs` are :term:`soft deprecated`. +:c:func:`_Py_c_prod`, :c:func:`_Py_c_quot`, :c:func:`_Py_c_pow` and previously +undocumented :c:func:`_Py_c_abs` are :term:`soft deprecated`. Deprecate also +:c:member:`~PyComplexObject.cval` field of the :c:type:`PyComplexObject` type. Patch by Sergey B Kirpichev. From 64ee1babfb971ddbc00fd8711cccebfbddf6e4ee Mon Sep 17 00:00:00 2001 From: Tom Forbes Date: Fri, 8 Aug 2025 15:00:18 +0100 Subject: [PATCH 81/87] Replace "ordered arguments" with "positional arguments" in `unittest.mock` documentation (GH-137552) --- Doc/library/unittest.mock.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst index 091562cc9aef98..91f90a0726aa93 100644 --- a/Doc/library/unittest.mock.rst +++ b/Doc/library/unittest.mock.rst @@ -639,7 +639,7 @@ the *new_callable* argument to :func:`patch`. This is either ``None`` (if the mock hasn't been called), or the arguments that the mock was last called with. This will be in the form of a tuple: the first member, which can also be accessed through - the ``args`` property, is any ordered arguments the mock was + the ``args`` property, is any positional arguments the mock was called with (or an empty tuple) and the second member, which can also be accessed through the ``kwargs`` property, is any keyword arguments (or an empty dictionary). From 34d7351ac770ac49875fc39396b2a97828ba05ad Mon Sep 17 00:00:00 2001 From: Douglas Thor Date: Fri, 8 Aug 2025 08:34:02 -0700 Subject: [PATCH 82/87] gh-133722: Add Difflib theme to `_colorize` and 'color' option to `difflib.unified_diff` (#133725) --- Doc/library/difflib.rst | 10 +++++++- Doc/whatsnew/3.15.rst | 8 +++++++ Lib/_colorize.py | 23 ++++++++++++++---- Lib/difflib.py | 24 +++++++++++++------ Lib/test/test_difflib.py | 18 +++++++++++++- Misc/ACKS | 1 + ...-05-08-20-03-20.gh-issue-133722.1-B82a.rst | 2 ++ 7 files changed, 73 insertions(+), 13 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-05-08-20-03-20.gh-issue-133722.1-B82a.rst diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index ec8b575a1ba999..c55ecac340972b 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -278,7 +278,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. emu -.. function:: unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n') +.. function:: unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n', *, color=False) Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` generating the delta lines) in unified diff format. @@ -297,6 +297,10 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. For inputs that do not have trailing newlines, set the *lineterm* argument to ``""`` so that the output will be uniformly newline free. + Set *color* to ``True`` to enable output in color, similar to + :program:`git diff --color`. Even if enabled, it can be + :ref:`controlled using environment variables `. + The unified diff format normally has a header for filenames and modification times. Any or all of these may be specified using strings for *fromfile*, *tofile*, *fromfiledate*, and *tofiledate*. The modification times are normally @@ -319,6 +323,10 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. See :ref:`difflib-interface` for a more detailed example. + .. versionchanged:: next + Added the *color* parameter. + + .. function:: diff_bytes(dfunc, a, b, fromfile=b'', tofile=b'', fromfiledate=b'', tofiledate=b'', n=3, lineterm=b'\n') Compare *a* and *b* (lists of bytes objects) using *dfunc*; yield a diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 93f56eed857068..9f01b52f1aff3b 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -229,6 +229,14 @@ dbm difflib ------- + .. _whatsnew315-color-difflib: + +* Introduced the optional *color* parameter to :func:`difflib.unified_diff`, + enabling color output similar to :program:`git diff`. + This can be controlled by :ref:`environment variables + `. + (Contributed by Douglas Thor in :gh:`133725`.) + * Improved the styling of HTML diff pages generated by the :class:`difflib.HtmlDiff` class, and migrated the output to the HTML5 standard. (Contributed by Jiahao Li in :gh:`134580`.) diff --git a/Lib/_colorize.py b/Lib/_colorize.py index 4a310a402358b6..325efed274aed7 100644 --- a/Lib/_colorize.py +++ b/Lib/_colorize.py @@ -172,7 +172,18 @@ class Argparse(ThemeSection): reset: str = ANSIColors.RESET -@dataclass(frozen=True) +@dataclass(frozen=True, kw_only=True) +class Difflib(ThemeSection): + """A 'git diff'-like theme for `difflib.unified_diff`.""" + added: str = ANSIColors.GREEN + context: str = ANSIColors.RESET # context lines + header: str = ANSIColors.BOLD # eg "---" and "+++" lines + hunk: str = ANSIColors.CYAN # the "@@" lines + removed: str = ANSIColors.RED + reset: str = ANSIColors.RESET + + +@dataclass(frozen=True, kw_only=True) class Syntax(ThemeSection): prompt: str = ANSIColors.BOLD_MAGENTA keyword: str = ANSIColors.BOLD_BLUE @@ -186,7 +197,7 @@ class Syntax(ThemeSection): reset: str = ANSIColors.RESET -@dataclass(frozen=True) +@dataclass(frozen=True, kw_only=True) class Traceback(ThemeSection): type: str = ANSIColors.BOLD_MAGENTA message: str = ANSIColors.MAGENTA @@ -198,7 +209,7 @@ class Traceback(ThemeSection): reset: str = ANSIColors.RESET -@dataclass(frozen=True) +@dataclass(frozen=True, kw_only=True) class Unittest(ThemeSection): passed: str = ANSIColors.GREEN warn: str = ANSIColors.YELLOW @@ -207,7 +218,7 @@ class Unittest(ThemeSection): reset: str = ANSIColors.RESET -@dataclass(frozen=True) +@dataclass(frozen=True, kw_only=True) class Theme: """A suite of themes for all sections of Python. @@ -215,6 +226,7 @@ class Theme: below. """ argparse: Argparse = field(default_factory=Argparse) + difflib: Difflib = field(default_factory=Difflib) syntax: Syntax = field(default_factory=Syntax) traceback: Traceback = field(default_factory=Traceback) unittest: Unittest = field(default_factory=Unittest) @@ -223,6 +235,7 @@ def copy_with( self, *, argparse: Argparse | None = None, + difflib: Difflib | None = None, syntax: Syntax | None = None, traceback: Traceback | None = None, unittest: Unittest | None = None, @@ -234,6 +247,7 @@ def copy_with( """ return type(self)( argparse=argparse or self.argparse, + difflib=difflib or self.difflib, syntax=syntax or self.syntax, traceback=traceback or self.traceback, unittest=unittest or self.unittest, @@ -249,6 +263,7 @@ def no_colors(cls) -> Self: """ return cls( argparse=Argparse.no_colors(), + difflib=Difflib.no_colors(), syntax=Syntax.no_colors(), traceback=Traceback.no_colors(), unittest=Unittest.no_colors(), diff --git a/Lib/difflib.py b/Lib/difflib.py index 487936dbf47cdc..fedc85009aa03b 100644 --- a/Lib/difflib.py +++ b/Lib/difflib.py @@ -30,6 +30,7 @@ 'Differ','IS_CHARACTER_JUNK', 'IS_LINE_JUNK', 'context_diff', 'unified_diff', 'diff_bytes', 'HtmlDiff', 'Match'] +from _colorize import can_colorize, get_theme from heapq import nlargest as _nlargest from collections import namedtuple as _namedtuple from types import GenericAlias @@ -1094,7 +1095,7 @@ def _format_range_unified(start, stop): return '{},{}'.format(beginning, length) def unified_diff(a, b, fromfile='', tofile='', fromfiledate='', - tofiledate='', n=3, lineterm='\n'): + tofiledate='', n=3, lineterm='\n', *, color=False): r""" Compare two sequences of lines; generate the delta as a unified diff. @@ -1111,6 +1112,10 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='', For inputs that do not have trailing newlines, set the lineterm argument to "" so that the output will be uniformly newline free. + Set 'color' to True to enable output in color, similar to + 'git diff --color'. Even if enabled, it can be + controlled using environment variables such as 'NO_COLOR'. + The unidiff format normally has a header for filenames and modification times. Any or all of these may be specified using strings for 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'. @@ -1134,6 +1139,11 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='', four """ + if color and can_colorize(): + t = get_theme(force_color=True).difflib + else: + t = get_theme(force_no_color=True).difflib + _check_types(a, b, fromfile, tofile, fromfiledate, tofiledate, lineterm) started = False for group in SequenceMatcher(None,a,b).get_grouped_opcodes(n): @@ -1141,25 +1151,25 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='', started = True fromdate = '\t{}'.format(fromfiledate) if fromfiledate else '' todate = '\t{}'.format(tofiledate) if tofiledate else '' - yield '--- {}{}{}'.format(fromfile, fromdate, lineterm) - yield '+++ {}{}{}'.format(tofile, todate, lineterm) + yield f'{t.header}--- {fromfile}{fromdate}{lineterm}{t.reset}' + yield f'{t.header}+++ {tofile}{todate}{lineterm}{t.reset}' first, last = group[0], group[-1] file1_range = _format_range_unified(first[1], last[2]) file2_range = _format_range_unified(first[3], last[4]) - yield '@@ -{} +{} @@{}'.format(file1_range, file2_range, lineterm) + yield f'{t.hunk}@@ -{file1_range} +{file2_range} @@{lineterm}{t.reset}' for tag, i1, i2, j1, j2 in group: if tag == 'equal': for line in a[i1:i2]: - yield ' ' + line + yield f'{t.context} {line}{t.reset}' continue if tag in {'replace', 'delete'}: for line in a[i1:i2]: - yield '-' + line + yield f'{t.removed}-{line}{t.reset}' if tag in {'replace', 'insert'}: for line in b[j1:j2]: - yield '+' + line + yield f'{t.added}+{line}{t.reset}' ######################################################################## diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py index 6ac584a08d1e86..0eab3f523dc5fe 100644 --- a/Lib/test/test_difflib.py +++ b/Lib/test/test_difflib.py @@ -1,5 +1,5 @@ import difflib -from test.support import findfile +from test.support import findfile, force_colorized import unittest import doctest import sys @@ -355,6 +355,22 @@ def test_range_format_context(self): self.assertEqual(fmt(3,6), '4,6') self.assertEqual(fmt(0,0), '0') + @force_colorized + def test_unified_diff_colored_output(self): + args = [['one', 'three'], ['two', 'three'], 'Original', 'Current', + '2005-01-26 23:30:50', '2010-04-02 10:20:52'] + actual = list(difflib.unified_diff(*args, lineterm='', color=True)) + + expect = [ + "\033[1m--- Original\t2005-01-26 23:30:50\033[0m", + "\033[1m+++ Current\t2010-04-02 10:20:52\033[0m", + "\033[36m@@ -1,2 +1,2 @@\033[0m", + "\033[31m-one\033[0m", + "\033[32m+two\033[0m", + "\033[0m three\033[0m", + ] + self.assertEqual(expect, actual) + class TestBytes(unittest.TestCase): # don't really care about the content of the output, just the fact diff --git a/Misc/ACKS b/Misc/ACKS index 745f472474cd9d..dc28ccf8f57eda 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1902,6 +1902,7 @@ Nicolas M. Thiéry James Thomas Reuben Thomas Robin Thomas +Douglas Thor Brian Thorne Christopher Thorne Stephen Thorne diff --git a/Misc/NEWS.d/next/Library/2025-05-08-20-03-20.gh-issue-133722.1-B82a.rst b/Misc/NEWS.d/next/Library/2025-05-08-20-03-20.gh-issue-133722.1-B82a.rst new file mode 100644 index 00000000000000..86f244412498c4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-05-08-20-03-20.gh-issue-133722.1-B82a.rst @@ -0,0 +1,2 @@ +Added a *color* option to :func:`difflib.unified_diff` that colors output +similar to :program:`git diff`. From d7dbde895884d58e3da7ed4107fd33171afad7cb Mon Sep 17 00:00:00 2001 From: Nick Burns Date: Fri, 8 Aug 2025 12:07:15 -0700 Subject: [PATCH 83/87] gh-92936: allow double quote in cookie values (#113663) * allow double quote in cookie values * Update Lib/test/test_http_cookies.py Co-authored-by: Senthil Kumaran --- Lib/http/cookies.py | 2 +- Lib/test/test_http_cookies.py | 23 +++++++++++++++++++ ...5-08-08-21-20-14.gh-issue-92936.rOgG1S.rst | 2 ++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2025-08-08-21-20-14.gh-issue-92936.rOgG1S.rst diff --git a/Lib/http/cookies.py b/Lib/http/cookies.py index 694b1b09a0567c..74349bb63d66e2 100644 --- a/Lib/http/cookies.py +++ b/Lib/http/cookies.py @@ -426,7 +426,7 @@ def OutputString(self, attrs=None): ( # Optional group: there may not be a value. \s*=\s* # Equal Sign (?P # Start of group 'val' - "(?:[^\\"]|\\.)*" # Any double-quoted string + "(?:\\"|.)*?" # Any double-quoted string | # or # Special case for "expires" attr (\w{3,6}day|\w{3}),\s # Day of the week or abbreviated day diff --git a/Lib/test/test_http_cookies.py b/Lib/test/test_http_cookies.py index 2fbc142de2fd34..c2ed30831b2e0e 100644 --- a/Lib/test/test_http_cookies.py +++ b/Lib/test/test_http_cookies.py @@ -48,6 +48,29 @@ def test_basic(self): 'Set-Cookie: d=r', 'Set-Cookie: f=h' )) + }, + + # gh-92936: allow double quote in cookie values + { + 'data': 'cookie="{"key": "value"}"', + 'dict': {'cookie': '{"key": "value"}'}, + 'repr': "", + 'output': 'Set-Cookie: cookie="{"key": "value"}"', + }, + { + 'data': 'key="some value; surrounded by quotes"', + 'dict': {'key': 'some value; surrounded by quotes'}, + 'repr': "", + 'output': 'Set-Cookie: key="some value; surrounded by quotes"', + }, + { + 'data': 'session="user123"; preferences="{"theme": "dark"}"', + 'dict': {'session': 'user123', 'preferences': '{"theme": "dark"}'}, + 'repr': "", + 'output': '\n'.join(( + 'Set-Cookie: preferences="{"theme": "dark"}"', + 'Set-Cookie: session="user123"', + )) } ] diff --git a/Misc/NEWS.d/next/Library/2025-08-08-21-20-14.gh-issue-92936.rOgG1S.rst b/Misc/NEWS.d/next/Library/2025-08-08-21-20-14.gh-issue-92936.rOgG1S.rst new file mode 100644 index 00000000000000..906c442b64f438 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-08-08-21-20-14.gh-issue-92936.rOgG1S.rst @@ -0,0 +1,2 @@ +Update regex used by ``http.cookies.SimpleCookie`` to handle values containing +double quotes. From 3964f974894eff1653913dda437971e0bbfa8ccc Mon Sep 17 00:00:00 2001 From: Alexander Nordin Date: Fri, 8 Aug 2025 22:29:51 -0700 Subject: [PATCH 84/87] gh-137026: Add an explainer guide for asyncio (GH-137215) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * - Add an explainer guide (aka HOWTO, not how-to) for asyncio. * Fix linter errors. * - Enforce max line length of roughly 79 chars. - Start sentences on new lines to minimize disruption of diffs. * Add reference to subinterpreters. * - Significantly reduce article size. Remove both example sections & "Which concurrency do I want" section. * Align section-header lengths with section names. * - Remove reference to deleted section. * - Fix a variety of rote style guide items like title-alignment, use of ie and $, and so forth. - Add links to other parts of the docs for keywords and objects like await, coro, task, future, etc. * - One last title alignment. * - Style nit. * - Rework a variety of I statements. * Lint fix. * - Firm up commentary on yield from in corotuines. * Update language comparing await and yield from. * - Remove await-ing Tasks and futures section * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * - Address comments related to style & writing flow. * per-thread event loop note. * Add section describing coroutines roots in generators. * Phrasing tweak. * Use asyncio.create_task instead of asyncio.Task * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * small phrasing. * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * phrasing nit. * style nits * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * phrasing nit * Fix misnaming of async generator. * phrasing nits. * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * consistent spacing * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * phrasing nits * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Peter Bierma * add conclusion * nits * - Variety of style & grammar improvements thanks to ZeroIntensity's comments. * - Make all directives start with a 3 space indent. Then 4 thereafter. * - Use :linenos: instead of manually writing the line numbers. * - Fix label typo for article. * fix label link. * Apply suggestions from code review Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) Co-authored-by: Carol Willing Co-authored-by: Peter Bierma * - introduce async-sleep name * Phrasing * nit * ungendered octopus * teammates * jobs * rework fella to penguin * - remove byline; add seealso * Change ref from asyncio to use seealso block. * Remove typehints. Fix indentation in one code example. * Slight rephrase for clarity. * Make references point to asyncio. Wrap some long lines. * - Variety of style/phrasing improvements based on PR feedback. * phrasing. * phrasing nit. * Apply suggestions from code review Co-authored-by: Peter Bierma * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Carol Willing * nit * Apply suggestions from code review Co-authored-by: Carol Willing * fix backticks. * nits * nit * add section on asyncio.run * title change under the hood. * modify task coro example. * howtos article link. * prefer await without backticks. * phrasing tweak. * Rework phrasing around how await tasks pauses and returns control in the await section. * move code block to beforfe explanation in coroutine under the hood. * phrasing. * link to yield from. * style nits * nit * - Modify language re: event-loop cycling endlessly. - Discuss why await was designed to not yield for coros. * - Add a note about debug=True on asyncio.run to await coro section. * clarity nit * - Add two other references in seealso block. * nit * Language simplification * Apply suggestions from code review Co-authored-by: Peter Bierma * nit * grammar fix. * fix * worker bees * rework event loop paragraph to significantly deemphasize queues * remove all references to queue besides the initial analogy. * add note about garbage collection of tasks * add practical note re: garbage collection * phrasing nits * re arrange note on task gc. * line wrap nit * Update Doc/howto/a-conceptual-overview-of-asyncio.rst Co-authored-by: Kumar Aditya * link to debug mode docs. * readd part2 prefix. * simplify title. * fix titles. tihnk I messed this up earlier. * avoid idiom in title. * fix titles once agian. * Apply suggestions from code review Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> * rework task gc example. * phrasing tweak. * tewak. * nit * nit * nit * nit --------- Co-authored-by: Peter Bierma Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) Co-authored-by: Carol Willing Co-authored-by: Kumar Aditya Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> --- .../a-conceptual-overview-of-asyncio.rst | 606 ++++++++++++++++++ Doc/howto/index.rst | 4 + Doc/library/asyncio-future.rst | 1 + Doc/library/asyncio-task.rst | 1 + Doc/library/asyncio.rst | 5 + 5 files changed, 617 insertions(+) create mode 100644 Doc/howto/a-conceptual-overview-of-asyncio.rst diff --git a/Doc/howto/a-conceptual-overview-of-asyncio.rst b/Doc/howto/a-conceptual-overview-of-asyncio.rst new file mode 100644 index 00000000000000..d68f7cc6921fc9 --- /dev/null +++ b/Doc/howto/a-conceptual-overview-of-asyncio.rst @@ -0,0 +1,606 @@ +.. _a-conceptual-overview-of-asyncio: + +**************************************** +A Conceptual Overview of :mod:`!asyncio` +**************************************** + +This :ref:`HOWTO ` article seeks to help you build a sturdy mental +model of how :mod:`asyncio` fundamentally works, helping you understand the +how and why behind the recommended patterns. + +You might be curious about some key :mod:`!asyncio` concepts. +You'll be comfortably able to answer these questions by the end of this +article: + +- What's happening behind the scenes when an object is awaited? +- How does :mod:`!asyncio` differentiate between a task which doesn't need + CPU-time (such as a network request or file read) as opposed to a task that + does (such as computing n-factorial)? +- How to write an asynchronous variant of an operation, such as + an async sleep or database request. + +.. seealso:: + + * The `guide `_ that inspired this HOWTO article, by Alexander Nordin. + * This in-depth `YouTube tutorial series `_ on + ``asyncio`` created by Python core team member, Łukasz Langa. + * `500 Lines or Less: A Web Crawler With asyncio Coroutines `_ by A. + Jesse Jiryu Davis and Guido van Rossum. + +-------------------------------------------- +A conceptual overview part 1: the high-level +-------------------------------------------- + +In part 1, we'll cover the main, high-level building blocks of :mod:`!asyncio`: +the event loop, coroutine functions, coroutine objects, tasks and ``await``. + +========== +Event Loop +========== + +Everything in :mod:`!asyncio` happens relative to the event loop. +It's the star of the show. +It's like an orchestra conductor. +It's behind the scenes managing resources. +Some power is explicitly granted to it, but a lot of its ability to get things +done comes from the respect and cooperation of its worker bees. + +In more technical terms, the event loop contains a collection of jobs to be run. +Some jobs are added directly by you, and some indirectly by :mod:`!asyncio`. +The event loop takes a job from its backlog of work and invokes it (or "gives +it control"), similar to calling a function, and then that job runs. +Once it pauses or completes, it returns control to the event loop. +The event loop will then select another job from its pool and invoke it. +You can *roughly* think of the collection of jobs as a queue: jobs are added and +then processed one at a time, generally (but not always) in order. +This process repeats indefinitely with the event loop cycling endlessly +onwards. +If there are no more jobs pending execution, the event loop is smart enough to +rest and avoid needlessly wasting CPU cycles, and will come back when there's +more work to be done. + +Effective execution relies on jobs sharing well and cooperating; a greedy job +could hog control and leave the other jobs to starve, rendering the overall +event loop approach rather useless. + +:: + + import asyncio + + # This creates an event loop and indefinitely cycles through + # its collection of jobs. + event_loop = asyncio.new_event_loop() + event_loop.run_forever() + +===================================== +Asynchronous functions and coroutines +===================================== + +This is a basic, boring Python function:: + + def hello_printer(): + print( + "Hi, I am a lowly, simple printer, though I have all I " + "need in life -- \nfresh paper and my dearly beloved octopus " + "partner in crime." + ) + +Calling a regular function invokes its logic or body:: + + >>> hello_printer() + Hi, I am a lowly, simple printer, though I have all I need in life -- + fresh paper and my dearly beloved octopus partner in crime. + +The :ref:`async def `, as opposed to just a plain ``def``, makes +this an asynchronous function (or "coroutine function"). +Calling it creates and returns a :ref:`coroutine ` object. + +:: + + async def loudmouth_penguin(magic_number: int): + print( + "I am a super special talking penguin. Far cooler than that printer. " + f"By the way, my lucky number is: {magic_number}." + ) + +Calling the async function, ``loudmouth_penguin``, does not execute the print statement; +instead, it creates a coroutine object:: + + >>> loudmouth_penguin(magic_number=3) + + +The terms "coroutine function" and "coroutine object" are often conflated +as coroutine. +That can be confusing! +In this article, coroutine specifically refers to a coroutine object, or more +precisely, an instance of :data:`types.CoroutineType` (native coroutine). +Note that coroutines can also exist as instances of +:class:`collections.abc.Coroutine` -- a distinction that matters for type +checking. + +A coroutine represents the function's body or logic. +A coroutine has to be explicitly started; again, merely creating the coroutine +does not start it. +Notably, the coroutine can be paused and resumed at various points within the +function's body. +That pausing and resuming ability is what allows for asynchronous behavior! + +Coroutines and coroutine functions were built by leveraging the functionality +of :term:`generators ` and +:term:`generator functions `. +Recall, a generator function is a function that :keyword:`yield`\s, like this +one:: + + def get_random_number(): + # This would be a bad random number generator! + print("Hi") + yield 1 + print("Hello") + yield 7 + print("Howdy") + yield 4 + ... + +Similar to a coroutine function, calling a generator function does not run it. +Instead, it creates a generator object:: + + >>> get_random_number() + + +You can proceed to the next ``yield`` of a generator by using the +built-in function :func:`next`. +In other words, the generator runs, then pauses. +For example:: + + >>> generator = get_random_number() + >>> next(generator) + Hi + 1 + >>> next(generator) + Hello + 7 + +===== +Tasks +===== + +Roughly speaking, :ref:`tasks ` are coroutines (not coroutine +functions) tied to an event loop. +A task also maintains a list of callback functions whose importance will become +clear in a moment when we discuss :keyword:`await`. +The recommended way to create tasks is via :func:`asyncio.create_task`. + +Creating a task automatically schedules it for execution (by adding a +callback to run it in the event loop's to-do list, that is, collection of jobs). + +Since there's only one event loop (in each thread), :mod:`!asyncio` takes care of +associating the task with the event loop for you. As such, there's no need +to specify the event loop. + +:: + + coroutine = loudmouth_penguin(magic_number=5) + # This creates a Task object and schedules its execution via the event loop. + task = asyncio.create_task(coroutine) + +Earlier, we manually created the event loop and set it to run forever. +In practice, it's recommended to use (and common to see) :func:`asyncio.run`, +which takes care of managing the event loop and ensuring the provided +coroutine finishes before advancing. +For example, many async programs follow this setup:: + + import asyncio + + async def main(): + # Perform all sorts of wacky, wild asynchronous things... + ... + + if __name__ == "__main__": + asyncio.run(main()) + # The program will not reach the following print statement until the + # coroutine main() finishes. + print("coroutine main() is done!") + +It's important to be aware that the task itself is not added to the event loop, +only a callback to the task is. +This matters if the task object you created is garbage collected before it's +called by the event loop. +For example, consider this program: + +.. code-block:: + :linenos: + + async def hello(): + print("hello!") + + async def main(): + asyncio.create_task(hello()) + # Other asynchronous instructions which run for a while + # and cede control to the event loop... + ... + + asyncio.run(main()) + +Because there's no reference to the task object created on line 5, it *might* +be garbage collected before the event loop invokes it. +Later instructions in the coroutine ``main()`` hand control back to the event +loop so it can invoke other jobs. +When the event loop eventually tries to run the task, it might fail and +discover the task object does not exist! +This can also happen even if a coroutine keeps a reference to a task but +completes before that task finishes. +When the coroutine exits, local variables go out of scope and may be subject +to garbage collection. +In practice, ``asyncio`` and Python's garbage collector work pretty hard to +ensure this sort of thing doesn't happen. +But that's no reason to be reckless! + +===== +await +===== + +:keyword:`await` is a Python keyword that's commonly used in one of two +different ways:: + + await task + await coroutine + +In a crucial way, the behavior of ``await`` depends on the type of object +being awaited. + +Awaiting a task will cede control from the current task or coroutine to +the event loop. +In the process of relinquishing control, a few important things happen. +We'll use the following code example to illustrate:: + + async def plant_a_tree(): + dig_the_hole_task = asyncio.create_task(dig_the_hole()) + await dig_the_hole_task + + # Other instructions associated with planting a tree. + ... + +In this example, imagine the event loop has passed control to the start of the +coroutine ``plant_a_tree()``. +As seen above, the coroutine creates a task and then awaits it. +The ``await dig_the_hole_task`` instruction adds a callback (which will resume +``plant_a_tree()``) to the ``dig_the_hole_task`` object's list of callbacks. +And then, the instruction cedes control to the event loop. +Some time later, the event loop will pass control to ``dig_the_hole_task`` +and the task will finish whatever it needs to do. +Once the task finishes, it will add its various callbacks to the event loop, +in this case, a call to resume ``plant_a_tree()``. + +Generally speaking, when the awaited task finishes (``dig_the_hole_task``), +the original task or coroutine (``plant_a_tree()``) is added back to the event +loops to-do list to be resumed. + +This is a basic, yet reliable mental model. +In practice, the control handoffs are slightly more complex, but not by much. +In part 2, we'll walk through the details that make this possible. + +**Unlike tasks, awaiting a coroutine does not hand control back to the event +loop!** +Wrapping a coroutine in a task first, then awaiting that would cede +control. +The behavior of ``await coroutine`` is effectively the same as invoking a +regular, synchronous Python function. +Consider this program:: + + import asyncio + + async def coro_a(): + print("I am coro_a(). Hi!") + + async def coro_b(): + print("I am coro_b(). I sure hope no one hogs the event loop...") + + async def main(): + task_b = asyncio.create_task(coro_b()) + num_repeats = 3 + for _ in range(num_repeats): + await coro_a() + await task_b + + asyncio.run(main()) + +The first statement in the coroutine ``main()`` creates ``task_b`` and schedules +it for execution via the event loop. +Then, ``coro_a()`` is repeatedly awaited. Control never cedes to the +event loop which is why we see the output of all three ``coro_a()`` +invocations before ``coro_b()``'s output: + +.. code-block:: none + + I am coro_a(). Hi! + I am coro_a(). Hi! + I am coro_a(). Hi! + I am coro_b(). I sure hope no one hogs the event loop... + +If we change ``await coro_a()`` to ``await asyncio.create_task(coro_a())``, the +behavior changes. +The coroutine ``main()`` cedes control to the event loop with that statement. +The event loop then proceeds through its backlog of work, calling ``task_b`` +and then the task which wraps ``coro_a()`` before resuming the coroutine +``main()``. + +.. code-block:: none + + I am coro_b(). I sure hope no one hogs the event loop... + I am coro_a(). Hi! + I am coro_a(). Hi! + I am coro_a(). Hi! + +This behavior of ``await coroutine`` can trip a lot of people up! +That example highlights how using only ``await coroutine`` could +unintentionally hog control from other tasks and effectively stall the event +loop. +:func:`asyncio.run` can help you detect such occurences via the +``debug=True`` flag which accordingly enables +:ref:`debug mode `. +Among other things, it will log any coroutines that monopolize execution for +100ms or longer. + +The design intentionally trades off some conceptual clarity around usage of +``await`` for improved performance. +Each time a task is awaited, control needs to be passed all the way up the +call stack to the event loop. +That might sound minor, but in a large program with many ``await``'s and a deep +callstack that overhead can add up to a meaningful performance drag. + +------------------------------------------------ +A conceptual overview part 2: the nuts and bolts +------------------------------------------------ + +Part 2 goes into detail on the mechanisms :mod:`!asyncio` uses to manage +control flow. +This is where the magic happens. +You'll come away from this section knowing what ``await`` does behind the scenes +and how to make your own asynchronous operators. + +================================ +The inner workings of coroutines +================================ + +:mod:`!asyncio` leverages four components to pass around control. + +:meth:`coroutine.send(arg) ` is the method used to start or +resume a coroutine. +If the coroutine was paused and is now being resumed, the argument ``arg`` +will be sent in as the return value of the ``yield`` statement which originally +paused it. +If the coroutine is being used for the first time (as opposed to being resumed) +``arg`` must be ``None``. + +.. code-block:: + :linenos: + + class Rock: + def __await__(self): + value_sent_in = yield 7 + print(f"Rock.__await__ resuming with value: {value_sent_in}.") + return value_sent_in + + async def main(): + print("Beginning coroutine main().") + rock = Rock() + print("Awaiting rock...") + value_from_rock = await rock + print(f"Coroutine received value: {value_from_rock} from rock.") + return 23 + + coroutine = main() + intermediate_result = coroutine.send(None) + print(f"Coroutine paused and returned intermediate value: {intermediate_result}.") + + print(f"Resuming coroutine and sending in value: 42.") + try: + coroutine.send(42) + except StopIteration as e: + returned_value = e.value + print(f"Coroutine main() finished and provided value: {returned_value}.") + +:ref:`yield `, like usual, pauses execution and returns control +to the caller. +In the example above, the ``yield``, on line 3, is called by +``... = await rock`` on line 11. +More broadly speaking, ``await`` calls the :meth:`~object.__await__` method of +the given object. +``await`` also does one more very special thing: it propagates (or "passes +along") any ``yield``\ s it receives up the call-chain. +In this case, that's back to ``... = coroutine.send(None)`` on line 16. + +The coroutine is resumed via the ``coroutine.send(42)`` call on line 21. +The coroutine picks back up from where it ``yield``\ ed (or paused) on line 3 +and executes the remaining statements in its body. +When a coroutine finishes, it raises a :exc:`StopIteration` exception with the +return value attached in the :attr:`~StopIteration.value` attribute. + +That snippet produces this output: + +.. code-block:: none + + Beginning coroutine main(). + Awaiting rock... + Coroutine paused and returned intermediate value: 7. + Resuming coroutine and sending in value: 42. + Rock.__await__ resuming with value: 42. + Coroutine received value: 42 from rock. + Coroutine main() finished and provided value: 23. + +It's worth pausing for a moment here and making sure you followed the various +ways that control flow and values were passed. A lot of important ideas were +covered and it's worth ensuring your understanding is firm. + +The only way to yield (or effectively cede control) from a coroutine is to +``await`` an object that ``yield``\ s in its ``__await__`` method. +That might sound odd to you. You might be thinking: + + 1. What about a ``yield`` directly within the coroutine function? The + coroutine function becomes an + :ref:`async generator function `, a + different beast entirely. + + 2. What about a :ref:`yield from ` within the coroutine function to a (plain) + generator? + That causes the error: ``SyntaxError: yield from not allowed in a coroutine.`` + This was intentionally designed for the sake of simplicity -- mandating only + one way of using coroutines. + Initially ``yield`` was barred as well, but was re-accepted to allow for + async generators. + Despite that, ``yield from`` and ``await`` effectively do the same thing. + +======= +Futures +======= + +A :ref:`future ` is an object meant to represent a +computation's status and result. +The term is a nod to the idea of something still to come or not yet happened, +and the object is a way to keep an eye on that something. + +A future has a few important attributes. One is its state which can be either +"pending", "cancelled" or "done". +Another is its result, which is set when the state transitions to done. +Unlike a coroutine, a future does not represent the actual computation to be +done; instead, it represents the status and result of that computation, kind of +like a status light (red, yellow or green) or indicator. + +:class:`asyncio.Task` subclasses :class:`asyncio.Future` in order to gain +these various capabilities. +The prior section said tasks store a list of callbacks, which wasn't entirely +accurate. +It's actually the ``Future`` class that implements this logic, which ``Task`` +inherits. + +Futures may also be used directly (not via tasks). +Tasks mark themselves as done when their coroutine is complete. +Futures are much more versatile and will be marked as done when you say so. +In this way, they're the flexible interface for you to make your own conditions +for waiting and resuming. + +======================== +A homemade asyncio.sleep +======================== + +We'll go through an example of how you could leverage a future to create your +own variant of asynchronous sleep (``async_sleep``) which mimics +:func:`asyncio.sleep`. + +This snippet registers a few tasks with the event loop and then awaits a +coroutine wrapped in a task: ``async_sleep(3)``. +We want that task to finish only after three seconds have elapsed, but without +preventing other tasks from running. + +:: + + async def other_work(): + print("I like work. Work work.") + + async def main(): + # Add a few other tasks to the event loop, so there's something + # to do while asynchronously sleeping. + work_tasks = [ + asyncio.create_task(other_work()), + asyncio.create_task(other_work()), + asyncio.create_task(other_work()) + ] + print( + "Beginning asynchronous sleep at time: " + f"{datetime.datetime.now().strftime("%H:%M:%S")}." + ) + await asyncio.create_task(async_sleep(3)) + print( + "Done asynchronous sleep at time: " + f"{datetime.datetime.now().strftime("%H:%M:%S")}." + ) + # asyncio.gather effectively awaits each task in the collection. + await asyncio.gather(*work_tasks) + + +Below, we use a future to enable custom control over when that task will be +marked as done. +If :meth:`future.set_result() ` (the method +responsible for marking that future as done) is never called, then this task +will never finish. +We've also enlisted the help of another task, which we'll see in a moment, that +will monitor how much time has elapsed and, accordingly, call +``future.set_result()``. + +:: + + async def async_sleep(seconds: float): + future = asyncio.Future() + time_to_wake = time.time() + seconds + # Add the watcher-task to the event loop. + watcher_task = asyncio.create_task(_sleep_watcher(future, time_to_wake)) + # Block until the future is marked as done. + await future + +Below, we'll use a rather bare object, ``YieldToEventLoop()``, to ``yield`` +from ``__await__`` in order to cede control to the event loop. +This is effectively the same as calling ``asyncio.sleep(0)``, but this approach +offers more clarity, not to mention it's somewhat cheating to use +``asyncio.sleep`` when showcasing how to implement it! + +As usual, the event loop cycles through its tasks, giving them control +and receiving control back when they pause or finish. +The ``watcher_task``, which runs the coroutine ``_sleep_watcher(...)``, will +be invoked once per full cycle of the event loop. +On each resumption, it'll check the time and if not enough has elapsed, then +it'll pause once again and hand control back to the event loop. +Eventually, enough time will have elapsed, and ``_sleep_watcher(...)`` will +mark the future as done, and then itself finish too by breaking out of the +infinite ``while`` loop. +Given this helper task is only invoked once per cycle of the event loop, +you'd be correct to note that this asynchronous sleep will sleep *at least* +three seconds, rather than exactly three seconds. +Note this is also of true of ``asyncio.sleep``. + +:: + + class YieldToEventLoop: + def __await__(self): + yield + + async def _sleep_watcher(future, time_to_wake): + while True: + if time.time() >= time_to_wake: + # This marks the future as done. + future.set_result(None) + break + else: + await YieldToEventLoop() + +Here is the full program's output: + +.. code-block:: none + + $ python custom-async-sleep.py + Beginning asynchronous sleep at time: 14:52:22. + I like work. Work work. + I like work. Work work. + I like work. Work work. + Done asynchronous sleep at time: 14:52:25. + +You might feel this implementation of asynchronous sleep was unnecessarily +convoluted. +And, well, it was. +The example was meant to showcase the versatility of futures with a simple +example that could be mimicked for more complex needs. +For reference, you could implement it without futures, like so:: + + async def simpler_async_sleep(seconds): + time_to_wake = time.time() + seconds + while True: + if time.time() >= time_to_wake: + return + else: + await YieldToEventLoop() + +But, that's all for now. Hopefully you're ready to more confidently dive into +some async programming or check out advanced topics in the +:mod:`rest of the documentation `. diff --git a/Doc/howto/index.rst b/Doc/howto/index.rst index f350141004c2db..81fc7e63f35bd7 100644 --- a/Doc/howto/index.rst +++ b/Doc/howto/index.rst @@ -1,3 +1,5 @@ +.. _how-tos: + *************** Python HOWTOs *************** @@ -11,6 +13,7 @@ Python Library Reference. :maxdepth: 1 :hidden: + a-conceptual-overview-of-asyncio.rst cporting.rst curses.rst descriptor.rst @@ -38,6 +41,7 @@ Python Library Reference. General: +* :ref:`a-conceptual-overview-of-asyncio` * :ref:`annotations-howto` * :ref:`argparse-tutorial` * :ref:`descriptorhowto` diff --git a/Doc/library/asyncio-future.rst b/Doc/library/asyncio-future.rst index 32771ba72e0002..4b69e569523c58 100644 --- a/Doc/library/asyncio-future.rst +++ b/Doc/library/asyncio-future.rst @@ -75,6 +75,7 @@ Future Functions Deprecation warning is emitted if *future* is not a Future-like object and *loop* is not specified and there is no running event loop. +.. _asyncio-future-obj: Future Object ============= diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index b19ffa8213a971..f825ae92ec7471 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -1193,6 +1193,7 @@ Introspection .. versionadded:: 3.4 +.. _asyncio-task-obj: Task Object =========== diff --git a/Doc/library/asyncio.rst b/Doc/library/asyncio.rst index 7d368dae49dc1d..444db01390d922 100644 --- a/Doc/library/asyncio.rst +++ b/Doc/library/asyncio.rst @@ -29,6 +29,11 @@ database connection libraries, distributed task queues, etc. asyncio is often a perfect fit for IO-bound and high-level **structured** network code. +.. seealso:: + + :ref:`a-conceptual-overview-of-asyncio` + Explanation of the fundamentals of asyncio. + asyncio provides a set of **high-level** APIs to: * :ref:`run Python coroutines ` concurrently and From c744b57fd61f200d0a40650a82cc55d0240a710d Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Sat, 9 Aug 2025 05:32:45 -0700 Subject: [PATCH 85/87] gh-137562: Remove reference for GC_REACHABLE in comment (GH-137563) GC_REACHABLE is obsolete --- Python/gc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Python/gc.c b/Python/gc.c index 1050eae60fd337..03455e88d5eeb1 100644 --- a/Python/gc.c +++ b/Python/gc.c @@ -570,8 +570,7 @@ _PyGC_VisitFrameStack(_PyInterpreterFrame *frame, visitproc visit, void *arg) } /* Subtract internal references from gc_refs. After this, gc_refs is >= 0 - * for all objects in containers, and is GC_REACHABLE for all tracked gc - * objects not in containers. The ones with gc_refs > 0 are directly + * for all objects in containers. The ones with gc_refs > 0 are directly * reachable from outside containers, and so can't be collected. */ static void From af15e1d13ea26575afbb94b814e541586547a706 Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Sat, 9 Aug 2025 15:41:28 +0100 Subject: [PATCH 86/87] GH-132532: Add new DSL macros to better declare semantics of exits at ends of instructions/uops. (GH-137098) --- Include/internal/pycore_opcode_metadata.h | 34 +- Include/internal/pycore_uop_ids.h | 392 +++++++------- Include/internal/pycore_uop_metadata.h | 6 +- Python/bytecodes.c | 74 ++- Python/ceval.c | 1 + Python/ceval_macros.h | 11 + Python/executor_cases.c.h | 38 +- Python/generated_cases.c.h | 500 ++++++------------ Python/optimizer.c | 21 +- Python/optimizer_cases.c.h | 6 + Tools/cases_generator/analyzer.py | 16 +- Tools/cases_generator/generators_common.py | 27 + .../opcode_metadata_generator.py | 3 +- Tools/cases_generator/tier1_generator.py | 2 +- Tools/cases_generator/tier2_generator.py | 2 + 15 files changed, 524 insertions(+), 609 deletions(-) diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h index 9f626cecd13630..7f468bbb932184 100644 --- a/Include/internal/pycore_opcode_metadata.h +++ b/Include/internal/pycore_opcode_metadata.h @@ -1028,10 +1028,9 @@ enum InstructionFormat { #define HAS_ESCAPES_FLAG (512) #define HAS_EXIT_FLAG (1024) #define HAS_PURE_FLAG (2048) -#define HAS_PASSTHROUGH_FLAG (4096) -#define HAS_OPARG_AND_1_FLAG (8192) -#define HAS_ERROR_NO_POP_FLAG (16384) -#define HAS_NO_SAVE_IP_FLAG (32768) +#define HAS_ERROR_NO_POP_FLAG (4096) +#define HAS_NO_SAVE_IP_FLAG (8192) +#define HAS_PERIODIC_FLAG (16384) #define OPCODE_HAS_ARG(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ARG_FLAG)) #define OPCODE_HAS_CONST(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_CONST_FLAG)) #define OPCODE_HAS_NAME(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_NAME_FLAG)) @@ -1044,10 +1043,9 @@ enum InstructionFormat { #define OPCODE_HAS_ESCAPES(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ESCAPES_FLAG)) #define OPCODE_HAS_EXIT(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_EXIT_FLAG)) #define OPCODE_HAS_PURE(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PURE_FLAG)) -#define OPCODE_HAS_PASSTHROUGH(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PASSTHROUGH_FLAG)) -#define OPCODE_HAS_OPARG_AND_1(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_OPARG_AND_1_FLAG)) #define OPCODE_HAS_ERROR_NO_POP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ERROR_NO_POP_FLAG)) #define OPCODE_HAS_NO_SAVE_IP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_NO_SAVE_IP_FLAG)) +#define OPCODE_HAS_PERIODIC(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PERIODIC_FLAG)) #define OPARG_SIMPLE 0 #define OPARG_CACHE_1 1 @@ -1347,27 +1345,27 @@ _PyOpcode_macro_expansion[256] = { [CALL_ALLOC_AND_ENTER_INIT] = { .nuops = 4, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_AND_ALLOCATE_OBJECT, 2, 1 }, { _CREATE_INIT_FRAME, OPARG_SIMPLE, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, [CALL_BOUND_METHOD_EXACT_ARGS] = { .nuops = 10, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_CALL_BOUND_METHOD_EXACT_ARGS, OPARG_SIMPLE, 1 }, { _INIT_CALL_BOUND_METHOD_EXACT_ARGS, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION, 2, 1 }, { _CHECK_FUNCTION_EXACT_ARGS, OPARG_SIMPLE, 3 }, { _CHECK_STACK_SPACE, OPARG_SIMPLE, 3 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _INIT_CALL_PY_EXACT_ARGS, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, [CALL_BOUND_METHOD_GENERAL] = { .nuops = 7, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_METHOD_VERSION, 2, 1 }, { _EXPAND_METHOD, OPARG_SIMPLE, 3 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _PY_FRAME_GENERAL, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, - [CALL_BUILTIN_CLASS] = { .nuops = 2, .uops = { { _CALL_BUILTIN_CLASS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, - [CALL_BUILTIN_FAST] = { .nuops = 2, .uops = { { _CALL_BUILTIN_FAST, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, - [CALL_BUILTIN_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_BUILTIN_FAST_WITH_KEYWORDS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, - [CALL_BUILTIN_O] = { .nuops = 2, .uops = { { _CALL_BUILTIN_O, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, + [CALL_BUILTIN_CLASS] = { .nuops = 2, .uops = { { _CALL_BUILTIN_CLASS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, + [CALL_BUILTIN_FAST] = { .nuops = 2, .uops = { { _CALL_BUILTIN_FAST, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, + [CALL_BUILTIN_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_BUILTIN_FAST_WITH_KEYWORDS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, + [CALL_BUILTIN_O] = { .nuops = 2, .uops = { { _CALL_BUILTIN_O, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, [CALL_INTRINSIC_1] = { .nuops = 1, .uops = { { _CALL_INTRINSIC_1, OPARG_SIMPLE, 0 } } }, [CALL_INTRINSIC_2] = { .nuops = 1, .uops = { { _CALL_INTRINSIC_2, OPARG_SIMPLE, 0 } } }, [CALL_ISINSTANCE] = { .nuops = 3, .uops = { { _GUARD_THIRD_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_ISINSTANCE, OPARG_SIMPLE, 3 }, { _CALL_ISINSTANCE, OPARG_SIMPLE, 3 } } }, [CALL_KW_BOUND_METHOD] = { .nuops = 6, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_METHOD_VERSION_KW, 2, 1 }, { _EXPAND_METHOD_KW, OPARG_SIMPLE, 3 }, { _PY_FRAME_KW, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, - [CALL_KW_NON_PY] = { .nuops = 3, .uops = { { _CHECK_IS_NOT_PY_CALLABLE_KW, OPARG_SIMPLE, 3 }, { _CALL_KW_NON_PY, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, + [CALL_KW_NON_PY] = { .nuops = 3, .uops = { { _CHECK_IS_NOT_PY_CALLABLE_KW, OPARG_SIMPLE, 3 }, { _CALL_KW_NON_PY, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, [CALL_KW_PY] = { .nuops = 5, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION_KW, 2, 1 }, { _PY_FRAME_KW, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, [CALL_LEN] = { .nuops = 3, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_LEN, OPARG_SIMPLE, 3 }, { _CALL_LEN, OPARG_SIMPLE, 3 } } }, [CALL_LIST_APPEND] = { .nuops = 4, .uops = { { _GUARD_CALLABLE_LIST_APPEND, OPARG_SIMPLE, 3 }, { _GUARD_NOS_NOT_NULL, OPARG_SIMPLE, 3 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 3 }, { _CALL_LIST_APPEND, OPARG_SIMPLE, 3 } } }, - [CALL_METHOD_DESCRIPTOR_FAST] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, - [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, - [CALL_METHOD_DESCRIPTOR_NOARGS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_NOARGS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, - [CALL_METHOD_DESCRIPTOR_O] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_O, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, - [CALL_NON_PY_GENERAL] = { .nuops = 3, .uops = { { _CHECK_IS_NOT_PY_CALLABLE, OPARG_SIMPLE, 3 }, { _CALL_NON_PY_GENERAL, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, + [CALL_METHOD_DESCRIPTOR_FAST] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, + [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, + [CALL_METHOD_DESCRIPTOR_NOARGS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_NOARGS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, + [CALL_METHOD_DESCRIPTOR_O] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_O, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, + [CALL_NON_PY_GENERAL] = { .nuops = 3, .uops = { { _CHECK_IS_NOT_PY_CALLABLE, OPARG_SIMPLE, 3 }, { _CALL_NON_PY_GENERAL, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, [CALL_PY_EXACT_ARGS] = { .nuops = 8, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION, 2, 1 }, { _CHECK_FUNCTION_EXACT_ARGS, OPARG_SIMPLE, 3 }, { _CHECK_STACK_SPACE, OPARG_SIMPLE, 3 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _INIT_CALL_PY_EXACT_ARGS, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, [CALL_PY_GENERAL] = { .nuops = 6, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION, 2, 1 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _PY_FRAME_GENERAL, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, - [CALL_STR_1] = { .nuops = 4, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_STR_1, OPARG_SIMPLE, 3 }, { _CALL_STR_1, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, - [CALL_TUPLE_1] = { .nuops = 4, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_TUPLE_1, OPARG_SIMPLE, 3 }, { _CALL_TUPLE_1, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, + [CALL_STR_1] = { .nuops = 4, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_STR_1, OPARG_SIMPLE, 3 }, { _CALL_STR_1, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, + [CALL_TUPLE_1] = { .nuops = 4, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_TUPLE_1, OPARG_SIMPLE, 3 }, { _CALL_TUPLE_1, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC_AT_END, OPARG_REPLACED, 3 } } }, [CALL_TYPE_1] = { .nuops = 3, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_TYPE_1, OPARG_SIMPLE, 3 }, { _CALL_TYPE_1, OPARG_SIMPLE, 3 } } }, [CHECK_EG_MATCH] = { .nuops = 1, .uops = { { _CHECK_EG_MATCH, OPARG_SIMPLE, 0 } } }, [CHECK_EXC_MATCH] = { .nuops = 1, .uops = { { _CHECK_EXC_MATCH, OPARG_SIMPLE, 0 } } }, diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h index 684969a23c4d22..749369a40aecdd 100644 --- a/Include/internal/pycore_uop_ids.h +++ b/Include/internal/pycore_uop_ids.h @@ -76,105 +76,107 @@ extern "C" { #define _CHECK_METHOD_VERSION_KW 352 #define _CHECK_PEP_523 353 #define _CHECK_PERIODIC 354 -#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 355 -#define _CHECK_RECURSION_REMAINING 356 -#define _CHECK_STACK_SPACE 357 -#define _CHECK_STACK_SPACE_OPERAND 358 -#define _CHECK_VALIDITY 359 -#define _COLD_EXIT 360 -#define _COMPARE_OP 361 -#define _COMPARE_OP_FLOAT 362 -#define _COMPARE_OP_INT 363 -#define _COMPARE_OP_STR 364 -#define _CONTAINS_OP 365 -#define _CONTAINS_OP_DICT 366 -#define _CONTAINS_OP_SET 367 +#define _CHECK_PERIODIC_AT_END 355 +#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 356 +#define _CHECK_RECURSION_REMAINING 357 +#define _CHECK_STACK_SPACE 358 +#define _CHECK_STACK_SPACE_OPERAND 359 +#define _CHECK_VALIDITY 360 +#define _COLD_EXIT 361 +#define _COMPARE_OP 362 +#define _COMPARE_OP_FLOAT 363 +#define _COMPARE_OP_INT 364 +#define _COMPARE_OP_STR 365 +#define _CONTAINS_OP 366 +#define _CONTAINS_OP_DICT 367 +#define _CONTAINS_OP_SET 368 #define _CONVERT_VALUE CONVERT_VALUE -#define _COPY 368 -#define _COPY_1 369 -#define _COPY_2 370 -#define _COPY_3 371 +#define _COPY 369 +#define _COPY_1 370 +#define _COPY_2 371 +#define _COPY_3 372 #define _COPY_FREE_VARS COPY_FREE_VARS -#define _CREATE_INIT_FRAME 372 +#define _CREATE_INIT_FRAME 373 #define _DELETE_ATTR DELETE_ATTR #define _DELETE_DEREF DELETE_DEREF #define _DELETE_FAST DELETE_FAST #define _DELETE_GLOBAL DELETE_GLOBAL #define _DELETE_NAME DELETE_NAME #define _DELETE_SUBSCR DELETE_SUBSCR -#define _DEOPT 373 +#define _DEOPT 374 #define _DICT_MERGE DICT_MERGE #define _DICT_UPDATE DICT_UPDATE -#define _DO_CALL 374 -#define _DO_CALL_FUNCTION_EX 375 -#define _DO_CALL_KW 376 +#define _DO_CALL 375 +#define _DO_CALL_FUNCTION_EX 376 +#define _DO_CALL_KW 377 #define _END_FOR END_FOR #define _END_SEND END_SEND -#define _ERROR_POP_N 377 +#define _ERROR_POP_N 378 #define _EXIT_INIT_CHECK EXIT_INIT_CHECK -#define _EXPAND_METHOD 378 -#define _EXPAND_METHOD_KW 379 -#define _FATAL_ERROR 380 +#define _EXPAND_METHOD 379 +#define _EXPAND_METHOD_KW 380 +#define _FATAL_ERROR 381 #define _FORMAT_SIMPLE FORMAT_SIMPLE #define _FORMAT_WITH_SPEC FORMAT_WITH_SPEC -#define _FOR_ITER 381 -#define _FOR_ITER_GEN_FRAME 382 -#define _FOR_ITER_TIER_TWO 383 +#define _FOR_ITER 382 +#define _FOR_ITER_GEN_FRAME 383 +#define _FOR_ITER_TIER_TWO 384 #define _GET_AITER GET_AITER #define _GET_ANEXT GET_ANEXT #define _GET_AWAITABLE GET_AWAITABLE #define _GET_ITER GET_ITER #define _GET_LEN GET_LEN #define _GET_YIELD_FROM_ITER GET_YIELD_FROM_ITER -#define _GUARD_BINARY_OP_EXTEND 384 -#define _GUARD_CALLABLE_ISINSTANCE 385 -#define _GUARD_CALLABLE_LEN 386 -#define _GUARD_CALLABLE_LIST_APPEND 387 -#define _GUARD_CALLABLE_STR_1 388 -#define _GUARD_CALLABLE_TUPLE_1 389 -#define _GUARD_CALLABLE_TYPE_1 390 -#define _GUARD_DORV_NO_DICT 391 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 392 -#define _GUARD_GLOBALS_VERSION 393 -#define _GUARD_IS_FALSE_POP 394 -#define _GUARD_IS_NONE_POP 395 -#define _GUARD_IS_NOT_NONE_POP 396 -#define _GUARD_IS_TRUE_POP 397 -#define _GUARD_KEYS_VERSION 398 -#define _GUARD_NOS_DICT 399 -#define _GUARD_NOS_FLOAT 400 -#define _GUARD_NOS_INT 401 -#define _GUARD_NOS_LIST 402 -#define _GUARD_NOS_NOT_NULL 403 -#define _GUARD_NOS_NULL 404 -#define _GUARD_NOS_OVERFLOWED 405 -#define _GUARD_NOS_TUPLE 406 -#define _GUARD_NOS_UNICODE 407 -#define _GUARD_NOT_EXHAUSTED_LIST 408 -#define _GUARD_NOT_EXHAUSTED_RANGE 409 -#define _GUARD_NOT_EXHAUSTED_TUPLE 410 -#define _GUARD_THIRD_NULL 411 -#define _GUARD_TOS_ANY_SET 412 -#define _GUARD_TOS_DICT 413 -#define _GUARD_TOS_FLOAT 414 -#define _GUARD_TOS_INT 415 -#define _GUARD_TOS_LIST 416 -#define _GUARD_TOS_OVERFLOWED 417 -#define _GUARD_TOS_SLICE 418 -#define _GUARD_TOS_TUPLE 419 -#define _GUARD_TOS_UNICODE 420 -#define _GUARD_TYPE_VERSION 421 -#define _GUARD_TYPE_VERSION_AND_LOCK 422 +#define _GUARD_BINARY_OP_EXTEND 385 +#define _GUARD_CALLABLE_ISINSTANCE 386 +#define _GUARD_CALLABLE_LEN 387 +#define _GUARD_CALLABLE_LIST_APPEND 388 +#define _GUARD_CALLABLE_STR_1 389 +#define _GUARD_CALLABLE_TUPLE_1 390 +#define _GUARD_CALLABLE_TYPE_1 391 +#define _GUARD_DORV_NO_DICT 392 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 393 +#define _GUARD_GLOBALS_VERSION 394 +#define _GUARD_IS_FALSE_POP 395 +#define _GUARD_IS_NONE_POP 396 +#define _GUARD_IS_NOT_NONE_POP 397 +#define _GUARD_IS_TRUE_POP 398 +#define _GUARD_KEYS_VERSION 399 +#define _GUARD_NOS_DICT 400 +#define _GUARD_NOS_FLOAT 401 +#define _GUARD_NOS_INT 402 +#define _GUARD_NOS_LIST 403 +#define _GUARD_NOS_NOT_NULL 404 +#define _GUARD_NOS_NULL 405 +#define _GUARD_NOS_OVERFLOWED 406 +#define _GUARD_NOS_TUPLE 407 +#define _GUARD_NOS_UNICODE 408 +#define _GUARD_NOT_EXHAUSTED_LIST 409 +#define _GUARD_NOT_EXHAUSTED_RANGE 410 +#define _GUARD_NOT_EXHAUSTED_TUPLE 411 +#define _GUARD_THIRD_NULL 412 +#define _GUARD_TOS_ANY_SET 413 +#define _GUARD_TOS_DICT 414 +#define _GUARD_TOS_FLOAT 415 +#define _GUARD_TOS_INT 416 +#define _GUARD_TOS_LIST 417 +#define _GUARD_TOS_OVERFLOWED 418 +#define _GUARD_TOS_SLICE 419 +#define _GUARD_TOS_TUPLE 420 +#define _GUARD_TOS_UNICODE 421 +#define _GUARD_TYPE_VERSION 422 +#define _GUARD_TYPE_VERSION_AND_LOCK 423 +#define _HANDLE_PENDING_AND_DEOPT 424 #define _IMPORT_FROM IMPORT_FROM #define _IMPORT_NAME IMPORT_NAME -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 423 -#define _INIT_CALL_PY_EXACT_ARGS 424 -#define _INIT_CALL_PY_EXACT_ARGS_0 425 -#define _INIT_CALL_PY_EXACT_ARGS_1 426 -#define _INIT_CALL_PY_EXACT_ARGS_2 427 -#define _INIT_CALL_PY_EXACT_ARGS_3 428 -#define _INIT_CALL_PY_EXACT_ARGS_4 429 -#define _INSERT_NULL 430 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 425 +#define _INIT_CALL_PY_EXACT_ARGS 426 +#define _INIT_CALL_PY_EXACT_ARGS_0 427 +#define _INIT_CALL_PY_EXACT_ARGS_1 428 +#define _INIT_CALL_PY_EXACT_ARGS_2 429 +#define _INIT_CALL_PY_EXACT_ARGS_3 430 +#define _INIT_CALL_PY_EXACT_ARGS_4 431 +#define _INSERT_NULL 432 #define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER #define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION #define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD @@ -184,177 +186,177 @@ extern "C" { #define _INSTRUMENTED_POP_JUMP_IF_NONE INSTRUMENTED_POP_JUMP_IF_NONE #define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE INSTRUMENTED_POP_JUMP_IF_NOT_NONE #define _INSTRUMENTED_POP_JUMP_IF_TRUE INSTRUMENTED_POP_JUMP_IF_TRUE -#define _IS_NONE 431 +#define _IS_NONE 433 #define _IS_OP IS_OP -#define _ITER_CHECK_LIST 432 -#define _ITER_CHECK_RANGE 433 -#define _ITER_CHECK_TUPLE 434 -#define _ITER_JUMP_LIST 435 -#define _ITER_JUMP_RANGE 436 -#define _ITER_JUMP_TUPLE 437 -#define _ITER_NEXT_LIST 438 -#define _ITER_NEXT_LIST_TIER_TWO 439 -#define _ITER_NEXT_RANGE 440 -#define _ITER_NEXT_TUPLE 441 -#define _JUMP_TO_TOP 442 +#define _ITER_CHECK_LIST 434 +#define _ITER_CHECK_RANGE 435 +#define _ITER_CHECK_TUPLE 436 +#define _ITER_JUMP_LIST 437 +#define _ITER_JUMP_RANGE 438 +#define _ITER_JUMP_TUPLE 439 +#define _ITER_NEXT_LIST 440 +#define _ITER_NEXT_LIST_TIER_TWO 441 +#define _ITER_NEXT_RANGE 442 +#define _ITER_NEXT_TUPLE 443 +#define _JUMP_TO_TOP 444 #define _LIST_APPEND LIST_APPEND #define _LIST_EXTEND LIST_EXTEND -#define _LOAD_ATTR 443 -#define _LOAD_ATTR_CLASS 444 +#define _LOAD_ATTR 445 +#define _LOAD_ATTR_CLASS 446 #define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN -#define _LOAD_ATTR_INSTANCE_VALUE 445 -#define _LOAD_ATTR_METHOD_LAZY_DICT 446 -#define _LOAD_ATTR_METHOD_NO_DICT 447 -#define _LOAD_ATTR_METHOD_WITH_VALUES 448 -#define _LOAD_ATTR_MODULE 449 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 450 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 451 -#define _LOAD_ATTR_PROPERTY_FRAME 452 -#define _LOAD_ATTR_SLOT 453 -#define _LOAD_ATTR_WITH_HINT 454 +#define _LOAD_ATTR_INSTANCE_VALUE 447 +#define _LOAD_ATTR_METHOD_LAZY_DICT 448 +#define _LOAD_ATTR_METHOD_NO_DICT 449 +#define _LOAD_ATTR_METHOD_WITH_VALUES 450 +#define _LOAD_ATTR_MODULE 451 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 452 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 453 +#define _LOAD_ATTR_PROPERTY_FRAME 454 +#define _LOAD_ATTR_SLOT 455 +#define _LOAD_ATTR_WITH_HINT 456 #define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS -#define _LOAD_BYTECODE 455 +#define _LOAD_BYTECODE 457 #define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT #define _LOAD_CONST LOAD_CONST -#define _LOAD_CONST_INLINE 456 -#define _LOAD_CONST_INLINE_BORROW 457 -#define _LOAD_CONST_UNDER_INLINE 458 -#define _LOAD_CONST_UNDER_INLINE_BORROW 459 +#define _LOAD_CONST_INLINE 458 +#define _LOAD_CONST_INLINE_BORROW 459 +#define _LOAD_CONST_UNDER_INLINE 460 +#define _LOAD_CONST_UNDER_INLINE_BORROW 461 #define _LOAD_DEREF LOAD_DEREF -#define _LOAD_FAST 460 -#define _LOAD_FAST_0 461 -#define _LOAD_FAST_1 462 -#define _LOAD_FAST_2 463 -#define _LOAD_FAST_3 464 -#define _LOAD_FAST_4 465 -#define _LOAD_FAST_5 466 -#define _LOAD_FAST_6 467 -#define _LOAD_FAST_7 468 +#define _LOAD_FAST 462 +#define _LOAD_FAST_0 463 +#define _LOAD_FAST_1 464 +#define _LOAD_FAST_2 465 +#define _LOAD_FAST_3 466 +#define _LOAD_FAST_4 467 +#define _LOAD_FAST_5 468 +#define _LOAD_FAST_6 469 +#define _LOAD_FAST_7 470 #define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR -#define _LOAD_FAST_BORROW 469 -#define _LOAD_FAST_BORROW_0 470 -#define _LOAD_FAST_BORROW_1 471 -#define _LOAD_FAST_BORROW_2 472 -#define _LOAD_FAST_BORROW_3 473 -#define _LOAD_FAST_BORROW_4 474 -#define _LOAD_FAST_BORROW_5 475 -#define _LOAD_FAST_BORROW_6 476 -#define _LOAD_FAST_BORROW_7 477 +#define _LOAD_FAST_BORROW 471 +#define _LOAD_FAST_BORROW_0 472 +#define _LOAD_FAST_BORROW_1 473 +#define _LOAD_FAST_BORROW_2 474 +#define _LOAD_FAST_BORROW_3 475 +#define _LOAD_FAST_BORROW_4 476 +#define _LOAD_FAST_BORROW_5 477 +#define _LOAD_FAST_BORROW_6 478 +#define _LOAD_FAST_BORROW_7 479 #define _LOAD_FAST_BORROW_LOAD_FAST_BORROW LOAD_FAST_BORROW_LOAD_FAST_BORROW #define _LOAD_FAST_CHECK LOAD_FAST_CHECK #define _LOAD_FAST_LOAD_FAST LOAD_FAST_LOAD_FAST #define _LOAD_FROM_DICT_OR_DEREF LOAD_FROM_DICT_OR_DEREF #define _LOAD_FROM_DICT_OR_GLOBALS LOAD_FROM_DICT_OR_GLOBALS -#define _LOAD_GLOBAL 478 -#define _LOAD_GLOBAL_BUILTINS 479 -#define _LOAD_GLOBAL_MODULE 480 +#define _LOAD_GLOBAL 480 +#define _LOAD_GLOBAL_BUILTINS 481 +#define _LOAD_GLOBAL_MODULE 482 #define _LOAD_LOCALS LOAD_LOCALS #define _LOAD_NAME LOAD_NAME -#define _LOAD_SMALL_INT 481 -#define _LOAD_SMALL_INT_0 482 -#define _LOAD_SMALL_INT_1 483 -#define _LOAD_SMALL_INT_2 484 -#define _LOAD_SMALL_INT_3 485 -#define _LOAD_SPECIAL 486 +#define _LOAD_SMALL_INT 483 +#define _LOAD_SMALL_INT_0 484 +#define _LOAD_SMALL_INT_1 485 +#define _LOAD_SMALL_INT_2 486 +#define _LOAD_SMALL_INT_3 487 +#define _LOAD_SPECIAL 488 #define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR #define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD -#define _MAKE_CALLARGS_A_TUPLE 487 +#define _MAKE_CALLARGS_A_TUPLE 489 #define _MAKE_CELL MAKE_CELL #define _MAKE_FUNCTION MAKE_FUNCTION -#define _MAKE_WARM 488 +#define _MAKE_WARM 490 #define _MAP_ADD MAP_ADD #define _MATCH_CLASS MATCH_CLASS #define _MATCH_KEYS MATCH_KEYS #define _MATCH_MAPPING MATCH_MAPPING #define _MATCH_SEQUENCE MATCH_SEQUENCE -#define _MAYBE_EXPAND_METHOD 489 -#define _MAYBE_EXPAND_METHOD_KW 490 -#define _MONITOR_CALL 491 -#define _MONITOR_CALL_KW 492 -#define _MONITOR_JUMP_BACKWARD 493 -#define _MONITOR_RESUME 494 +#define _MAYBE_EXPAND_METHOD 491 +#define _MAYBE_EXPAND_METHOD_KW 492 +#define _MONITOR_CALL 493 +#define _MONITOR_CALL_KW 494 +#define _MONITOR_JUMP_BACKWARD 495 +#define _MONITOR_RESUME 496 #define _NOP NOP -#define _POP_CALL 495 -#define _POP_CALL_LOAD_CONST_INLINE_BORROW 496 -#define _POP_CALL_ONE 497 -#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 498 -#define _POP_CALL_TWO 499 -#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 500 +#define _POP_CALL 497 +#define _POP_CALL_LOAD_CONST_INLINE_BORROW 498 +#define _POP_CALL_ONE 499 +#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 500 +#define _POP_CALL_TWO 501 +#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 502 #define _POP_EXCEPT POP_EXCEPT #define _POP_ITER POP_ITER -#define _POP_JUMP_IF_FALSE 501 -#define _POP_JUMP_IF_TRUE 502 +#define _POP_JUMP_IF_FALSE 503 +#define _POP_JUMP_IF_TRUE 504 #define _POP_TOP POP_TOP -#define _POP_TOP_FLOAT 503 -#define _POP_TOP_INT 504 -#define _POP_TOP_LOAD_CONST_INLINE 505 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW 506 -#define _POP_TOP_NOP 507 -#define _POP_TOP_UNICODE 508 -#define _POP_TWO 509 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW 510 +#define _POP_TOP_FLOAT 505 +#define _POP_TOP_INT 506 +#define _POP_TOP_LOAD_CONST_INLINE 507 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW 508 +#define _POP_TOP_NOP 509 +#define _POP_TOP_UNICODE 510 +#define _POP_TWO 511 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW 512 #define _PUSH_EXC_INFO PUSH_EXC_INFO -#define _PUSH_FRAME 511 +#define _PUSH_FRAME 513 #define _PUSH_NULL PUSH_NULL -#define _PUSH_NULL_CONDITIONAL 512 -#define _PY_FRAME_GENERAL 513 -#define _PY_FRAME_KW 514 -#define _QUICKEN_RESUME 515 -#define _REPLACE_WITH_TRUE 516 +#define _PUSH_NULL_CONDITIONAL 514 +#define _PY_FRAME_GENERAL 515 +#define _PY_FRAME_KW 516 +#define _QUICKEN_RESUME 517 +#define _REPLACE_WITH_TRUE 518 #define _RESUME_CHECK RESUME_CHECK #define _RETURN_GENERATOR RETURN_GENERATOR #define _RETURN_VALUE RETURN_VALUE -#define _SAVE_RETURN_OFFSET 517 -#define _SEND 518 -#define _SEND_GEN_FRAME 519 +#define _SAVE_RETURN_OFFSET 519 +#define _SEND 520 +#define _SEND_GEN_FRAME 521 #define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS #define _SET_ADD SET_ADD #define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE #define _SET_UPDATE SET_UPDATE -#define _START_EXECUTOR 520 -#define _STORE_ATTR 521 -#define _STORE_ATTR_INSTANCE_VALUE 522 -#define _STORE_ATTR_SLOT 523 -#define _STORE_ATTR_WITH_HINT 524 +#define _START_EXECUTOR 522 +#define _STORE_ATTR 523 +#define _STORE_ATTR_INSTANCE_VALUE 524 +#define _STORE_ATTR_SLOT 525 +#define _STORE_ATTR_WITH_HINT 526 #define _STORE_DEREF STORE_DEREF -#define _STORE_FAST 525 -#define _STORE_FAST_0 526 -#define _STORE_FAST_1 527 -#define _STORE_FAST_2 528 -#define _STORE_FAST_3 529 -#define _STORE_FAST_4 530 -#define _STORE_FAST_5 531 -#define _STORE_FAST_6 532 -#define _STORE_FAST_7 533 +#define _STORE_FAST 527 +#define _STORE_FAST_0 528 +#define _STORE_FAST_1 529 +#define _STORE_FAST_2 530 +#define _STORE_FAST_3 531 +#define _STORE_FAST_4 532 +#define _STORE_FAST_5 533 +#define _STORE_FAST_6 534 +#define _STORE_FAST_7 535 #define _STORE_FAST_LOAD_FAST STORE_FAST_LOAD_FAST #define _STORE_FAST_STORE_FAST STORE_FAST_STORE_FAST #define _STORE_GLOBAL STORE_GLOBAL #define _STORE_NAME STORE_NAME -#define _STORE_SLICE 534 -#define _STORE_SUBSCR 535 -#define _STORE_SUBSCR_DICT 536 -#define _STORE_SUBSCR_LIST_INT 537 -#define _SWAP 538 -#define _SWAP_2 539 -#define _SWAP_3 540 -#define _TIER2_RESUME_CHECK 541 -#define _TO_BOOL 542 +#define _STORE_SLICE 536 +#define _STORE_SUBSCR 537 +#define _STORE_SUBSCR_DICT 538 +#define _STORE_SUBSCR_LIST_INT 539 +#define _SWAP 540 +#define _SWAP_2 541 +#define _SWAP_3 542 +#define _TIER2_RESUME_CHECK 543 +#define _TO_BOOL 544 #define _TO_BOOL_BOOL TO_BOOL_BOOL #define _TO_BOOL_INT TO_BOOL_INT -#define _TO_BOOL_LIST 543 +#define _TO_BOOL_LIST 545 #define _TO_BOOL_NONE TO_BOOL_NONE -#define _TO_BOOL_STR 544 +#define _TO_BOOL_STR 546 #define _UNARY_INVERT UNARY_INVERT #define _UNARY_NEGATIVE UNARY_NEGATIVE #define _UNARY_NOT UNARY_NOT #define _UNPACK_EX UNPACK_EX -#define _UNPACK_SEQUENCE 545 -#define _UNPACK_SEQUENCE_LIST 546 -#define _UNPACK_SEQUENCE_TUPLE 547 -#define _UNPACK_SEQUENCE_TWO_TUPLE 548 +#define _UNPACK_SEQUENCE 547 +#define _UNPACK_SEQUENCE_LIST 548 +#define _UNPACK_SEQUENCE_TUPLE 549 +#define _UNPACK_SEQUENCE_TWO_TUPLE 550 #define _WITH_EXCEPT_START WITH_EXCEPT_START #define _YIELD_VALUE YIELD_VALUE -#define MAX_UOP_ID 548 +#define MAX_UOP_ID 550 #ifdef __cplusplus } diff --git a/Include/internal/pycore_uop_metadata.h b/Include/internal/pycore_uop_metadata.h index d6afdb0b4b5805..bf361233560c55 100644 --- a/Include/internal/pycore_uop_metadata.h +++ b/Include/internal/pycore_uop_metadata.h @@ -334,8 +334,9 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = { [_MAKE_WARM] = 0, [_FATAL_ERROR] = 0, [_DEOPT] = 0, + [_HANDLE_PENDING_AND_DEOPT] = HAS_ESCAPES_FLAG, [_ERROR_POP_N] = HAS_ARG_FLAG, - [_TIER2_RESUME_CHECK] = HAS_DEOPT_FLAG, + [_TIER2_RESUME_CHECK] = HAS_PERIODIC_FLAG, [_COLD_EXIT] = HAS_ESCAPES_FLAG, }; @@ -501,6 +502,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = { [_GUARD_TOS_UNICODE] = "_GUARD_TOS_UNICODE", [_GUARD_TYPE_VERSION] = "_GUARD_TYPE_VERSION", [_GUARD_TYPE_VERSION_AND_LOCK] = "_GUARD_TYPE_VERSION_AND_LOCK", + [_HANDLE_PENDING_AND_DEOPT] = "_HANDLE_PENDING_AND_DEOPT", [_IMPORT_FROM] = "_IMPORT_FROM", [_IMPORT_NAME] = "_IMPORT_NAME", [_INIT_CALL_BOUND_METHOD_EXACT_ARGS] = "_INIT_CALL_BOUND_METHOD_EXACT_ARGS", @@ -1299,6 +1301,8 @@ int _PyUop_num_popped(int opcode, int oparg) return 0; case _DEOPT: return 0; + case _HANDLE_PENDING_AND_DEOPT: + return 0; case _ERROR_POP_N: return 0; case _TIER2_RESUME_CHECK: diff --git a/Python/bytecodes.c b/Python/bytecodes.c index cdc0a785c6d72e..4d6dbe5116626d 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -153,22 +153,19 @@ dummy_func( macro(NOT_TAKEN) = NOP; op(_CHECK_PERIODIC, (--)) { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - int err = _Py_HandlePending(tstate); - ERROR_IF(err != 0); - } + int err = check_periodics(tstate); + ERROR_IF(err != 0); + } + + replaced op(_CHECK_PERIODIC_AT_END, (--)) { + int err = check_periodics(tstate); + ERROR_IF(err != 0); } op(_CHECK_PERIODIC_IF_NOT_YIELD_FROM, (--)) { if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - int err = _Py_HandlePending(tstate); - ERROR_IF(err != 0); - } + int err = check_periodics(tstate); + ERROR_IF(err != 0); } } @@ -3794,8 +3791,8 @@ dummy_func( ERROR_IF(err); } - macro(CALL) = _SPECIALIZE_CALL + unused/2 + _MAYBE_EXPAND_METHOD + _DO_CALL + _CHECK_PERIODIC; - macro(INSTRUMENTED_CALL) = unused/3 + _MAYBE_EXPAND_METHOD + _MONITOR_CALL + _DO_CALL + _CHECK_PERIODIC; + macro(CALL) = _SPECIALIZE_CALL + unused/2 + _MAYBE_EXPAND_METHOD + _DO_CALL + _CHECK_PERIODIC_AT_END; + macro(INSTRUMENTED_CALL) = unused/3 + _MAYBE_EXPAND_METHOD + _MONITOR_CALL + _DO_CALL + _CHECK_PERIODIC_AT_END; op(_PY_FRAME_GENERAL, (callable, self_or_null, args[oparg] -- new_frame)) { PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -3916,7 +3913,7 @@ dummy_func( unused/2 + _CHECK_IS_NOT_PY_CALLABLE + _CALL_NON_PY_GENERAL + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_CHECK_CALL_BOUND_METHOD_EXACT_ARGS, (callable, null, unused[oparg] -- callable, null, unused[oparg])) { EXIT_IF(!PyStackRef_IsNull(null)); @@ -4073,7 +4070,7 @@ dummy_func( _GUARD_NOS_NULL + _GUARD_CALLABLE_STR_1 + _CALL_STR_1 + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_GUARD_CALLABLE_TUPLE_1, (callable, unused, unused -- callable, unused, unused)) { PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -4101,7 +4098,7 @@ dummy_func( _GUARD_NOS_NULL + _GUARD_CALLABLE_TUPLE_1 + _CALL_TUPLE_1 + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_CHECK_AND_ALLOCATE_OBJECT, (type_version/2, callable, self_or_null, unused[oparg] -- callable, self_or_null, unused[oparg])) { PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -4197,7 +4194,7 @@ dummy_func( unused/1 + unused/2 + _CALL_BUILTIN_CLASS + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_CALL_BUILTIN_O, (callable, self_or_null, args[oparg] -- res)) { /* Builtin METH_O functions */ @@ -4232,7 +4229,7 @@ dummy_func( unused/1 + unused/2 + _CALL_BUILTIN_O + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_CALL_BUILTIN_FAST, (callable, self_or_null, args[oparg] -- res)) { /* Builtin METH_FASTCALL functions, without keywords */ @@ -4269,7 +4266,7 @@ dummy_func( unused/1 + unused/2 + _CALL_BUILTIN_FAST + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_CALL_BUILTIN_FAST_WITH_KEYWORDS, (callable, self_or_null, args[oparg] -- res)) { /* Builtin METH_FASTCALL | METH_KEYWORDS functions */ @@ -4305,7 +4302,7 @@ dummy_func( unused/1 + unused/2 + _CALL_BUILTIN_FAST_WITH_KEYWORDS + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; macro(CALL_LEN) = unused/1 + @@ -4443,7 +4440,7 @@ dummy_func( unused/1 + unused/2 + _CALL_METHOD_DESCRIPTOR_O + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS, (callable, self_or_null, args[oparg] -- res)) { PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -4485,7 +4482,7 @@ dummy_func( unused/1 + unused/2 + _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_CALL_METHOD_DESCRIPTOR_NOARGS, (callable, self_or_null, args[oparg] -- res)) { assert(oparg == 0 || oparg == 1); @@ -4523,7 +4520,7 @@ dummy_func( unused/1 + unused/2 + _CALL_METHOD_DESCRIPTOR_NOARGS + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_CALL_METHOD_DESCRIPTOR_FAST, (callable, self_or_null, args[oparg] -- res)) { PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -4564,7 +4561,7 @@ dummy_func( unused/1 + unused/2 + _CALL_METHOD_DESCRIPTOR_FAST + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; // Cache layout: counter/1, func_version/2 family(CALL_KW, INLINE_CACHE_ENTRIES_CALL_KW) = { @@ -4820,7 +4817,7 @@ dummy_func( unused/2 + _CHECK_IS_NOT_PY_CALLABLE_KW + _CALL_KW_NON_PY + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; op(_MAKE_CALLARGS_A_TUPLE, (func, unused, callargs, kwargs -- func, unused, callargs, kwargs)) { PyObject *callargs_o = PyStackRef_AsPyObjectBorrow(callargs); @@ -4921,12 +4918,12 @@ dummy_func( macro(CALL_FUNCTION_EX) = _MAKE_CALLARGS_A_TUPLE + _DO_CALL_FUNCTION_EX + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; macro(INSTRUMENTED_CALL_FUNCTION_EX) = _MAKE_CALLARGS_A_TUPLE + _DO_CALL_FUNCTION_EX + - _CHECK_PERIODIC; + _CHECK_PERIODIC_AT_END; inst(MAKE_FUNCTION, (codeobj_st -- func)) { PyObject *codeobj = PyStackRef_AsPyObjectBorrow(codeobj_st); @@ -5189,23 +5186,20 @@ dummy_func( op (_GUARD_IS_TRUE_POP, (flag -- )) { int is_true = PyStackRef_IsTrue(flag); DEAD(flag); - SYNC_SP(); - EXIT_IF(!is_true); + AT_END_EXIT_IF(!is_true); } op (_GUARD_IS_FALSE_POP, (flag -- )) { int is_false = PyStackRef_IsFalse(flag); DEAD(flag); - SYNC_SP(); - EXIT_IF(!is_false); + AT_END_EXIT_IF(!is_false); } op (_GUARD_IS_NONE_POP, (val -- )) { int is_none = PyStackRef_IsNone(val); if (!is_none) { PyStackRef_CLOSE(val); - SYNC_SP(); - EXIT_IF(1); + AT_END_EXIT_IF(1); } DEAD(val); } @@ -5213,8 +5207,7 @@ dummy_func( op (_GUARD_IS_NOT_NONE_POP, (val -- )) { int is_none = PyStackRef_IsNone(val); PyStackRef_CLOSE(val); - SYNC_SP(); - EXIT_IF(is_none); + AT_END_EXIT_IF(is_none); } op(_JUMP_TO_TOP, (--)) { @@ -5380,6 +5373,11 @@ dummy_func( GOTO_TIER_ONE(_PyFrame_GetBytecode(frame) + CURRENT_TARGET()); } + tier2 op(_HANDLE_PENDING_AND_DEOPT, (--)) { + int err = _Py_HandlePending(tstate); + GOTO_TIER_ONE(err ? NULL : _PyFrame_GetBytecode(frame) + CURRENT_TARGET()); + } + tier2 op(_ERROR_POP_N, (target/2 --)) { assert(oparg == 0); frame->instr_ptr = _PyFrame_GetBytecode(frame) + target; @@ -5391,11 +5389,11 @@ dummy_func( * ENTER_EXECUTOR will not re-enter tier 2 with the eval breaker set. */ tier2 op(_TIER2_RESUME_CHECK, (--)) { #if defined(__EMSCRIPTEN__) - DEOPT_IF(_Py_emscripten_signal_clock == 0); + HANDLE_PENDING_AND_DEOPT_IF(_Py_emscripten_signal_clock == 0); _Py_emscripten_signal_clock -= Py_EMSCRIPTEN_SIGNAL_HANDLING; #endif uintptr_t eval_breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker); - DEOPT_IF(eval_breaker & _PY_EVAL_EVENTS_MASK); + HANDLE_PENDING_AND_DEOPT_IF(eval_breaker & _PY_EVAL_EVENTS_MASK); assert(tstate->tracing || eval_breaker == FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version)); } diff --git a/Python/ceval.c b/Python/ceval.c index e1045808af93d8..94c24187f6b25f 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1211,6 +1211,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int printf(" @ %d -> %s]\n", (int)(next_uop - current_executor->trace - 1), _PyOpcode_OpName[frame->instr_ptr->op.code]); + fflush(stdout); } #endif assert(next_uop[-1].format == UOP_FORMAT_JUMP); diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index 9ebcefbcb85850..ddbcf2aa1bab02 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -422,3 +422,14 @@ do { \ _PyObjectArray_Free(NAME - 1, NAME##_temp); #define CONVERSION_FAILED(NAME) ((NAME) == NULL) + +static inline int +check_periodics(PyThreadState *tstate) { + _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); + QSBR_QUIESCENT_STATE(tstate); + if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { + return _Py_HandlePending(tstate); + } + return 0; +} + diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index c10797e3d8b1b2..182289922c7637 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -13,31 +13,25 @@ } case _CHECK_PERIODIC: { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_ERROR(); - } + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_ERROR(); } break; } + /* _CHECK_PERIODIC_AT_END is not a viable micro-op for tier 2 because it is replaced */ + case _CHECK_PERIODIC_IF_NOT_YIELD_FROM: { oparg = CURRENT_OPARG(); if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_ERROR(); - } + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_ERROR(); } } break; @@ -7443,6 +7437,14 @@ break; } + case _HANDLE_PENDING_AND_DEOPT: { + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = _Py_HandlePending(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + GOTO_TIER_ONE(err ? NULL : _PyFrame_GetBytecode(frame) + CURRENT_TARGET()); + break; + } + case _ERROR_POP_N: { oparg = CURRENT_OPARG(); uint32_t target = (uint32_t)CURRENT_OPERAND0(); diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index b83ab941ed2b70..d683582761295a 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -1670,26 +1670,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -2175,26 +2167,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -2292,26 +2276,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -2409,26 +2385,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -2501,26 +2469,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -2676,26 +2636,18 @@ } result = PyStackRef_FromPyObjectSteal(result_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = result; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = result; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = result; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -3268,26 +3220,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -3659,26 +3603,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -3790,26 +3726,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -3891,26 +3819,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -4005,26 +3925,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -4128,26 +4040,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -4421,26 +4325,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -4501,26 +4397,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -6517,26 +6405,18 @@ } res = PyStackRef_FromPyObjectSteal(res_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = res; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = res; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -6692,26 +6572,18 @@ } result = PyStackRef_FromPyObjectSteal(result_o); } - // _CHECK_PERIODIC + // _CHECK_PERIODIC_AT_END { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - stack_pointer[0] = result; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } - stack_pointer += -1; + stack_pointer[0] = result; + stack_pointer += 1; + assert(WITHIN_STACK_BOUNDS()); + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } - stack_pointer[0] = result; - stack_pointer += 1; - assert(WITHIN_STACK_BOUNDS()); DISPATCH(); } @@ -7093,15 +6965,11 @@ /* Skip 1 cache entry */ // _CHECK_PERIODIC { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } // _MONITOR_JUMP_BACKWARD @@ -7484,15 +7352,11 @@ // _CHECK_PERIODIC_IF_NOT_YIELD_FROM { if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } } @@ -7721,15 +7585,11 @@ } // _CHECK_PERIODIC { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } // _JUMP_BACKWARD_NO_INTERRUPT @@ -7754,15 +7614,11 @@ /* Skip 1 cache entry */ // _CHECK_PERIODIC { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } // _JUMP_BACKWARD_NO_INTERRUPT @@ -7833,15 +7689,11 @@ /* Skip 1 cache entry */ // _CHECK_PERIODIC { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } // _JUMP_BACKWARD_NO_INTERRUPT @@ -10419,15 +10271,11 @@ // _CHECK_PERIODIC_IF_NOT_YIELD_FROM { if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) { - _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); - QSBR_QUIESCENT_STATE(tstate); - if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) { - _PyFrame_SetStackPointer(frame, stack_pointer); - int err = _Py_HandlePending(tstate); - stack_pointer = _PyFrame_GetStackPointer(frame); - if (err != 0) { - JUMP_TO_LABEL(error); - } + _PyFrame_SetStackPointer(frame, stack_pointer); + int err = check_periodics(tstate); + stack_pointer = _PyFrame_GetStackPointer(frame); + if (err != 0) { + JUMP_TO_LABEL(error); } } } diff --git a/Python/optimizer.c b/Python/optimizer.c index 6a9b6824a531ac..f06df9644a1614 100644 --- a/Python/optimizer.c +++ b/Python/optimizer.c @@ -432,6 +432,7 @@ _PyUOp_Replacements[MAX_UOP_ID + 1] = { [_ITER_JUMP_TUPLE] = _GUARD_NOT_EXHAUSTED_TUPLE, [_FOR_ITER] = _FOR_ITER_TIER_TWO, [_ITER_NEXT_LIST] = _ITER_NEXT_LIST_TIER_TWO, + [_CHECK_PERIODIC_AT_END] = _TIER2_RESUME_CHECK, }; static const uint8_t @@ -776,9 +777,12 @@ translate_bytecode_to_trace( case OPARG_REPLACED: uop = _PyUOp_Replacements[uop]; assert(uop != 0); + uint32_t next_inst = target + 1 + _PyOpcode_Caches[_PyOpcode_Deopt[opcode]] + (oparg > 255); + if (uop == _TIER2_RESUME_CHECK) { + target = next_inst; + } #ifdef Py_DEBUG - { - uint32_t next_inst = target + 1 + INLINE_CACHE_ENTRIES_FOR_ITER + (oparg > 255); + else { uint32_t jump_target = next_inst + oparg; assert(_Py_GetBaseCodeUnit(code, jump_target).op.code == END_FOR); assert(_Py_GetBaseCodeUnit(code, jump_target+1).op.code == POP_ITER); @@ -1043,9 +1047,15 @@ prepare_for_execution(_PyUOpInstruction *buffer, int length) _PyUOpInstruction *inst = &buffer[i]; int opcode = inst->opcode; int32_t target = (int32_t)uop_get_target(inst); - if (_PyUop_Flags[opcode] & (HAS_EXIT_FLAG | HAS_DEOPT_FLAG)) { - uint16_t exit_op = (_PyUop_Flags[opcode] & HAS_EXIT_FLAG) ? - _EXIT_TRACE : _DEOPT; + uint16_t exit_flags = _PyUop_Flags[opcode] & (HAS_EXIT_FLAG | HAS_DEOPT_FLAG | HAS_PERIODIC_FLAG); + if (exit_flags) { + uint16_t exit_op = _EXIT_TRACE; + if (exit_flags & HAS_DEOPT_FLAG) { + exit_op = _DEOPT; + } + else if (exit_flags & HAS_PERIODIC_FLAG) { + exit_op = _HANDLE_PENDING_AND_DEOPT; + } int32_t jump_target = target; if (is_for_iter_test[opcode]) { /* Target the POP_TOP immediately after the END_FOR, @@ -1159,6 +1169,7 @@ sanity_check(_PyExecutorObject *executor) uint16_t opcode = inst->opcode; CHECK( opcode == _DEOPT || + opcode == _HANDLE_PENDING_AND_DEOPT || opcode == _EXIT_TRACE || opcode == _ERROR_POP_N); } diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h index 6ec85a93f46b3e..2477ede3e68017 100644 --- a/Python/optimizer_cases.c.h +++ b/Python/optimizer_cases.c.h @@ -11,6 +11,8 @@ break; } + /* _CHECK_PERIODIC_AT_END is not a viable micro-op for tier 2 */ + case _CHECK_PERIODIC_IF_NOT_YIELD_FROM: { break; } @@ -3198,6 +3200,10 @@ break; } + case _HANDLE_PENDING_AND_DEOPT: { + break; + } + case _ERROR_POP_N: { break; } diff --git a/Tools/cases_generator/analyzer.py b/Tools/cases_generator/analyzer.py index a3c38ecdea3e1f..9dd7e5dbfbae7b 100644 --- a/Tools/cases_generator/analyzer.py +++ b/Tools/cases_generator/analyzer.py @@ -20,6 +20,7 @@ class Properties: error_with_pop: bool error_without_pop: bool deopts: bool + deopts_periodic: bool oparg: bool jumps: bool eval_breaker: bool @@ -58,6 +59,7 @@ def from_list(properties: list["Properties"]) -> "Properties": error_with_pop=any(p.error_with_pop for p in properties), error_without_pop=any(p.error_without_pop for p in properties), deopts=any(p.deopts for p in properties), + deopts_periodic=any(p.deopts_periodic for p in properties), oparg=any(p.oparg for p in properties), jumps=any(p.jumps for p in properties), eval_breaker=any(p.eval_breaker for p in properties), @@ -85,6 +87,7 @@ def infallible(self) -> bool: error_with_pop=False, error_without_pop=False, deopts=False, + deopts_periodic=False, oparg=False, jumps=False, eval_breaker=False, @@ -706,7 +709,7 @@ def visit(stmt: Stmt) -> None: in_if = 0 tkn_iter = iter(stmt.contents) for tkn in tkn_iter: - if tkn.kind == "IDENTIFIER" and tkn.text in ("DEOPT_IF", "ERROR_IF", "EXIT_IF"): + if tkn.kind == "IDENTIFIER" and tkn.text in ("DEOPT_IF", "ERROR_IF", "EXIT_IF", "HANDLE_PENDING_AND_DEOPT_IF", "AT_END_EXIT_IF"): in_if = 1 next(tkn_iter) elif tkn.kind == "LPAREN": @@ -833,7 +836,7 @@ def stmt_is_simple_exit(stmt: Stmt) -> bool: if len(tokens) < 4: return False return ( - tokens[0].text in ("ERROR_IF", "DEOPT_IF", "EXIT_IF") + tokens[0].text in ("ERROR_IF", "DEOPT_IF", "EXIT_IF", "AT_END_EXIT_IF") and tokens[1].text == "(" and @@ -889,11 +892,13 @@ def compute_properties(op: parser.CodeDef) -> Properties: or variable_used(op, "PyCell_SwapTakeRef") ) deopts_if = variable_used(op, "DEOPT_IF") - exits_if = variable_used(op, "EXIT_IF") - if deopts_if and exits_if: + exits_if = variable_used(op, "EXIT_IF") or variable_used(op, "AT_END_EXIT_IF") + deopts_periodic = variable_used(op, "HANDLE_PENDING_AND_DEOPT_IF") + exits_and_deopts = sum((deopts_if, exits_if, deopts_periodic)) + if exits_and_deopts > 1: tkn = op.tokens[0] raise lexer.make_syntax_error( - "Op cannot contain both EXIT_IF and DEOPT_IF", + "Op cannot contain more than one of EXIT_IF, DEOPT_IF and HANDLE_PENDING_AND_DEOPT_IF", tkn.filename, tkn.line, tkn.column, @@ -910,6 +915,7 @@ def compute_properties(op: parser.CodeDef) -> Properties: error_with_pop=error_with_pop, error_without_pop=error_without_pop, deopts=deopts_if, + deopts_periodic=deopts_periodic, side_exit=exits_if, oparg=oparg_used(op), jumps=variable_used(op, "JUMPBY"), diff --git a/Tools/cases_generator/generators_common.py b/Tools/cases_generator/generators_common.py index 4c210fbf8d28e9..cc0edcdf6006fd 100644 --- a/Tools/cases_generator/generators_common.py +++ b/Tools/cases_generator/generators_common.py @@ -111,7 +111,9 @@ class Emitter: def __init__(self, out: CWriter, labels: dict[str, Label], cannot_escape: bool = False): self._replacers = { "EXIT_IF": self.exit_if, + "AT_END_EXIT_IF": self.exit_if_after, "DEOPT_IF": self.deopt_if, + "HANDLE_PENDING_AND_DEOPT_IF": self.periodic_if, "ERROR_IF": self.error_if, "ERROR_NO_POP": self.error_no_pop, "DECREF_INPUTS": self.decref_inputs, @@ -171,6 +173,29 @@ def deopt_if( exit_if = deopt_if + def periodic_if( + self, + tkn: Token, + tkn_iter: TokenIterator, + uop: CodeSection, + storage: Storage, + inst: Instruction | None, + ) -> bool: + raise NotImplementedError("HANDLE_PENDING_AND_DEOPT_IF not support in tier 1") + + def exit_if_after( + self, + tkn: Token, + tkn_iter: TokenIterator, + uop: CodeSection, + storage: Storage, + inst: Instruction | None, + ) -> bool: + storage.clear_inputs("in AT_END_EXIT_IF") + storage.flush(self.out) + storage.stack.clear(self.out) + return self.exit_if(tkn, tkn_iter, uop, storage, inst) + def goto_error(self, offset: int, storage: Storage) -> str: if offset > 0: return f"JUMP_TO_LABEL(pop_{offset}_error);" @@ -692,6 +717,8 @@ def cflags(p: Properties) -> str: flags.append("HAS_EVAL_BREAK_FLAG") if p.deopts: flags.append("HAS_DEOPT_FLAG") + if p.deopts_periodic: + flags.append("HAS_PERIODIC_FLAG") if p.side_exit: flags.append("HAS_EXIT_FLAG") if not p.infallible: diff --git a/Tools/cases_generator/opcode_metadata_generator.py b/Tools/cases_generator/opcode_metadata_generator.py index 0bcdc5395dcd8e..b649b38123388d 100644 --- a/Tools/cases_generator/opcode_metadata_generator.py +++ b/Tools/cases_generator/opcode_metadata_generator.py @@ -53,10 +53,9 @@ "ESCAPES", "EXIT", "PURE", - "PASSTHROUGH", - "OPARG_AND_1", "ERROR_NO_POP", "NO_SAVE_IP", + "PERIODIC", ] diff --git a/Tools/cases_generator/tier1_generator.py b/Tools/cases_generator/tier1_generator.py index 32dc346d5e891a..2fc6794f6a0887 100644 --- a/Tools/cases_generator/tier1_generator.py +++ b/Tools/cases_generator/tier1_generator.py @@ -132,7 +132,7 @@ def uses_this(inst: Instruction) -> bool: continue for tkn in uop.body.tokens(): if (tkn.kind == "IDENTIFIER" - and (tkn.text in {"DEOPT_IF", "EXIT_IF"})): + and (tkn.text in {"DEOPT_IF", "EXIT_IF", "AT_END_EXIT_IF"})): return True return False diff --git a/Tools/cases_generator/tier2_generator.py b/Tools/cases_generator/tier2_generator.py index fc3bc47286f7f6..1bb5f48658ddfc 100644 --- a/Tools/cases_generator/tier2_generator.py +++ b/Tools/cases_generator/tier2_generator.py @@ -111,6 +111,8 @@ def exit_if( self.emit("}\n") return not always_true(first_tkn) + periodic_if = deopt_if + def oparg( self, tkn: Token, From 046a4e39b3f8ac5cb13ea292418c9c3767b0074d Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 9 Aug 2025 21:25:49 +0300 Subject: [PATCH 87/87] gh-136571: Convert more code in datetime to Argument Clinic (GH-136573) This adds signatures for some classes and methods. date.fromisocalendar() can now raise OverflowError for arguments that don't fit in the C int. --- Doc/library/datetime.rst | 2 +- .../pycore_global_objects_fini_generated.h | 10 + Include/internal/pycore_global_strings.h | 10 + .../internal/pycore_runtime_init_generated.h | 10 + .../internal/pycore_unicodeobject_generated.h | 40 + Lib/_pydatetime.py | 12 +- Lib/test/datetimetester.py | 22 +- Lib/test/test_inspect/test_inspect.py | 15 + ...-07-12-14-15-47.gh-issue-136571.muHmBv.rst | 2 + Modules/_datetimemodule.c | 1037 +++++---- Modules/clinic/_datetimemodule.c.h | 1907 +++++++++++++++-- 11 files changed, 2407 insertions(+), 660 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-07-12-14-15-47.gh-issue-136571.muHmBv.rst diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst index 16ed3215bc2c1a..7010f99c54da0a 100644 --- a/Doc/library/datetime.rst +++ b/Doc/library/datetime.rst @@ -2383,7 +2383,7 @@ locations where different offsets are used in different days of the year or where historical changes have been made to civil time. -.. class:: timezone(offset, name=None) +.. class:: timezone(offset[, name]) The *offset* argument must be specified as a :class:`timedelta` object representing the difference between the local time and UTC. It must diff --git a/Include/internal/pycore_global_objects_fini_generated.h b/Include/internal/pycore_global_objects_fini_generated.h index 5e7dda3a3715a1..ca4744789f1c23 100644 --- a/Include/internal/pycore_global_objects_fini_generated.h +++ b/Include/internal/pycore_global_objects_fini_generated.h @@ -891,7 +891,9 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) { _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(d_parameter_type)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(data)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(database)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(date)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(day)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(days)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(debug)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(decode)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(decoder)); @@ -998,6 +1000,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) { _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(hi)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(hook)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(hour)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(hours)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(id)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(ident)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(identity_hint)); @@ -1092,8 +1095,10 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) { _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(metadata)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(method)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(microsecond)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(microseconds)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(milliseconds)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(minute)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(minutes)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(mod)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(mode)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(module)); @@ -1204,6 +1209,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) { _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(scheduler)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(script)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(second)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(seconds)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(security_attributes)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(seek)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(seekable)); @@ -1267,9 +1273,12 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) { _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(text)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(threading)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(throw)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(time)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(timeout)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(timer)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(times)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(timespec)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(timestamp)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(timetuple)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(timeunit)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(top)); @@ -1301,6 +1310,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) { _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(wbits)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(week)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(weekday)); + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(weeks)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(which)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(who)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(withdata)); diff --git a/Include/internal/pycore_global_strings.h b/Include/internal/pycore_global_strings.h index 6908cbf78f349e..47bb6fcecc1ba6 100644 --- a/Include/internal/pycore_global_strings.h +++ b/Include/internal/pycore_global_strings.h @@ -382,7 +382,9 @@ struct _Py_global_strings { STRUCT_FOR_ID(d_parameter_type) STRUCT_FOR_ID(data) STRUCT_FOR_ID(database) + STRUCT_FOR_ID(date) STRUCT_FOR_ID(day) + STRUCT_FOR_ID(days) STRUCT_FOR_ID(debug) STRUCT_FOR_ID(decode) STRUCT_FOR_ID(decoder) @@ -489,6 +491,7 @@ struct _Py_global_strings { STRUCT_FOR_ID(hi) STRUCT_FOR_ID(hook) STRUCT_FOR_ID(hour) + STRUCT_FOR_ID(hours) STRUCT_FOR_ID(id) STRUCT_FOR_ID(ident) STRUCT_FOR_ID(identity_hint) @@ -583,8 +586,10 @@ struct _Py_global_strings { STRUCT_FOR_ID(metadata) STRUCT_FOR_ID(method) STRUCT_FOR_ID(microsecond) + STRUCT_FOR_ID(microseconds) STRUCT_FOR_ID(milliseconds) STRUCT_FOR_ID(minute) + STRUCT_FOR_ID(minutes) STRUCT_FOR_ID(mod) STRUCT_FOR_ID(mode) STRUCT_FOR_ID(module) @@ -695,6 +700,7 @@ struct _Py_global_strings { STRUCT_FOR_ID(scheduler) STRUCT_FOR_ID(script) STRUCT_FOR_ID(second) + STRUCT_FOR_ID(seconds) STRUCT_FOR_ID(security_attributes) STRUCT_FOR_ID(seek) STRUCT_FOR_ID(seekable) @@ -758,9 +764,12 @@ struct _Py_global_strings { STRUCT_FOR_ID(text) STRUCT_FOR_ID(threading) STRUCT_FOR_ID(throw) + STRUCT_FOR_ID(time) STRUCT_FOR_ID(timeout) STRUCT_FOR_ID(timer) STRUCT_FOR_ID(times) + STRUCT_FOR_ID(timespec) + STRUCT_FOR_ID(timestamp) STRUCT_FOR_ID(timetuple) STRUCT_FOR_ID(timeunit) STRUCT_FOR_ID(top) @@ -792,6 +801,7 @@ struct _Py_global_strings { STRUCT_FOR_ID(wbits) STRUCT_FOR_ID(week) STRUCT_FOR_ID(weekday) + STRUCT_FOR_ID(weeks) STRUCT_FOR_ID(which) STRUCT_FOR_ID(who) STRUCT_FOR_ID(withdata) diff --git a/Include/internal/pycore_runtime_init_generated.h b/Include/internal/pycore_runtime_init_generated.h index da2ed7422c9deb..70a54f5273e446 100644 --- a/Include/internal/pycore_runtime_init_generated.h +++ b/Include/internal/pycore_runtime_init_generated.h @@ -889,7 +889,9 @@ extern "C" { INIT_ID(d_parameter_type), \ INIT_ID(data), \ INIT_ID(database), \ + INIT_ID(date), \ INIT_ID(day), \ + INIT_ID(days), \ INIT_ID(debug), \ INIT_ID(decode), \ INIT_ID(decoder), \ @@ -996,6 +998,7 @@ extern "C" { INIT_ID(hi), \ INIT_ID(hook), \ INIT_ID(hour), \ + INIT_ID(hours), \ INIT_ID(id), \ INIT_ID(ident), \ INIT_ID(identity_hint), \ @@ -1090,8 +1093,10 @@ extern "C" { INIT_ID(metadata), \ INIT_ID(method), \ INIT_ID(microsecond), \ + INIT_ID(microseconds), \ INIT_ID(milliseconds), \ INIT_ID(minute), \ + INIT_ID(minutes), \ INIT_ID(mod), \ INIT_ID(mode), \ INIT_ID(module), \ @@ -1202,6 +1207,7 @@ extern "C" { INIT_ID(scheduler), \ INIT_ID(script), \ INIT_ID(second), \ + INIT_ID(seconds), \ INIT_ID(security_attributes), \ INIT_ID(seek), \ INIT_ID(seekable), \ @@ -1265,9 +1271,12 @@ extern "C" { INIT_ID(text), \ INIT_ID(threading), \ INIT_ID(throw), \ + INIT_ID(time), \ INIT_ID(timeout), \ INIT_ID(timer), \ INIT_ID(times), \ + INIT_ID(timespec), \ + INIT_ID(timestamp), \ INIT_ID(timetuple), \ INIT_ID(timeunit), \ INIT_ID(top), \ @@ -1299,6 +1308,7 @@ extern "C" { INIT_ID(wbits), \ INIT_ID(week), \ INIT_ID(weekday), \ + INIT_ID(weeks), \ INIT_ID(which), \ INIT_ID(who), \ INIT_ID(withdata), \ diff --git a/Include/internal/pycore_unicodeobject_generated.h b/Include/internal/pycore_unicodeobject_generated.h index b1f411945e7856..89444f4fb83b94 100644 --- a/Include/internal/pycore_unicodeobject_generated.h +++ b/Include/internal/pycore_unicodeobject_generated.h @@ -1316,10 +1316,18 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(date); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(day); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(days); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(debug); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); @@ -1744,6 +1752,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(hours); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(id); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); @@ -2120,6 +2132,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(microseconds); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(milliseconds); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); @@ -2128,6 +2144,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(minutes); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(mod); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); @@ -2568,6 +2588,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(seconds); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(security_attributes); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); @@ -2820,6 +2844,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(time); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(timeout); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); @@ -2832,6 +2860,14 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(timespec); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(timestamp); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(timetuple); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); @@ -2956,6 +2992,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(weeks); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(which); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); diff --git a/Lib/_pydatetime.py b/Lib/_pydatetime.py index bc35823f70144e..0955005df5ccee 100644 --- a/Lib/_pydatetime.py +++ b/Lib/_pydatetime.py @@ -1083,7 +1083,7 @@ def fromisocalendar(cls, year, week, day): @classmethod def strptime(cls, date_string, format): - """Parse a date string according to the given format (like time.strptime()).""" + """Parse string according to the given date format (like time.strptime()).""" import _strptime return _strptime._strptime_datetime_date(cls, date_string, format) @@ -1310,7 +1310,7 @@ def __reduce__(self): class tzinfo: - """Abstract base class for time zone info classes. + """Abstract base class for time zone info objects. Subclasses must override the tzname(), utcoffset() and dst() methods. """ @@ -1468,7 +1468,7 @@ def __new__(cls, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold @classmethod def strptime(cls, date_string, format): - """string, format -> new time parsed from a string (like time.strptime()).""" + """Parse string according to the given time format (like time.strptime()).""" import _strptime return _strptime._strptime_datetime_time(cls, date_string, format) @@ -1776,7 +1776,7 @@ def __reduce__(self): class datetime(date): - """datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) + """A combination of a date and a time. The year, month and day arguments are required. tzinfo may be None, or an instance of a tzinfo subclass. The remaining arguments may be ints. @@ -2209,7 +2209,7 @@ def __str__(self): @classmethod def strptime(cls, date_string, format): - 'string, format -> new datetime parsed from a string (like time.strptime()).' + """Parse string according to the given date and time format (like time.strptime()).""" import _strptime return _strptime._strptime_datetime_datetime(cls, date_string, format) @@ -2435,6 +2435,8 @@ def _isoweek1monday(year): class timezone(tzinfo): + """Fixed offset from UTC implementation of tzinfo.""" + __slots__ = '_offset', '_name' # Sentinel value to disallow None diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index 3bd3a866570042..4e42ae52765d0f 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -2147,14 +2147,20 @@ def test_fromisocalendar_value_errors(self): (10000, 1, 1), (0, 1, 1), (9999999, 1, 1), + ] + for isocal in isocals: + with self.subTest(isocal=isocal): + with self.assertRaises(ValueError): + self.theclass.fromisocalendar(*isocal) + + isocals = [ (2<<32, 1, 1), (2019, 2<<32, 1), (2019, 1, 2<<32), ] - for isocal in isocals: with self.subTest(isocal=isocal): - with self.assertRaises(ValueError): + with self.assertRaises((ValueError, OverflowError)): self.theclass.fromisocalendar(*isocal) def test_fromisocalendar_type_errors(self): @@ -2301,7 +2307,7 @@ def test_isoformat_timezone(self): dt = dt_base.replace(tzinfo=tzi) exp = exp_base + exp_tz with self.subTest(tzi=tzi): - assert dt.isoformat() == exp + self.assertEqual(dt.isoformat(), exp) def test_format(self): dt = self.theclass(2007, 9, 10, 4, 5, 1, 123) @@ -3349,7 +3355,7 @@ def test_fromisoformat_timezone(self): with self.subTest(tstr=dtstr): dt_rt = self.theclass.fromisoformat(dtstr) - assert dt == dt_rt, dt_rt + self.assertEqual(dt_rt, dt) def test_fromisoformat_separators(self): separators = [ @@ -3865,7 +3871,7 @@ def test_isoformat_timezone(self): t = t_base.replace(tzinfo=tzi) exp = exp_base + exp_tz with self.subTest(tzi=tzi): - assert t.isoformat() == exp + self.assertEqual(t.isoformat(), exp) def test_1653736(self): # verify it doesn't accept extra keyword arguments @@ -4350,7 +4356,7 @@ def utcoffset(self, t): elif x is d2: expected = -1 else: - assert y is d2 + self.assertIs(y, d2) expected = 1 self.assertEqual(got, expected) @@ -4678,7 +4684,7 @@ def test_fromisoformat_timezone(self): with self.subTest(tstr=tstr): t_rt = self.theclass.fromisoformat(tstr) - assert t == t_rt + self.assertEqual(t_rt, t) def test_fromisoformat_timespecs(self): time_bases = [ @@ -5515,7 +5521,7 @@ def utcoffset(self, t): elif x is d2: expected = timedelta(minutes=(11-59)-0) else: - assert y is d2 + self.assertIs(y, d2) expected = timedelta(minutes=0-(11-59)) self.assertEqual(got, expected) diff --git a/Lib/test/test_inspect/test_inspect.py b/Lib/test/test_inspect/test_inspect.py index 30e01b8cd87a75..c8c1a5226114b9 100644 --- a/Lib/test/test_inspect/test_inspect.py +++ b/Lib/test/test_inspect/test_inspect.py @@ -5831,6 +5831,21 @@ def test_collections_abc_module_has_signatures(self): import collections.abc self._test_module_has_signatures(collections.abc) + def test_datetime_module_has_signatures(self): + # Only test if the C implementation is available. + import_helper.import_module('_datetime') + import datetime + no_signature = {'tzinfo'} + unsupported_signature = {'timezone'} + methods_unsupported_signature = { + 'date': {'replace'}, + 'time': {'replace'}, + 'datetime': {'replace', 'combine'}, + } + self._test_module_has_signatures(datetime, + no_signature, unsupported_signature, + methods_unsupported_signature=methods_unsupported_signature) + def test_errno_module_has_signatures(self): import errno self._test_module_has_signatures(errno) diff --git a/Misc/NEWS.d/next/Library/2025-07-12-14-15-47.gh-issue-136571.muHmBv.rst b/Misc/NEWS.d/next/Library/2025-07-12-14-15-47.gh-issue-136571.muHmBv.rst new file mode 100644 index 00000000000000..37f535f564883c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-07-12-14-15-47.gh-issue-136571.muHmBv.rst @@ -0,0 +1,2 @@ +:meth:`datetime.date.fromisocalendar` can now raise OverflowError for out of +range arguments. diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 3f7afbe27d7358..e0bd4993817277 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -331,8 +331,10 @@ class datetime.datetime "PyDateTime_DateTime *" "get_datetime_state()->datetime_ class datetime.date "PyDateTime_Date *" "get_datetime_state()->date_type" class datetime.time "PyDateTime_Time *" "get_datetime_state()->time_type" class datetime.IsoCalendarDate "PyDateTime_IsoCalendarDate *" "get_datetime_state()->isocalendar_date_type" +class datetime.timedelta "PyDateTime_Delta *" "&PyDateTime_DeltaType" +class datetime.timezone "PyDateTime_TimeZone *" "&PyDateTime_TimeZoneType" [clinic start generated code]*/ -/*[clinic end generated code: output=da39a3ee5e6b4b0d input=c8f3d834a860d50a]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=c54b9adf60082f0d]*/ #include "clinic/_datetimemodule.c.h" @@ -1171,19 +1173,18 @@ new_datetime_ex(int, int, int, int, int, int, int, PyObject *, PyTypeObject *); /* Create date instance with no range checking, or call subclass constructor */ static PyObject * -new_date_subclass_ex(int year, int month, int day, PyObject *cls) +new_date_subclass_ex(int year, int month, int day, PyTypeObject *cls) { PyObject *result; // We have "fast path" constructors for two subclasses: date and datetime - if ((PyTypeObject *)cls == DATE_TYPE(NO_STATE)) { - result = new_date_ex(year, month, day, (PyTypeObject *)cls); + if (cls == DATE_TYPE(NO_STATE)) { + result = new_date_ex(year, month, day, cls); } - else if ((PyTypeObject *)cls == DATETIME_TYPE(NO_STATE)) { - result = new_datetime_ex(year, month, day, 0, 0, 0, 0, Py_None, - (PyTypeObject *)cls); + else if (cls == DATETIME_TYPE(NO_STATE)) { + result = new_datetime_ex(year, month, day, 0, 0, 0, 0, Py_None, cls); } else { - result = PyObject_CallFunction(cls, "iii", year, month, day); + result = PyObject_CallFunction((PyObject *)cls, "iii", year, month, day); } return result; @@ -1235,7 +1236,7 @@ new_datetime_ex(int year, int month, int day, int hour, int minute, new_datetime_ex2(y, m, d, hh, mm, ss, us, tzinfo, fold, DATETIME_TYPE(NO_STATE)) static PyObject * -call_subclass_fold(PyObject *cls, int fold, const char *format, ...) +call_subclass_fold(PyTypeObject *cls, int fold, const char *format, ...) { PyObject *kwargs = NULL, *res = NULL; va_list va; @@ -1261,7 +1262,7 @@ call_subclass_fold(PyObject *cls, int fold, const char *format, ...) goto Done; } } - res = PyObject_Call(cls, args, kwargs); + res = PyObject_Call((PyObject *)cls, args, kwargs); Done: Py_DECREF(args); Py_XDECREF(kwargs); @@ -1271,10 +1272,10 @@ call_subclass_fold(PyObject *cls, int fold, const char *format, ...) static PyObject * new_datetime_subclass_fold_ex(int year, int month, int day, int hour, int minute, int second, int usecond, PyObject *tzinfo, - int fold, PyObject *cls) + int fold, PyTypeObject *cls) { PyObject* dt; - if ((PyTypeObject*)cls == DATETIME_TYPE(NO_STATE)) { + if (cls == DATETIME_TYPE(NO_STATE)) { // Use the fast path constructor dt = new_datetime(year, month, day, hour, minute, second, usecond, tzinfo, fold); @@ -1291,7 +1292,7 @@ new_datetime_subclass_fold_ex(int year, int month, int day, int hour, int minute static PyObject * new_datetime_subclass_ex(int year, int month, int day, int hour, int minute, int second, int usecond, PyObject *tzinfo, - PyObject *cls) { + PyTypeObject *cls) { return new_datetime_subclass_fold_ex(year, month, day, hour, minute, second, usecond, tzinfo, 0, cls); @@ -1340,10 +1341,10 @@ new_time_ex(int hour, int minute, int second, int usecond, static PyObject * new_time_subclass_fold_ex(int hour, int minute, int second, int usecond, - PyObject *tzinfo, int fold, PyObject *cls) + PyObject *tzinfo, int fold, PyTypeObject *cls) { PyObject *t; - if ((PyTypeObject*)cls == TIME_TYPE(NO_STATE)) { + if (cls == TIME_TYPE(NO_STATE)) { // Use the fast path constructor t = new_time(hour, minute, second, usecond, tzinfo, fold); } @@ -2768,38 +2769,39 @@ accum(const char* tag, PyObject *sofar, PyObject *num, PyObject *factor, return NULL; } +/*[clinic input] +@classmethod +datetime.timedelta.__new__ as delta_new + + days: object(c_default="NULL") = 0 + seconds: object(c_default="NULL") = 0 + microseconds: object(c_default="NULL") = 0 + milliseconds: object(c_default="NULL") = 0 + minutes: object(c_default="NULL") = 0 + hours: object(c_default="NULL") = 0 + weeks: object(c_default="NULL") = 0 + +Difference between two datetime values. + +All arguments are optional and default to 0. +Arguments may be integers or floats, and may be positive or negative. +[clinic start generated code]*/ + static PyObject * -delta_new(PyTypeObject *type, PyObject *args, PyObject *kw) +delta_new_impl(PyTypeObject *type, PyObject *days, PyObject *seconds, + PyObject *microseconds, PyObject *milliseconds, + PyObject *minutes, PyObject *hours, PyObject *weeks) +/*[clinic end generated code: output=61d7e02a92a97700 input=e8cd54819295d34b]*/ { PyObject *self = NULL; PyObject *current_mod = NULL; datetime_state *st = GET_CURRENT_STATE(current_mod); - /* Argument objects. */ - PyObject *day = NULL; - PyObject *second = NULL; - PyObject *us = NULL; - PyObject *ms = NULL; - PyObject *minute = NULL; - PyObject *hour = NULL; - PyObject *week = NULL; - PyObject *x = NULL; /* running sum of microseconds */ PyObject *y = NULL; /* temp sum of microseconds */ double leftover_us = 0.0; - static char *keywords[] = { - "days", "seconds", "microseconds", "milliseconds", - "minutes", "hours", "weeks", NULL - }; - - if (PyArg_ParseTupleAndKeywords(args, kw, "|OOOOOOO:__new__", - keywords, - &day, &second, &us, - &ms, &minute, &hour, &week) == 0) - goto Done; - x = PyLong_FromLong(0); if (x == NULL) goto Done; @@ -2810,32 +2812,32 @@ delta_new(PyTypeObject *type, PyObject *args, PyObject *kw) if (x == NULL) \ goto Done - if (us) { - y = accum("microseconds", x, us, _PyLong_GetOne(), &leftover_us); + if (microseconds) { + y = accum("microseconds", x, microseconds, _PyLong_GetOne(), &leftover_us); CLEANUP; } - if (ms) { - y = accum("milliseconds", x, ms, CONST_US_PER_MS(st), &leftover_us); + if (milliseconds) { + y = accum("milliseconds", x, milliseconds, CONST_US_PER_MS(st), &leftover_us); CLEANUP; } - if (second) { - y = accum("seconds", x, second, CONST_US_PER_SECOND(st), &leftover_us); + if (seconds) { + y = accum("seconds", x, seconds, CONST_US_PER_SECOND(st), &leftover_us); CLEANUP; } - if (minute) { - y = accum("minutes", x, minute, CONST_US_PER_MINUTE(st), &leftover_us); + if (minutes) { + y = accum("minutes", x, minutes, CONST_US_PER_MINUTE(st), &leftover_us); CLEANUP; } - if (hour) { - y = accum("hours", x, hour, CONST_US_PER_HOUR(st), &leftover_us); + if (hours) { + y = accum("hours", x, hours, CONST_US_PER_HOUR(st), &leftover_us); CLEANUP; } - if (day) { - y = accum("days", x, day, CONST_US_PER_DAY(st), &leftover_us); + if (days) { + y = accum("days", x, days, CONST_US_PER_DAY(st), &leftover_us); CLEANUP; } - if (week) { - y = accum("weeks", x, week, CONST_US_PER_WEEK(st), &leftover_us); + if (weeks) { + y = accum("weeks", x, weeks, CONST_US_PER_WEEK(st), &leftover_us); CLEANUP; } if (leftover_us) { @@ -3034,13 +3036,6 @@ static PyMethodDef delta_methods[] = { {NULL, NULL}, }; -static const char delta_doc[] = -PyDoc_STR("Difference between two datetime values.\n\n" - "timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, " - "minutes=0, hours=0, weeks=0)\n\n" - "All arguments are optional and default to 0.\n" - "Arguments may be integers or floats, and may be positive or negative."); - static PyNumberMethods delta_as_number = { delta_add, /* nb_add */ delta_subtract, /* nb_subtract */ @@ -3098,7 +3093,7 @@ static PyTypeObject PyDateTime_DeltaType = { 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ - delta_doc, /* tp_doc */ + delta_new__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ delta_richcompare, /* tp_richcompare */ @@ -3174,8 +3169,6 @@ static PyGetSetDef date_getset[] = { /* Constructors. */ -static char *date_kws[] = {"year", "month", "day", NULL}; - static PyObject * date_from_pickle(PyTypeObject *type, PyObject *state) { @@ -3193,11 +3186,6 @@ date_from_pickle(PyTypeObject *type, PyObject *state) static PyObject * date_new(PyTypeObject *type, PyObject *args, PyObject *kw) { - PyObject *self = NULL; - int year; - int month; - int day; - /* Check for invocation from pickle with __getstate__ state */ if (PyTuple_GET_SIZE(args) == 1) { PyObject *state = PyTuple_GET_ITEM(args, 0); @@ -3223,22 +3211,36 @@ date_new(PyTypeObject *type, PyObject *args, PyObject *kw) } return NULL; } - self = date_from_pickle(type, state); + PyObject *self = date_from_pickle(type, state); Py_DECREF(state); return self; } } } - if (PyArg_ParseTupleAndKeywords(args, kw, "iii", date_kws, - &year, &month, &day)) { - self = new_date_ex(year, month, day, type); - } - return self; + return datetime_date(type, args, kw); +} + +/*[clinic input] +@classmethod +datetime.date.__new__ + + year: int + month: int + day: int + +Concrete date type. +[clinic start generated code]*/ + +static PyObject * +datetime_date_impl(PyTypeObject *type, int year, int month, int day) +/*[clinic end generated code: output=6654caa3dea7d518 input=fd1bac0658690455]*/ +{ + return new_date_ex(year, month, day, type); } static PyObject * -date_fromtimestamp(PyObject *cls, PyObject *obj) +date_fromtimestamp(PyTypeObject *cls, PyObject *obj) { struct tm tm; time_t t; @@ -3260,8 +3262,18 @@ date_fromtimestamp(PyObject *cls, PyObject *obj) * only way to be sure of that is to *call* time.time(). That's not * generally the same as calling C's time. */ +/*[clinic input] +@classmethod +datetime.date.today + +Current date or datetime. + +Equivalent to fromtimestamp(time.time()). +[clinic start generated code]*/ + static PyObject * -date_today(PyObject *cls, PyObject *Py_UNUSED(dummy)) +datetime_date_today_impl(PyTypeObject *type) +/*[clinic end generated code: output=d5474697df6b251c input=21688afa289c0a06]*/ { PyObject *time; PyObject *result; @@ -3275,7 +3287,7 @@ date_today(PyObject *cls, PyObject *Py_UNUSED(dummy)) * time.time() delivers; if someone were gonzo about optimization, * date.today() could get away with plain C time(). */ - result = PyObject_CallMethodOneArg(cls, &_Py_ID(fromtimestamp), time); + result = PyObject_CallMethodOneArg((PyObject*)type, &_Py_ID(fromtimestamp), time); Py_DECREF(time); return result; } @@ -3297,7 +3309,7 @@ static PyObject * datetime_date_fromtimestamp_impl(PyTypeObject *type, PyObject *timestamp) /*[clinic end generated code: output=59def4e32c028fb6 input=eabb3fe7f40491fe]*/ { - return date_fromtimestamp((PyObject *) type, timestamp); + return date_fromtimestamp(type, timestamp); } /* bpo-36025: This is a wrapper for API compatibility with the public C API, @@ -3311,52 +3323,58 @@ datetime_date_fromtimestamp_capi(PyObject *cls, PyObject *args) PyObject *result = NULL; if (PyArg_UnpackTuple(args, "fromtimestamp", 1, 1, ×tamp)) { - result = date_fromtimestamp(cls, timestamp); + result = date_fromtimestamp((PyTypeObject *)cls, timestamp); } return result; } -/* Return new date from proleptic Gregorian ordinal. Raises ValueError if - * the ordinal is out of range. - */ -static PyObject * -date_fromordinal(PyObject *cls, PyObject *args) -{ - PyObject *result = NULL; - int ordinal; +/*[clinic input] +@classmethod +datetime.date.fromordinal - if (PyArg_ParseTuple(args, "i:fromordinal", &ordinal)) { - int year; - int month; - int day; + ordinal: int + / - if (ordinal < 1) - PyErr_SetString(PyExc_ValueError, "ordinal must be " - ">= 1"); - else { - ord_to_ymd(ordinal, &year, &month, &day); - result = new_date_subclass_ex(year, month, day, cls); - } - } - return result; -} +Construct a date from a proleptic Gregorian ordinal. + +January 1 of year 1 is day 1. Only the year, month and day are +non-zero in the result. +[clinic start generated code]*/ -/* Return the new date from a string as generated by date.isoformat() */ static PyObject * -date_fromisoformat(PyObject *cls, PyObject *dtstr) +datetime_date_fromordinal_impl(PyTypeObject *type, int ordinal) +/*[clinic end generated code: output=ea5cc69d86614a6b input=a3a4eedf582f145e]*/ { - assert(dtstr != NULL); + int year; + int month; + int day; - if (!PyUnicode_Check(dtstr)) { - PyErr_SetString(PyExc_TypeError, - "fromisoformat: argument must be str"); + if (ordinal < 1) { + PyErr_SetString(PyExc_ValueError, "ordinal must be >= 1"); return NULL; } + ord_to_ymd(ordinal, &year, &month, &day); + return new_date_subclass_ex(year, month, day, type); +} + +/*[clinic input] +@classmethod +datetime.date.fromisoformat + string: unicode + / + +Construct a date from a string in ISO 8601 format. +[clinic start generated code]*/ + +static PyObject * +datetime_date_fromisoformat_impl(PyTypeObject *type, PyObject *string) +/*[clinic end generated code: output=8b9f9324904fca02 input=73c64216c10bcc8e]*/ +{ Py_ssize_t len; - const char *dt_ptr = PyUnicode_AsUTF8AndSize(dtstr, &len); + const char *dt_ptr = PyUnicode_AsUTF8AndSize(string, &len); if (dt_ptr == NULL) { goto invalid_string_error; } @@ -3375,33 +3393,32 @@ date_fromisoformat(PyObject *cls, PyObject *dtstr) goto invalid_string_error; } - return new_date_subclass_ex(year, month, day, cls); + return new_date_subclass_ex(year, month, day, type); invalid_string_error: - PyErr_Format(PyExc_ValueError, "Invalid isoformat string: %R", dtstr); + PyErr_Format(PyExc_ValueError, "Invalid isoformat string: %R", string); return NULL; } -static PyObject * -date_fromisocalendar(PyObject *cls, PyObject *args, PyObject *kw) -{ - static char *keywords[] = { - "year", "week", "day", NULL - }; +/*[clinic input] +@classmethod +datetime.date.fromisocalendar - int year, week, day; - if (PyArg_ParseTupleAndKeywords(args, kw, "iii:fromisocalendar", - keywords, - &year, &week, &day) == 0) { - if (PyErr_ExceptionMatches(PyExc_OverflowError)) { - PyErr_Format(PyExc_ValueError, - "ISO calendar component out of range"); + year: int + week: int + day: int - } - return NULL; - } +Construct a date from the ISO year, week number and weekday. + +This is the inverse of the date.isocalendar() function. +[clinic start generated code]*/ +static PyObject * +datetime_date_fromisocalendar_impl(PyTypeObject *type, int year, int week, + int day) +/*[clinic end generated code: output=7b26e15115d24df6 input=fbb05b53d6fb51d8]*/ +{ int month; int rv = iso_to_ymd(year, week, day, &year, &month, &day); @@ -3422,26 +3439,34 @@ date_fromisocalendar(PyObject *cls, PyObject *args, PyObject *kw) return NULL; } - return new_date_subclass_ex(year, month, day, cls); + return new_date_subclass_ex(year, month, day, type); } -/* Return new date from _strptime.strptime_datetime_date(). */ +/*[clinic input] +@classmethod +datetime.date.strptime + + string: unicode + format: unicode + / + +Parse string according to the given date format (like time.strptime()). +[clinic start generated code]*/ + static PyObject * -date_strptime(PyObject *cls, PyObject *args) +datetime_date_strptime_impl(PyTypeObject *type, PyObject *string, + PyObject *format) +/*[clinic end generated code: output=454d473bee2d5161 input=001904ab34f594a1]*/ { - PyObject *string, *format, *result; - - if (!PyArg_ParseTuple(args, "UU:strptime", &string, &format)) { - return NULL; - } + PyObject *result; PyObject *module = PyImport_Import(&_Py_ID(_strptime)); if (module == NULL) { return NULL; } result = PyObject_CallMethodObjArgs(module, - &_Py_ID(_strptime_datetime_date), cls, - string, format, NULL); + &_Py_ID(_strptime_datetime_date), + (PyObject *)type, string, format, NULL); Py_DECREF(module); return result; } @@ -3465,8 +3490,7 @@ add_date_timedelta(PyDateTime_Date *date, PyDateTime_Delta *delta, int negate) int day = GET_DAY(date) + (negate ? -deltadays : deltadays); if (normalize_date(&year, &month, &day) >= 0) - result = new_date_subclass_ex(year, month, day, - (PyObject* )Py_TYPE(date)); + result = new_date_subclass_ex(year, month, day, Py_TYPE(date)); return result; } @@ -3558,20 +3582,26 @@ date_ctime(PyObject *self, PyObject *Py_UNUSED(dummy)) return format_ctime(self, 0, 0, 0); } +/*[clinic input] +datetime.date.strftime + + self: self(type="PyObject *") + format: unicode + +Format using strftime(). + +Example: "%d/%m/%Y, %H:%M:%S". +[clinic start generated code]*/ + static PyObject * -date_strftime(PyObject *self, PyObject *args, PyObject *kw) +datetime_date_strftime_impl(PyObject *self, PyObject *format) +/*[clinic end generated code: output=6529b70095e16778 input=72af55077e606ed8]*/ { /* This method can be inherited, and needs to call the * timetuple() method appropriate to self's class. */ PyObject *result; PyObject *tuple; - PyObject *format; - static char *keywords[] = {"format", NULL}; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "U:strftime", keywords, - &format)) - return NULL; tuple = PyObject_CallMethodNoArgs(self, &_Py_ID(timetuple)); if (tuple == NULL) @@ -3581,14 +3611,20 @@ date_strftime(PyObject *self, PyObject *args, PyObject *kw) return result; } -static PyObject * -date_format(PyObject *self, PyObject *args) -{ - PyObject *format; +/*[clinic input] +datetime.date.__format__ - if (!PyArg_ParseTuple(args, "U:__format__", &format)) - return NULL; + self: self(type="PyObject *") + format: unicode + / + +Formats self with strftime. +[clinic start generated code]*/ +static PyObject * +datetime_date___format___impl(PyObject *self, PyObject *format) +/*[clinic end generated code: output=efa0223d000a93b7 input=e417a7c84e1abaf9]*/ +{ /* if the format is zero length, return str(self) */ if (PyUnicode_GetLength(format) == 0) return PyObject_Str(self); @@ -3834,7 +3870,7 @@ datetime_date_replace_impl(PyDateTime_Date *self, int year, int month, int day) /*[clinic end generated code: output=2a9430d1e6318aeb input=0d1f02685b3e90f6]*/ { - return new_date_subclass_ex(year, month, day, (PyObject *)Py_TYPE(self)); + return new_date_subclass_ex(year, month, day, Py_TYPE(self)); } static Py_hash_t @@ -3895,38 +3931,19 @@ static PyMethodDef date_methods[] = { /* Class methods: */ DATETIME_DATE_FROMTIMESTAMP_METHODDEF - - {"fromordinal", date_fromordinal, METH_VARARGS | METH_CLASS, - PyDoc_STR("int -> date corresponding to a proleptic Gregorian " - "ordinal.")}, - - {"fromisoformat", date_fromisoformat, METH_O | METH_CLASS, - PyDoc_STR("str -> Construct a date from a string in ISO 8601 format.")}, - - {"fromisocalendar", _PyCFunction_CAST(date_fromisocalendar), - METH_VARARGS | METH_KEYWORDS | METH_CLASS, - PyDoc_STR("int, int, int -> Construct a date from the ISO year, week " - "number and weekday.\n\n" - "This is the inverse of the date.isocalendar() function")}, - - {"strptime", date_strptime, METH_VARARGS | METH_CLASS, - PyDoc_STR("string, format -> new date parsed from a string " - "(like time.strptime()).")}, - - {"today", date_today, METH_NOARGS | METH_CLASS, - PyDoc_STR("Current date or datetime: same as " - "self.__class__.fromtimestamp(time.time()).")}, + DATETIME_DATE_FROMORDINAL_METHODDEF + DATETIME_DATE_FROMISOFORMAT_METHODDEF + DATETIME_DATE_FROMISOCALENDAR_METHODDEF + DATETIME_DATE_STRPTIME_METHODDEF + DATETIME_DATE_TODAY_METHODDEF /* Instance methods: */ {"ctime", date_ctime, METH_NOARGS, PyDoc_STR("Return ctime() style string.")}, - {"strftime", _PyCFunction_CAST(date_strftime), METH_VARARGS | METH_KEYWORDS, - PyDoc_STR("format -> strftime() style string.")}, - - {"__format__", date_format, METH_VARARGS, - PyDoc_STR("Formats self with strftime.")}, + DATETIME_DATE_STRFTIME_METHODDEF + DATETIME_DATE___FORMAT___METHODDEF {"timetuple", date_timetuple, METH_NOARGS, PyDoc_STR("Return time tuple, compatible with time.localtime().")}, @@ -3961,9 +3978,6 @@ static PyMethodDef date_methods[] = { {NULL, NULL} }; -static const char date_doc[] = -PyDoc_STR("date(year, month, day) --> date object"); - static PyNumberMethods date_as_number = { date_add, /* nb_add */ date_subtract, /* nb_subtract */ @@ -3998,7 +4012,7 @@ static PyTypeObject PyDateTime_DateType = { 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ - date_doc, /* tp_doc */ + datetime_date__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ date_richcompare, /* tp_richcompare */ @@ -4201,7 +4215,8 @@ static PyMethodDef tzinfo_methods[] = { }; static const char tzinfo_doc[] = -PyDoc_STR("Abstract base class for time zone info objects."); +PyDoc_STR("Abstract base class for time zone info objects.\n\n" + "Subclasses must override the tzname(), utcoffset() and dst() methods."); static PyTypeObject PyDateTime_TZInfoType = { PyVarObject_HEAD_INIT(NULL, 0) @@ -4245,18 +4260,21 @@ static PyTypeObject PyDateTime_TZInfoType = { 0, /* tp_free */ }; -static char *timezone_kws[] = {"offset", "name", NULL}; +/*[clinic input] +@classmethod +datetime.timezone.__new__ as timezone_new + + offset: object(subclass_of="DELTA_TYPE(NO_STATE)") + name: unicode = NULL + +Fixed offset from UTC implementation of tzinfo. +[clinic start generated code]*/ static PyObject * -timezone_new(PyTypeObject *type, PyObject *args, PyObject *kw) +timezone_new_impl(PyTypeObject *type, PyObject *offset, PyObject *name) +/*[clinic end generated code: output=41a2dda500424187 input=d51255afe60382cd]*/ { - PyObject *offset; - PyObject *name = NULL; - if (PyArg_ParseTupleAndKeywords(args, kw, "O!|U:timezone", timezone_kws, - DELTA_TYPE(NO_STATE), &offset, &name)) - return new_timezone(offset, name); - - return NULL; + return new_timezone(offset, name); } static void @@ -4444,9 +4462,6 @@ static PyMethodDef timezone_methods[] = { {NULL, NULL} }; -static const char timezone_doc[] = -PyDoc_STR("Fixed offset from UTC implementation of tzinfo."); - static PyTypeObject PyDateTime_TimeZoneType = { PyVarObject_HEAD_INIT(NULL, 0) "datetime.timezone", /* tp_name */ @@ -4468,7 +4483,7 @@ static PyTypeObject PyDateTime_TimeZoneType = { 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ - timezone_doc, /* tp_doc */ + timezone_new__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ timezone_richcompare, /* tp_richcompare */ @@ -4570,9 +4585,6 @@ static PyGetSetDef time_getset[] = { * Constructors. */ -static char *time_kws[] = {"hour", "minute", "second", "microsecond", - "tzinfo", "fold", NULL}; - static PyObject * time_from_pickle(PyTypeObject *type, PyObject *state, PyObject *tzinfo) { @@ -4608,17 +4620,10 @@ time_from_pickle(PyTypeObject *type, PyObject *state, PyObject *tzinfo) static PyObject * time_new(PyTypeObject *type, PyObject *args, PyObject *kw) { - PyObject *self = NULL; - int hour = 0; - int minute = 0; - int second = 0; - int usecond = 0; - PyObject *tzinfo = Py_None; - int fold = 0; - /* Check for invocation from pickle with __getstate__ state */ if (PyTuple_GET_SIZE(args) >= 1 && PyTuple_GET_SIZE(args) <= 2) { PyObject *state = PyTuple_GET_ITEM(args, 0); + PyObject *tzinfo = Py_None; if (PyTuple_GET_SIZE(args) == 2) { tzinfo = PyTuple_GET_ITEM(args, 1); } @@ -4644,40 +4649,67 @@ time_new(PyTypeObject *type, PyObject *args, PyObject *kw) } return NULL; } - self = time_from_pickle(type, state, tzinfo); + PyObject *self = time_from_pickle(type, state, tzinfo); Py_DECREF(state); return self; } } - tzinfo = Py_None; } - if (PyArg_ParseTupleAndKeywords(args, kw, "|iiiiO$i", time_kws, - &hour, &minute, &second, &usecond, - &tzinfo, &fold)) { - self = new_time_ex2(hour, minute, second, usecond, tzinfo, fold, - type); - } - return self; + return datetime_time(type, args, kw); } -/* Return new time from _strptime.strptime_datetime_time(). */ +/*[clinic input] +@classmethod +datetime.time.__new__ + + hour: int = 0 + minute: int = 0 + second: int = 0 + microsecond: int = 0 + tzinfo: object = None + * + fold: int = 0 + +Time with time zone. + +All arguments are optional. tzinfo may be None, or an instance of +a tzinfo subclass. The remaining arguments may be ints. +[clinic start generated code]*/ + static PyObject * -time_strptime(PyObject *cls, PyObject *args) +datetime_time_impl(PyTypeObject *type, int hour, int minute, int second, + int microsecond, PyObject *tzinfo, int fold) +/*[clinic end generated code: output=f06bb4315225e7f6 input=0148df5e8138fe7b]*/ { - PyObject *string, *format, *result; + return new_time_ex2(hour, minute, second, microsecond, tzinfo, fold, type); +} - if (!PyArg_ParseTuple(args, "UU:strptime", &string, &format)) { - return NULL; - } +/*[clinic input] +@classmethod +datetime.time.strptime + + string: unicode + format: unicode + / + +Parse string according to the given time format (like time.strptime()). +[clinic start generated code]*/ + +static PyObject * +datetime_time_strptime_impl(PyTypeObject *type, PyObject *string, + PyObject *format) +/*[clinic end generated code: output=ae05a9bc0241d3bf input=6d0f263a5f94d78d]*/ +{ + PyObject *result; PyObject *module = PyImport_Import(&_Py_ID(_strptime)); if (module == NULL) { return NULL; } result = PyObject_CallMethodObjArgs(module, - &_Py_ID(_strptime_datetime_time), cls, - string, format, NULL); + &_Py_ID(_strptime_datetime_time), + (PyObject *)type, string, format, NULL); Py_DECREF(module); return result; } @@ -4756,17 +4788,30 @@ time_str(PyObject *op) return PyObject_CallMethodNoArgs(op, &_Py_ID(isoformat)); } +/*[clinic input] +datetime.time.isoformat + + timespec: str(c_default="NULL") = 'auto' + +Return the time formatted according to ISO. + +The full format is 'HH:MM:SS.mmmmmm+zz:zz'. By default, the fractional +part is omitted if self.microsecond == 0. + +The optional argument timespec specifies the number of additional +terms of the time to include. Valid options are 'auto', 'hours', +'minutes', 'seconds', 'milliseconds' and 'microseconds'. +[clinic start generated code]*/ + static PyObject * -time_isoformat(PyObject *op, PyObject *args, PyObject *kw) +datetime_time_isoformat_impl(PyDateTime_Time *self, const char *timespec) +/*[clinic end generated code: output=2bcc7cab65c35545 input=afbbbd953d10ad07]*/ { char buf[100]; - const char *timespec = NULL; - static char *keywords[] = {"timespec", NULL}; - PyDateTime_Time *self = PyTime_CAST(op); PyObject *result; int us = TIME_GET_MICROSECOND(self); - static const char *specs[][2] = { + static const char * const specs[][2] = { {"hours", "%02d"}, {"minutes", "%02d:%02d"}, {"seconds", "%02d:%02d:%02d"}, @@ -4775,9 +4820,6 @@ time_isoformat(PyObject *op, PyObject *args, PyObject *kw) }; size_t given_spec; - if (!PyArg_ParseTupleAndKeywords(args, kw, "|s:isoformat", keywords, ×pec)) - return NULL; - if (timespec == NULL || strcmp(timespec, "auto") == 0) { if (us == 0) { /* seconds */ @@ -4823,18 +4865,22 @@ time_isoformat(PyObject *op, PyObject *args, PyObject *kw) return result; } +/*[clinic input] +datetime.time.strftime + + format: unicode + +Format using strftime(). + +The date part of the timestamp passed to underlying strftime should not be used. +[clinic start generated code]*/ + static PyObject * -time_strftime(PyObject *op, PyObject *args, PyObject *kw) +datetime_time_strftime_impl(PyDateTime_Time *self, PyObject *format) +/*[clinic end generated code: output=10f65af20e2a78c7 input=7dd9df1acbf37b50]*/ { PyObject *result; PyObject *tuple; - PyObject *format; - static char *keywords[] = {"format", NULL}; - PyDateTime_Time *self = PyTime_CAST(op); - - if (! PyArg_ParseTupleAndKeywords(args, kw, "U:strftime", keywords, - &format)) - return NULL; /* Python's strftime does insane things with the year part of the * timetuple. The year is forced to (the otherwise nonsensical) @@ -4855,6 +4901,27 @@ time_strftime(PyObject *op, PyObject *args, PyObject *kw) return result; } +/*[clinic input] +datetime.time.__format__ + + self: self(type="PyObject *") + format: unicode + / + +Formats self with strftime. +[clinic start generated code]*/ + +static PyObject * +datetime_time___format___impl(PyObject *self, PyObject *format) +/*[clinic end generated code: output=4646451f7a5d2156 input=6a858ae787d20230]*/ +{ + /* if the format is zero length, return str(self) */ + if (PyUnicode_GetLength(format) == 0) + return PyObject_Str(self); + + return PyObject_CallMethodOneArg(self, &_Py_ID(strftime), format); +} + /* * Miscellaneous methods. */ @@ -5007,20 +5074,25 @@ datetime_time_replace_impl(PyDateTime_Time *self, int hour, int minute, /*[clinic end generated code: output=0b89a44c299e4f80 input=abf23656e8df4e97]*/ { return new_time_subclass_fold_ex(hour, minute, second, microsecond, tzinfo, - fold, (PyObject *)Py_TYPE(self)); + fold, Py_TYPE(self)); } -static PyObject * -time_fromisoformat(PyObject *cls, PyObject *tstr) { - assert(tstr != NULL); +/*[clinic input] +@classmethod +datetime.time.fromisoformat - if (!PyUnicode_Check(tstr)) { - PyErr_SetString(PyExc_TypeError, "fromisoformat: argument must be str"); - return NULL; - } + string: unicode + / + +Construct a time from a string in ISO 8601 format. +[clinic start generated code]*/ +static PyObject * +datetime_time_fromisoformat_impl(PyTypeObject *type, PyObject *string) +/*[clinic end generated code: output=97c57e896e7f2535 input=bdb4b8abea9cd688]*/ +{ Py_ssize_t len; - const char *p = PyUnicode_AsUTF8AndSize(tstr, &len); + const char *p = PyUnicode_AsUTF8AndSize(string, &len); if (p == NULL) { goto invalid_string_error; @@ -5063,10 +5135,10 @@ time_fromisoformat(PyObject *cls, PyObject *tstr) { } PyObject *t; - if ( (PyTypeObject *)cls == TIME_TYPE(NO_STATE)) { + if (type == TIME_TYPE(NO_STATE)) { t = new_time(hour, minute, second, microsecond, tzinfo, 0); } else { - t = PyObject_CallFunction(cls, "iiiiO", + t = PyObject_CallFunction((PyObject *)type, "iiiiO", hour, minute, second, microsecond, tzinfo); } @@ -5078,7 +5150,7 @@ time_fromisoformat(PyObject *cls, PyObject *tstr) { return NULL; invalid_string_error: - PyErr_Format(PyExc_ValueError, "Invalid isoformat string: %R", tstr); + PyErr_Format(PyExc_ValueError, "Invalid isoformat string: %R", string); return NULL; error: @@ -5114,21 +5186,28 @@ time_getstate(PyDateTime_Time *self, int proto) return result; } +/*[clinic input] +datetime.time.__reduce_ex__ + + proto: int + / +[clinic start generated code]*/ + static PyObject * -time_reduce_ex(PyObject *op, PyObject *args) +datetime_time___reduce_ex___impl(PyDateTime_Time *self, int proto) +/*[clinic end generated code: output=ccfab65f5c320c1b input=4cd06bb3ac3657bb]*/ { - int proto; - if (!PyArg_ParseTuple(args, "i:__reduce_ex__", &proto)) - return NULL; - - PyDateTime_Time *self = PyTime_CAST(op); return Py_BuildValue("(ON)", Py_TYPE(self), time_getstate(self, proto)); } +/*[clinic input] +datetime.time.__reduce__ +[clinic start generated code]*/ + static PyObject * -time_reduce(PyObject *op, PyObject *Py_UNUSED(dummy)) +datetime_time___reduce___impl(PyDateTime_Time *self) +/*[clinic end generated code: output=9a2fcc87e64ce300 input=0fb8dd14d275857f]*/ { - PyDateTime_Time *self = PyTime_CAST(op); return Py_BuildValue("(ON)", Py_TYPE(self), time_getstate(self, 2)); } @@ -5136,26 +5215,14 @@ static PyMethodDef time_methods[] = { /* Class method: */ - {"strptime", time_strptime, - METH_VARARGS | METH_CLASS, - PyDoc_STR("string, format -> new time parsed from a string " - "(like time.strptime()).")}, + DATETIME_TIME_FROMISOFORMAT_METHODDEF + DATETIME_TIME_STRPTIME_METHODDEF /* Instance methods: */ - {"isoformat", _PyCFunction_CAST(time_isoformat), METH_VARARGS | METH_KEYWORDS, - PyDoc_STR("Return string in ISO 8601 format, [HH[:MM[:SS[.mmm[uuu]]]]]" - "[+HH:MM].\n\n" - "The optional argument timespec specifies the number " - "of additional terms\nof the time to include. Valid " - "options are 'auto', 'hours', 'minutes',\n'seconds', " - "'milliseconds' and 'microseconds'.\n")}, - - {"strftime", _PyCFunction_CAST(time_strftime), METH_VARARGS | METH_KEYWORDS, - PyDoc_STR("format -> strftime() style string.")}, - - {"__format__", date_format, METH_VARARGS, - PyDoc_STR("Formats self with strftime.")}, + DATETIME_TIME_ISOFORMAT_METHODDEF + DATETIME_TIME_STRFTIME_METHODDEF + DATETIME_TIME___FORMAT___METHODDEF {"utcoffset", time_utcoffset, METH_NOARGS, PyDoc_STR("Return self.tzinfo.utcoffset(self).")}, @@ -5171,24 +5238,12 @@ static PyMethodDef time_methods[] = { {"__replace__", _PyCFunction_CAST(datetime_time_replace), METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__replace__($self, /, **changes)\n--\n\nThe same as replace().")}, - {"fromisoformat", time_fromisoformat, METH_O | METH_CLASS, - PyDoc_STR("string -> time from a string in ISO 8601 format")}, - - {"__reduce_ex__", time_reduce_ex, METH_VARARGS, - PyDoc_STR("__reduce_ex__(proto) -> (cls, state)")}, - - {"__reduce__", time_reduce, METH_NOARGS, - PyDoc_STR("__reduce__() -> (cls, state)")}, + DATETIME_TIME___REDUCE_EX___METHODDEF + DATETIME_TIME___REDUCE___METHODDEF {NULL, NULL} }; -static const char time_doc[] = -PyDoc_STR("time([hour[, minute[, second[, microsecond[, tzinfo]]]]]) --> a time object\n\ -\n\ -All arguments are optional. tzinfo may be None, or an instance of\n\ -a tzinfo subclass. The remaining arguments may be ints.\n"); - static PyTypeObject PyDateTime_TimeType = { PyVarObject_HEAD_INIT(NULL, 0) "datetime.time", /* tp_name */ @@ -5209,8 +5264,8 @@ static PyTypeObject PyDateTime_TimeType = { PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ - time_doc, /* tp_doc */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ + datetime_time__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ time_richcompare, /* tp_richcompare */ @@ -5296,11 +5351,6 @@ static PyGetSetDef datetime_getset[] = { * Constructors. */ -static char *datetime_kws[] = { - "year", "month", "day", "hour", "minute", "second", - "microsecond", "tzinfo", "fold", NULL -}; - static PyObject * datetime_from_pickle(PyTypeObject *type, PyObject *state, PyObject *tzinfo) { @@ -5336,20 +5386,10 @@ datetime_from_pickle(PyTypeObject *type, PyObject *state, PyObject *tzinfo) static PyObject * datetime_new(PyTypeObject *type, PyObject *args, PyObject *kw) { - PyObject *self = NULL; - int year; - int month; - int day; - int hour = 0; - int minute = 0; - int second = 0; - int usecond = 0; - int fold = 0; - PyObject *tzinfo = Py_None; - /* Check for invocation from pickle with __getstate__ state */ if (PyTuple_GET_SIZE(args) >= 1 && PyTuple_GET_SIZE(args) <= 2) { PyObject *state = PyTuple_GET_ITEM(args, 0); + PyObject *tzinfo = Py_None; if (PyTuple_GET_SIZE(args) == 2) { tzinfo = PyTuple_GET_ITEM(args, 1); } @@ -5375,22 +5415,46 @@ datetime_new(PyTypeObject *type, PyObject *args, PyObject *kw) } return NULL; } - self = datetime_from_pickle(type, state, tzinfo); + PyObject *self = datetime_from_pickle(type, state, tzinfo); Py_DECREF(state); return self; } } - tzinfo = Py_None; } - if (PyArg_ParseTupleAndKeywords(args, kw, "iii|iiiiO$i", datetime_kws, - &year, &month, &day, &hour, &minute, - &second, &usecond, &tzinfo, &fold)) { - self = new_datetime_ex2(year, month, day, - hour, minute, second, usecond, - tzinfo, fold, type); - } - return self; + return datetime_datetime(type, args, kw); +} + +/*[clinic input] +@classmethod +datetime.datetime.__new__ + + year: int + month: int + day: int + hour: int = 0 + minute: int = 0 + second: int = 0 + microsecond: int = 0 + tzinfo: object = None + * + fold: int = 0 + +A combination of a date and a time. + +The year, month and day arguments are required. tzinfo may be None, or an +instance of a tzinfo subclass. The remaining arguments may be ints. +[clinic start generated code]*/ + +static PyObject * +datetime_datetime_impl(PyTypeObject *type, int year, int month, int day, + int hour, int minute, int second, int microsecond, + PyObject *tzinfo, int fold) +/*[clinic end generated code: output=47983ddb47d36037 input=2af468d7a9c1e568]*/ +{ + return new_datetime_ex2(year, month, day, + hour, minute, second, microsecond, + tzinfo, fold, type); } /* TM_FUNC is the shared type of _PyTime_localtime() and @@ -5447,7 +5511,7 @@ local(long long u) * Pass localtime or gmtime for f, to control the interpretation of timet. */ static PyObject * -datetime_from_timet_and_us(PyObject *cls, TM_FUNC f, time_t timet, int us, +datetime_from_timet_and_us(PyTypeObject *cls, TM_FUNC f, time_t timet, int us, PyObject *tzinfo) { struct tm tm; @@ -5519,7 +5583,7 @@ datetime_from_timet_and_us(PyObject *cls, TM_FUNC f, time_t timet, int us, * to get that much precision (e.g., C time() isn't good enough). */ static PyObject * -datetime_from_timestamp(PyObject *cls, TM_FUNC f, PyObject *timestamp, +datetime_from_timestamp(PyTypeObject *cls, TM_FUNC f, PyObject *timestamp, PyObject *tzinfo) { time_t timet; @@ -5537,7 +5601,7 @@ datetime_from_timestamp(PyObject *cls, TM_FUNC f, PyObject *timestamp, * gmtime for f as appropriate. */ static PyObject * -datetime_best_possible(PyObject *cls, TM_FUNC f, PyObject *tzinfo) +datetime_best_possible(PyTypeObject *cls, TM_FUNC f, PyObject *tzinfo) { PyTime_t ts; if (PyTime_Time(&ts) < 0) { @@ -5580,7 +5644,7 @@ datetime_datetime_now_impl(PyTypeObject *type, PyObject *tz) if (check_tzinfo_subclass(tz) < 0) return NULL; - self = datetime_best_possible((PyObject *)type, + self = datetime_best_possible(type, tz == Py_None ? _PyTime_localtime : _PyTime_gmtime, tz); @@ -5596,8 +5660,16 @@ datetime_datetime_now_impl(PyTypeObject *type, PyObject *tz) /* Return best possible UTC time -- this isn't constrained by the * precision of a timestamp. */ +/*[clinic input] +@classmethod +datetime.datetime.utcnow + +Return a new datetime representing UTC day and time. +[clinic start generated code]*/ + static PyObject * -datetime_utcnow(PyObject *cls, PyObject *dummy) +datetime_datetime_utcnow_impl(PyTypeObject *type) +/*[clinic end generated code: output=cfcfe71c6c916ba9 input=576eff2b222b80a1]*/ { if (PyErr_WarnEx(PyExc_DeprecationWarning, "datetime.datetime.utcnow() is deprecated and scheduled for removal in a " @@ -5606,25 +5678,32 @@ datetime_utcnow(PyObject *cls, PyObject *dummy) { return NULL; } - return datetime_best_possible(cls, _PyTime_gmtime, Py_None); + return datetime_best_possible(type, _PyTime_gmtime, Py_None); } -/* Return new local datetime from timestamp (Python timestamp -- a double). */ +/*[clinic input] +@classmethod +datetime.datetime.fromtimestamp + + timestamp: object + tz as tzinfo: object = None + +Create a datetime from a POSIX timestamp. + +The timestamp is a number, e.g. created via time.time(), that is interpreted +as local time. +[clinic start generated code]*/ + static PyObject * -datetime_fromtimestamp(PyObject *cls, PyObject *args, PyObject *kw) +datetime_datetime_fromtimestamp_impl(PyTypeObject *type, PyObject *timestamp, + PyObject *tzinfo) +/*[clinic end generated code: output=9c47ea2b2ebdaded input=34721a5facc94215]*/ { PyObject *self; - PyObject *timestamp; - PyObject *tzinfo = Py_None; - static char *keywords[] = {"timestamp", "tz", NULL}; - - if (! PyArg_ParseTupleAndKeywords(args, kw, "O|O:fromtimestamp", - keywords, ×tamp, &tzinfo)) - return NULL; if (check_tzinfo_subclass(tzinfo) < 0) return NULL; - self = datetime_from_timestamp(cls, + self = datetime_from_timestamp(type, tzinfo == Py_None ? _PyTime_localtime : _PyTime_gmtime, timestamp, @@ -5638,9 +5717,35 @@ datetime_fromtimestamp(PyObject *cls, PyObject *args, PyObject *kw) return self; } -/* Return new UTC datetime from timestamp (Python timestamp -- a double). */ +/* This is a wrapper for API compatibility with the public C API. */ +static PyObject * +datetime_datetime_fromtimestamp_capi(PyObject *cls, PyObject *args, PyObject *kw) +{ + PyObject *timestamp; + PyObject *tzinfo = Py_None; + static char *keywords[] = {"timestamp", "tz", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "O|O:fromtimestamp", + keywords, ×tamp, &tzinfo)) + return NULL; + return datetime_datetime_fromtimestamp_impl((PyTypeObject *)cls, + timestamp, tzinfo); +} + +/*[clinic input] +@classmethod +datetime.datetime.utcfromtimestamp + + timestamp: object + / + +Create a naive UTC datetime from a POSIX timestamp. +[clinic start generated code]*/ + static PyObject * -datetime_utcfromtimestamp(PyObject *cls, PyObject *args) +datetime_datetime_utcfromtimestamp_impl(PyTypeObject *type, + PyObject *timestamp) +/*[clinic end generated code: output=66d0b1741d788fd2 input=13fabd4296b1c206]*/ { if (PyErr_WarnEx(PyExc_DeprecationWarning, "datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal " @@ -5649,23 +5754,27 @@ datetime_utcfromtimestamp(PyObject *cls, PyObject *args) { return NULL; } - PyObject *timestamp; - PyObject *result = NULL; - if (PyArg_ParseTuple(args, "O:utcfromtimestamp", ×tamp)) - result = datetime_from_timestamp(cls, _PyTime_gmtime, timestamp, - Py_None); - return result; + return datetime_from_timestamp(type, _PyTime_gmtime, timestamp, Py_None); } -/* Return new datetime from _strptime.strptime_datetime_datetime(). */ +/*[clinic input] +@classmethod +datetime.datetime.strptime + + string: unicode + format: unicode + / + +Parse string according to the given date and time format (like time.strptime()). +[clinic start generated code]*/ + static PyObject * -datetime_strptime(PyObject *cls, PyObject *args) +datetime_datetime_strptime_impl(PyTypeObject *type, PyObject *string, + PyObject *format) +/*[clinic end generated code: output=af2c2d024f3203f5 input=b3918835524a1f22]*/ { - PyObject *string, *format, *result; - - if (!PyArg_ParseTuple(args, "UU:strptime", &string, &format)) - return NULL; + PyObject *result; PyObject *module = PyImport_Import(&_Py_ID(_strptime)); if (module == NULL) { @@ -5673,42 +5782,43 @@ datetime_strptime(PyObject *cls, PyObject *args) } result = PyObject_CallMethodObjArgs(module, &_Py_ID(_strptime_datetime_datetime), - cls, string, format, NULL); + (PyObject *)type, string, format, NULL); Py_DECREF(module); return result; } -/* Return new datetime from date/datetime and time arguments. */ +/*[clinic input] +@classmethod +datetime.datetime.combine + + date: object(subclass_of="DATE_TYPE(NO_STATE)") + time: object(subclass_of="TIME_TYPE(NO_STATE)") + tzinfo: object = NULL + +Construct a datetime from a given date and a given time. +[clinic start generated code]*/ + static PyObject * -datetime_combine(PyObject *cls, PyObject *args, PyObject *kw) +datetime_datetime_combine_impl(PyTypeObject *type, PyObject *date, + PyObject *time, PyObject *tzinfo) +/*[clinic end generated code: output=a10f3cbb90f4d0aa input=4fcf0743288d0bab]*/ { - static char *keywords[] = {"date", "time", "tzinfo", NULL}; - PyObject *date; - PyObject *time; - PyObject *tzinfo = NULL; - PyObject *result = NULL; - - if (PyArg_ParseTupleAndKeywords(args, kw, "O!O!|O:combine", keywords, - DATE_TYPE(NO_STATE), &date, - TIME_TYPE(NO_STATE), &time, &tzinfo)) { - if (tzinfo == NULL) { - if (HASTZINFO(time)) - tzinfo = ((PyDateTime_Time *)time)->tzinfo; - else - tzinfo = Py_None; - } - result = new_datetime_subclass_fold_ex(GET_YEAR(date), - GET_MONTH(date), - GET_DAY(date), - TIME_GET_HOUR(time), - TIME_GET_MINUTE(time), - TIME_GET_SECOND(time), - TIME_GET_MICROSECOND(time), - tzinfo, - TIME_GET_FOLD(time), - cls); + if (tzinfo == NULL) { + if (HASTZINFO(time)) + tzinfo = ((PyDateTime_Time *)time)->tzinfo; + else + tzinfo = Py_None; } - return result; + return new_datetime_subclass_fold_ex(GET_YEAR(date), + GET_MONTH(date), + GET_DAY(date), + TIME_GET_HOUR(time), + TIME_GET_MINUTE(time), + TIME_GET_SECOND(time), + TIME_GET_MICROSECOND(time), + tzinfo, + TIME_GET_FOLD(time), + type); } static PyObject * @@ -5866,23 +5976,26 @@ _find_isoformat_datetime_separator(const char *dtstr, Py_ssize_t len) { } } -static PyObject * -datetime_fromisoformat(PyObject *cls, PyObject *dtstr) -{ - assert(dtstr != NULL); +/*[clinic input] +@classmethod +datetime.datetime.fromisoformat - if (!PyUnicode_Check(dtstr)) { - PyErr_SetString(PyExc_TypeError, - "fromisoformat: argument must be str"); - return NULL; - } + string: unicode + / +Construct a date from a string in ISO 8601 format. +[clinic start generated code]*/ + +static PyObject * +datetime_datetime_fromisoformat_impl(PyTypeObject *type, PyObject *string) +/*[clinic end generated code: output=1800a952fcab79d9 input=d517b158209ded42]*/ +{ // We only need to sanitize this string if the separator is a surrogate // character. In the situation where the separator location is ambiguous, // we don't have to sanitize it anything because that can only happen when // the separator is either '-' or a number. This should mostly be a noop // but it makes the reference counting easier if we still sanitize. - PyObject *dtstr_clean = _sanitize_isoformat_str(dtstr); + PyObject *dtstr_clean = _sanitize_isoformat_str(string); if (dtstr_clean == NULL) { goto invalid_string_error; } @@ -5970,7 +6083,7 @@ datetime_fromisoformat(PyObject *cls, PyObject *dtstr) } } PyObject *dt = new_datetime_subclass_ex(year, month, day, hour, minute, - second, microsecond, tzinfo, cls); + second, microsecond, tzinfo, type); Py_DECREF(tzinfo); Py_DECREF(dtstr_clean); @@ -5983,7 +6096,7 @@ datetime_fromisoformat(PyObject *cls, PyObject *dtstr) return NULL; invalid_string_error: - PyErr_Format(PyExc_ValueError, "Invalid isoformat string: %R", dtstr); + PyErr_Format(PyExc_ValueError, "Invalid isoformat string: %R", string); error: Py_XDECREF(dtstr_clean); @@ -6060,7 +6173,7 @@ add_datetime_timedelta(PyDateTime_DateTime *date, PyDateTime_Delta *delta, return new_datetime_subclass_ex(year, month, day, hour, minute, second, microsecond, HASTZINFO(date) ? date->tzinfo : Py_None, - (PyObject *)Py_TYPE(date)); + Py_TYPE(date)); } static PyObject * @@ -6222,18 +6335,38 @@ datetime_str(PyObject *op) return res; } +/*[clinic input] +datetime.datetime.isoformat + + sep: int(accept={str}, c_default="'T'", py_default="'T'") = ord('T') + timespec: str(c_default="NULL") = 'auto' + +Return the time formatted according to ISO. + +The full format looks like 'YYYY-MM-DD HH:MM:SS.mmmmmm'. +By default, the fractional part is omitted if self.microsecond == 0. + +If self.tzinfo is not None, the UTC offset is also attached, giving +a full format of 'YYYY-MM-DD HH:MM:SS.mmmmmm+HH:MM'. + +Optional argument sep specifies the separator between date and +time, default 'T'. + +The optional argument timespec specifies the number of additional +terms of the time to include. Valid options are 'auto', 'hours', +'minutes', 'seconds', 'milliseconds' and 'microseconds'. +[clinic start generated code]*/ + static PyObject * -datetime_isoformat(PyObject *op, PyObject *args, PyObject *kw) +datetime_datetime_isoformat_impl(PyDateTime_DateTime *self, int sep, + const char *timespec) +/*[clinic end generated code: output=9b6ce1383189b0bf input=2fa2512172ccf5d5]*/ { - int sep = 'T'; - char *timespec = NULL; - static char *keywords[] = {"sep", "timespec", NULL}; char buffer[100]; - PyDateTime_DateTime *self = PyDateTime_CAST(op); PyObject *result = NULL; int us = DATE_GET_MICROSECOND(self); - static const char *specs[][2] = { + static const char * const specs[][2] = { {"hours", "%04d-%02d-%02d%c%02d"}, {"minutes", "%04d-%02d-%02d%c%02d:%02d"}, {"seconds", "%04d-%02d-%02d%c%02d:%02d:%02d"}, @@ -6242,9 +6375,6 @@ datetime_isoformat(PyObject *op, PyObject *args, PyObject *kw) }; size_t given_spec; - if (!PyArg_ParseTupleAndKeywords(args, kw, "|Cs:isoformat", keywords, &sep, ×pec)) - return NULL; - if (timespec == NULL || strcmp(timespec, "auto") == 0) { if (us == 0) { /* seconds */ @@ -6282,7 +6412,7 @@ datetime_isoformat(PyObject *op, PyObject *args, PyObject *kw) return result; /* We need to append the UTC offset. */ - if (format_utcoffset(buffer, sizeof(buffer), ":", self->tzinfo, op) < 0) { + if (format_utcoffset(buffer, sizeof(buffer), ":", self->tzinfo, (PyObject *)self) < 0) { Py_DECREF(result); return NULL; } @@ -6412,8 +6542,7 @@ datetime_richcompare(PyObject *self, PyObject *other, int op) PyDateTime_Delta *delta; assert(offset1 != offset2); /* else last "if" handled it */ - delta = (PyDateTime_Delta *)datetime_subtract((PyObject *)self, - other); + delta = (PyDateTime_Delta *)datetime_subtract(self, other); if (delta == NULL) goto done; diff = GET_TD_DAYS(delta); @@ -6537,7 +6666,7 @@ datetime_datetime_replace_impl(PyDateTime_DateTime *self, int year, { return new_datetime_subclass_fold_ex(year, month, day, hour, minute, second, microsecond, tzinfo, fold, - (PyObject *)Py_TYPE(self)); + Py_TYPE(self)); } static PyObject * @@ -6673,20 +6802,23 @@ local_timezone_from_local(PyDateTime_DateTime *local_dt) return local_timezone_from_timestamp(timestamp); } +/*[clinic input] +datetime.datetime.astimezone + + tz as tzinfo: object = None + +Convert to local time in new timezone tz. +[clinic start generated code]*/ + static PyObject * -datetime_astimezone(PyObject *op, PyObject *args, PyObject *kw) +datetime_datetime_astimezone_impl(PyDateTime_DateTime *self, + PyObject *tzinfo) +/*[clinic end generated code: output=ae2263d04e944537 input=9c675c8595009935]*/ { - PyDateTime_DateTime *self = PyDateTime_CAST(op); PyDateTime_DateTime *result; PyObject *offset; PyObject *temp; PyObject *self_tzinfo; - PyObject *tzinfo = Py_None; - static char *keywords[] = {"tz", NULL}; - - if (! PyArg_ParseTupleAndKeywords(args, kw, "|O:astimezone", keywords, - &tzinfo)) - return NULL; if (check_tzinfo_subclass(tzinfo) == -1) return NULL; @@ -6983,22 +7115,29 @@ datetime_getstate(PyDateTime_DateTime *self, int proto) return result; } +/*[clinic input] +datetime.datetime.__reduce_ex__ + + proto: int + / +[clinic start generated code]*/ + static PyObject * -datetime_reduce_ex(PyObject *op, PyObject *args) +datetime_datetime___reduce_ex___impl(PyDateTime_DateTime *self, int proto) +/*[clinic end generated code: output=53d712ce3e927735 input=bab748e49ffb30c3]*/ { - int proto; - if (!PyArg_ParseTuple(args, "i:__reduce_ex__", &proto)) - return NULL; - - PyDateTime_DateTime *self = PyDateTime_CAST(op); return Py_BuildValue("(ON)", Py_TYPE(self), datetime_getstate(self, proto)); } +/*[clinic input] +datetime.datetime.__reduce__ +[clinic start generated code]*/ + static PyObject * -datetime_reduce(PyObject *op, PyObject *Py_UNUSED(arg)) +datetime_datetime___reduce___impl(PyDateTime_DateTime *self) +/*[clinic end generated code: output=6794df9ea75666cf input=cadbbeb3bf3bf94c]*/ { - PyDateTime_DateTime *self = PyDateTime_CAST(op); return Py_BuildValue("(ON)", Py_TYPE(self), datetime_getstate(self, 2)); } @@ -7008,31 +7147,12 @@ static PyMethodDef datetime_methods[] = { /* Class methods: */ DATETIME_DATETIME_NOW_METHODDEF - - {"utcnow", datetime_utcnow, - METH_NOARGS | METH_CLASS, - PyDoc_STR("Return a new datetime representing UTC day and time.")}, - - {"fromtimestamp", _PyCFunction_CAST(datetime_fromtimestamp), - METH_VARARGS | METH_KEYWORDS | METH_CLASS, - PyDoc_STR("timestamp[, tz] -> tz's local time from POSIX timestamp.")}, - - {"utcfromtimestamp", datetime_utcfromtimestamp, - METH_VARARGS | METH_CLASS, - PyDoc_STR("Construct a naive UTC datetime from a POSIX timestamp.")}, - - {"strptime", datetime_strptime, - METH_VARARGS | METH_CLASS, - PyDoc_STR("string, format -> new datetime parsed from a string " - "(like time.strptime()).")}, - - {"combine", _PyCFunction_CAST(datetime_combine), - METH_VARARGS | METH_KEYWORDS | METH_CLASS, - PyDoc_STR("date, time -> datetime with same date and time fields")}, - - {"fromisoformat", datetime_fromisoformat, - METH_O | METH_CLASS, - PyDoc_STR("string -> datetime from a string in most ISO 8601 formats")}, + DATETIME_DATETIME_UTCNOW_METHODDEF + DATETIME_DATETIME_FROMTIMESTAMP_METHODDEF + DATETIME_DATETIME_UTCFROMTIMESTAMP_METHODDEF + DATETIME_DATETIME_STRPTIME_METHODDEF + DATETIME_DATETIME_COMBINE_METHODDEF + DATETIME_DATETIME_FROMISOFORMAT_METHODDEF /* Instance methods: */ @@ -7057,15 +7177,7 @@ static PyMethodDef datetime_methods[] = { {"utctimetuple", datetime_utctimetuple, METH_NOARGS, PyDoc_STR("Return UTC time tuple, compatible with time.localtime().")}, - {"isoformat", _PyCFunction_CAST(datetime_isoformat), METH_VARARGS | METH_KEYWORDS, - PyDoc_STR("[sep] -> string in ISO 8601 format, " - "YYYY-MM-DDT[HH[:MM[:SS[.mmm[uuu]]]]][+HH:MM].\n" - "sep is used to separate the year from the time, and " - "defaults to 'T'.\n" - "The optional argument timespec specifies the number " - "of additional terms\nof the time to include. Valid " - "options are 'auto', 'hours', 'minutes',\n'seconds', " - "'milliseconds' and 'microseconds'.\n")}, + DATETIME_DATETIME_ISOFORMAT_METHODDEF {"utcoffset", datetime_utcoffset, METH_NOARGS, PyDoc_STR("Return self.tzinfo.utcoffset(self).")}, @@ -7081,24 +7193,13 @@ static PyMethodDef datetime_methods[] = { {"__replace__", _PyCFunction_CAST(datetime_datetime_replace), METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("__replace__($self, /, **changes)\n--\n\nThe same as replace().")}, - {"astimezone", _PyCFunction_CAST(datetime_astimezone), METH_VARARGS | METH_KEYWORDS, - PyDoc_STR("tz -> convert to local time in new timezone tz\n")}, - - {"__reduce_ex__", datetime_reduce_ex, METH_VARARGS, - PyDoc_STR("__reduce_ex__(proto) -> (cls, state)")}, - - {"__reduce__", datetime_reduce, METH_NOARGS, - PyDoc_STR("__reduce__() -> (cls, state)")}, + DATETIME_DATETIME_ASTIMEZONE_METHODDEF + DATETIME_DATETIME___REDUCE_EX___METHODDEF + DATETIME_DATETIME___REDUCE___METHODDEF {NULL, NULL} }; -static const char datetime_doc[] = -PyDoc_STR("datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])\n\ -\n\ -The year, month and day arguments are required. tzinfo may be None, or an\n\ -instance of a tzinfo subclass. The remaining arguments may be ints.\n"); - static PyNumberMethods datetime_as_number = { datetime_add, /* nb_add */ datetime_subtract, /* nb_subtract */ @@ -7132,8 +7233,8 @@ static PyTypeObject PyDateTime_DateTimeType = { PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ - datetime_doc, /* tp_doc */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ + datetime_datetime__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ datetime_richcompare, /* tp_richcompare */ @@ -7190,7 +7291,7 @@ static PyDateTime_CAPI capi = { .Time_FromTime = new_time_ex, .Delta_FromDelta = new_delta_ex, .TimeZone_FromTimeZone = new_timezone, - .DateTime_FromTimestamp = datetime_fromtimestamp, + .DateTime_FromTimestamp = datetime_datetime_fromtimestamp_capi, .Date_FromTimestamp = datetime_date_fromtimestamp_capi, .DateTime_FromDateAndTimeAndFold = new_datetime_ex2, .Time_FromTimeAndFold = new_time_ex2, diff --git a/Modules/clinic/_datetimemodule.c.h b/Modules/clinic/_datetimemodule.c.h index 18e6129fad8a89..7c4bd5503ed56b 100644 --- a/Modules/clinic/_datetimemodule.c.h +++ b/Modules/clinic/_datetimemodule.c.h @@ -8,6 +8,206 @@ preserve #endif #include "pycore_modsupport.h" // _PyArg_UnpackKeywords() +PyDoc_STRVAR(delta_new__doc__, +"timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0,\n" +" hours=0, weeks=0)\n" +"--\n" +"\n" +"Difference between two datetime values.\n" +"\n" +"All arguments are optional and default to 0.\n" +"Arguments may be integers or floats, and may be positive or negative."); + +static PyObject * +delta_new_impl(PyTypeObject *type, PyObject *days, PyObject *seconds, + PyObject *microseconds, PyObject *milliseconds, + PyObject *minutes, PyObject *hours, PyObject *weeks); + +static PyObject * +delta_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 7 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(days), &_Py_ID(seconds), &_Py_ID(microseconds), &_Py_ID(milliseconds), &_Py_ID(minutes), &_Py_ID(hours), &_Py_ID(weeks), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"days", "seconds", "microseconds", "milliseconds", "minutes", "hours", "weeks", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "timedelta", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[7]; + PyObject * const *fastargs; + Py_ssize_t nargs = PyTuple_GET_SIZE(args); + Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0; + PyObject *days = NULL; + PyObject *seconds = NULL; + PyObject *microseconds = NULL; + PyObject *milliseconds = NULL; + PyObject *minutes = NULL; + PyObject *hours = NULL; + PyObject *weeks = NULL; + + fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, + /*minpos*/ 0, /*maxpos*/ 7, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!fastargs) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + if (fastargs[0]) { + days = fastargs[0]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[1]) { + seconds = fastargs[1]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[2]) { + microseconds = fastargs[2]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[3]) { + milliseconds = fastargs[3]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[4]) { + minutes = fastargs[4]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[5]) { + hours = fastargs[5]; + if (!--noptargs) { + goto skip_optional_pos; + } + } + weeks = fastargs[6]; +skip_optional_pos: + return_value = delta_new_impl(type, days, seconds, microseconds, milliseconds, minutes, hours, weeks); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_date__doc__, +"date(year, month, day)\n" +"--\n" +"\n" +"Concrete date type."); + +static PyObject * +datetime_date_impl(PyTypeObject *type, int year, int month, int day); + +static PyObject * +datetime_date(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 3 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(year), &_Py_ID(month), &_Py_ID(day), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"year", "month", "day", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "date", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[3]; + PyObject * const *fastargs; + Py_ssize_t nargs = PyTuple_GET_SIZE(args); + int year; + int month; + int day; + + fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, + /*minpos*/ 3, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!fastargs) { + goto exit; + } + year = PyLong_AsInt(fastargs[0]); + if (year == -1 && PyErr_Occurred()) { + goto exit; + } + month = PyLong_AsInt(fastargs[1]); + if (month == -1 && PyErr_Occurred()) { + goto exit; + } + day = PyLong_AsInt(fastargs[2]); + if (day == -1 && PyErr_Occurred()) { + goto exit; + } + return_value = datetime_date_impl(type, year, month, day); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_date_today__doc__, +"today($type, /)\n" +"--\n" +"\n" +"Current date or datetime.\n" +"\n" +"Equivalent to fromtimestamp(time.time())."); + +#define DATETIME_DATE_TODAY_METHODDEF \ + {"today", (PyCFunction)datetime_date_today, METH_NOARGS|METH_CLASS, datetime_date_today__doc__}, + +static PyObject * +datetime_date_today_impl(PyTypeObject *type); + +static PyObject * +datetime_date_today(PyObject *type, PyObject *Py_UNUSED(ignored)) +{ + return datetime_date_today_impl((PyTypeObject *)type); +} + PyDoc_STRVAR(datetime_date_fromtimestamp__doc__, "fromtimestamp($type, timestamp, /)\n" "--\n" @@ -33,12 +233,83 @@ datetime_date_fromtimestamp(PyObject *type, PyObject *timestamp) return return_value; } +PyDoc_STRVAR(datetime_date_fromordinal__doc__, +"fromordinal($type, ordinal, /)\n" +"--\n" +"\n" +"Construct a date from a proleptic Gregorian ordinal.\n" +"\n" +"January 1 of year 1 is day 1. Only the year, month and day are\n" +"non-zero in the result."); + +#define DATETIME_DATE_FROMORDINAL_METHODDEF \ + {"fromordinal", (PyCFunction)datetime_date_fromordinal, METH_O|METH_CLASS, datetime_date_fromordinal__doc__}, + static PyObject * -iso_calendar_date_new_impl(PyTypeObject *type, int year, int week, - int weekday); +datetime_date_fromordinal_impl(PyTypeObject *type, int ordinal); static PyObject * -iso_calendar_date_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +datetime_date_fromordinal(PyObject *type, PyObject *arg) +{ + PyObject *return_value = NULL; + int ordinal; + + ordinal = PyLong_AsInt(arg); + if (ordinal == -1 && PyErr_Occurred()) { + goto exit; + } + return_value = datetime_date_fromordinal_impl((PyTypeObject *)type, ordinal); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_date_fromisoformat__doc__, +"fromisoformat($type, string, /)\n" +"--\n" +"\n" +"Construct a date from a string in ISO 8601 format."); + +#define DATETIME_DATE_FROMISOFORMAT_METHODDEF \ + {"fromisoformat", (PyCFunction)datetime_date_fromisoformat, METH_O|METH_CLASS, datetime_date_fromisoformat__doc__}, + +static PyObject * +datetime_date_fromisoformat_impl(PyTypeObject *type, PyObject *string); + +static PyObject * +datetime_date_fromisoformat(PyObject *type, PyObject *arg) +{ + PyObject *return_value = NULL; + PyObject *string; + + if (!PyUnicode_Check(arg)) { + _PyArg_BadArgument("fromisoformat", "argument", "str", arg); + goto exit; + } + string = arg; + return_value = datetime_date_fromisoformat_impl((PyTypeObject *)type, string); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_date_fromisocalendar__doc__, +"fromisocalendar($type, /, year, week, day)\n" +"--\n" +"\n" +"Construct a date from the ISO year, week number and weekday.\n" +"\n" +"This is the inverse of the date.isocalendar() function."); + +#define DATETIME_DATE_FROMISOCALENDAR_METHODDEF \ + {"fromisocalendar", _PyCFunction_CAST(datetime_date_fromisocalendar), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, datetime_date_fromisocalendar__doc__}, + +static PyObject * +datetime_date_fromisocalendar_impl(PyTypeObject *type, int year, int week, + int day); + +static PyObject * +datetime_date_fromisocalendar(PyObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { PyObject *return_value = NULL; #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) @@ -52,7 +323,7 @@ iso_calendar_date_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) } _kwtuple = { .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) .ob_hash = -1, - .ob_item = { &_Py_ID(year), &_Py_ID(week), &_Py_ID(weekday), }, + .ob_item = { &_Py_ID(year), &_Py_ID(week), &_Py_ID(day), }, }; #undef NUM_KEYWORDS #define KWTUPLE (&_kwtuple.ob_base.ob_base) @@ -61,58 +332,1293 @@ iso_calendar_date_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) # define KWTUPLE NULL #endif // !Py_BUILD_CORE - static const char * const _keywords[] = {"year", "week", "weekday", NULL}; + static const char * const _keywords[] = {"year", "week", "day", NULL}; static _PyArg_Parser _parser = { .keywords = _keywords, - .fname = "IsoCalendarDate", + .fname = "fromisocalendar", .kwtuple = KWTUPLE, }; #undef KWTUPLE PyObject *argsbuf[3]; - PyObject * const *fastargs; - Py_ssize_t nargs = PyTuple_GET_SIZE(args); int year; int week; - int weekday; + int day; - fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, /*minpos*/ 3, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); - if (!fastargs) { + if (!args) { goto exit; } - year = PyLong_AsInt(fastargs[0]); + year = PyLong_AsInt(args[0]); if (year == -1 && PyErr_Occurred()) { goto exit; } - week = PyLong_AsInt(fastargs[1]); + week = PyLong_AsInt(args[1]); if (week == -1 && PyErr_Occurred()) { goto exit; } - weekday = PyLong_AsInt(fastargs[2]); - if (weekday == -1 && PyErr_Occurred()) { + day = PyLong_AsInt(args[2]); + if (day == -1 && PyErr_Occurred()) { goto exit; } - return_value = iso_calendar_date_new_impl(type, year, week, weekday); + return_value = datetime_date_fromisocalendar_impl((PyTypeObject *)type, year, week, day); exit: return return_value; } -PyDoc_STRVAR(datetime_date_replace__doc__, -"replace($self, /, year=unchanged, month=unchanged, day=unchanged)\n" +PyDoc_STRVAR(datetime_date_strptime__doc__, +"strptime($type, string, format, /)\n" "--\n" "\n" -"Return date with new specified fields."); +"Parse string according to the given date format (like time.strptime())."); + +#define DATETIME_DATE_STRPTIME_METHODDEF \ + {"strptime", _PyCFunction_CAST(datetime_date_strptime), METH_FASTCALL|METH_CLASS, datetime_date_strptime__doc__}, + +static PyObject * +datetime_date_strptime_impl(PyTypeObject *type, PyObject *string, + PyObject *format); + +static PyObject * +datetime_date_strptime(PyObject *type, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *string; + PyObject *format; + + if (!_PyArg_CheckPositional("strptime", nargs, 2, 2)) { + goto exit; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("strptime", "argument 1", "str", args[0]); + goto exit; + } + string = args[0]; + if (!PyUnicode_Check(args[1])) { + _PyArg_BadArgument("strptime", "argument 2", "str", args[1]); + goto exit; + } + format = args[1]; + return_value = datetime_date_strptime_impl((PyTypeObject *)type, string, format); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_date_strftime__doc__, +"strftime($self, /, format)\n" +"--\n" +"\n" +"Format using strftime().\n" +"\n" +"Example: \"%d/%m/%Y, %H:%M:%S\"."); + +#define DATETIME_DATE_STRFTIME_METHODDEF \ + {"strftime", _PyCFunction_CAST(datetime_date_strftime), METH_FASTCALL|METH_KEYWORDS, datetime_date_strftime__doc__}, + +static PyObject * +datetime_date_strftime_impl(PyObject *self, PyObject *format); + +static PyObject * +datetime_date_strftime(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 1 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(format), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"format", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "strftime", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[1]; + PyObject *format; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, + /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!args) { + goto exit; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("strftime", "argument 'format'", "str", args[0]); + goto exit; + } + format = args[0]; + return_value = datetime_date_strftime_impl(self, format); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_date___format____doc__, +"__format__($self, format, /)\n" +"--\n" +"\n" +"Formats self with strftime."); + +#define DATETIME_DATE___FORMAT___METHODDEF \ + {"__format__", (PyCFunction)datetime_date___format__, METH_O, datetime_date___format____doc__}, + +static PyObject * +datetime_date___format___impl(PyObject *self, PyObject *format); + +static PyObject * +datetime_date___format__(PyObject *self, PyObject *arg) +{ + PyObject *return_value = NULL; + PyObject *format; + + if (!PyUnicode_Check(arg)) { + _PyArg_BadArgument("__format__", "argument", "str", arg); + goto exit; + } + format = arg; + return_value = datetime_date___format___impl(self, format); + +exit: + return return_value; +} + +static PyObject * +iso_calendar_date_new_impl(PyTypeObject *type, int year, int week, + int weekday); + +static PyObject * +iso_calendar_date_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 3 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(year), &_Py_ID(week), &_Py_ID(weekday), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"year", "week", "weekday", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "IsoCalendarDate", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[3]; + PyObject * const *fastargs; + Py_ssize_t nargs = PyTuple_GET_SIZE(args); + int year; + int week; + int weekday; + + fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, + /*minpos*/ 3, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!fastargs) { + goto exit; + } + year = PyLong_AsInt(fastargs[0]); + if (year == -1 && PyErr_Occurred()) { + goto exit; + } + week = PyLong_AsInt(fastargs[1]); + if (week == -1 && PyErr_Occurred()) { + goto exit; + } + weekday = PyLong_AsInt(fastargs[2]); + if (weekday == -1 && PyErr_Occurred()) { + goto exit; + } + return_value = iso_calendar_date_new_impl(type, year, week, weekday); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_date_replace__doc__, +"replace($self, /, year=unchanged, month=unchanged, day=unchanged)\n" +"--\n" +"\n" +"Return date with new specified fields."); + +#define DATETIME_DATE_REPLACE_METHODDEF \ + {"replace", _PyCFunction_CAST(datetime_date_replace), METH_FASTCALL|METH_KEYWORDS, datetime_date_replace__doc__}, + +static PyObject * +datetime_date_replace_impl(PyDateTime_Date *self, int year, int month, + int day); + +static PyObject * +datetime_date_replace(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 3 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(year), &_Py_ID(month), &_Py_ID(day), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"year", "month", "day", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "replace", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[3]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; + int year = GET_YEAR(self); + int month = GET_MONTH(self); + int day = GET_DAY(self); + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, + /*minpos*/ 0, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!args) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + if (args[0]) { + year = PyLong_AsInt(args[0]); + if (year == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[1]) { + month = PyLong_AsInt(args[1]); + if (month == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + day = PyLong_AsInt(args[2]); + if (day == -1 && PyErr_Occurred()) { + goto exit; + } +skip_optional_pos: + return_value = datetime_date_replace_impl((PyDateTime_Date *)self, year, month, day); + +exit: + return return_value; +} + +PyDoc_STRVAR(timezone_new__doc__, +"timezone(offset, name=)\n" +"--\n" +"\n" +"Fixed offset from UTC implementation of tzinfo."); + +static PyObject * +timezone_new_impl(PyTypeObject *type, PyObject *offset, PyObject *name); + +static PyObject * +timezone_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 2 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(offset), &_Py_ID(name), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"offset", "name", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "timezone", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[2]; + PyObject * const *fastargs; + Py_ssize_t nargs = PyTuple_GET_SIZE(args); + Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1; + PyObject *offset; + PyObject *name = NULL; + + fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, + /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!fastargs) { + goto exit; + } + if (!PyObject_TypeCheck(fastargs[0], DELTA_TYPE(NO_STATE))) { + _PyArg_BadArgument("timezone", "argument 'offset'", (DELTA_TYPE(NO_STATE))->tp_name, fastargs[0]); + goto exit; + } + offset = fastargs[0]; + if (!noptargs) { + goto skip_optional_pos; + } + if (!PyUnicode_Check(fastargs[1])) { + _PyArg_BadArgument("timezone", "argument 'name'", "str", fastargs[1]); + goto exit; + } + name = fastargs[1]; +skip_optional_pos: + return_value = timezone_new_impl(type, offset, name); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time__doc__, +"time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)\n" +"--\n" +"\n" +"Time with time zone.\n" +"\n" +"All arguments are optional. tzinfo may be None, or an instance of\n" +"a tzinfo subclass. The remaining arguments may be ints."); + +static PyObject * +datetime_time_impl(PyTypeObject *type, int hour, int minute, int second, + int microsecond, PyObject *tzinfo, int fold); + +static PyObject * +datetime_time(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 6 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(hour), &_Py_ID(minute), &_Py_ID(second), &_Py_ID(microsecond), &_Py_ID(tzinfo), &_Py_ID(fold), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"hour", "minute", "second", "microsecond", "tzinfo", "fold", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "time", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[6]; + PyObject * const *fastargs; + Py_ssize_t nargs = PyTuple_GET_SIZE(args); + Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0; + int hour = 0; + int minute = 0; + int second = 0; + int microsecond = 0; + PyObject *tzinfo = Py_None; + int fold = 0; + + fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, + /*minpos*/ 0, /*maxpos*/ 5, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!fastargs) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + if (fastargs[0]) { + hour = PyLong_AsInt(fastargs[0]); + if (hour == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[1]) { + minute = PyLong_AsInt(fastargs[1]); + if (minute == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[2]) { + second = PyLong_AsInt(fastargs[2]); + if (second == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[3]) { + microsecond = PyLong_AsInt(fastargs[3]); + if (microsecond == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[4]) { + tzinfo = fastargs[4]; + if (!--noptargs) { + goto skip_optional_pos; + } + } +skip_optional_pos: + if (!noptargs) { + goto skip_optional_kwonly; + } + fold = PyLong_AsInt(fastargs[5]); + if (fold == -1 && PyErr_Occurred()) { + goto exit; + } +skip_optional_kwonly: + return_value = datetime_time_impl(type, hour, minute, second, microsecond, tzinfo, fold); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time_strptime__doc__, +"strptime($type, string, format, /)\n" +"--\n" +"\n" +"Parse string according to the given time format (like time.strptime())."); + +#define DATETIME_TIME_STRPTIME_METHODDEF \ + {"strptime", _PyCFunction_CAST(datetime_time_strptime), METH_FASTCALL|METH_CLASS, datetime_time_strptime__doc__}, + +static PyObject * +datetime_time_strptime_impl(PyTypeObject *type, PyObject *string, + PyObject *format); + +static PyObject * +datetime_time_strptime(PyObject *type, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *string; + PyObject *format; + + if (!_PyArg_CheckPositional("strptime", nargs, 2, 2)) { + goto exit; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("strptime", "argument 1", "str", args[0]); + goto exit; + } + string = args[0]; + if (!PyUnicode_Check(args[1])) { + _PyArg_BadArgument("strptime", "argument 2", "str", args[1]); + goto exit; + } + format = args[1]; + return_value = datetime_time_strptime_impl((PyTypeObject *)type, string, format); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time_isoformat__doc__, +"isoformat($self, /, timespec=\'auto\')\n" +"--\n" +"\n" +"Return the time formatted according to ISO.\n" +"\n" +"The full format is \'HH:MM:SS.mmmmmm+zz:zz\'. By default, the fractional\n" +"part is omitted if self.microsecond == 0.\n" +"\n" +"The optional argument timespec specifies the number of additional\n" +"terms of the time to include. Valid options are \'auto\', \'hours\',\n" +"\'minutes\', \'seconds\', \'milliseconds\' and \'microseconds\'."); + +#define DATETIME_TIME_ISOFORMAT_METHODDEF \ + {"isoformat", _PyCFunction_CAST(datetime_time_isoformat), METH_FASTCALL|METH_KEYWORDS, datetime_time_isoformat__doc__}, + +static PyObject * +datetime_time_isoformat_impl(PyDateTime_Time *self, const char *timespec); + +static PyObject * +datetime_time_isoformat(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 1 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(timespec), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"timespec", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "isoformat", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[1]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; + const char *timespec = NULL; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, + /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!args) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("isoformat", "argument 'timespec'", "str", args[0]); + goto exit; + } + Py_ssize_t timespec_length; + timespec = PyUnicode_AsUTF8AndSize(args[0], ×pec_length); + if (timespec == NULL) { + goto exit; + } + if (strlen(timespec) != (size_t)timespec_length) { + PyErr_SetString(PyExc_ValueError, "embedded null character"); + goto exit; + } +skip_optional_pos: + return_value = datetime_time_isoformat_impl((PyDateTime_Time *)self, timespec); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time_strftime__doc__, +"strftime($self, /, format)\n" +"--\n" +"\n" +"Format using strftime().\n" +"\n" +"The date part of the timestamp passed to underlying strftime should not be used."); + +#define DATETIME_TIME_STRFTIME_METHODDEF \ + {"strftime", _PyCFunction_CAST(datetime_time_strftime), METH_FASTCALL|METH_KEYWORDS, datetime_time_strftime__doc__}, + +static PyObject * +datetime_time_strftime_impl(PyDateTime_Time *self, PyObject *format); + +static PyObject * +datetime_time_strftime(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 1 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(format), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"format", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "strftime", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[1]; + PyObject *format; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, + /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!args) { + goto exit; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("strftime", "argument 'format'", "str", args[0]); + goto exit; + } + format = args[0]; + return_value = datetime_time_strftime_impl((PyDateTime_Time *)self, format); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time___format____doc__, +"__format__($self, format, /)\n" +"--\n" +"\n" +"Formats self with strftime."); + +#define DATETIME_TIME___FORMAT___METHODDEF \ + {"__format__", (PyCFunction)datetime_time___format__, METH_O, datetime_time___format____doc__}, + +static PyObject * +datetime_time___format___impl(PyObject *self, PyObject *format); + +static PyObject * +datetime_time___format__(PyObject *self, PyObject *arg) +{ + PyObject *return_value = NULL; + PyObject *format; + + if (!PyUnicode_Check(arg)) { + _PyArg_BadArgument("__format__", "argument", "str", arg); + goto exit; + } + format = arg; + return_value = datetime_time___format___impl(self, format); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time_replace__doc__, +"replace($self, /, hour=unchanged, minute=unchanged, second=unchanged,\n" +" microsecond=unchanged, tzinfo=unchanged, *, fold=unchanged)\n" +"--\n" +"\n" +"Return time with new specified fields."); + +#define DATETIME_TIME_REPLACE_METHODDEF \ + {"replace", _PyCFunction_CAST(datetime_time_replace), METH_FASTCALL|METH_KEYWORDS, datetime_time_replace__doc__}, + +static PyObject * +datetime_time_replace_impl(PyDateTime_Time *self, int hour, int minute, + int second, int microsecond, PyObject *tzinfo, + int fold); + +static PyObject * +datetime_time_replace(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 6 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(hour), &_Py_ID(minute), &_Py_ID(second), &_Py_ID(microsecond), &_Py_ID(tzinfo), &_Py_ID(fold), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"hour", "minute", "second", "microsecond", "tzinfo", "fold", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "replace", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[6]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; + int hour = TIME_GET_HOUR(self); + int minute = TIME_GET_MINUTE(self); + int second = TIME_GET_SECOND(self); + int microsecond = TIME_GET_MICROSECOND(self); + PyObject *tzinfo = HASTZINFO(self) ? ((PyDateTime_Time *)self)->tzinfo : Py_None; + int fold = TIME_GET_FOLD(self); + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, + /*minpos*/ 0, /*maxpos*/ 5, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!args) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + if (args[0]) { + hour = PyLong_AsInt(args[0]); + if (hour == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[1]) { + minute = PyLong_AsInt(args[1]); + if (minute == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[2]) { + second = PyLong_AsInt(args[2]); + if (second == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[3]) { + microsecond = PyLong_AsInt(args[3]); + if (microsecond == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (args[4]) { + tzinfo = args[4]; + if (!--noptargs) { + goto skip_optional_pos; + } + } +skip_optional_pos: + if (!noptargs) { + goto skip_optional_kwonly; + } + fold = PyLong_AsInt(args[5]); + if (fold == -1 && PyErr_Occurred()) { + goto exit; + } +skip_optional_kwonly: + return_value = datetime_time_replace_impl((PyDateTime_Time *)self, hour, minute, second, microsecond, tzinfo, fold); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time_fromisoformat__doc__, +"fromisoformat($type, string, /)\n" +"--\n" +"\n" +"Construct a time from a string in ISO 8601 format."); + +#define DATETIME_TIME_FROMISOFORMAT_METHODDEF \ + {"fromisoformat", (PyCFunction)datetime_time_fromisoformat, METH_O|METH_CLASS, datetime_time_fromisoformat__doc__}, + +static PyObject * +datetime_time_fromisoformat_impl(PyTypeObject *type, PyObject *string); + +static PyObject * +datetime_time_fromisoformat(PyObject *type, PyObject *arg) +{ + PyObject *return_value = NULL; + PyObject *string; + + if (!PyUnicode_Check(arg)) { + _PyArg_BadArgument("fromisoformat", "argument", "str", arg); + goto exit; + } + string = arg; + return_value = datetime_time_fromisoformat_impl((PyTypeObject *)type, string); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time___reduce_ex____doc__, +"__reduce_ex__($self, proto, /)\n" +"--\n" +"\n"); + +#define DATETIME_TIME___REDUCE_EX___METHODDEF \ + {"__reduce_ex__", (PyCFunction)datetime_time___reduce_ex__, METH_O, datetime_time___reduce_ex____doc__}, + +static PyObject * +datetime_time___reduce_ex___impl(PyDateTime_Time *self, int proto); + +static PyObject * +datetime_time___reduce_ex__(PyObject *self, PyObject *arg) +{ + PyObject *return_value = NULL; + int proto; + + proto = PyLong_AsInt(arg); + if (proto == -1 && PyErr_Occurred()) { + goto exit; + } + return_value = datetime_time___reduce_ex___impl((PyDateTime_Time *)self, proto); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_time___reduce____doc__, +"__reduce__($self, /)\n" +"--\n" +"\n"); + +#define DATETIME_TIME___REDUCE___METHODDEF \ + {"__reduce__", (PyCFunction)datetime_time___reduce__, METH_NOARGS, datetime_time___reduce____doc__}, + +static PyObject * +datetime_time___reduce___impl(PyDateTime_Time *self); + +static PyObject * +datetime_time___reduce__(PyObject *self, PyObject *Py_UNUSED(ignored)) +{ + return datetime_time___reduce___impl((PyDateTime_Time *)self); +} + +PyDoc_STRVAR(datetime_datetime__doc__, +"datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0,\n" +" tzinfo=None, *, fold=0)\n" +"--\n" +"\n" +"A combination of a date and a time.\n" +"\n" +"The year, month and day arguments are required. tzinfo may be None, or an\n" +"instance of a tzinfo subclass. The remaining arguments may be ints."); + +static PyObject * +datetime_datetime_impl(PyTypeObject *type, int year, int month, int day, + int hour, int minute, int second, int microsecond, + PyObject *tzinfo, int fold); + +static PyObject * +datetime_datetime(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 9 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(year), &_Py_ID(month), &_Py_ID(day), &_Py_ID(hour), &_Py_ID(minute), &_Py_ID(second), &_Py_ID(microsecond), &_Py_ID(tzinfo), &_Py_ID(fold), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"year", "month", "day", "hour", "minute", "second", "microsecond", "tzinfo", "fold", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "datetime", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[9]; + PyObject * const *fastargs; + Py_ssize_t nargs = PyTuple_GET_SIZE(args); + Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 3; + int year; + int month; + int day; + int hour = 0; + int minute = 0; + int second = 0; + int microsecond = 0; + PyObject *tzinfo = Py_None; + int fold = 0; + + fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, + /*minpos*/ 3, /*maxpos*/ 8, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!fastargs) { + goto exit; + } + year = PyLong_AsInt(fastargs[0]); + if (year == -1 && PyErr_Occurred()) { + goto exit; + } + month = PyLong_AsInt(fastargs[1]); + if (month == -1 && PyErr_Occurred()) { + goto exit; + } + day = PyLong_AsInt(fastargs[2]); + if (day == -1 && PyErr_Occurred()) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + if (fastargs[3]) { + hour = PyLong_AsInt(fastargs[3]); + if (hour == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[4]) { + minute = PyLong_AsInt(fastargs[4]); + if (minute == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[5]) { + second = PyLong_AsInt(fastargs[5]); + if (second == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[6]) { + microsecond = PyLong_AsInt(fastargs[6]); + if (microsecond == -1 && PyErr_Occurred()) { + goto exit; + } + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (fastargs[7]) { + tzinfo = fastargs[7]; + if (!--noptargs) { + goto skip_optional_pos; + } + } +skip_optional_pos: + if (!noptargs) { + goto skip_optional_kwonly; + } + fold = PyLong_AsInt(fastargs[8]); + if (fold == -1 && PyErr_Occurred()) { + goto exit; + } +skip_optional_kwonly: + return_value = datetime_datetime_impl(type, year, month, day, hour, minute, second, microsecond, tzinfo, fold); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_datetime_now__doc__, +"now($type, /, tz=None)\n" +"--\n" +"\n" +"Returns new datetime object representing current time local to tz.\n" +"\n" +" tz\n" +" Timezone object.\n" +"\n" +"If no tz is specified, uses local timezone."); + +#define DATETIME_DATETIME_NOW_METHODDEF \ + {"now", _PyCFunction_CAST(datetime_datetime_now), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, datetime_datetime_now__doc__}, + +static PyObject * +datetime_datetime_now_impl(PyTypeObject *type, PyObject *tz); + +static PyObject * +datetime_datetime_now(PyObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 1 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(tz), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"tz", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "now", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[1]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; + PyObject *tz = Py_None; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, + /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!args) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + tz = args[0]; +skip_optional_pos: + return_value = datetime_datetime_now_impl((PyTypeObject *)type, tz); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_datetime_utcnow__doc__, +"utcnow($type, /)\n" +"--\n" +"\n" +"Return a new datetime representing UTC day and time."); + +#define DATETIME_DATETIME_UTCNOW_METHODDEF \ + {"utcnow", (PyCFunction)datetime_datetime_utcnow, METH_NOARGS|METH_CLASS, datetime_datetime_utcnow__doc__}, + +static PyObject * +datetime_datetime_utcnow_impl(PyTypeObject *type); + +static PyObject * +datetime_datetime_utcnow(PyObject *type, PyObject *Py_UNUSED(ignored)) +{ + return datetime_datetime_utcnow_impl((PyTypeObject *)type); +} + +PyDoc_STRVAR(datetime_datetime_fromtimestamp__doc__, +"fromtimestamp($type, /, timestamp, tz=None)\n" +"--\n" +"\n" +"Create a datetime from a POSIX timestamp.\n" +"\n" +"The timestamp is a number, e.g. created via time.time(), that is interpreted\n" +"as local time."); + +#define DATETIME_DATETIME_FROMTIMESTAMP_METHODDEF \ + {"fromtimestamp", _PyCFunction_CAST(datetime_datetime_fromtimestamp), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, datetime_datetime_fromtimestamp__doc__}, + +static PyObject * +datetime_datetime_fromtimestamp_impl(PyTypeObject *type, PyObject *timestamp, + PyObject *tzinfo); + +static PyObject * +datetime_datetime_fromtimestamp(PyObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 2 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(timestamp), &_Py_ID(tz), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"timestamp", "tz", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "fromtimestamp", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[2]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; + PyObject *timestamp; + PyObject *tzinfo = Py_None; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, + /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!args) { + goto exit; + } + timestamp = args[0]; + if (!noptargs) { + goto skip_optional_pos; + } + tzinfo = args[1]; +skip_optional_pos: + return_value = datetime_datetime_fromtimestamp_impl((PyTypeObject *)type, timestamp, tzinfo); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_datetime_utcfromtimestamp__doc__, +"utcfromtimestamp($type, timestamp, /)\n" +"--\n" +"\n" +"Create a naive UTC datetime from a POSIX timestamp."); + +#define DATETIME_DATETIME_UTCFROMTIMESTAMP_METHODDEF \ + {"utcfromtimestamp", (PyCFunction)datetime_datetime_utcfromtimestamp, METH_O|METH_CLASS, datetime_datetime_utcfromtimestamp__doc__}, + +static PyObject * +datetime_datetime_utcfromtimestamp_impl(PyTypeObject *type, + PyObject *timestamp); + +static PyObject * +datetime_datetime_utcfromtimestamp(PyObject *type, PyObject *timestamp) +{ + PyObject *return_value = NULL; + + return_value = datetime_datetime_utcfromtimestamp_impl((PyTypeObject *)type, timestamp); + + return return_value; +} + +PyDoc_STRVAR(datetime_datetime_strptime__doc__, +"strptime($type, string, format, /)\n" +"--\n" +"\n" +"Parse string according to the given date and time format (like time.strptime())."); + +#define DATETIME_DATETIME_STRPTIME_METHODDEF \ + {"strptime", _PyCFunction_CAST(datetime_datetime_strptime), METH_FASTCALL|METH_CLASS, datetime_datetime_strptime__doc__}, + +static PyObject * +datetime_datetime_strptime_impl(PyTypeObject *type, PyObject *string, + PyObject *format); + +static PyObject * +datetime_datetime_strptime(PyObject *type, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *string; + PyObject *format; + + if (!_PyArg_CheckPositional("strptime", nargs, 2, 2)) { + goto exit; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("strptime", "argument 1", "str", args[0]); + goto exit; + } + string = args[0]; + if (!PyUnicode_Check(args[1])) { + _PyArg_BadArgument("strptime", "argument 2", "str", args[1]); + goto exit; + } + format = args[1]; + return_value = datetime_datetime_strptime_impl((PyTypeObject *)type, string, format); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_datetime_combine__doc__, +"combine($type, /, date, time, tzinfo=)\n" +"--\n" +"\n" +"Construct a datetime from a given date and a given time."); -#define DATETIME_DATE_REPLACE_METHODDEF \ - {"replace", _PyCFunction_CAST(datetime_date_replace), METH_FASTCALL|METH_KEYWORDS, datetime_date_replace__doc__}, +#define DATETIME_DATETIME_COMBINE_METHODDEF \ + {"combine", _PyCFunction_CAST(datetime_datetime_combine), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, datetime_datetime_combine__doc__}, static PyObject * -datetime_date_replace_impl(PyDateTime_Date *self, int year, int month, - int day); +datetime_datetime_combine_impl(PyTypeObject *type, PyObject *date, + PyObject *time, PyObject *tzinfo); static PyObject * -datetime_date_replace(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +datetime_datetime_combine(PyObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { PyObject *return_value = NULL; #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) @@ -126,7 +1632,7 @@ datetime_date_replace(PyObject *self, PyObject *const *args, Py_ssize_t nargs, P } _kwtuple = { .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) .ob_hash = -1, - .ob_item = { &_Py_ID(year), &_Py_ID(month), &_Py_ID(day), }, + .ob_item = { &_Py_ID(date), &_Py_ID(time), &_Py_ID(tzinfo), }, }; #undef NUM_KEYWORDS #define KWTUPLE (&_kwtuple.ob_base.ob_base) @@ -135,200 +1641,107 @@ datetime_date_replace(PyObject *self, PyObject *const *args, Py_ssize_t nargs, P # define KWTUPLE NULL #endif // !Py_BUILD_CORE - static const char * const _keywords[] = {"year", "month", "day", NULL}; + static const char * const _keywords[] = {"date", "time", "tzinfo", NULL}; static _PyArg_Parser _parser = { .keywords = _keywords, - .fname = "replace", + .fname = "combine", .kwtuple = KWTUPLE, }; #undef KWTUPLE PyObject *argsbuf[3]; - Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; - int year = GET_YEAR(self); - int month = GET_MONTH(self); - int day = GET_DAY(self); + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2; + PyObject *date; + PyObject *time; + PyObject *tzinfo = NULL; args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, - /*minpos*/ 0, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + /*minpos*/ 2, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); if (!args) { goto exit; } - if (!noptargs) { - goto skip_optional_pos; - } - if (args[0]) { - year = PyLong_AsInt(args[0]); - if (year == -1 && PyErr_Occurred()) { - goto exit; - } - if (!--noptargs) { - goto skip_optional_pos; - } - } - if (args[1]) { - month = PyLong_AsInt(args[1]); - if (month == -1 && PyErr_Occurred()) { - goto exit; - } - if (!--noptargs) { - goto skip_optional_pos; - } + if (!PyObject_TypeCheck(args[0], DATE_TYPE(NO_STATE))) { + _PyArg_BadArgument("combine", "argument 'date'", (DATE_TYPE(NO_STATE))->tp_name, args[0]); + goto exit; } - day = PyLong_AsInt(args[2]); - if (day == -1 && PyErr_Occurred()) { + date = args[0]; + if (!PyObject_TypeCheck(args[1], TIME_TYPE(NO_STATE))) { + _PyArg_BadArgument("combine", "argument 'time'", (TIME_TYPE(NO_STATE))->tp_name, args[1]); goto exit; } + time = args[1]; + if (!noptargs) { + goto skip_optional_pos; + } + tzinfo = args[2]; skip_optional_pos: - return_value = datetime_date_replace_impl((PyDateTime_Date *)self, year, month, day); + return_value = datetime_datetime_combine_impl((PyTypeObject *)type, date, time, tzinfo); exit: return return_value; } -PyDoc_STRVAR(datetime_time_replace__doc__, -"replace($self, /, hour=unchanged, minute=unchanged, second=unchanged,\n" -" microsecond=unchanged, tzinfo=unchanged, *, fold=unchanged)\n" +PyDoc_STRVAR(datetime_datetime_fromisoformat__doc__, +"fromisoformat($type, string, /)\n" "--\n" "\n" -"Return time with new specified fields."); +"Construct a date from a string in ISO 8601 format."); -#define DATETIME_TIME_REPLACE_METHODDEF \ - {"replace", _PyCFunction_CAST(datetime_time_replace), METH_FASTCALL|METH_KEYWORDS, datetime_time_replace__doc__}, +#define DATETIME_DATETIME_FROMISOFORMAT_METHODDEF \ + {"fromisoformat", (PyCFunction)datetime_datetime_fromisoformat, METH_O|METH_CLASS, datetime_datetime_fromisoformat__doc__}, static PyObject * -datetime_time_replace_impl(PyDateTime_Time *self, int hour, int minute, - int second, int microsecond, PyObject *tzinfo, - int fold); +datetime_datetime_fromisoformat_impl(PyTypeObject *type, PyObject *string); static PyObject * -datetime_time_replace(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +datetime_datetime_fromisoformat(PyObject *type, PyObject *arg) { PyObject *return_value = NULL; - #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) - - #define NUM_KEYWORDS 6 - static struct { - PyGC_Head _this_is_not_used; - PyObject_VAR_HEAD - Py_hash_t ob_hash; - PyObject *ob_item[NUM_KEYWORDS]; - } _kwtuple = { - .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) - .ob_hash = -1, - .ob_item = { &_Py_ID(hour), &_Py_ID(minute), &_Py_ID(second), &_Py_ID(microsecond), &_Py_ID(tzinfo), &_Py_ID(fold), }, - }; - #undef NUM_KEYWORDS - #define KWTUPLE (&_kwtuple.ob_base.ob_base) - - #else // !Py_BUILD_CORE - # define KWTUPLE NULL - #endif // !Py_BUILD_CORE - - static const char * const _keywords[] = {"hour", "minute", "second", "microsecond", "tzinfo", "fold", NULL}; - static _PyArg_Parser _parser = { - .keywords = _keywords, - .fname = "replace", - .kwtuple = KWTUPLE, - }; - #undef KWTUPLE - PyObject *argsbuf[6]; - Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; - int hour = TIME_GET_HOUR(self); - int minute = TIME_GET_MINUTE(self); - int second = TIME_GET_SECOND(self); - int microsecond = TIME_GET_MICROSECOND(self); - PyObject *tzinfo = HASTZINFO(self) ? ((PyDateTime_Time *)self)->tzinfo : Py_None; - int fold = TIME_GET_FOLD(self); + PyObject *string; - args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, - /*minpos*/ 0, /*maxpos*/ 5, /*minkw*/ 0, /*varpos*/ 0, argsbuf); - if (!args) { - goto exit; - } - if (!noptargs) { - goto skip_optional_pos; - } - if (args[0]) { - hour = PyLong_AsInt(args[0]); - if (hour == -1 && PyErr_Occurred()) { - goto exit; - } - if (!--noptargs) { - goto skip_optional_pos; - } - } - if (args[1]) { - minute = PyLong_AsInt(args[1]); - if (minute == -1 && PyErr_Occurred()) { - goto exit; - } - if (!--noptargs) { - goto skip_optional_pos; - } - } - if (args[2]) { - second = PyLong_AsInt(args[2]); - if (second == -1 && PyErr_Occurred()) { - goto exit; - } - if (!--noptargs) { - goto skip_optional_pos; - } - } - if (args[3]) { - microsecond = PyLong_AsInt(args[3]); - if (microsecond == -1 && PyErr_Occurred()) { - goto exit; - } - if (!--noptargs) { - goto skip_optional_pos; - } - } - if (args[4]) { - tzinfo = args[4]; - if (!--noptargs) { - goto skip_optional_pos; - } - } -skip_optional_pos: - if (!noptargs) { - goto skip_optional_kwonly; - } - fold = PyLong_AsInt(args[5]); - if (fold == -1 && PyErr_Occurred()) { + if (!PyUnicode_Check(arg)) { + _PyArg_BadArgument("fromisoformat", "argument", "str", arg); goto exit; } -skip_optional_kwonly: - return_value = datetime_time_replace_impl((PyDateTime_Time *)self, hour, minute, second, microsecond, tzinfo, fold); + string = arg; + return_value = datetime_datetime_fromisoformat_impl((PyTypeObject *)type, string); exit: return return_value; } -PyDoc_STRVAR(datetime_datetime_now__doc__, -"now($type, /, tz=None)\n" +PyDoc_STRVAR(datetime_datetime_isoformat__doc__, +"isoformat($self, /, sep=\'T\', timespec=\'auto\')\n" "--\n" "\n" -"Returns new datetime object representing current time local to tz.\n" +"Return the time formatted according to ISO.\n" "\n" -" tz\n" -" Timezone object.\n" +"The full format looks like \'YYYY-MM-DD HH:MM:SS.mmmmmm\'.\n" +"By default, the fractional part is omitted if self.microsecond == 0.\n" "\n" -"If no tz is specified, uses local timezone."); +"If self.tzinfo is not None, the UTC offset is also attached, giving\n" +"a full format of \'YYYY-MM-DD HH:MM:SS.mmmmmm+HH:MM\'.\n" +"\n" +"Optional argument sep specifies the separator between date and\n" +"time, default \'T\'.\n" +"\n" +"The optional argument timespec specifies the number of additional\n" +"terms of the time to include. Valid options are \'auto\', \'hours\',\n" +"\'minutes\', \'seconds\', \'milliseconds\' and \'microseconds\'."); -#define DATETIME_DATETIME_NOW_METHODDEF \ - {"now", _PyCFunction_CAST(datetime_datetime_now), METH_FASTCALL|METH_KEYWORDS|METH_CLASS, datetime_datetime_now__doc__}, +#define DATETIME_DATETIME_ISOFORMAT_METHODDEF \ + {"isoformat", _PyCFunction_CAST(datetime_datetime_isoformat), METH_FASTCALL|METH_KEYWORDS, datetime_datetime_isoformat__doc__}, static PyObject * -datetime_datetime_now_impl(PyTypeObject *type, PyObject *tz); +datetime_datetime_isoformat_impl(PyDateTime_DateTime *self, int sep, + const char *timespec); static PyObject * -datetime_datetime_now(PyObject *type, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +datetime_datetime_isoformat(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { PyObject *return_value = NULL; #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) - #define NUM_KEYWORDS 1 + #define NUM_KEYWORDS 2 static struct { PyGC_Head _this_is_not_used; PyObject_VAR_HEAD @@ -337,7 +1750,7 @@ datetime_datetime_now(PyObject *type, PyObject *const *args, Py_ssize_t nargs, P } _kwtuple = { .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) .ob_hash = -1, - .ob_item = { &_Py_ID(tz), }, + .ob_item = { &_Py_ID(sep), &_Py_ID(timespec), }, }; #undef NUM_KEYWORDS #define KWTUPLE (&_kwtuple.ob_base.ob_base) @@ -346,28 +1759,58 @@ datetime_datetime_now(PyObject *type, PyObject *const *args, Py_ssize_t nargs, P # define KWTUPLE NULL #endif // !Py_BUILD_CORE - static const char * const _keywords[] = {"tz", NULL}; + static const char * const _keywords[] = {"sep", "timespec", NULL}; static _PyArg_Parser _parser = { .keywords = _keywords, - .fname = "now", + .fname = "isoformat", .kwtuple = KWTUPLE, }; #undef KWTUPLE - PyObject *argsbuf[1]; + PyObject *argsbuf[2]; Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; - PyObject *tz = Py_None; + int sep = 'T'; + const char *timespec = NULL; args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, - /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); if (!args) { goto exit; } if (!noptargs) { goto skip_optional_pos; } - tz = args[0]; + if (args[0]) { + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("isoformat", "argument 'sep'", "a unicode character", args[0]); + goto exit; + } + if (PyUnicode_GET_LENGTH(args[0]) != 1) { + PyErr_Format(PyExc_TypeError, + "isoformat(): argument 'sep' must be a unicode character, " + "not a string of length %zd", + PyUnicode_GET_LENGTH(args[0])); + goto exit; + } + sep = PyUnicode_READ_CHAR(args[0], 0); + if (!--noptargs) { + goto skip_optional_pos; + } + } + if (!PyUnicode_Check(args[1])) { + _PyArg_BadArgument("isoformat", "argument 'timespec'", "str", args[1]); + goto exit; + } + Py_ssize_t timespec_length; + timespec = PyUnicode_AsUTF8AndSize(args[1], ×pec_length); + if (timespec == NULL) { + goto exit; + } + if (strlen(timespec) != (size_t)timespec_length) { + PyErr_SetString(PyExc_ValueError, "embedded null character"); + goto exit; + } skip_optional_pos: - return_value = datetime_datetime_now_impl((PyTypeObject *)type, tz); + return_value = datetime_datetime_isoformat_impl((PyDateTime_DateTime *)self, sep, timespec); exit: return return_value; @@ -524,4 +1967,112 @@ datetime_datetime_replace(PyObject *self, PyObject *const *args, Py_ssize_t narg exit: return return_value; } -/*[clinic end generated code: output=809640e747529c72 input=a9049054013a1b77]*/ + +PyDoc_STRVAR(datetime_datetime_astimezone__doc__, +"astimezone($self, /, tz=None)\n" +"--\n" +"\n" +"Convert to local time in new timezone tz."); + +#define DATETIME_DATETIME_ASTIMEZONE_METHODDEF \ + {"astimezone", _PyCFunction_CAST(datetime_datetime_astimezone), METH_FASTCALL|METH_KEYWORDS, datetime_datetime_astimezone__doc__}, + +static PyObject * +datetime_datetime_astimezone_impl(PyDateTime_DateTime *self, + PyObject *tzinfo); + +static PyObject * +datetime_datetime_astimezone(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) + + #define NUM_KEYWORDS 1 + static struct { + PyGC_Head _this_is_not_used; + PyObject_VAR_HEAD + Py_hash_t ob_hash; + PyObject *ob_item[NUM_KEYWORDS]; + } _kwtuple = { + .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) + .ob_hash = -1, + .ob_item = { &_Py_ID(tz), }, + }; + #undef NUM_KEYWORDS + #define KWTUPLE (&_kwtuple.ob_base.ob_base) + + #else // !Py_BUILD_CORE + # define KWTUPLE NULL + #endif // !Py_BUILD_CORE + + static const char * const _keywords[] = {"tz", NULL}; + static _PyArg_Parser _parser = { + .keywords = _keywords, + .fname = "astimezone", + .kwtuple = KWTUPLE, + }; + #undef KWTUPLE + PyObject *argsbuf[1]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; + PyObject *tzinfo = Py_None; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, + /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); + if (!args) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + tzinfo = args[0]; +skip_optional_pos: + return_value = datetime_datetime_astimezone_impl((PyDateTime_DateTime *)self, tzinfo); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_datetime___reduce_ex____doc__, +"__reduce_ex__($self, proto, /)\n" +"--\n" +"\n"); + +#define DATETIME_DATETIME___REDUCE_EX___METHODDEF \ + {"__reduce_ex__", (PyCFunction)datetime_datetime___reduce_ex__, METH_O, datetime_datetime___reduce_ex____doc__}, + +static PyObject * +datetime_datetime___reduce_ex___impl(PyDateTime_DateTime *self, int proto); + +static PyObject * +datetime_datetime___reduce_ex__(PyObject *self, PyObject *arg) +{ + PyObject *return_value = NULL; + int proto; + + proto = PyLong_AsInt(arg); + if (proto == -1 && PyErr_Occurred()) { + goto exit; + } + return_value = datetime_datetime___reduce_ex___impl((PyDateTime_DateTime *)self, proto); + +exit: + return return_value; +} + +PyDoc_STRVAR(datetime_datetime___reduce____doc__, +"__reduce__($self, /)\n" +"--\n" +"\n"); + +#define DATETIME_DATETIME___REDUCE___METHODDEF \ + {"__reduce__", (PyCFunction)datetime_datetime___reduce__, METH_NOARGS, datetime_datetime___reduce____doc__}, + +static PyObject * +datetime_datetime___reduce___impl(PyDateTime_DateTime *self); + +static PyObject * +datetime_datetime___reduce__(PyObject *self, PyObject *Py_UNUSED(ignored)) +{ + return datetime_datetime___reduce___impl((PyDateTime_DateTime *)self); +} +/*[clinic end generated code: output=0b8403bc58982e60 input=a9049054013a1b77]*/ pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy