mirror of https://github.com/python/cpython
Docs: add link roles with Sphinx extlinks (#117850)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
parent
78da154067
commit
3375282bb8
16
Doc/conf.py
16
Doc/conf.py
|
@ -12,6 +12,8 @@ import time
|
||||||
sys.path.append(os.path.abspath('tools/extensions'))
|
sys.path.append(os.path.abspath('tools/extensions'))
|
||||||
sys.path.append(os.path.abspath('includes'))
|
sys.path.append(os.path.abspath('includes'))
|
||||||
|
|
||||||
|
from pyspecific import SOURCE_URI
|
||||||
|
|
||||||
# General configuration
|
# General configuration
|
||||||
# ---------------------
|
# ---------------------
|
||||||
|
|
||||||
|
@ -24,6 +26,7 @@ extensions = [
|
||||||
'pyspecific',
|
'pyspecific',
|
||||||
'sphinx.ext.coverage',
|
'sphinx.ext.coverage',
|
||||||
'sphinx.ext.doctest',
|
'sphinx.ext.doctest',
|
||||||
|
'sphinx.ext.extlinks',
|
||||||
]
|
]
|
||||||
|
|
||||||
# Skip if downstream redistributors haven't installed them
|
# Skip if downstream redistributors haven't installed them
|
||||||
|
@ -513,6 +516,19 @@ linkcheck_ignore = [
|
||||||
r'https://unix.org/version2/whatsnew/lp64_wp.html',
|
r'https://unix.org/version2/whatsnew/lp64_wp.html',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Options for sphinx.ext.extlinks
|
||||||
|
# -------------------------------
|
||||||
|
|
||||||
|
# This config is a dictionary of external sites,
|
||||||
|
# mapping unique short aliases to a base URL and a prefix.
|
||||||
|
# https://www.sphinx-doc.org/en/master/usage/extensions/extlinks.html
|
||||||
|
extlinks = {
|
||||||
|
"cve": ("https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-%s", "CVE-%s"),
|
||||||
|
"cwe": ("https://cwe.mitre.org/data/definitions/%s.html", "CWE-%s"),
|
||||||
|
"pypi": ("https://pypi.org/project/%s/", "%s"),
|
||||||
|
"source": (SOURCE_URI, "%s"),
|
||||||
|
}
|
||||||
|
extlinks_detect_hardcoded_links = True
|
||||||
|
|
||||||
# Options for extensions
|
# Options for extensions
|
||||||
# ----------------------
|
# ----------------------
|
||||||
|
|
|
@ -616,8 +616,7 @@ use ``p.read(n)``.
|
||||||
("ptys") instead of pipes. Or you can use a Python interface to Don Libes'
|
("ptys") instead of pipes. Or you can use a Python interface to Don Libes'
|
||||||
"expect" library. A Python extension that interfaces to expect is called
|
"expect" library. A Python extension that interfaces to expect is called
|
||||||
"expy" and available from https://expectpy.sourceforge.net. A pure Python
|
"expy" and available from https://expectpy.sourceforge.net. A pure Python
|
||||||
solution that works like expect is `pexpect
|
solution that works like expect is :pypi:`pexpect`.
|
||||||
<https://pypi.org/project/pexpect/>`_.
|
|
||||||
|
|
||||||
|
|
||||||
How do I access the serial (RS232) port?
|
How do I access the serial (RS232) port?
|
||||||
|
@ -625,7 +624,7 @@ How do I access the serial (RS232) port?
|
||||||
|
|
||||||
For Win32, OSX, Linux, BSD, Jython, IronPython:
|
For Win32, OSX, Linux, BSD, Jython, IronPython:
|
||||||
|
|
||||||
https://pypi.org/project/pyserial/
|
:pypi:`pyserial`
|
||||||
|
|
||||||
For Unix, see a Usenet post by Mitch Chapman:
|
For Unix, see a Usenet post by Mitch Chapman:
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ appearance---and the curses library will figure out what control codes
|
||||||
need to be sent to the terminal to produce the right output. curses
|
need to be sent to the terminal to produce the right output. curses
|
||||||
doesn't provide many user-interface concepts such as buttons, checkboxes,
|
doesn't provide many user-interface concepts such as buttons, checkboxes,
|
||||||
or dialogs; if you need such features, consider a user interface library such as
|
or dialogs; if you need such features, consider a user interface library such as
|
||||||
`Urwid <https://pypi.org/project/urwid/>`_.
|
:pypi:`Urwid`.
|
||||||
|
|
||||||
The curses library was originally written for BSD Unix; the later System V
|
The curses library was originally written for BSD Unix; the later System V
|
||||||
versions of Unix from AT&T added many enhancements and new functions. BSD curses
|
versions of Unix from AT&T added many enhancements and new functions. BSD curses
|
||||||
|
@ -56,8 +56,7 @@ versions of curses carried by some proprietary Unixes may not support
|
||||||
everything, though.
|
everything, though.
|
||||||
|
|
||||||
The Windows version of Python doesn't include the :mod:`curses`
|
The Windows version of Python doesn't include the :mod:`curses`
|
||||||
module. A ported version called `UniCurses
|
module. A ported version called :pypi:`UniCurses` is available.
|
||||||
<https://pypi.org/project/UniCurses>`_ is available.
|
|
||||||
|
|
||||||
|
|
||||||
The Python curses module
|
The Python curses module
|
||||||
|
@ -429,8 +428,7 @@ User Input
|
||||||
|
|
||||||
The C curses library offers only very simple input mechanisms. Python's
|
The C curses library offers only very simple input mechanisms. Python's
|
||||||
:mod:`curses` module adds a basic text-input widget. (Other libraries
|
:mod:`curses` module adds a basic text-input widget. (Other libraries
|
||||||
such as `Urwid <https://pypi.org/project/urwid/>`_ have more extensive
|
such as :pypi:`Urwid` have more extensive collections of widgets.)
|
||||||
collections of widgets.)
|
|
||||||
|
|
||||||
There are two methods for getting input from a window:
|
There are two methods for getting input from a window:
|
||||||
|
|
||||||
|
|
|
@ -1912,7 +1912,7 @@ Subclassing QueueHandler and QueueListener- a ``pynng`` example
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
|
|
||||||
In a similar way to the above section, we can implement a listener and handler
|
In a similar way to the above section, we can implement a listener and handler
|
||||||
using `pynng <https://pypi.org/project/pynng/>`_, which is a Python binding to
|
using :pypi:`pynng`, which is a Python binding to
|
||||||
`NNG <https://nng.nanomsg.org/>`_, billed as a spiritual successor to ZeroMQ.
|
`NNG <https://nng.nanomsg.org/>`_, billed as a spiritual successor to ZeroMQ.
|
||||||
The following snippets illustrate -- you can test them in an environment which has
|
The following snippets illustrate -- you can test them in an environment which has
|
||||||
``pynng`` installed. Just for variety, we present the listener first.
|
``pynng`` installed. Just for variety, we present the listener first.
|
||||||
|
@ -3575,9 +3575,8 @@ A Qt GUI for logging
|
||||||
|
|
||||||
A question that comes up from time to time is about how to log to a GUI
|
A question that comes up from time to time is about how to log to a GUI
|
||||||
application. The `Qt <https://www.qt.io/>`_ framework is a popular
|
application. The `Qt <https://www.qt.io/>`_ framework is a popular
|
||||||
cross-platform UI framework with Python bindings using `PySide2
|
cross-platform UI framework with Python bindings using :pypi:`PySide2`
|
||||||
<https://pypi.org/project/PySide2/>`_ or `PyQt5
|
or :pypi:`PyQt5` libraries.
|
||||||
<https://pypi.org/project/PyQt5/>`_ libraries.
|
|
||||||
|
|
||||||
The following example shows how to log to a Qt GUI. This introduces a simple
|
The following example shows how to log to a Qt GUI. This introduces a simple
|
||||||
``QtHandler`` class which takes a callable, which should be a slot in the main
|
``QtHandler`` class which takes a callable, which should be a slot in the main
|
||||||
|
|
|
@ -1478,7 +1478,7 @@ Internationalized Domain Names (IDN)). It builds upon the ``punycode`` encoding
|
||||||
and :mod:`stringprep`.
|
and :mod:`stringprep`.
|
||||||
|
|
||||||
If you need the IDNA 2008 standard from :rfc:`5891` and :rfc:`5895`, use the
|
If you need the IDNA 2008 standard from :rfc:`5891` and :rfc:`5895`, use the
|
||||||
third-party `idna module <https://pypi.org/project/idna/>`_.
|
third-party :pypi:`idna` module.
|
||||||
|
|
||||||
These RFCs together define a protocol to support non-ASCII characters in domain
|
These RFCs together define a protocol to support non-ASCII characters in domain
|
||||||
names. A domain name containing non-ASCII characters (such as
|
names. A domain name containing non-ASCII characters (such as
|
||||||
|
|
|
@ -37,7 +37,7 @@ on efficient attribute extraction for output formatting and manipulation.
|
||||||
Package `dateutil <https://dateutil.readthedocs.io/en/stable/>`_
|
Package `dateutil <https://dateutil.readthedocs.io/en/stable/>`_
|
||||||
Third-party library with expanded time zone and parsing support.
|
Third-party library with expanded time zone and parsing support.
|
||||||
|
|
||||||
Package `DateType <https://pypi.org/project/datetype/>`_
|
Package :pypi:`DateType`
|
||||||
Third-party library that introduces distinct static types to e.g. allow
|
Third-party library that introduces distinct static types to e.g. allow
|
||||||
:term:`static type checkers <static type checker>`
|
:term:`static type checkers <static type checker>`
|
||||||
to differentiate between naive and aware datetimes.
|
to differentiate between naive and aware datetimes.
|
||||||
|
|
|
@ -26,7 +26,7 @@ this package can eliminate the need to use the older and less efficient
|
||||||
|
|
||||||
``importlib.metadata`` operates on third-party *distribution packages*
|
``importlib.metadata`` operates on third-party *distribution packages*
|
||||||
installed into Python's ``site-packages`` directory via tools such as
|
installed into Python's ``site-packages`` directory via tools such as
|
||||||
`pip <https://pypi.org/project/pip/>`_.
|
:pypi:`pip`.
|
||||||
Specifically, it works with distributions with discoverable
|
Specifically, it works with distributions with discoverable
|
||||||
``dist-info`` or ``egg-info`` directories,
|
``dist-info`` or ``egg-info`` directories,
|
||||||
and metadata defined by the `Core metadata specifications <https://packaging.python.org/en/latest/specifications/core-metadata/#core-metadata>`_.
|
and metadata defined by the `Core metadata specifications <https://packaging.python.org/en/latest/specifications/core-metadata/#core-metadata>`_.
|
||||||
|
@ -177,7 +177,7 @@ for more information on entry points, their definition, and usage.
|
||||||
no parameters and always returned a dictionary of entry points, keyed
|
no parameters and always returned a dictionary of entry points, keyed
|
||||||
by group. With ``importlib_metadata`` 5.0 and Python 3.12,
|
by group. With ``importlib_metadata`` 5.0 and Python 3.12,
|
||||||
``entry_points`` always returns an ``EntryPoints`` object. See
|
``entry_points`` always returns an ``EntryPoints`` object. See
|
||||||
`backports.entry_points_selectable <https://pypi.org/project/backports.entry-points-selectable>`_
|
:pypi:`backports.entry_points_selectable`
|
||||||
for compatibility options.
|
for compatibility options.
|
||||||
|
|
||||||
.. versionchanged:: 3.13
|
.. versionchanged:: 3.13
|
||||||
|
|
|
@ -791,7 +791,7 @@ recipes. Currently, the ``sliding_window()``, ``iter_index()``, and ``sieve()``
|
||||||
recipes are being tested to see whether they prove their worth.
|
recipes are being tested to see whether they prove their worth.
|
||||||
|
|
||||||
Substantially all of these recipes and many, many others can be installed from
|
Substantially all of these recipes and many, many others can be installed from
|
||||||
the `more-itertools project <https://pypi.org/project/more-itertools/>`_ found
|
the :pypi:`more-itertools` project found
|
||||||
on the Python Package Index::
|
on the Python Package Index::
|
||||||
|
|
||||||
python -m pip install more-itertools
|
python -m pip install more-itertools
|
||||||
|
|
|
@ -48,7 +48,7 @@ fine-tuning parameters.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
The third-party `regex <https://pypi.org/project/regex/>`_ module,
|
The third-party :pypi:`regex` module,
|
||||||
which has an API compatible with the standard library :mod:`re` module,
|
which has an API compatible with the standard library :mod:`re` module,
|
||||||
but offers additional functionality and a more thorough Unicode support.
|
but offers additional functionality and a more thorough Unicode support.
|
||||||
|
|
||||||
|
|
|
@ -155,7 +155,7 @@ Generate an eight-character alphanumeric password:
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Applications should not
|
Applications should not
|
||||||
`store passwords in a recoverable format <https://cwe.mitre.org/data/definitions/257.html>`_,
|
:cwe:`store passwords in a recoverable format <257>`,
|
||||||
whether plain text or encrypted. They should be salted and hashed
|
whether plain text or encrypted. They should be salted and hashed
|
||||||
using a cryptographically strong one-way (irreversible) hash function.
|
using a cryptographically strong one-way (irreversible) hash function.
|
||||||
|
|
||||||
|
|
|
@ -5559,8 +5559,7 @@ a string to a binary integer or a binary integer to a string in linear time,
|
||||||
have sub-quadratic complexity. Converting a large value such as ``int('1' *
|
have sub-quadratic complexity. Converting a large value such as ``int('1' *
|
||||||
500_000)`` can take over a second on a fast CPU.
|
500_000)`` can take over a second on a fast CPU.
|
||||||
|
|
||||||
Limiting conversion size offers a practical way to avoid `CVE-2020-10735
|
Limiting conversion size offers a practical way to avoid :cve:`2020-10735`.
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735>`_.
|
|
||||||
|
|
||||||
The limit is applied to the number of digit characters in the input or output
|
The limit is applied to the number of digit characters in the input or output
|
||||||
string when a non-linear conversion algorithm would be involved. Underscores
|
string when a non-linear conversion algorithm would be involved. Underscores
|
||||||
|
|
|
@ -19,14 +19,14 @@ support writing TOML.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
The `Tomli-W package <https://pypi.org/project/tomli-w/>`__
|
The :pypi:`Tomli-W package <tomli-w>`
|
||||||
is a TOML writer that can be used in conjunction with this module,
|
is a TOML writer that can be used in conjunction with this module,
|
||||||
providing a write API familiar to users of the standard library
|
providing a write API familiar to users of the standard library
|
||||||
:mod:`marshal` and :mod:`pickle` modules.
|
:mod:`marshal` and :mod:`pickle` modules.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
The `TOML Kit package <https://pypi.org/project/tomlkit/>`__
|
The :pypi:`TOML Kit package <tomlkit>`
|
||||||
is a style-preserving TOML library with both read and write capability.
|
is a style-preserving TOML library with both read and write capability.
|
||||||
It is a recommended replacement for this module for editing already
|
It is a recommended replacement for this module for editing already
|
||||||
existing TOML files.
|
existing TOML files.
|
||||||
|
|
|
@ -39,7 +39,7 @@ they can also be more complex. The :mod:`typing` module provides a vocabulary of
|
||||||
more advanced type hints.
|
more advanced type hints.
|
||||||
|
|
||||||
New features are frequently added to the ``typing`` module.
|
New features are frequently added to the ``typing`` module.
|
||||||
The `typing_extensions <https://pypi.org/project/typing-extensions/>`_ package
|
The :pypi:`typing_extensions` package
|
||||||
provides backports of these new features to older versions of Python.
|
provides backports of these new features to older versions of Python.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
|
@ -35,7 +35,7 @@ is based on the 'action -> assertion' pattern instead of 'record -> replay'
|
||||||
used by many mocking frameworks.
|
used by many mocking frameworks.
|
||||||
|
|
||||||
There is a backport of :mod:`unittest.mock` for earlier versions of Python,
|
There is a backport of :mod:`unittest.mock` for earlier versions of Python,
|
||||||
available as `mock on PyPI <https://pypi.org/project/mock>`_.
|
available as :pypi:`mock` on PyPI.
|
||||||
|
|
||||||
|
|
||||||
Quick Guide
|
Quick Guide
|
||||||
|
|
|
@ -27,7 +27,7 @@ optionally be isolated from the packages in the base environment,
|
||||||
so only those explicitly installed in the virtual environment are available.
|
so only those explicitly installed in the virtual environment are available.
|
||||||
|
|
||||||
When used from within a virtual environment, common installation tools such as
|
When used from within a virtual environment, common installation tools such as
|
||||||
`pip`_ will install Python packages into a virtual environment
|
:pypi:`pip` will install Python packages into a virtual environment
|
||||||
without needing to be told to do so explicitly.
|
without needing to be told to do so explicitly.
|
||||||
|
|
||||||
A virtual environment is (amongst other things):
|
A virtual environment is (amongst other things):
|
||||||
|
@ -614,7 +614,3 @@ subclass which installs setuptools and pip into a created virtual environment::
|
||||||
|
|
||||||
This script is also available for download `online
|
This script is also available for download `online
|
||||||
<https://gist.github.com/vsajip/4673395>`_.
|
<https://gist.github.com/vsajip/4673395>`_.
|
||||||
|
|
||||||
|
|
||||||
.. _setuptools: https://pypi.org/project/setuptools/
|
|
||||||
.. _pip: https://pypi.org/project/pip/
|
|
||||||
|
|
|
@ -124,10 +124,9 @@ large tokens
|
||||||
Expat needs to re-parse unfinished tokens; without the protection
|
Expat needs to re-parse unfinished tokens; without the protection
|
||||||
introduced in Expat 2.6.0, this can lead to quadratic runtime that can
|
introduced in Expat 2.6.0, this can lead to quadratic runtime that can
|
||||||
be used to cause denial of service in the application parsing XML.
|
be used to cause denial of service in the application parsing XML.
|
||||||
The issue is known as
|
The issue is known as :cve:`2023-52425`.
|
||||||
`CVE-2023-52425 <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-52425>`_.
|
|
||||||
|
|
||||||
The documentation for `defusedxml`_ on PyPI has further information about
|
The documentation for :pypi:`defusedxml` on PyPI has further information about
|
||||||
all known attack vectors with examples and references.
|
all known attack vectors with examples and references.
|
||||||
|
|
||||||
.. _defusedxml-package:
|
.. _defusedxml-package:
|
||||||
|
@ -135,14 +134,13 @@ all known attack vectors with examples and references.
|
||||||
The :mod:`!defusedxml` Package
|
The :mod:`!defusedxml` Package
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
`defusedxml`_ is a pure Python package with modified subclasses of all stdlib
|
:pypi:`defusedxml` is a pure Python package with modified subclasses of all stdlib
|
||||||
XML parsers that prevent any potentially malicious operation. Use of this
|
XML parsers that prevent any potentially malicious operation. Use of this
|
||||||
package is recommended for any server code that parses untrusted XML data. The
|
package is recommended for any server code that parses untrusted XML data. The
|
||||||
package also ships with example exploits and extended documentation on more
|
package also ships with example exploits and extended documentation on more
|
||||||
XML exploits such as XPath injection.
|
XML exploits such as XPath injection.
|
||||||
|
|
||||||
|
|
||||||
.. _defusedxml: https://pypi.org/project/defusedxml/
|
|
||||||
.. _Billion Laughs: https://en.wikipedia.org/wiki/Billion_laughs
|
.. _Billion Laughs: https://en.wikipedia.org/wiki/Billion_laughs
|
||||||
.. _ZIP bomb: https://en.wikipedia.org/wiki/Zip_bomb
|
.. _ZIP bomb: https://en.wikipedia.org/wiki/Zip_bomb
|
||||||
.. _DTD: https://en.wikipedia.org/wiki/Document_type_definition
|
.. _DTD: https://en.wikipedia.org/wiki/Document_type_definition
|
||||||
|
|
|
@ -632,7 +632,7 @@ Path objects are traversable using the ``/`` operator or ``joinpath``.
|
||||||
Prior to 3.10, ``joinpath`` was undocumented and accepted
|
Prior to 3.10, ``joinpath`` was undocumented and accepted
|
||||||
exactly one parameter.
|
exactly one parameter.
|
||||||
|
|
||||||
The `zipp <https://pypi.org/project/zipp>`_ project provides backports
|
The :pypi:`zipp` project provides backports
|
||||||
of the latest path object functionality to older Pythons. Use
|
of the latest path object functionality to older Pythons. Use
|
||||||
``zipp.Path`` in place of ``zipfile.Path`` for early access to
|
``zipp.Path`` in place of ``zipfile.Path`` for early access to
|
||||||
changes.
|
changes.
|
||||||
|
|
|
@ -17,7 +17,7 @@ The :mod:`zoneinfo` module provides a concrete time zone implementation to
|
||||||
support the IANA time zone database as originally specified in :pep:`615`. By
|
support the IANA time zone database as originally specified in :pep:`615`. By
|
||||||
default, :mod:`zoneinfo` uses the system's time zone data if available; if no
|
default, :mod:`zoneinfo` uses the system's time zone data if available; if no
|
||||||
system time zone data is available, the library will fall back to using the
|
system time zone data is available, the library will fall back to using the
|
||||||
first-party `tzdata`_ package available on PyPI.
|
first-party :pypi:`tzdata` package available on PyPI.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ first-party `tzdata`_ package available on PyPI.
|
||||||
Provides the :class:`~datetime.time` and :class:`~datetime.datetime`
|
Provides the :class:`~datetime.time` and :class:`~datetime.datetime`
|
||||||
types with which the :class:`ZoneInfo` class is designed to be used.
|
types with which the :class:`ZoneInfo` class is designed to be used.
|
||||||
|
|
||||||
Package `tzdata`_
|
Package :pypi:`tzdata`
|
||||||
First-party package maintained by the CPython core developers to supply
|
First-party package maintained by the CPython core developers to supply
|
||||||
time zone data via PyPI.
|
time zone data via PyPI.
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ Data sources
|
||||||
|
|
||||||
The ``zoneinfo`` module does not directly provide time zone data, and instead
|
The ``zoneinfo`` module does not directly provide time zone data, and instead
|
||||||
pulls time zone information from the system time zone database or the
|
pulls time zone information from the system time zone database or the
|
||||||
first-party PyPI package `tzdata`_, if available. Some systems, including
|
first-party PyPI package :pypi:`tzdata`, if available. Some systems, including
|
||||||
notably Windows systems, do not have an IANA database available, and so for
|
notably Windows systems, do not have an IANA database available, and so for
|
||||||
projects targeting cross-platform compatibility that require time zone data, it
|
projects targeting cross-platform compatibility that require time zone data, it
|
||||||
is recommended to declare a dependency on tzdata. If neither system data nor
|
is recommended to declare a dependency on tzdata. If neither system data nor
|
||||||
|
@ -413,5 +413,3 @@ Exceptions and warnings
|
||||||
be filtered out, such as a relative path.
|
be filtered out, such as a relative path.
|
||||||
|
|
||||||
.. Links and references:
|
.. Links and references:
|
||||||
|
|
||||||
.. _tzdata: https://pypi.org/project/tzdata/
|
|
||||||
|
|
|
@ -26,7 +26,6 @@ from sphinx.errors import NoUri
|
||||||
from sphinx.locale import _ as sphinx_gettext
|
from sphinx.locale import _ as sphinx_gettext
|
||||||
from sphinx.util import logging
|
from sphinx.util import logging
|
||||||
from sphinx.util.docutils import SphinxDirective
|
from sphinx.util.docutils import SphinxDirective
|
||||||
from sphinx.util.nodes import split_explicit_title
|
|
||||||
from sphinx.writers.text import TextWriter, TextTranslator
|
from sphinx.writers.text import TextWriter, TextTranslator
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -39,6 +38,7 @@ except ImportError:
|
||||||
|
|
||||||
ISSUE_URI = 'https://bugs.python.org/issue?@action=redirect&bpo=%s'
|
ISSUE_URI = 'https://bugs.python.org/issue?@action=redirect&bpo=%s'
|
||||||
GH_ISSUE_URI = 'https://github.com/python/cpython/issues/%s'
|
GH_ISSUE_URI = 'https://github.com/python/cpython/issues/%s'
|
||||||
|
# Used in conf.py and updated here by python/release-tools/run_release.py
|
||||||
SOURCE_URI = 'https://github.com/python/cpython/tree/main/%s'
|
SOURCE_URI = 'https://github.com/python/cpython/tree/main/%s'
|
||||||
|
|
||||||
# monkey-patch reST parser to disable alphabetic and roman enumerated lists
|
# monkey-patch reST parser to disable alphabetic and roman enumerated lists
|
||||||
|
@ -54,6 +54,7 @@ from sphinx.domains import std
|
||||||
|
|
||||||
std.token_re = re.compile(r'`((~?[\w-]*:)?\w+)`')
|
std.token_re = re.compile(r'`((~?[\w-]*:)?\w+)`')
|
||||||
|
|
||||||
|
|
||||||
# Support for marking up and linking to bugs.python.org issues
|
# Support for marking up and linking to bugs.python.org issues
|
||||||
|
|
||||||
def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
|
def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
|
||||||
|
@ -85,16 +86,6 @@ def gh_issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
|
||||||
return [refnode], []
|
return [refnode], []
|
||||||
|
|
||||||
|
|
||||||
# Support for linking to Python source files easily
|
|
||||||
|
|
||||||
def source_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
|
|
||||||
has_t, title, target = split_explicit_title(text)
|
|
||||||
title = utils.unescape(title)
|
|
||||||
target = utils.unescape(target)
|
|
||||||
refnode = nodes.reference(title, title, refuri=SOURCE_URI % target)
|
|
||||||
return [refnode], []
|
|
||||||
|
|
||||||
|
|
||||||
# Support for marking up implementation details
|
# Support for marking up implementation details
|
||||||
|
|
||||||
class ImplementationDetail(Directive):
|
class ImplementationDetail(Directive):
|
||||||
|
@ -194,7 +185,6 @@ class Availability(SphinxDirective):
|
||||||
return platforms
|
return platforms
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Support for documenting audit event
|
# Support for documenting audit event
|
||||||
|
|
||||||
def audit_events_purge(app, env, docname):
|
def audit_events_purge(app, env, docname):
|
||||||
|
@ -710,7 +700,6 @@ def patch_pairindextypes(app, _env) -> None:
|
||||||
def setup(app):
|
def setup(app):
|
||||||
app.add_role('issue', issue_role)
|
app.add_role('issue', issue_role)
|
||||||
app.add_role('gh', gh_issue_role)
|
app.add_role('gh', gh_issue_role)
|
||||||
app.add_role('source', source_role)
|
|
||||||
app.add_directive('impl-detail', ImplementationDetail)
|
app.add_directive('impl-detail', ImplementationDetail)
|
||||||
app.add_directive('availability', Availability)
|
app.add_directive('availability', Availability)
|
||||||
app.add_directive('audit-event', AuditEvent)
|
app.add_directive('audit-event', AuditEvent)
|
||||||
|
|
|
@ -145,7 +145,7 @@ There are several options for building GUI applications on the Mac with Python.
|
||||||
|
|
||||||
*PyObjC* is a Python binding to Apple's Objective-C/Cocoa framework, which is
|
*PyObjC* is a Python binding to Apple's Objective-C/Cocoa framework, which is
|
||||||
the foundation of most modern Mac development. Information on PyObjC is
|
the foundation of most modern Mac development. Information on PyObjC is
|
||||||
available from https://pypi.org/project/pyobjc/.
|
available from :pypi:`pyobjc`.
|
||||||
|
|
||||||
The standard Python GUI toolkit is :mod:`tkinter`, based on the cross-platform
|
The standard Python GUI toolkit is :mod:`tkinter`, based on the cross-platform
|
||||||
Tk toolkit (https://www.tcl.tk). An Aqua-native version of Tk is bundled with
|
Tk toolkit (https://www.tcl.tk). An Aqua-native version of Tk is bundled with
|
||||||
|
@ -177,7 +177,7 @@ Distributing Python Applications
|
||||||
A range of tools exist for converting your Python code into a standalone
|
A range of tools exist for converting your Python code into a standalone
|
||||||
distributable application:
|
distributable application:
|
||||||
|
|
||||||
* `py2app <https://pypi.org/project/py2app/>`__: Supports creating macOS ``.app``
|
* :pypi:`py2app`: Supports creating macOS ``.app``
|
||||||
bundles from a Python project.
|
bundles from a Python project.
|
||||||
|
|
||||||
* `Briefcase <https://briefcase.readthedocs.io>`__: Part of the `BeeWare Project
|
* `Briefcase <https://briefcase.readthedocs.io>`__: Part of the `BeeWare Project
|
||||||
|
|
|
@ -1285,7 +1285,7 @@ The Windows-specific standard modules are documented in
|
||||||
PyWin32
|
PyWin32
|
||||||
-------
|
-------
|
||||||
|
|
||||||
The `PyWin32 <https://pypi.org/project/pywin32>`_ module by Mark Hammond
|
The :pypi:`PyWin32` module by Mark Hammond
|
||||||
is a collection of modules for advanced Windows-specific support. This includes
|
is a collection of modules for advanced Windows-specific support. This includes
|
||||||
utilities for:
|
utilities for:
|
||||||
|
|
||||||
|
|
|
@ -3015,8 +3015,7 @@ Changes to Python's build process and to the C API include:
|
||||||
``PyRun_SimpleString("sys.path.pop(0)\n")`` afterwards to discard
|
``PyRun_SimpleString("sys.path.pop(0)\n")`` afterwards to discard
|
||||||
the first ``sys.path`` component.
|
the first ``sys.path`` component.
|
||||||
|
|
||||||
Security issue reported as `CVE-2008-5983
|
Security issue reported as :cve:`2008-5983`;
|
||||||
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_;
|
|
||||||
discussed in :gh:`50003`, and fixed by Antoine Pitrou.
|
discussed in :gh:`50003`, and fixed by Antoine Pitrou.
|
||||||
|
|
||||||
* The BerkeleyDB module now has a C API object, available as
|
* The BerkeleyDB module now has a C API object, available as
|
||||||
|
|
|
@ -1831,8 +1831,7 @@ The :mod:`unittest` module was greatly enhanced; many
|
||||||
new features were added. Most of these features were implemented
|
new features were added. Most of these features were implemented
|
||||||
by Michael Foord, unless otherwise noted. The enhanced version of
|
by Michael Foord, unless otherwise noted. The enhanced version of
|
||||||
the module is downloadable separately for use with Python versions 2.4 to 2.6,
|
the module is downloadable separately for use with Python versions 2.4 to 2.6,
|
||||||
packaged as the :mod:`!unittest2` package, from
|
packaged as the :mod:`!unittest2` package, from :pypi:`unittest2`.
|
||||||
https://pypi.org/project/unittest2.
|
|
||||||
|
|
||||||
When used from the command line, the module can automatically discover
|
When used from the command line, the module can automatically discover
|
||||||
tests. It's not as fancy as `py.test <https://pytest.org>`__ or
|
tests. It's not as fancy as `py.test <https://pytest.org>`__ or
|
||||||
|
@ -2178,8 +2177,7 @@ Changes to Python's build process and to the C API include:
|
||||||
whether the application should be using :c:func:`!PySys_SetArgvEx`
|
whether the application should be using :c:func:`!PySys_SetArgvEx`
|
||||||
with *updatepath* set to false.
|
with *updatepath* set to false.
|
||||||
|
|
||||||
Security issue reported as `CVE-2008-5983
|
Security issue reported as :cve:`2008-5983`;
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_;
|
|
||||||
discussed in :issue:`5753`, and fixed by Antoine Pitrou.
|
discussed in :issue:`5753`, and fixed by Antoine Pitrou.
|
||||||
|
|
||||||
* New macros: the Python header files now define the following macros:
|
* New macros: the Python header files now define the following macros:
|
||||||
|
@ -2626,7 +2624,7 @@ with the first of those changes appearing in the Python 2.7.7 release.
|
||||||
2 applications. (Contributed by Alex Gaynor; :issue:`21304`.)
|
2 applications. (Contributed by Alex Gaynor; :issue:`21304`.)
|
||||||
|
|
||||||
* OpenSSL 1.0.1h was upgraded for the official Windows installers published on
|
* OpenSSL 1.0.1h was upgraded for the official Windows installers published on
|
||||||
python.org. (contributed by Zachary Ware in :issue:`21671` for CVE-2014-0224)
|
python.org. (Contributed by Zachary Ware in :issue:`21671` for :cve:`2014-0224`.)
|
||||||
|
|
||||||
:pep:`466` related features added in Python 2.7.9:
|
:pep:`466` related features added in Python 2.7.9:
|
||||||
|
|
||||||
|
|
|
@ -2331,8 +2331,7 @@ Converting between :class:`int` and :class:`str` in bases other than 2
|
||||||
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
||||||
now raises a :exc:`ValueError` if the number of digits in string form is
|
now raises a :exc:`ValueError` if the number of digits in string form is
|
||||||
above a limit to avoid potential denial of service attacks due to the
|
above a limit to avoid potential denial of service attacks due to the
|
||||||
algorithmic complexity. This is a mitigation for `CVE-2020-10735
|
algorithmic complexity. This is a mitigation for :cve:`2020-10735`.
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735>`_.
|
|
||||||
This limit can be configured or disabled by environment variable, command
|
This limit can be configured or disabled by environment variable, command
|
||||||
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
||||||
length limitation <int_max_str_digits>` documentation. The default limit
|
length limitation <int_max_str_digits>` documentation. The default limit
|
||||||
|
|
|
@ -544,8 +544,7 @@ Other CPython Implementation Changes
|
||||||
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
||||||
now raises a :exc:`ValueError` if the number of digits in string form is
|
now raises a :exc:`ValueError` if the number of digits in string form is
|
||||||
above a limit to avoid potential denial of service attacks due to the
|
above a limit to avoid potential denial of service attacks due to the
|
||||||
algorithmic complexity. This is a mitigation for `CVE-2020-10735
|
algorithmic complexity. This is a mitigation for :cve:`2020-10735`.
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735>`_.
|
|
||||||
This limit can be configured or disabled by environment variable, command
|
This limit can be configured or disabled by environment variable, command
|
||||||
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
||||||
length limitation <int_max_str_digits>` documentation. The default limit
|
length limitation <int_max_str_digits>` documentation. The default limit
|
||||||
|
@ -2028,7 +2027,7 @@ Removed C APIs are :ref:`listed separately <whatsnew311-c-api-removed>`.
|
||||||
(and corresponding :c:macro:`!EXPERIMENTAL_ISOLATED_SUBINTERPRETERS` macro)
|
(and corresponding :c:macro:`!EXPERIMENTAL_ISOLATED_SUBINTERPRETERS` macro)
|
||||||
have been removed.
|
have been removed.
|
||||||
|
|
||||||
* `Pynche <https://pypi.org/project/pynche/>`_
|
* :pypi:`Pynche`
|
||||||
--- The Pythonically Natural Color and Hue Editor --- has been moved out
|
--- The Pythonically Natural Color and Hue Editor --- has been moved out
|
||||||
of ``Tools/scripts`` and is `being developed independently
|
of ``Tools/scripts`` and is `being developed independently
|
||||||
<https://gitlab.com/warsaw/pynche/-/tree/main>`_ from the Python source tree.
|
<https://gitlab.com/warsaw/pynche/-/tree/main>`_ from the Python source tree.
|
||||||
|
|
|
@ -1659,12 +1659,10 @@ smtpd
|
||||||
|
|
||||||
* The ``smtpd`` module has been removed according to the schedule in :pep:`594`,
|
* The ``smtpd`` module has been removed according to the schedule in :pep:`594`,
|
||||||
having been deprecated in Python 3.4.7 and 3.5.4.
|
having been deprecated in Python 3.4.7 and 3.5.4.
|
||||||
Use aiosmtpd_ PyPI module or any other
|
Use the :pypi:`aiosmtpd` PyPI module or any other
|
||||||
:mod:`asyncio`-based server instead.
|
:mod:`asyncio`-based server instead.
|
||||||
(Contributed by Oleg Iarygin in :gh:`93243`.)
|
(Contributed by Oleg Iarygin in :gh:`93243`.)
|
||||||
|
|
||||||
.. _aiosmtpd: https://pypi.org/project/aiosmtpd/
|
|
||||||
|
|
||||||
sqlite3
|
sqlite3
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
@ -1701,9 +1699,8 @@ ssl
|
||||||
instead, create a :class:`ssl.SSLContext` object and call its
|
instead, create a :class:`ssl.SSLContext` object and call its
|
||||||
:class:`ssl.SSLContext.wrap_socket` method. Any package that still uses
|
:class:`ssl.SSLContext.wrap_socket` method. Any package that still uses
|
||||||
:func:`!ssl.wrap_socket` is broken and insecure. The function neither sends a
|
:func:`!ssl.wrap_socket` is broken and insecure. The function neither sends a
|
||||||
SNI TLS extension nor validates server hostname. Code is subject to `CWE-295
|
SNI TLS extension nor validates the server hostname. Code is subject to :cwe:`295`
|
||||||
<https://cwe.mitre.org/data/definitions/295.html>`_: Improper Certificate
|
(Improper Certificate Validation).
|
||||||
Validation.
|
|
||||||
(Contributed by Victor Stinner in :gh:`94199`.)
|
(Contributed by Victor Stinner in :gh:`94199`.)
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
|
@ -1832,7 +1829,7 @@ Changes in the Python API
|
||||||
|
|
||||||
* Remove the ``asyncore``-based ``smtpd`` module deprecated in Python 3.4.7
|
* Remove the ``asyncore``-based ``smtpd`` module deprecated in Python 3.4.7
|
||||||
and 3.5.4. A recommended replacement is the
|
and 3.5.4. A recommended replacement is the
|
||||||
:mod:`asyncio`-based aiosmtpd_ PyPI module.
|
:mod:`asyncio`-based :pypi:`aiosmtpd` PyPI module.
|
||||||
|
|
||||||
* :func:`shlex.split`: Passing ``None`` for *s* argument now raises an
|
* :func:`shlex.split`: Passing ``None`` for *s* argument now raises an
|
||||||
exception, rather than reading :data:`sys.stdin`. The feature was deprecated
|
exception, rather than reading :data:`sys.stdin`. The feature was deprecated
|
||||||
|
|
|
@ -185,7 +185,7 @@ Other Language Changes
|
||||||
|
|
||||||
(Contributed by Victor Stinner in :gh:`114570`.)
|
(Contributed by Victor Stinner in :gh:`114570`.)
|
||||||
|
|
||||||
* Allow controlling Expat >=2.6.0 reparse deferral (CVE-2023-52425)
|
* Allow controlling Expat >=2.6.0 reparse deferral (:cve:`2023-52425`)
|
||||||
by adding five new methods:
|
by adding five new methods:
|
||||||
|
|
||||||
* :meth:`xml.etree.ElementTree.XMLParser.flush`
|
* :meth:`xml.etree.ElementTree.XMLParser.flush`
|
||||||
|
@ -385,7 +385,7 @@ email
|
||||||
``getattr(email.utils, 'supports_strict_parsing', False)`` can be used to
|
``getattr(email.utils, 'supports_strict_parsing', False)`` can be used to
|
||||||
check if the *strict* parameter is available.
|
check if the *strict* parameter is available.
|
||||||
(Contributed by Thomas Dwyer and Victor Stinner for :gh:`102988` to improve
|
(Contributed by Thomas Dwyer and Victor Stinner for :gh:`102988` to improve
|
||||||
the CVE-2023-27043 fix.)
|
the :cve:`2023-27043` fix.)
|
||||||
|
|
||||||
fractions
|
fractions
|
||||||
---------
|
---------
|
||||||
|
@ -1316,9 +1316,8 @@ PEP 594: dead batteries
|
||||||
|
|
||||||
* ``cgi.FieldStorage`` can typically be replaced with
|
* ``cgi.FieldStorage`` can typically be replaced with
|
||||||
:func:`urllib.parse.parse_qsl` for ``GET`` and ``HEAD`` requests,
|
:func:`urllib.parse.parse_qsl` for ``GET`` and ``HEAD`` requests,
|
||||||
and the :mod:`email.message` module or `multipart
|
and the :mod:`email.message` module or :pypi:`multipart`
|
||||||
<https://pypi.org/project/multipart/>`__ PyPI project for ``POST`` and
|
PyPI project for ``POST`` and ``PUT``.
|
||||||
``PUT``.
|
|
||||||
|
|
||||||
* ``cgi.parse()`` can be replaced by calling :func:`urllib.parse.parse_qs`
|
* ``cgi.parse()`` can be replaced by calling :func:`urllib.parse.parse_qs`
|
||||||
directly on the desired query string, except for ``multipart/form-data``
|
directly on the desired query string, except for ``multipart/form-data``
|
||||||
|
@ -1336,7 +1335,7 @@ PEP 594: dead batteries
|
||||||
* ``cgi.parse_multipart()`` can be replaced with the functionality in the
|
* ``cgi.parse_multipart()`` can be replaced with the functionality in the
|
||||||
:mod:`email` package (e.g. :class:`email.message.EmailMessage` and
|
:mod:`email` package (e.g. :class:`email.message.EmailMessage` and
|
||||||
:class:`email.message.Message`) which implements the same MIME RFCs, or
|
:class:`email.message.Message`) which implements the same MIME RFCs, or
|
||||||
with the `multipart <https://pypi.org/project/multipart/>`__ PyPI project.
|
with the :pypi:`multipart` PyPI project.
|
||||||
|
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
|
@ -1344,21 +1343,19 @@ PEP 594: dead batteries
|
||||||
The :mod:`hashlib` module is a potential replacement for certain use cases.
|
The :mod:`hashlib` module is a potential replacement for certain use cases.
|
||||||
Otherwise, the following PyPI projects can be used:
|
Otherwise, the following PyPI projects can be used:
|
||||||
|
|
||||||
* `bcrypt <https://pypi.org/project/bcrypt/>`_:
|
* :pypi:`bcrypt`:
|
||||||
Modern password hashing for your software and your servers.
|
Modern password hashing for your software and your servers.
|
||||||
* `passlib <https://pypi.org/project/passlib/>`_:
|
* :pypi:`passlib`:
|
||||||
Comprehensive password hashing framework supporting over 30 schemes.
|
Comprehensive password hashing framework supporting over 30 schemes.
|
||||||
* `argon2-cffi <https://pypi.org/project/argon2-cffi/>`_:
|
* :pypi:`argon2-cffi`:
|
||||||
The secure Argon2 password hashing algorithm.
|
The secure Argon2 password hashing algorithm.
|
||||||
* `legacycrypt <https://pypi.org/project/legacycrypt/>`_:
|
* :pypi:`legacycrypt`:
|
||||||
Wrapper to the POSIX crypt library call and associated functionality.
|
Wrapper to the POSIX crypt library call and associated functionality.
|
||||||
|
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!imghdr`: use the projects
|
* :mod:`!imghdr`: use the projects :pypi:`filetype`,
|
||||||
`filetype <https://pypi.org/project/filetype/>`_,
|
:pypi:`puremagic`, or :pypi:`python-magic` instead.
|
||||||
`puremagic <https://pypi.org/project/puremagic/>`_,
|
|
||||||
or `python-magic <https://pypi.org/project/python-magic/>`_ instead.
|
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!mailcap`.
|
* :mod:`!mailcap`.
|
||||||
|
@ -1372,8 +1369,7 @@ PEP 594: dead batteries
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!nntplib`:
|
* :mod:`!nntplib`:
|
||||||
the `PyPI nntplib project <https://pypi.org/project/nntplib/>`_
|
the :pypi:`nntplib` PyPI project can be used instead.
|
||||||
can be used instead.
|
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!ossaudiodev`: use the
|
* :mod:`!ossaudiodev`: use the
|
||||||
|
@ -1383,23 +1379,19 @@ PEP 594: dead batteries
|
||||||
* :mod:`!pipes`: use the :mod:`subprocess` module instead.
|
* :mod:`!pipes`: use the :mod:`subprocess` module instead.
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!sndhdr`: use the projects
|
* :mod:`!sndhdr`: use the projects :pypi:`filetype_,
|
||||||
`filetype <https://pypi.org/project/filetype/>`_,
|
:pypi:`puremagic`, or :pypi:`python-magic` instead.
|
||||||
`puremagic <https://pypi.org/project/puremagic/>`_, or
|
|
||||||
`python-magic <https://pypi.org/project/python-magic/>`_ instead.
|
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!spwd`:
|
* :mod:`!spwd`:
|
||||||
the `python-pam project <https://pypi.org/project/python-pam/>`_
|
the :pypi:`python-pam` project can be used instead.
|
||||||
can be used instead.
|
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!sunau`.
|
* :mod:`!sunau`.
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!telnetlib`, use the projects
|
* :mod:`!telnetlib`, use the projects :pypi:`telnetlib3 ` or
|
||||||
`telnetlib3 <https://pypi.org/project/telnetlib3/>`_ or
|
:pypi:`Exscript` instead.
|
||||||
`Exscript <https://pypi.org/project/Exscript/>`_ instead.
|
|
||||||
(Contributed by Victor Stinner in :gh:`104773`.)
|
(Contributed by Victor Stinner in :gh:`104773`.)
|
||||||
|
|
||||||
* :mod:`!uu`: the :mod:`base64` module is a modern alternative.
|
* :mod:`!uu`: the :mod:`base64` module is a modern alternative.
|
||||||
|
|
|
@ -951,7 +951,7 @@ New :class:`~collections.abc.Awaitable`, :class:`~collections.abc.Coroutine`,
|
||||||
(Contributed by Yury Selivanov in :issue:`24184`.)
|
(Contributed by Yury Selivanov in :issue:`24184`.)
|
||||||
|
|
||||||
For earlier Python versions, a backport of the new ABCs is available in an
|
For earlier Python versions, a backport of the new ABCs is available in an
|
||||||
external `PyPI package <https://pypi.org/project/backports_abc>`_.
|
external :pypi:`PyPI package <backports_abc>`.
|
||||||
|
|
||||||
|
|
||||||
compileall
|
compileall
|
||||||
|
|
|
@ -2609,8 +2609,7 @@ Converting between :class:`int` and :class:`str` in bases other than 2
|
||||||
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
||||||
now raises a :exc:`ValueError` if the number of digits in string form is
|
now raises a :exc:`ValueError` if the number of digits in string form is
|
||||||
above a limit to avoid potential denial of service attacks due to the
|
above a limit to avoid potential denial of service attacks due to the
|
||||||
algorithmic complexity. This is a mitigation for `CVE-2020-10735
|
algorithmic complexity. This is a mitigation for :cve:`2020-10735`.
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735>`_.
|
|
||||||
This limit can be configured or disabled by environment variable, command
|
This limit can be configured or disabled by environment variable, command
|
||||||
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
||||||
length limitation <int_max_str_digits>` documentation. The default limit
|
length limitation <int_max_str_digits>` documentation. The default limit
|
||||||
|
|
|
@ -2337,8 +2337,7 @@ Converting between :class:`int` and :class:`str` in bases other than 2
|
||||||
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
||||||
now raises a :exc:`ValueError` if the number of digits in string form is
|
now raises a :exc:`ValueError` if the number of digits in string form is
|
||||||
above a limit to avoid potential denial of service attacks due to the
|
above a limit to avoid potential denial of service attacks due to the
|
||||||
algorithmic complexity. This is a mitigation for `CVE-2020-10735
|
algorithmic complexity. This is a mitigation for :cve:`2020-10735`.
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735>`_.
|
|
||||||
This limit can be configured or disabled by environment variable, command
|
This limit can be configured or disabled by environment variable, command
|
||||||
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
||||||
length limitation <int_max_str_digits>` documentation. The default limit
|
length limitation <int_max_str_digits>` documentation. The default limit
|
||||||
|
|
|
@ -300,12 +300,9 @@ Example::
|
||||||
|
|
||||||
|
|
||||||
As a fall-back source of data for platforms that don't ship the IANA database,
|
As a fall-back source of data for platforms that don't ship the IANA database,
|
||||||
the |tzdata|_ module was released as a first-party package -- distributed via
|
the :pypi:`tzdata` module was released as a first-party package -- distributed via
|
||||||
PyPI and maintained by the CPython core team.
|
PyPI and maintained by the CPython core team.
|
||||||
|
|
||||||
.. |tzdata| replace:: ``tzdata``
|
|
||||||
.. _tzdata: https://pypi.org/project/tzdata/
|
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
:pep:`615` -- Support for the IANA Time Zone Database in the Standard Library
|
:pep:`615` -- Support for the IANA Time Zone Database in the Standard Library
|
||||||
|
@ -1592,8 +1589,7 @@ Converting between :class:`int` and :class:`str` in bases other than 2
|
||||||
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal)
|
||||||
now raises a :exc:`ValueError` if the number of digits in string form is
|
now raises a :exc:`ValueError` if the number of digits in string form is
|
||||||
above a limit to avoid potential denial of service attacks due to the
|
above a limit to avoid potential denial of service attacks due to the
|
||||||
algorithmic complexity. This is a mitigation for `CVE-2020-10735
|
algorithmic complexity. This is a mitigation for :cve:`2020-10735`.
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735>`_.
|
|
||||||
This limit can be configured or disabled by environment variable, command
|
This limit can be configured or disabled by environment variable, command
|
||||||
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
line flag, or :mod:`sys` APIs. See the :ref:`integer string conversion
|
||||||
length limitation <int_max_str_digits>` documentation. The default limit
|
length limitation <int_max_str_digits>` documentation. The default limit
|
||||||
|
|
|
@ -34,8 +34,8 @@ anyone wishing to stay up-to-date after a new release.
|
||||||
2.1.rst
|
2.1.rst
|
||||||
2.0.rst
|
2.0.rst
|
||||||
|
|
||||||
The "Changelog" is an HTML version of the `file built
|
The "Changelog" is an HTML version of the :pypi:`file built<blurb>`
|
||||||
<https://pypi.org/project/blurb>`_ from the contents of the
|
from the contents of the
|
||||||
:source:`Misc/NEWS.d` directory tree, which contains *all* nontrivial changes
|
:source:`Misc/NEWS.d` directory tree, which contains *all* nontrivial changes
|
||||||
to Python for the current version.
|
to Python for the current version.
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Fixes ``python3x._pth`` being ignored on Windows, caused by the fix for
|
Fixes ``python3x._pth`` being ignored on Windows, caused by the fix for
|
||||||
:issue:`29778` (CVE-2020-15801).
|
:issue:`29778` (:cve:`2020-15801`).
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ events.
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Ensure :file:`python3.dll` is loaded from correct locations when Python is
|
Ensure :file:`python3.dll` is loaded from correct locations when Python is
|
||||||
embedded (CVE-2020-15523).
|
embedded (:cve:`2020-15523`).
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -1596,7 +1596,7 @@ UnpicklingError instead of crashing.
|
||||||
.. section: Library
|
.. section: Library
|
||||||
|
|
||||||
Avoid infinite loop when reading specially crafted TAR files using the
|
Avoid infinite loop when reading specially crafted TAR files using the
|
||||||
tarfile module (CVE-2019-20907).
|
tarfile module (:cve:`2019-20907`).
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.. release date: 2021-04-05
|
.. release date: 2021-04-05
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module
|
:cve:`2021-3426`: Remove the ``getfile`` feature of the :mod:`pydoc` module
|
||||||
which could be abused to read arbitrary files on the disk (directory
|
which could be abused to read arbitrary files on the disk (directory
|
||||||
traversal vulnerability). Moreover, even source code of Python modules can
|
traversal vulnerability). Moreover, even source code of Python modules can
|
||||||
contain sensitive data like passwords. Vulnerability reported by David
|
contain sensitive data like passwords. Vulnerability reported by David
|
||||||
|
|
|
@ -38,7 +38,7 @@ significant performance overhead when loading from ``.pyc`` files.
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Update the vendored copy of libexpat to 2.4.1 (from 2.2.8) to get the fix
|
Update the vendored copy of libexpat to 2.4.1 (from 2.2.8) to get the fix
|
||||||
for the CVE-2013-0340 "Billion Laughs" vulnerability. This copy is most used
|
for the :cve:`2013-0340` "Billion Laughs" vulnerability. This copy is most used
|
||||||
on Windows and macOS.
|
on Windows and macOS.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -1421,7 +1421,7 @@ Patch by Victor Stinner.
|
||||||
.. nonce: IB0XL4
|
.. nonce: IB0XL4
|
||||||
.. section: Windows
|
.. section: Windows
|
||||||
|
|
||||||
Update ``zlib`` to v1.2.12 to resolve CVE-2018-25032.
|
Update ``zlib`` to v1.2.12 to resolve :cve:`2018-25032`.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -1472,8 +1472,8 @@ Update Windows installer to use SQLite 3.38.1.
|
||||||
.. nonce: SPrGS9
|
.. nonce: SPrGS9
|
||||||
.. section: Windows
|
.. section: Windows
|
||||||
|
|
||||||
Update bzip2 to 1.0.8 in Windows builds to mitigate CVE-2016-3189 and
|
Update bzip2 to 1.0.8 in Windows builds to mitigate :cve:`2016-3189` and
|
||||||
CVE-2019-12900
|
:cve:`2019-12900`.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -1482,7 +1482,7 @@ CVE-2019-12900
|
||||||
.. nonce: Ufd4tG
|
.. nonce: Ufd4tG
|
||||||
.. section: Windows
|
.. section: Windows
|
||||||
|
|
||||||
Prevent CVE-2022-26488 by ensuring the Add to PATH option in the Windows
|
Prevent :cve:`2022-26488` by ensuring the Add to PATH option in the Windows
|
||||||
installer uses the correct path when being repaired.
|
installer uses the correct path when being repaired.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -29,8 +29,7 @@ process. This was a potential privilege escalation. Filesystem based socket
|
||||||
permissions restrict this to the *forkserver* process user as was the
|
permissions restrict this to the *forkserver* process user as was the
|
||||||
default in Python 3.8 and earlier.
|
default in Python 3.8 and earlier.
|
||||||
|
|
||||||
This prevents Linux `CVE-2022-42919
|
This prevents Linux :cve:`2022-42919`.
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-42919>`_.
|
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -3200,9 +3199,8 @@ Remove the :func:`ssl.wrap_socket` function, deprecated in Python 3.7:
|
||||||
instead, create a :class:`ssl.SSLContext` object and call its
|
instead, create a :class:`ssl.SSLContext` object and call its
|
||||||
:class:`ssl.SSLContext.wrap_socket` method. Any package that still uses
|
:class:`ssl.SSLContext.wrap_socket` method. Any package that still uses
|
||||||
:func:`ssl.wrap_socket` is broken and insecure. The function neither sends a
|
:func:`ssl.wrap_socket` is broken and insecure. The function neither sends a
|
||||||
SNI TLS extension nor validates server hostname. Code is subject to `CWE-295
|
SNI TLS extension nor validates server hostname. Code is subject to :cwe:`295`
|
||||||
<https://cwe.mitre.org/data/definitions/295.html>`_: Improper Certificate
|
Improper Certificate Validation. Patch by Victor Stinner.
|
||||||
Validation. Patch by Victor Stinner.
|
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -4404,8 +4402,7 @@ Remove extra row
|
||||||
.. section: Documentation
|
.. section: Documentation
|
||||||
|
|
||||||
Deprecated tools ``make suspicious`` and ``rstlint.py`` are now removed.
|
Deprecated tools ``make suspicious`` and ``rstlint.py`` are now removed.
|
||||||
They have been replaced by `spinx-lint
|
They have been replaced by :pypi:`sphinx-lint`.
|
||||||
<https://pypi.org/project/sphinx-lint/>`_.
|
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -968,7 +968,7 @@ if :option:`--with-system-expat` is passed to :program:`configure`.
|
||||||
.. nonce: 0f6e_N
|
.. nonce: 0f6e_N
|
||||||
.. section: Windows
|
.. section: Windows
|
||||||
|
|
||||||
Update Windows builds to zlib v1.2.13. v1.2.12 has CVE-2022-37434, but the
|
Update Windows builds to zlib v1.2.13. v1.2.12 has :cve:`2022-37434`, but the
|
||||||
vulnerable ``inflateGetHeader`` API is not used by Python.
|
vulnerable ``inflateGetHeader`` API is not used by Python.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -15,7 +15,7 @@ from the HACL* project.
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Updated the OpenSSL version used in Windows and macOS binary release builds
|
Updated the OpenSSL version used in Windows and macOS binary release builds
|
||||||
to 1.1.1t to address CVE-2023-0286, CVE-2022-4303, and CVE-2022-4303 per
|
to 1.1.1t to address :cve:`2023-0286`, :cve:`2022-4303`, and :cve:`2022-4303` per
|
||||||
`the OpenSSL 2023-02-07 security advisory
|
`the OpenSSL 2023-02-07 security advisory
|
||||||
<https://www.openssl.org/news/secadv/20230207.txt>`_.
|
<https://www.openssl.org/news/secadv/20230207.txt>`_.
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ or lacks SHA3.
|
||||||
|
|
||||||
:func:`urllib.parse.urlsplit` now strips leading C0 control and space
|
:func:`urllib.parse.urlsplit` now strips leading C0 control and space
|
||||||
characters following the specification for URLs defined by WHATWG in
|
characters following the specification for URLs defined by WHATWG in
|
||||||
response to CVE-2023-24329. Patch by Illia Volochii.
|
response to :cve:`2023-24329`. Patch by Illia Volochii.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,7 @@ Fixed an issue where instances of :class:`ssl.SSLSocket` were vulnerable to
|
||||||
a bypass of the TLS handshake and included protections (like certificate
|
a bypass of the TLS handshake and included protections (like certificate
|
||||||
verification) and treating sent unencrypted data as if it were
|
verification) and treating sent unencrypted data as if it were
|
||||||
post-handshake TLS encrypted data. Security issue reported as
|
post-handshake TLS encrypted data. Security issue reported as
|
||||||
`CVE-2023-40217
|
:cve:`2023-40217` by Aapo Oksman. Patch by Gregory P. Smith.
|
||||||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-40217>`_ by Aapo
|
|
||||||
Oksman. Patch by Gregory P. Smith.
|
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -4184,8 +4182,7 @@ Hugo van Kemenade.
|
||||||
.. section: Library
|
.. section: Library
|
||||||
|
|
||||||
:pep:`594`: Remove the :mod:`!spwd` module, deprecated in Python 3.11: the
|
:pep:`594`: Remove the :mod:`!spwd` module, deprecated in Python 3.11: the
|
||||||
`python-pam project <https://pypi.org/project/python-pam/>`_ can be used
|
:pypi:`python-pam` project can be used instead. Patch by Victor Stinner.
|
||||||
instead. Patch by Victor Stinner.
|
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -1551,7 +1551,7 @@ optional *strict* parameter to these two functions: use ``strict=False`` to
|
||||||
get the old behavior, accept malformed inputs. ``getattr(email.utils,
|
get the old behavior, accept malformed inputs. ``getattr(email.utils,
|
||||||
'supports_strict_parsing', False)`` can be use to check if the *strict*
|
'supports_strict_parsing', False)`` can be use to check if the *strict*
|
||||||
paramater is available. Patch by Thomas Dwyer and Victor Stinner to improve
|
paramater is available. Patch by Thomas Dwyer and Victor Stinner to improve
|
||||||
the CVE-2023-27043 fix.
|
the :cve:`2023-27043` fix.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.. release date: 2024-03-12
|
.. release date: 2024-03-12
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Allow controlling Expat >=2.6.0 reparse deferral (CVE-2023-52425) by adding
|
Allow controlling Expat >=2.6.0 reparse deferral (:cve:`2023-52425`) by adding
|
||||||
five new methods:
|
five new methods:
|
||||||
|
|
||||||
* :meth:`xml.etree.ElementTree.XMLParser.flush`
|
* :meth:`xml.etree.ElementTree.XMLParser.flush`
|
||||||
|
@ -875,7 +875,7 @@ Add 'default' and 'version' help text for localization in argparse.
|
||||||
.. nonce: fb9a0R
|
.. nonce: fb9a0R
|
||||||
.. section: Documentation
|
.. section: Documentation
|
||||||
|
|
||||||
Document CVE-2023-52425 of Expat <2.6.0 under "XML vulnerabilities".
|
Document :cve:`2023-52425` of Expat <2.6.0 under "XML vulnerabilities".
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -1284,7 +1284,7 @@ Add function :func:`sys.is_finalizing` to know about interpreter shutdown.
|
||||||
.. section: Library
|
.. section: Library
|
||||||
|
|
||||||
Add a default limit for the amount of data xmlrpclib.gzip_decode will
|
Add a default limit for the amount of data xmlrpclib.gzip_decode will
|
||||||
return. This resolves CVE-2013-1753.
|
return. This resolves :cve:`2013-1753`.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -4030,7 +4030,7 @@ unittest.mock.MagicMock now supports division. Patch by Johannes Baiter.
|
||||||
.. section: Library
|
.. section: Library
|
||||||
|
|
||||||
Fix arbitrary memory access in JSONDecoder.raw_decode with a negative second
|
Fix arbitrary memory access in JSONDecoder.raw_decode with a negative second
|
||||||
parameter. Bug reported by Guido Vranken. (See also: CVE-2014-4616)
|
parameter. Bug reported by Guido Vranken. (See also: :cve:`2014-4616`)
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
.. original section: Library
|
.. original section: Library
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Update expat to 2.1.1, fixes CVE-2015-1283.
|
Update expat to 2.1.1, fixes :cve:`2015-1283`.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ Update expat to 2.1.1, fixes CVE-2015-1283.
|
||||||
.. original section: Library
|
.. original section: Library
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by Team
|
Fix TLS stripping vulnerability in smtplib, :cve:`2016-0772`. Reported by Team
|
||||||
Oststrom
|
Oststrom.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -1048,7 +1048,7 @@ certs.
|
||||||
.. section: Library
|
.. section: Library
|
||||||
|
|
||||||
Remove 3DES from ssl module's default cipher list to counter measure sweet32
|
Remove 3DES from ssl module's default cipher list to counter measure sweet32
|
||||||
attack (CVE-2016-2183).
|
attack (:cve:`2016-2183`).
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -1251,7 +1251,7 @@ Fix possible integer overflow in the _csv module for large record lengths.
|
||||||
.. nonce: OnuO9s
|
.. nonce: OnuO9s
|
||||||
.. section: Library
|
.. section: Library
|
||||||
|
|
||||||
Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the HTTP_PROXY variable
|
Prevent HTTPoxy attack (:cve:`2016-1000110`). Ignore the HTTP_PROXY variable
|
||||||
when REQUEST_METHOD environment is set, which indicates that the script is
|
when REQUEST_METHOD environment is set, which indicates that the script is
|
||||||
in CGI mode.
|
in CGI mode.
|
||||||
|
|
||||||
|
|
|
@ -17,10 +17,10 @@ passing other environment variables and command arguments.
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple security
|
Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple security
|
||||||
vulnerabilities including: CVE-2017-9233 (External entity infinite loop
|
vulnerabilities including: :cve:`2017-9233` (External entity infinite loop
|
||||||
DoS), CVE-2016-9063 (Integer overflow, re-fix), CVE-2016-0718 (Fix
|
DoS), :cve:`2016-9063` (Integer overflow, re-fix), :cve:`2016-0718` (Fix
|
||||||
regression bugs from 2.2.0's fix to CVE-2016-0718) and CVE-2012-0876
|
regression bugs from 2.2.0's fix to :cve:`2016-0718`) and :cve:`2012-0876`
|
||||||
(Counter hash flooding with SipHash). Note: the CVE-2016-5300 (Use
|
(Counter hash flooding with SipHash). Note: the :cve:`2016-5300` (Use
|
||||||
os-specific entropy sources like getrandom) doesn't impact Python, since Python
|
os-specific entropy sources like getrandom) doesn't impact Python, since Python
|
||||||
already gets entropy from the OS to set the expat secret using
|
already gets entropy from the OS to set the expat secret using
|
||||||
``XML_SetHashSalt()``.
|
``XML_SetHashSalt()``.
|
||||||
|
@ -46,8 +46,8 @@ authentication (``login@host``).
|
||||||
.. original section: Library
|
.. original section: Library
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Update expat copy from 2.1.1 to 2.2.0 to get fixes of CVE-2016-0718 and
|
Update expat copy from 2.1.1 to 2.2.0 to get fixes of :cve:`2016-0718` and
|
||||||
CVE-2016-4472. See https://sourceforge.net/p/expat/bugs/537/ for more
|
:cve:`2016-4472`. See https://sourceforge.net/p/expat/bugs/537/ for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -24,7 +24,7 @@ also be affected)
|
||||||
.. nonce: Fd8kId
|
.. nonce: Fd8kId
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Fixed possible integer overflow in PyBytes_DecodeEscape, CVE-2017-1000158.
|
Fixed possible integer overflow in PyBytes_DecodeEscape, :cve:`2017-1000158`.
|
||||||
Original patch by Jay Bosamiya; rebased to Python 3 by Miro Hrončok.
|
Original patch by Jay Bosamiya; rebased to Python 3 by Miro Hrončok.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
.. original section: Library
|
.. original section: Library
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Update expat to 2.1.1, fixes CVE-2015-1283.
|
Update expat to 2.1.1, fixes :cve:`2015-1283`.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ Update expat to 2.1.1, fixes CVE-2015-1283.
|
||||||
.. original section: Library
|
.. original section: Library
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by Team
|
Fix TLS stripping vulnerability in smtplib, :cve:`2016-0772`. Reported by Team
|
||||||
Oststrom.
|
Oststrom.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -359,7 +359,7 @@ Fix possible integer overflow in the _csv module for large record lengths.
|
||||||
.. nonce: OnuO9s
|
.. nonce: OnuO9s
|
||||||
.. section: Library
|
.. section: Library
|
||||||
|
|
||||||
Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the HTTP_PROXY variable
|
Prevent HTTPoxy attack (:cve:`2016-1000110`). Ignore the HTTP_PROXY variable
|
||||||
when REQUEST_METHOD environment is set, which indicates that the script is
|
when REQUEST_METHOD environment is set, which indicates that the script is
|
||||||
in CGI mode.
|
in CGI mode.
|
||||||
|
|
||||||
|
|
|
@ -949,7 +949,7 @@ Add scrypt (password-based key derivation function) to hashlib module
|
||||||
.. section: Library
|
.. section: Library
|
||||||
|
|
||||||
Remove 3DES from ssl module's default cipher list to counter measure sweet32
|
Remove 3DES from ssl module's default cipher list to counter measure sweet32
|
||||||
attack (CVE-2016-2183).
|
attack (:cve:`2016-2183`).
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
.. original section: Library
|
.. original section: Library
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Update expat copy from 2.1.1 to 2.2.0 to get fixes of CVE-2016-0718 and
|
Update expat copy from 2.1.1 to 2.2.0 to get fixes of :cve:`2016-0718` and
|
||||||
CVE-2016-4472. See https://sourceforge.net/p/expat/bugs/537/ for more
|
:cve:`2016-4472`. See https://sourceforge.net/p/expat/bugs/537/ for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -17,10 +17,10 @@ passing other environment variables and command arguments.
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple security
|
Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple security
|
||||||
vulnerabilities including: CVE-2017-9233 (External entity infinite loop
|
vulnerabilities including: :cve:`2017-9233` (External entity infinite loop
|
||||||
DoS), CVE-2016-9063 (Integer overflow, re-fix), CVE-2016-0718 (Fix
|
DoS), :cve:`2016-9063` (Integer overflow, re-fix), :cve:`2016-0718` (Fix
|
||||||
regression bugs from 2.2.0's fix to CVE-2016-0718) and CVE-2012-0876
|
regression bugs from 2.2.0's fix to :cve:`2016-0718`) and :cve:`2012-0876`
|
||||||
(Counter hash flooding with SipHash). Note: the CVE-2016-5300 (Use
|
(Counter hash flooding with SipHash). Note: the :cve:`2016-5300` (Use
|
||||||
os-specific entropy sources like getrandom) doesn't impact Python, since
|
os-specific entropy sources like getrandom) doesn't impact Python, since
|
||||||
Python already gets entropy from the OS to set the expat secret using
|
Python already gets entropy from the OS to set the expat secret using
|
||||||
``XML_SetHashSalt()``.
|
``XML_SetHashSalt()``.
|
||||||
|
|
|
@ -15,7 +15,7 @@ Minimal fix to prevent buffer overrun in os.symlink on Windows
|
||||||
|
|
||||||
Regexes in difflib and poplib were vulnerable to catastrophic backtracking.
|
Regexes in difflib and poplib were vulnerable to catastrophic backtracking.
|
||||||
These regexes formed potential DOS vectors (REDOS). They have been
|
These regexes formed potential DOS vectors (REDOS). They have been
|
||||||
refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch by Jamie
|
refactored. This resolves :cve:`2018-1060` and :cve:`2018-1061`. Patch by Jamie
|
||||||
Davis.
|
Davis.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -46,10 +46,10 @@ passing other environment variables and command arguments.
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple security
|
Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple security
|
||||||
vulnerabilities including: CVE-2017-9233 (External entity infinite loop
|
vulnerabilities including: :cve:`2017-9233` (External entity infinite loop
|
||||||
DoS), CVE-2016-9063 (Integer overflow, re-fix), CVE-2016-0718 (Fix
|
DoS), :cve:`2016-9063` (Integer overflow, re-fix), :cve:`2016-0718` (Fix
|
||||||
regression bugs from 2.2.0's fix to CVE-2016-0718) and CVE-2012-0876
|
regression bugs from 2.2.0's fix to :cve:`2016-0718`) and :cve:`2012-0876`
|
||||||
(Counter hash flooding with SipHash). Note: the CVE-2016-5300 (Use
|
(Counter hash flooding with SipHash). Note: the :cve:`2016-5300` (Use
|
||||||
os-specific entropy sources like getrandom) doesn't impact Python, since Python
|
os-specific entropy sources like getrandom) doesn't impact Python, since Python
|
||||||
already gets entropy from the OS to set the expat secret using
|
already gets entropy from the OS to set the expat secret using
|
||||||
``XML_SetHashSalt()``.
|
``XML_SetHashSalt()``.
|
||||||
|
@ -75,8 +75,8 @@ authentication (``login@host``).
|
||||||
.. original section: Library
|
.. original section: Library
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Update expat copy from 2.1.1 to 2.2.0 to get fixes of CVE-2016-0718 and
|
Update expat copy from 2.1.1 to 2.2.0 to get fixes of :cve:`2016-0718` and
|
||||||
CVE-2016-4472. See https://sourceforge.net/p/expat/bugs/537/ for more
|
:cve:`2016-4472`. See https://sourceforge.net/p/expat/bugs/537/ for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.. release date: 2018-03-29
|
.. release date: 2018-03-29
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Harden ssl module against LibreSSL CVE-2018-8970.
|
Harden ssl module against LibreSSL :cve:`2018-8970`.
|
||||||
X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new test
|
X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new test
|
||||||
ensures that NULL bytes are not allowed.
|
ensures that NULL bytes are not allowed.
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ Minimal fix to prevent buffer overrun in os.symlink on Windows
|
||||||
|
|
||||||
Regexes in difflib and poplib were vulnerable to catastrophic backtracking.
|
Regexes in difflib and poplib were vulnerable to catastrophic backtracking.
|
||||||
These regexes formed potential DOS vectors (REDOS). They have been
|
These regexes formed potential DOS vectors (REDOS). They have been
|
||||||
refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch by Jamie
|
refactored. This resolves :cve:`2018-1060` and :cve:`2018-1061`. Patch by Jamie
|
||||||
Davis.
|
Davis.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.. release date: 2019-02-03
|
.. release date: 2019-02-03
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
[CVE-2019-5010] Fix a NULL pointer deref in ssl module. The cert parser did
|
:cve:`2019-5010`: Fix a NULL pointer deref in ssl module. The cert parser did
|
||||||
not handle CRL distribution points with empty DP or URI correctly. A
|
not handle CRL distribution points with empty DP or URI correctly. A
|
||||||
malicious or buggy certificate can result into segfault. Vulnerability
|
malicious or buggy certificate can result into segfault. Vulnerability
|
||||||
(TALOS-2018-0758) reported by Colin Read and Nicolas Edet of Cisco.
|
(TALOS-2018-0758) reported by Colin Read and Nicolas Edet of Cisco.
|
||||||
|
@ -50,7 +50,7 @@ files or create network connections.
|
||||||
.. nonce: Ua9jMv
|
.. nonce: Ua9jMv
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
CVE-2018-14647: The C accelerated _elementtree module now initializes hash
|
:cve:`2018-14647`: The C accelerated _elementtree module now initializes hash
|
||||||
randomization salt from _Py_HashSecret instead of libexpat's default CSPRNG.
|
randomization salt from _Py_HashSecret instead of libexpat's default CSPRNG.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
@ -89,7 +89,7 @@ Fixed thread-safety of error handling in _ssl.
|
||||||
.. nonce: TzSN4x
|
.. nonce: TzSN4x
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Harden ssl module against LibreSSL CVE-2018-8970.
|
Harden ssl module against LibreSSL :cve:`2018-8970`.
|
||||||
X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new test
|
X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new test
|
||||||
ensures that NULL bytes are not allowed.
|
ensures that NULL bytes are not allowed.
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ Minimal fix to prevent buffer overrun in os.symlink on Windows
|
||||||
|
|
||||||
Regexes in difflib and poplib were vulnerable to catastrophic backtracking.
|
Regexes in difflib and poplib were vulnerable to catastrophic backtracking.
|
||||||
These regexes formed potential DOS vectors (REDOS). They have been
|
These regexes formed potential DOS vectors (REDOS). They have been
|
||||||
refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch by Jamie
|
refactored. This resolves :cve:`2018-1060` and :cve:`2018-1061`. Patch by Jamie
|
||||||
Davis.
|
Davis.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -13,7 +13,7 @@ Fixes mishandling of pre-normalization characters in urlsplit().
|
||||||
.. nonce: 51E-DA
|
.. nonce: 51E-DA
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Address CVE-2019-9740 by disallowing URL paths with embedded whitespace or
|
Address :cve:`2019-9740` by disallowing URL paths with embedded whitespace or
|
||||||
control characters through into the underlying http client request. Such
|
control characters through into the underlying http client request. Such
|
||||||
potentially malicious header injection URLs now cause an
|
potentially malicious header injection URLs now cause an
|
||||||
http.client.InvalidURL exception to be raised.
|
http.client.InvalidURL exception to be raised.
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.. release date: 2019-06-04
|
.. release date: 2019-06-04
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
CVE-2019-9948: Avoid file reading by disallowing ``local-file://`` and
|
:cve:`2019-9948`: Avoid file reading by disallowing ``local-file://`` and
|
||||||
``local_file://`` URL schemes in ``URLopener().open()`` and
|
``local_file://`` URL schemes in ``URLopener().open()`` and
|
||||||
``URLopener().retrieve()`` of :mod:`urllib.request`.
|
``URLopener().retrieve()`` of :mod:`urllib.request`.
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ rendering the document page as HTML. (Contributed by Donghee Na in
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Update vendorized expat library version to 2.2.8, which resolves
|
Update vendorized expat library version to 2.2.8, which resolves
|
||||||
CVE-2019-15903.
|
:cve:`2019-15903`.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
Disallow control characters in hostnames in http.client, addressing
|
Disallow control characters in hostnames in http.client, addressing
|
||||||
CVE-2019-18348. Such potentially malicious header injection URLs now cause a
|
:cve:`2019-18348`. Such potentially malicious header injection URLs now cause a
|
||||||
InvalidURL to be raised.
|
InvalidURL to be raised.
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
|
@ -23,7 +23,7 @@ header injection attacks.
|
||||||
.. nonce: B299Yq
|
.. nonce: B299Yq
|
||||||
.. section: Security
|
.. section: Security
|
||||||
|
|
||||||
CVE-2020-8492: The :class:`~urllib.request.AbstractBasicAuthHandler` class
|
:cve:`2020-8492`: The :class:`~urllib.request.AbstractBasicAuthHandler` class
|
||||||
of the :mod:`urllib.request` module uses an inefficient regular expression
|
of the :mod:`urllib.request` module uses an inefficient regular expression
|
||||||
which can be exploited by an attacker to cause a denial of service. Fix the
|
which can be exploited by an attacker to cause a denial of service. Fix the
|
||||||
regex to prevent the catastrophic backtracking. Vulnerability reported by
|
regex to prevent the catastrophic backtracking. Vulnerability reported by
|
||||||
|
|
Loading…
Reference in New Issue