8000 Merge branch 'main' into argparse-required-zero-or-more · python/cpython@00ea90f · GitHub
[go: up one dir, main page]

Skip to content

Commit 00ea90f

Browse files
Merge branch 'main' into argparse-required-zero-or-more
2 parents a184a52 + 3094cd1 commit 00ea90f
  • reference
  • tools
  • using
  • whatsnew
  • Include
  • Lib
  • Misc
  • Modules
  • Objects
  • PC
  • PCbuild
  • Python
  • Tools
  • Some content is hidden

    Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

    124 files changed

    +2305
    -1035
    lines changed

    .github/CODEOWNERS

    Lines changed: 6 additions & 5 deletions
    Original file line numberDiff line numberDiff line change
    @@ -38,7 +38,6 @@ Python/compile.c @markshannon @iritkatriel
    3838
    Python/assemble.c @markshannon @iritkatriel
    3939
    Python/flowgraph.c @markshannon @iritkatriel
    4040
    Python/instruction_sequence.c @iritkatriel
    41-
    Python/ast_opt.c @isidentical
    4241
    Python/bytecodes.c @markshannon
    4342
    Python/optimizer*.c @markshannon
    4443
    Python/optimizer_analysis.c @Fidget-Spinner
    @@ -158,10 +157,12 @@ Include/internal/pycore_time.h @pganssle @abalkin
    158157
    /Tools/cases_generator/ @markshannon
    159158

    160159
    # AST
    161-
    Python/ast.c @isidentical @JelleZijlstra
    162-
    Parser/asdl.py @isidentical @JelleZijlstra
    163-
    Parser/asdl_c.py @isidentical @JelleZijlstra
    164-
    Lib/ast.py @isidentical @JelleZijlstra
    160+
    Python/ast.c @isidentical @JelleZijlstra @eclips4
    161+
    Python/ast_opt.c @isidentical @eclips4
    162+
    Parser/asdl.py @isidentical @JelleZijlstra @eclips4
    163+
    Parser/asdl_c.py @isidentical @JelleZijlstra @eclips4
    164+
    Lib/ast.py @isidentical @JelleZijlstra @eclips4
    165+
    Lib/test/test_ast/ @eclips4
    165166

    166167
    # Mock
    167168
    /Lib/unittest/mock.py @cjw296

    .pre-commit-config.yaml

    Lines changed: 10 additions & 1 deletion
    Original file line numberDiff line numberDiff line change
    @@ -1,6 +1,6 @@
    11
    repos:
    22
    - repo: https://github.com/astral-sh/ruff-pre-commit
    3-
    rev: v0.4.10
    3+
    rev: v0.6.7
    44
    hooks:
    55
    - id: ruff
    66
    name: Run Ruff (lint) on Doc/
    @@ -10,6 +10,10 @@ repos:
    1010
    name: Run Ruff (lint) on Lib/test/
    1111
    args: [--exit-non-zero-on-fix]
    1212
    files: ^Lib/test/
    13+
    - id: ruff
    14+
    name: Run Ruff (lint) on Tools/build/check_warnings.py
    15+
    args: [--exit-non-zero-on-fix, --config=Tools/build/.ruff.toml]
    16+
    files: ^Tools/build/check_warnings.py
    1317
    - id: ruff
    1418
    name: Run Ruff (lint) on Argument Clinic
    1519
    args: [--exit-non-zero-on-fix, --config=Tools/clinic/.ruff.toml]
    @@ -22,6 +26,11 @@ repos:
    2226
    - repo: https://github.com/psf/black-pre-commit-mirror
    2327
    rev: 24.8.0
    2428
    hooks:
    29+
    - id: black
    30+
    name: Run Black on Tools/build/check_warnings.py
    31+
    files: ^Tools/build/check_warnings.py
    32+
    language_version: python3.12
    33+
    args: [--line-length=79]
    2534
    - id: black
    2635
    name: Run Black on Tools/jit/
    2736
    files: ^Tools/jit/

    Android/README.md

    Lines changed: 12 additions & 11 deletions
    Original file line numberDiff line numberDiff line change
    @@ -1,13 +1,9 @@
    11
    # Python for Android
    22

    33
    These instructions are only needed if you're planning to compile Python for
    4-
    Android yourself. Most users should *not* need to do this. If you're looking to
    5-
    use Python on Android, one of the following tools will provide a much more
    6-
    approachable user experience:
    7-
    8-
    * [Briefcase](https://briefcase.readthedocs.io), from the BeeWare project
    9-
    * [Buildozer](https://buildozer.readthedocs.io), from the Kivy project
    10-
    * [Chaquopy](https://chaquo.com/chaquopy/)
    4+
    Android yourself. Most users should *not* need to do this. Instead, use one of
    5+
    the tools listed in `Doc/using/android.rst`, which will provide a much easier
    6+
    experience.
    117

    128

    139
    ## Prerequisites
    @@ -89,10 +85,10 @@ The test suite can be run on Linux, macOS, or Windows:
    8985
    The test suite can usually be run on a device with 2 GB of RAM, but this is
    9086
    borderline, so you may need to increase it to 4 GB. As of Android
    9187
    Studio Koala, 2 GB is the default for all emulators, although the user interface
    92-
    may indicate otherwise. The effective setting is `hw.ramSize` in
    93-
    ~/.android/avd/*.avd/hardware-qemu.ini, whereas Android Studio displays the
    94-
    value from config.ini. Changing the value in Android Studio will update both of
    95-
    these files.
    88+
    may indicate otherwise. Locate the emulator's directory under `~/.android/avd`,
    89+
    and find `hw.ramSize` in both config.ini and hardware-qemu.ini. Either set these
    90+
    manually to the same value, or use the Android Studio Device Manager, which will
    91+
    update both files.
    9692

    9793
    Before running the test suite, follow the instructions in the previous section
    9894
    to build the architecture you want to test. Then run the test script in one of
    @@ -133,3 +129,8 @@ Every time you run `android.py test`, changes in pure-Python files in the
    133129
    repository's `Lib` directory will be picked up immediately. Changes in C files,
    134130
    and architecture-specific files such as sysconfigdata, will not take effect
    135131
    until you re-run `android.py make-host` or `build`.
    132+
    133+
    134+
    ## Using in your own app
    135+
    136+
    See `Doc/using/android.rst`.

    Doc/Makefile

    Lines changed: 31 additions & 1 deletion
    Original file line numberDiff line numberDiff line change
    @@ -182,13 +182,26 @@ venv:
    182182
    echo "The venv has been created in the $(VENVDIR) directory"; \
    183183
    fi
    184184

    185+
    .PHONY: dist-no-html
    186+
    dist-no-html: dist-text dist-pdf dist-epub dist-texinfo
    187+
    185188
    .PHONY: dist
    186189
    dist:
    187190
    rm -rf dist
    188191
    mkdir -p dist
    189-
    192+
    $(MAKE) dist-html
    193+
    $(MAKE) dist-text
    194+
    $(MAKE) dist-pdf
    195+
    $(MAKE) dist-epub
    196+
    $(MAKE) dist-texinfo
    197+
    198+
    .PHONY: dist-html
    199+
    dist-html:
    190200
    # archive the HTML
    191201
    @echo "Building HTML..."
    202+
    mkdir -p dist
    203+
    rm -rf build/html
    204+
    find dist -name 'python-$(DISTVERSION)-docs-html*' -exec rm -rf {} \;
    192205
    $(MAKE) html
    193206
    cp -pPR build/html dist/python-$(DISTVERSION)-docs-html
    194207
    tar -C dist -cf dist/python-$(DISTVERSION)-docs-html.tar python-$(DISTVERSION)-docs-html
    @@ -198,8 +211,13 @@ dist:
    198211
    rm dist/python-$(DISTVERSION)-docs-html.tar
    199212
    @echo "Build finished and archived!"
    200213

    214+
    .PHONY: dist-text
    215+
    dist-text:
    201216
    # archive the text build
    202217
    @echo "Building text..."
    218+
    mkdir -p dist
    219+
    rm -rf build/text
    220+
    find dist -name 'python-$(DISTVERSION)-docs-text*' -exec rm -rf {} \;
    203221
    $(MAKE) text
    204222
    cp -pPR build/text dist/python-$(DISTVERSION)-docs-text
    205223
    tar -C dist -cf dist/python-$(DISTVERSION)-docs-text.tar python-$(DISTVERSION)-docs-text
    @@ -209,9 +227,13 @@ dist:
    209227
    rm dist/python-$(DISTVERSION)-docs-text.tar
    210228
    @echo "Build finished and archived!"
    211229

    230+
    .PHONY: dist-pdf
    231+
    dist-pdf:
    212232
    # archive the A4 latex
    213233
    @echo "Building LaTeX (A4 paper)..."
    234+
    mkdir -p dist
    214235
    rm -rf build/latex
    236+
    find dist -name 'python-$(DISTVERSION)-docs-pdf*' -exec rm -rf {} \;
    215237
    $(MAKE) latex PAPER=a4
    216238
    # remove zip & bz2 dependency on all-pdf,
    217239
    # as otherwise the full latexmk process is run twice.
    @@ -222,16 +244,24 @@ dist:
    222244
    cp build/latex/docs-pdf.tar.bz2 dist/python-$(DISTVERSION)-docs-pdf-a4.tar.bz2
    223245
    @echo "Build finished and archived!"
    224246

    247+
    .PHONY: dist-epub
    248+
    dist-epub:
    225249
    # copy the epub build
    226250
    @echo "Building EPUB..."
    251+
    mkdir -p dist
    227252
    rm -rf build/epub
    253+
    rm -f dist/python-$(DISTVERSION)-docs.epub
    228254
    $(MAKE) epub
    229255
    cp -pPR build/epub/Python.epub dist/python-$(DISTVERSION)-docs.epub
    230256
    @echo "Build finished and archived!"
    231257

    258+
    .PHONY: dist-texinfo
    259+
    dist-texinfo:
    232260
    # archive the texinfo build
    233261
    @echo "Building Texinfo..."
    262+
    mkdir -p dist
    234263
    rm -rf build/texinfo
    264+
    find dist -name 'python-$(DISTVERSION)-docs-texinfo*' -exec rm -rf {} \;
    235265
    $(MAKE) texinfo
    236266
    $(MAKE) info --directory=build/texinfo
    237267
    cp -pPR build/texinfo dist/python-$(DISTVERSION)-docs-texinfo

    Doc/c-api/contextvars.rst

    Lines changed: 46 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -101,6 +101,52 @@ Context object management functions:
    101101
    current context for the current thread. Returns ``0`` on success,
    102102
    and ``-1`` on error.
    103103
    104+
    .. c:function:: int PyContext_AddWatcher(PyContext_WatchCallback callback)
    105+
    106+
    Register *callback* as a context object watcher for the current interpreter.
    107+
    Return an ID which may be passed to :c:func:`PyContext_ClearWatcher`.
    108+
    In case of error (e.g. no more watcher IDs available),
    109+
    return ``-1`` and set an exception.
    110+
    111+
    .. versionadded:: 3.14
    112+
    113+
    .. c:function:: int PyContext_ClearWatcher(int watcher_id)
    114+
    115+
    Clear watcher identified by *watcher_id* previously returned from
    116+
    :c:func:`PyContext_AddWatcher` for the current interpreter.
    117+
    Return ``0`` on success, or ``-1`` and set an exception on error
    118+
    (e.g. if the given *watcher_id* was never registered.)
    119+
    120+
    .. versionadded:: 3.14
    121+
    122+
    .. c:type:: PyContextEvent
    123+
    124+
    Enumeration of possible context object watcher events:
    125+
    - ``Py_CONTEXT_EVENT_ENTER``
    126+
    - ``Py_CONTEXT_EVENT_EXIT``
    127+
    128+
    .. versionadded:: 3.14
    129+
    130+
    .. c:type:: int (*PyContext_WatchCallback)(PyContextEvent event, PyContext* ctx)
    131+
    132+
    Type of a context object watcher callback function.
    133+
    If *event* is ``Py_CONTEXT_EVENT_ENTER``, then the callback is invoked
    134+
    after *ctx* has been set as the current context for the current thread.
    135+
    Otherwise, the callback is invoked before the deactivation of *ctx* as the current context
    136+
    and the restoration of the previous contex object for the current thread.
    137+
    138+
    If the callback returns with an exception set, it must return ``-1``; this
    139+
    exception will be printed as an unraisable exception using
    140+
    :c:func:`PyErr_FormatUnraisable`. Otherwise it should return ``0``.
    141+
    142+
    There may already be a pending exception set on entry to the callback. In
    143+
    this case, the callback should return ``0`` with the same exception still
    144+
    set. This means the callback may not call any other API that can set an
    145+
    exception unless it saves and clears the exception state first, and restores
    146+
    it before returning.
    147+
    148+
    .. versionadded:: 3.14
    149+
    104150
    105151
    Context variable functions:
    106152

    Doc/c-api/monitoring.rst

    Lines changed: 5 additions & 5 deletions
    Original file line numberDiff line numberDiff line change
    @@ -1,6 +1,6 @@
    11
    .. highlight:: c
    22

    3-
    .. _monitoring:
    3+
    .. _c-api-monitoring:
    44

    55
    Monitoring C API
    66
    ================
    @@ -141,18 +141,18 @@ would typically correspond to a python function.
    141141
    to the base-2 logarithm of ``sys.monitoring.events.PY_START``.
    142142
    ``state_array`` is an array with a monitoring state entry for each event in
    143143
    ``event_types``, it is allocated by the user but populated by
    144-
    ``PyMonitoring_EnterScope`` with information about the activation state of
    144+
    :c:func:`!PyMonitoring_EnterScope` with information about the activation state of
    145145
    the event. The size of ``event_types`` (and hence also of ``state_array``)
    146146
    is given in ``length``.
    147147
    148148
    The ``version`` argumen 10000 t is a pointer to a value which should be allocated
    149149
    by the user together with ``state_array`` and initialized to 0,
    150-
    and then set only by ``PyMonitoring_EnterScope`` itelf. It allows this
    150+
    and then set only by :c:func:`!PyMonitoring_EnterScope` itelf. It allows this
    151151
    function to determine whether event states have changed since the previous call,
    152152
    and to return quickly if they have not.
    153153
    154154
    The scopes referred to here are lexical scopes: a function, class or method.
    155-
    ``PyMonitoring_EnterScope`` should be called whenever the lexical scope is
    155+
    :c:func:`!PyMonitoring_EnterScope` should be called whenever the lexical scope is
    156156
    entered. Scopes can be reentered, reusing the same *state_array* and *version*,
    157157
    in situations like when emulating a recursive Python function. When a code-like's
    158158
    execution is paused, such as when emulating a generator, the scope needs to
    @@ -189,4 +189,4 @@ would typically correspond to a python function.
    189189
    190190
    .. c:function:: int PyMonitoring_ExitScope(void)
    191191
    192-
    Exit the last scope that was entered with ``PyMonitoring_EnterScope``.
    192+
    Exit the last scope that was entered with :c:func:`!PyMonitoring_EnterScope`.

    Doc/c-api/time.rst

    Lines changed: 2 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -1,5 +1,7 @@
    11
    .. highlight:: c
    22

    3+
    .. _c-api-time:
    4+
    35
    PyTime C API
    46
    ============
    57

    Doc/data/stable_abi.dat

    Lines changed: 1 addition & 0 deletions
    Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

    Doc/deprecations/c-api-pending-removal-in-3.14.rst

    Lines changed: 51 additions & 25 deletions
    Original file line numberDiff line numberDiff line change
    @@ -9,38 +9,64 @@ Pending Removal in Python 3.14
    99

    1010
    * Functions to configure Python's initialization, deprecated in Python 3.11:
    1111

    12-
    * ``PySys_SetArgvEx()``: set :c:member:`PyConfig.argv` instead.
    13-
    * ``PySys_SetArgv()``: set :c:member:`PyConfig.argv` instead.
    14-
    * ``Py_SetProgramName()``: set :c:member:`PyConfig.program_name` instead.
    15-
    * ``Py_SetPythonHome()``: set :c:member:`PyConfig.home` instead.
    12+
    * :c:func:`!PySys_SetArgvEx()`:
    13+
    Set :c:member:`PyConfig.argv` instead.
    14+
    * :c:func:`!PySys_SetArgv()`:
    15+
    Set :c:member:`PyConfig.argv` instead.
    16+
    * :c:func:`!Py_SetProgramName()`:
    17+
    Set :c:member:`PyConfig.program_name` instead.
    18+
    * :c:func:`!Py_SetPythonHome()`:
    19+
    Set :c:member:`PyConfig.home` instead.
    1620

    1721
    The :c:func:`Py_InitializeFromConfig` API should be used with
    1822
    :c:type:`PyConfig` instead.
    1923

    2024
    * Global configuration variables:
    2125

    22-
    * :c:var:`Py_DebugFlag`: use :c:member:`PyConfig.parser_debug` instead.
    23-
    * :c:var:`Py_VerboseFlag`: use :c:member:`PyConfig.verbose` instead.
    24-
    * :c:var:`Py_QuietFlag`: use :c:member:`PyConfig.quiet` instead.
    25-
    * :c:var:`Py_InteractiveFlag`: use :c:member:`PyConfig.interactive` instead.
    26-
    * :c:var:`Py_InspectFlag`: use :c:member:`PyConfig.inspect` instead.
    27-
    * :c:var:`Py_OptimizeFlag`: use :c:member:`PyConfig.optimization_level` instead.
    28-
    * :c:var:`Py_NoSiteFlag`: use :c:member:`PyConfig.site_import` instead.
    29-
    * :c:var:`Py_BytesWarningFlag`: use :c:member:`PyConfig.bytes_warning` instead.
    30-
    * :c:var:`Py_FrozenFlag`: use :c:member:`PyConfig.pathconfig_warnings` instead.
    31-
    * :c:var:`Py_IgnoreEnvironmentFlag`: use :c:member:`PyConfig.use_environment` instead.
    32-
    * :c:var:`Py_DontWriteBytecodeFlag`: use :c:member:`PyConfig.write_bytecode` instead.
    33-
    * :c:var:`Py_NoUserSiteDirectory`: use :c:member:`PyConfig.user_site_directory` instead.
    34-
    * :c:var:`Py_UnbufferedStdioFlag`: use :c:member:`PyConfig.buffered_stdio` instead.
    35-
    * :c:var:`Py_HashRandomizationFlag`: use :c:member:`PyConfig.use_hash_seed`
    26+
    * :c:var:`Py_DebugFlag`:
    27+
    Use :c:member:`PyConfig.parser_debug` instead.
    28+
    * :c:var:`Py_VerboseFlag`:
    29+
    Use :c:member:`PyConfig.verbose` instead.
    30+
    * :c:var:`Py_QuietFlag`:
    31+
    Use :c:member:`PyConfig.quiet` instead.
    32+
    * :c:var:`Py_InteractiveFlag`:
    33+
    Use :c:member:`PyConfig.interactive` instead.
    34+
    * :c:var:`Py_InspectFlag`:
    35+
    Use :c:member:`PyConfig.inspect` instead.
    36+
    * :c:var:`Py_OptimizeFlag`:
    37+
    Use :c:member:`PyConfig.optimization_level` instead.
    38+
    * :c:var:`Py_NoSiteFlag`:
    39+
    Use :c:member:`PyConfig.site_import` instead.
    40+
    * :c:var:`Py_BytesWarningFlag`:
    41+
    Use :c:member:`PyConfig.bytes_warning` instead.
    42+
    * :c:var:`Py_FrozenFlag`:
    43+
    Use :c:member:`PyConfig.pathconfig_warnings` instead.
    44+
    * :c:var:`Py_IgnoreEnvironmentFlag`:
    45+
    Use :c:member:`PyConfig.use_environment` instead.
    46+
    * :c:var:`Py_DontWriteBytecodeFlag`:
    47+
    Use :c:member:`PyConfig.write_bytecode` instead.
    48+
    * :c:var:`Py_NoUserSiteDirectory`:
    49+
    Use :c:member:`PyConfig.user_site_directory` instead.
    50+
    * :c:var:`Py_UnbufferedStdioFlag`:
    51+
    Use :c:member:`PyConfig.buffered_stdio` instead.
    52+
    * :c:var:`Py_HashRandomizationFlag`:
    53+
    Use :c:member:`PyConfig.use_hash_seed`
    3654
    and :c:member:`PyConfig.hash_seed` instead.
    37-
    * :c:var:`Py_IsolatedFlag`: use :c:member:`PyConfig.isolated` instead.
    38-
    * :c:var:`Py_LegacyWindowsFSEncodingFlag`: use :c:member:`PyPreConfig.legacy_windows_fs_encoding` instead.
    39-
    * :c:var:`Py_LegacyWindowsStdioFlag`: use :c:member:`PyConfig.legacy_windows_stdio` instead.
    40-
    * :c:var:`!Py_FileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding` instead.
    41-
    * :c:var:`!Py_HasFileSystemDefaultEncoding`: use :c:member:`PyConfig.filesystem_encoding` instead.
    42-
    * :c:var:`!Py_FileSystemDefaultEncodeErrors`: use :c:member:`PyConfig.filesystem_errors` instead.
    43-
    * :c:var:`!Py_UTF8Mode`: use :c:member:`PyPreConfig.utf8_mode` instead. (see :c:func:`Py_PreInitialize`)
    55+
    * :c:var:`Py_IsolatedFlag`:
    56+
    Use :c:member:`PyConfig.isolated` instead.
    57+
    * :c:var:`Py_LegacyWindowsFSEncodingFlag`:
    58+
    Use :c:member:`PyPreConfig.legacy_windows_fs_encoding` instead.
    59+
    * :c:var:`Py_LegacyWindowsStdioFlag`:
    60+
    Use :c:member:`PyConfig.legacy_windows_stdio` instead.
    61+
    * :c:var:`!Py_FileSystemDefaultEncoding`:
    62+
    Use :c:member:`PyConfig.filesystem_encoding` instead.
    63+
    * :c:var:`!Py_HasFileSystemDefaultEncoding`:
    64+
    Use :c:member:`PyConfig.filesystem_encoding` instead.
    65+
    * :c:var:`!Py_FileSystemDefaultEncodeErrors`:
    66+
    Use :c:member:`PyConfig.filesystem_errors` instead.
    67+
    * :c:var:`!Py_UTF8Mode`:
    68+
    Use :c:member:`PyPreConfig.utf8_mode` instead.
    69+
    (see :c:func:`Py_PreInitialize`)
    4470

    4571
    The :c:func:`Py_InitializeFromConfig` API should be used with
    4672
    :c:type:`PyConfig` instead.

    0 commit comments

    Comments
     (0)
    0