Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit028067a

Browse files
committed
Merge remote-tracking branch 'python/main' into SSL_sendfile
2 parentse64f329 +f237953 commit028067a

File tree

285 files changed

+13248
-4817
lines changed

Some content is hidden

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

285 files changed

+13248
-4817
lines changed

‎.github/CODEOWNERS

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,3 +320,9 @@ Lib/test/test__colorize.py @hugovk
320320

321321
# Fuzzing
322322
Modules/_xxtestfuzz/@ammaraskar
323+
324+
# t-strings
325+
**/*interpolationobject*@lysnikolaou
326+
**/*templateobject*@lysnikolaou
327+
**/*templatelib*@lysnikolaou
328+
**/*tstring*@lysnikolaou

‎.github/workflows/jit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ jobs:
113113
find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete
114114
brew install llvm@${{ matrix.llvm }}
115115
export SDKROOT="$(xcrun --show-sdk-path)"
116-
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '' }}
116+
./configure --enable-experimental-jit--enable-universalsdk --with-universal-archs=universal2${{ matrix.debug && '--with-pydebug' || '' }}
117117
make all --jobs 4
118118
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
119119

‎.github/workflows/mypy.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ on:
88
pull_request:
99
paths:
1010
-".github/workflows/mypy.yml"
11+
-"Lib/_colorize.py"
1112
-"Lib/_pyrepl/**"
1213
-"Lib/test/libregrtest/**"
14+
-"Lib/tomllib/**"
15+
-"Misc/mypy/**"
1316
-"Tools/build/generate_sbom.py"
1417
-"Tools/cases_generator/**"
1518
-"Tools/clinic/**"
@@ -42,6 +45,7 @@ jobs:
4245
target:[
4346
"Lib/_pyrepl",
4447
"Lib/test/libregrtest",
48+
"Lib/tomllib",
4549
"Tools/build",
4650
"Tools/cases_generator",
4751
"Tools/clinic",

‎.github/workflows/reusable-docs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ jobs:
6666
run:|
6767
set -Eeuo pipefail
6868
# Build docs with the nit-picky option; write warnings to file
69-
make -C Doc/ PYTHON=../python SPHINXOPTS="--quiet --nitpicky --fail-on-warning --keep-going --warning-file sphinx-warnings.txt" html
69+
make -C Doc/ PYTHON=../python SPHINXOPTS="--quiet --nitpicky --fail-on-warning --warning-file sphinx-warnings.txt" html
7070
-name:'Check warnings'
7171
if:github.event_name == 'pull_request'
7272
run:|
@@ -101,4 +101,4 @@ jobs:
101101
run:make -C Doc/ PYTHON=../python venv
102102
# Use "xvfb-run" since some doctest tests open GUI windows
103103
-name:'Run documentation doctest'
104-
run:xvfb-run make -C Doc/ PYTHON=../python SPHINXERRORHANDLING="--fail-on-warning --keep-going" doctest
104+
run:xvfb-run make -C Doc/ PYTHON=../python SPHINXERRORHANDLING="--fail-on-warning" doctest

‎.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,12 @@ Tools/unicode/data/
138138
# hendrikmuhs/ccache-action@v1
139139
/.ccache
140140
/cross-build/
141-
/jit_stencils.h
141+
/jit_stencils*.h
142142
/platform
143143
/profile-clean-stamp
144144
/profile-run-stamp
145145
/profile-bolt-stamp
146+
/profile-gen-stamp
146147
/pybuilddir.txt
147148
/pyconfig.h
148149
/python-config

‎.ruff.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Default settings for Ruff in CPython
2+
3+
# PYTHON_FOR_REGEN
4+
target-version ="py310"
5+
6+
# PEP 8
7+
line-length =79
8+
9+
# Enable automatic fixes by default.
10+
# To override this, use ``fix = false`` in a subdirectory's config file
11+
# or ``--no-fix`` on the command line.
12+
fix =true

‎Android/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ it:
2525
`android-sdk/cmdline-tools/latest`.
2626
*`export ANDROID_HOME=/path/to/android-sdk`
2727

28-
The`android.py` script also requires the following commands to be on the`PATH`:
28+
The`android.py` script will automatically use the SDK's`sdkmanager` to install
29+
any packages it needs.
30+
31+
The script also requires the following commands to be on the`PATH`:
2932

3033
*`curl`
3134
*`java` (or set the`JAVA_HOME` environment variable)
32-
*`tar`
3335

3436

3537
##Building
@@ -97,7 +99,7 @@ similar to the `Android` directory of the CPython source tree.
9799
The Python test suite can be run on Linux, macOS, or Windows:
98100

99101
* On Linux, the emulator needs access to the KVM virtualization interface, and
100-
a DISPLAY environment variable pointing at an X server.
102+
a DISPLAY environment variable pointing at an X server. Xvfb is acceptable.
101103

102104
The test suite can usually be run on a device with 2 GB of RAM, but this is
103105
borderline, so you may need to increase it to 4 GB. As of Android

‎Android/android.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,19 +138,19 @@ def make_build_python(context):
138138
run(["make","-j",str(os.cpu_count())])
139139

140140

141-
defunpack_deps(host):
141+
defunpack_deps(host,prefix_dir):
142142
deps_url="https://github.com/beeware/cpython-android-source-deps/releases/download"
143143
forname_verin ["bzip2-1.0.8-2","libffi-3.4.4-3","openssl-3.0.15-4",
144144
"sqlite-3.49.1-0","xz-5.4.6-1"]:
145145
filename=f"{name_ver}-{host}.tar.gz"
146146
download(f"{deps_url}/{name_ver}/{filename}")
147-
run(["tar","-xf",filename])
147+
shutil.unpack_archive(filename,prefix_dir)
148148
os.remove(filename)
149149

150150

151151
defdownload(url,target_dir="."):
152152
out_path=f"{target_dir}/{basename(url)}"
153-
run(["curl","-Lf","-o",out_path,url])
153+
run(["curl","-Lf","--retry","5","--retry-all-errors","-o",out_path,url])
154154
returnout_path
155155

156156

@@ -162,8 +162,7 @@ def configure_host_python(context):
162162
prefix_dir=host_dir/"prefix"
163163
ifnotprefix_dir.exists():
164164
prefix_dir.mkdir()
165-
os.chdir(prefix_dir)
166-
unpack_deps(context.host)
165+
unpack_deps(context.host,prefix_dir)
167166

168167
os.chdir(host_dir)
169168
command= [
@@ -241,16 +240,15 @@ def setup_sdk():
241240
# the Gradle wrapper is not included in the CPython repository. Instead, we
242241
# extract it from the Gradle GitHub repository.
243242
defsetup_testbed():
244-
# The Gradle version used for the build is specified in
245-
# testbed/gradle/wrapper/gradle-wrapper.properties. This wrapper version
246-
# doesn't need to match, as any version of the wrapper can download any
247-
# version of Gradle.
248-
version="8.9.0"
249243
paths= ["gradlew","gradlew.bat","gradle/wrapper/gradle-wrapper.jar"]
250-
251244
ifall((TESTBED_DIR/path).exists()forpathinpaths):
252245
return
253246

247+
# The wrapper version isn't important, as any version of the wrapper can
248+
# download any version of Gradle. The Gradle version actually used for the
249+
# build is specified in testbed/gradle/wrapper/gradle-wrapper.properties.
250+
version="8.9.0"
251+
254252
forpathinpaths:
255253
out_path=TESTBED_DIR/path
256254
out_path.parent.mkdir(exist_ok=True)

‎Doc/.ruff.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1+
extend ="../.ruff.toml"# Inherit the project-wide settings
2+
13
target-version ="py312"# Align with the version in oldest_supported_sphinx
2-
fix =true
3-
output-format ="full"
4-
line-length =79
54
extend-exclude = [
65
"includes/*",
76
# Temporary exclusions:

‎Doc/c-api/float.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ NaNs (if such things exist on the platform) isn't handled correctly, and
9696
attempting to unpack a bytes string containing an IEEE INF or NaN will raise an
9797
exception.
9898
99+
Note that NaNs type may not be preserved on IEEE platforms (silent NaN become
100+
quiet), for example on x86 systems in 32-bit mode.
101+
99102
On non-IEEE platforms with more precision, or larger dynamic range, than IEEE
100103
754 supports, not all values can be packed; on non-IEEE platforms with less
101104
precision, or smaller dynamic range, not all values can be unpacked. What

‎Doc/c-api/object.rst

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,38 @@ Object Protocol
613613
614614
.. versionadded:: 3.14
615615
616+
.. c:function:: int PyUnstable_Object_IsUniqueReferencedTemporary(PyObject *obj)
617+
618+
Check if *obj* is a unique temporary object.
619+
Returns ``1`` if *obj* is known to be a unique temporary object,
620+
and ``0`` otherwise. This function cannot fail, but the check is
621+
conservative, and may return ``0`` in some cases even if *obj* is a unique
622+
temporary object.
623+
624+
If an object is a unique temporary, it is guaranteed that the current code
625+
has the only reference to the object. For arguments to C functions, this
626+
should be used instead of checking if the reference count is ``1``. Starting
627+
with Python 3.14, the interpreter internally avoids some reference count
628+
modifications when loading objects onto the operands stack by
629+
:term:`borrowing <borrowed reference>` references when possible, which means
630+
that a reference count of ``1`` by itself does not guarantee that a function
631+
argument uniquely referenced.
632+
633+
In the example below, ``my_func`` is called with a unique temporary object
634+
as its argument::
635+
636+
my_func([1, 2, 3])
637+
638+
In the example below, ``my_func`` is **not** called with a unique temporary
639+
object as its argument, even if its refcount is ``1``::
640+
641+
my_list = [1, 2, 3]
642+
my_func(my_list)
643+
644+
See also the function:c:func:`Py_REFCNT`.
645+
646+
..versionadded::3.14
647+
616648
..c:function::intPyUnstable_IsImmortal(PyObject *obj)
617649
618650
This function returns non-zero if *obj* is:term:`immortal`, and zero

‎Doc/c-api/refcounting.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ of Python objects.
2323
2424
Use the:c:func:`Py_SET_REFCNT()` function to set an object reference count.
2525
26+
See also the function:c:func:`PyUnstable_Object_IsUniqueReferencedTemporary()`.
27+
2628
..versionchanged::3.10
2729
:c:func:`Py_REFCNT()` is changed to the inline static function.
2830

‎Doc/c-api/unicode.rst

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,14 @@ Python:
3333

3434
..c:var:: PyTypeObject PyUnicode_Type
3535
36-
This instance of:c:type:`PyTypeObject` represents the Python Unicode type. It
37-
is exposed to Python code as:py:class:`str`.
36+
This instance of:c:type:`PyTypeObject` represents the Python Unicode type.
37+
It is exposed to Python code as:py:class:`str`.
38+
39+
40+
..c:var:: PyTypeObject PyUnicodeIter_Type
41+
42+
This instance of:c:type:`PyTypeObject` represents the Python Unicode
43+
iterator type. It is used to iterate over Unicode string objects.
3844

3945

4046
..c:type:: Py_UCS4

‎Doc/deprecations/index.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@ Deprecations
55

66
..include::pending-removal-in-3.16.rst
77

8+
..include::pending-removal-in-3.17.rst
9+
810
..include::pending-removal-in-future.rst
911

1012
C API deprecations
1113
------------------
1214

1315
..include::c-api-pending-removal-in-3.15.rst
1416

17+
..include::c-api-pending-removal-in-3.18.rst
18+
1519
..include::c-api-pending-removal-in-future.rst

‎Doc/deprecations/pending-removal-in-3.16.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ Pending removal in Python 3.16
6161
* Calling the Python implementation of:func:`functools.reduce` with *function*
6262
or *sequence* as keyword arguments has been deprecated since Python 3.14.
6363

64+
*:mod:`logging`:
65+
66+
Support for custom logging handlers with the *strm* argument is deprecated
67+
and scheduled for removal in Python 3.16. Define handlers with the *stream*
68+
argument instead. (Contributed by Mariusz Felisiak in:gh:`115032`.)
69+
6470
*:mod:`mimetypes`:
6571

6672
* Valid extensions start with a '.' or are empty for
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Pending removal in Python 3.17
2+
------------------------------
3+
4+
*:mod:`typing`:
5+
6+
- Before Python 3.14, old-style unions were implemented using the private class
7+
``typing._UnionGenericAlias``. This class is no longer needed for the implementation,
8+
but it has been retained for backward compatibility, with removal scheduled for Python
9+
3.17. Users should use documented introspection helpers like:func:`typing.get_origin`
10+
and:func:`typing.get_args` instead of relying on private implementation details.

‎Doc/deprecations/pending-removal-in-future.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ although there is currently no date scheduled for their removal.
1313
deprecated.
1414
* The:class:`argparse.FileType` type converter is deprecated.
1515

16-
*:mod:`array`'s ``'u'`` format code (:gh:`57281`)
17-
1816
*:mod:`builtins`:
1917

2018
* ``bool(NotImplemented)``.
@@ -49,6 +47,8 @@ although there is currently no date scheduled for their removal.
4947
:data:`calendar.FEBRUARY`.
5048
(Contributed by Prince Roshan in:gh:`103636`.)
5149

50+
*:mod:`codecs`: use:func:`open` instead of:func:`codecs.open`. (:gh:`133038`)
51+
5252
*:attr:`codeobject.co_lnotab`: use the:meth:`codeobject.co_lines` method
5353
instead.
5454

‎Doc/library/argparse.rst

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ ArgumentParser objects
7474
prefix_chars='-', fromfile_prefix_chars=None, \
7575
argument_default=None, conflict_handler='error', \
7676
add_help=True, allow_abbrev=True, exit_on_error=True, \
77-
suggest_on_error=False)
77+
suggest_on_error=False, color=False)
7878

7979
Create a new:class:`ArgumentParser` object. All parameters should be passed
8080
as keyword arguments. Each parameter has its own more detailed description
@@ -111,14 +111,15 @@ ArgumentParser objects
111111
*add_help_ - Add a ``-h/--help`` option to the parser (default: ``True``)
112112

113113
*allow_abbrev_ - Allows long options to be abbreviated if the
114-
abbreviation is unambiguous. (default: ``True``)
114+
abbreviation is unambiguous (default: ``True``)
115115

116116
*exit_on_error_ - Determines whether or not:class:`!ArgumentParser` exits with
117117
error info when an error occurs. (default: ``True``)
118118

119119
*suggest_on_error_ - Enables suggestions for mistyped argument choices
120120
and subparser names (default: ``False``)
121121

122+
*color_ - Allow color output (default: ``False``)
122123

123124
..versionchanged::3.5
124125
*allow_abbrev* parameter was added.
@@ -130,6 +131,9 @@ ArgumentParser objects
130131
..versionchanged::3.9
131132
*exit_on_error* parameter was added.
132133

134+
..versionchanged::3.14
135+
*suggest_on_error* and *color* parameters were added.
136+
133137
The following sections describe how each of these are used.
134138

135139

@@ -594,7 +598,8 @@ subparser names, the feature can be enabled by setting ``suggest_on_error`` to
594598
``True``. Note that this only applies for arguments when the choices specified
595599
are strings::
596600

597-
>>> parser = argparse.ArgumentParser(description='Process some integers.', suggest_on_error=True)
601+
>>> parser = argparse.ArgumentParser(description='Process some integers.',
602+
suggest_on_error=True)
598603
>>> parser.add_argument('--action', choices=['sum', 'max'])
599604
>>> parser.add_argument('integers', metavar='N', type=int, nargs='+',
600605
... help='an integer for the accumulator')
@@ -612,6 +617,33 @@ keyword argument::
612617
..versionadded::3.14
613618

614619

620+
color
621+
^^^^^
622+
623+
By default, the help message is printed in plain text. If you want to allow
624+
color in help messages, you can enable it by setting ``color`` to ``True``::
625+
626+
>>> parser = argparse.ArgumentParser(description='Process some integers.',
627+
... color=True)
628+
>>> parser.add_argument('--action', choices=['sum', 'max'])
629+
>>> parser.add_argument('integers', metavar='N', type=int, nargs='+',
630+
... help='an integer for the accumulator')
631+
>>> parser.parse_args(['--help'])
632+
633+
Even if a CLI author has enabled color, it can be
634+
:ref:`controlled using environment variables<using-on-controlling-color>`.
635+
636+
If you're writing code that needs to be compatible with older Python versions
637+
and want to opportunistically use ``color`` when it's available, you
638+
can set it as an attribute after initializing the parser instead of using the
639+
keyword argument::
640+
641+
>>> parser = argparse.ArgumentParser(description='Process some integers.')
642+
>>> parser.color = True
643+
644+
..versionadded::next
645+
646+
615647
The add_argument() method
616648
-------------------------
617649

‎Doc/library/codecs.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,10 @@ wider range of codecs when working with binary files:
208208
..versionchanged::3.11
209209
The ``'U'`` mode has been removed.
210210

211+
..deprecated::next
212+
213+
:func:`codecs.open` has been superseded by:func:`open`.
214+
211215

212216
..function::EncodedFile(file, data_encoding, file_encoding=None, errors='strict')
213217

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp