linkcheck_allowed_redirects = {
# bpo-NNNN -> BPO -> GH Issues
- r'https://bugs.python.org/issue\?@action=redirect&bpo=\d+': 'https://github.com/python/cpython/issues/\d+',
+ r'https://bugs.python.org/issue\?@action=redirect&bpo=\d+': r'https://github.com/python/cpython/issues/\d+',
# GH-NNNN used to refer to pull requests
- r'https://github.com/python/cpython/issues/\d+': 'https://github.com/python/cpython/pull/\d+',
+ r'https://github.com/python/cpython/issues/\d+': r'https://github.com/python/cpython/pull/\d+',
# :source:`something` linking files in the repository
- r'https://github.com/python/cpython/tree/.*': 'https://github.com/python/cpython/blob/.*'
+ r'https://github.com/python/cpython/tree/.*': 'https://github.com/python/cpython/blob/.*',
+ # Intentional HTTP use at Misc/NEWS.d/3.5.0a1.rst
+ r'http://www.python.org/$': 'https://www.python.org/$',
+ # Used in license page, keep as is
+ r'https://www.zope.org/': r'https://www.zope.dev/',
+ # Microsoft's redirects to learn.microsoft.com
+ r'https://msdn.microsoft.com/.*': 'https://learn.microsoft.com/.*',
+ r'https://docs.microsoft.com/.*': 'https://learn.microsoft.com/.*',
+ r'https://go.microsoft.com/fwlink/\?LinkID=\d+': 'https://learn.microsoft.com/.*',
+ # Language redirects
+ r'https://toml.io': 'https://toml.io/en/',
+ r'https://www.redhat.com': 'https://www.redhat.com/en',
+ # Other redirects
+ r'https://www.boost.org/libs/.+': r'https://www.boost.org/doc/libs/\d_\d+_\d/.+',
+ r'https://support.microsoft.com/en-us/help/\d+': 'https://support.microsoft.com/en-us/topic/.+',
+ r'https://perf.wiki.kernel.org$': 'https://perf.wiki.kernel.org/index.php/Main_Page',
+ r'https://www.sqlite.org': 'https://www.sqlite.org/index.html',
+ r'https://mitpress.mit.edu/sicp$': 'https://mitpress.mit.edu/9780262510875/structure-and-interpretation-of-computer-programs/',
+ r'https://www.python.org/psf/': 'https://www.python.org/psf-landing/',
}
linkcheck_anchors_ignore = [
.. XXX make sure these all work
`Cython <https://cython.org>`_ and its relative `Pyrex
-<https://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/>`_ are compilers
+<https://www.csse.canterbury.ac.nz/greg.ewing/python/Pyrex/>`_ are compilers
that accept a slightly modified form of Python and generate the corresponding
C code. Cython and Pyrex make it possible to write an extension without having
to learn Python's C API.
unmodified), or to sell products that incorporate Python in some form. We would
still like to know about all commercial use of Python, of course.
-See `the PSF license page <https://www.python.org/psf/license/>`_ to find further
-explanations and a link to the full text of the license.
+See `the license page <https://docs.python.org/3/license.html>`_ to find further
+explanations and the full text of the PSF License.
The Python logo is trademarked, and in certain cases permission is required to
use it. Consult `the Trademark Usage Policy
Announcements of new software releases and events can be found in
comp.lang.python.announce, a low-traffic moderated list that receives about five
postings per day. It's available as `the python-announce mailing list
-<https://mail.python.org/mailman/listinfo/python-announce-list>`_.
+<https://mail.python.org/mailman3/lists/python-announce-list.python.org/>`_.
More info about other mailing lists and newsgroups
can be found at https://www.python.org/community/lists/.
publicly released yet.
New development is discussed on `the python-dev mailing list
-<https://mail.python.org/mailman/listinfo/python-dev/>`_.
+<https://mail.python.org/mailman3/lists/python-dev.python.org/>`_.
Is it reasonable to propose incompatible changes to Python?
`Pyflakes <https://github.com/PyCQA/pyflakes>`_ do basic checking that will
help you catch bugs sooner.
-Static type checkers such as `Mypy <http://mypy-lang.org/>`_,
+Static type checkers such as `Mypy <https://mypy-lang.org/>`_,
`Pyre <https://pyre-check.org/>`_, and
`Pytype <https://github.com/google/pytype>`_ can check type hints in Python
source code.
.. _Futurize: https://python-future.org/automatic_conversion.html
.. _importlib2: https://pypi.org/project/importlib2
.. _Modernize: https://python-modernize.readthedocs.io/
-.. _mypy: http://mypy-lang.org/
+.. _mypy: https://mypy-lang.org/
.. _Porting to Python 3: http://python3porting.com/
.. _Pylint: https://pypi.org/project/pylint
specifies requirements for algorithms that reduce this user-visible
delay and provides an algorithm.
- For more information: https://tools.ietf.org/html/rfc6555
+ For more information: https://datatracker.ietf.org/doc/html/rfc6555
.. versionchanged:: 3.11
:alt: Explanation of tree mode parameters.
See section 2.10 in `BLAKE2 specification
-<https://blake2.net/blake2_20130129.pdf>`_ for comprehensive review of tree
+<https://www.blake2.net/blake2_20130129.pdf>`_ for comprehensive review of tree
hashing.
by the signer.
(`NIST SP-800-106 "Randomized Hashing for Digital Signatures"
- <https://csrc.nist.gov/publications/detail/sp/800-106/final>`_)
+ <https://csrc.nist.gov/publications/detail/sp/800-106/archive/2009-02-25>`_)
In BLAKE2 the salt is processed as a one-time input to the hash function during
initialization, rather than as an input to each compression function.
*Salted hashing* (or just hashing) with BLAKE2 or any other general-purpose
cryptographic hash function, such as SHA-256, is not suitable for hashing
- passwords. See `BLAKE2 FAQ <https://blake2.net/#qa>`_ for more
+ passwords. See `BLAKE2 FAQ <https://www.blake2.net/#qa>`_ for more
information.
..
* *Alexandr Sokolovskiy*
-.. _BLAKE2: https://blake2.net
+.. _BLAKE2: https://www.blake2.net
.. _HMAC: https://en.wikipedia.org/wiki/Hash-based_message_authentication_code
-.. _BLAKE: https://131002.net/blake/
+.. _BLAKE: https://web.archive.org/web/20200918190133/https://131002.net/blake/
.. _SHA-3: https://en.wikipedia.org/wiki/NIST_hash_function_competition
.. _ChaCha: https://cr.yp.to/chacha.html
.. _pyblake2: https://pythonhosted.org/pyblake2/
Module :mod:`base64`
Another way to encode binary hashes for non-binary environments.
- https://blake2.net
+ https://www.blake2.net
Official BLAKE2 website.
https://csrc.nist.gov/csrc/media/publications/fips/180/2/archive/2002-08-01/documents/fips180-2.pdf
the CONNECT request.
As HTTP/1.1 is used for HTTP CONNECT tunnelling request, `as per the RFC
- <https://tools.ietf.org/html/rfc7231#section-4.3.6>`_, a HTTP ``Host:``
+ <https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.6>`_, a HTTP ``Host:``
header must be provided, matching the authority-form of the request target
provided as the destination for the CONNECT request. If a HTTP ``Host:``
header is not provided via the headers argument, one is generated and
no parameters and always returned a dictionary of entry points, keyed
by group. With ``importlib_metadata`` 5.0 and Python 3.12,
``entry_points`` always returns an ``EntryPoints`` object. See
-`backports.entry_points_selectable <https://pypi.org/project/backports.entry_points_selectable>`_
+`backports.entry_points_selectable <https://pypi.org/project/backports.entry-points-selectable>`_
for compatibility options.
:attr:`!children_system`, and :attr:`!elapsed` in that order.
See the Unix manual page
- :manpage:`times(2)` and `times(3) <https://www.freebsd.org/cgi/man.cgi?time(3)>`_ manual page on Unix or `the GetProcessTimes MSDN
+ :manpage:`times(2)` and `times(3) <https://man.freebsd.org/cgi/man.cgi?time(3)>`_ manual page on Unix or `the GetProcessTimes MSDN
<https://docs.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocesstimes>`_
on Windows. On Windows, only :attr:`!user` and :attr:`!system` are known; the other attributes are zero.
.. seealso::
- `PList manual page <https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/PropertyLists/>`_
+ `PList manual page <https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/PropertyLists/>`_
Apple's documentation of the file format.
used by all of this user id's processes.
This limit is enforced only if bit 1 of the vm.overcommit sysctl is set.
Please see
- `tuning(7) <https://www.freebsd.org/cgi/man.cgi?query=tuning&sektion=7>`__
+ `tuning(7) <https://man.freebsd.org/cgi/man.cgi?query=tuning&sektion=7>`__
for a complete description of this sysctl.
.. availability:: FreeBSD.
Kevent Objects
--------------
-https://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2
+https://man.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2
.. attribute:: kevent.ident
.. versionadded:: 3.3
.. seealso::
- `SSL/TLS & Perfect Forward Secrecy <https://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy>`_
+ `SSL/TLS & Perfect Forward Secrecy <https://vincent.bernat.ch/en/blog/2011-ssl-perfect-forward-secrecy>`_
Vincent Bernat.
.. method:: SSLContext.wrap_socket(sock, server_side=False, \
numeric (:class:`~numbers.Real`-valued) data.
The module is not intended to be a competitor to third-party libraries such
-as `NumPy <https://numpy.org>`_, `SciPy <https://www.scipy.org/>`_, or
+as `NumPy <https://numpy.org>`_, `SciPy <https://scipy.org/>`_, or
proprietary full-featured statistics packages aimed at professional
statisticians such as Minitab, SAS and Matlab. It is aimed at the level of
graphing and scientific calculators.
.. _ieee 754 standard: https://en.wikipedia.org/wiki/IEEE_754-2008_revision
-.. _IETF RFC 1700: https://tools.ietf.org/html/rfc1700
+.. _IETF RFC 1700: https://datatracker.ietf.org/doc/html/rfc1700
additional garbage collector overhead if the object is managed by the garbage
collector.
- See `recursive sizeof recipe <https://code.activestate.com/recipes/577504>`_
+ See `recursive sizeof recipe <https://code.activestate.com/recipes/577504/>`_
for an example of using :func:`getsizeof` recursively to find the size of
containers and all their contents.
Sometimes this is inconvenient. For example, `one user
<https://code.google.com/archive/p/mock/issues/105>`_ is subclassing mock to
created a `Twisted adaptor
-<https://twistedmatrix.com/documents/11.0.0/api/twisted.python.components.html>`_.
+<https://twisted.org/documents/11.0.0/api/twisted.python.components.html>`_.
Having this applied to attributes too actually causes errors.
``Mock`` (in all its flavours) uses a method called ``_get_child_mock`` to create
a GUI tool for test discovery and execution. This is intended largely for ease of use
for those new to unit testing. For production environments it is
recommended that tests be driven by a continuous integration system such as
- `Buildbot <https://buildbot.net/>`_, `Jenkins <https://jenkins.io/>`_,
+ `Buildbot <https://buildbot.net/>`_, `Jenkins <https://www.jenkins.io/>`_,
`GitHub Actions <https://github.com/features/actions>`_, or
`AppVeyor <https://www.appveyor.com/>`_.
.. seealso::
- `XML-RPC HOWTO <https://www.tldp.org/HOWTO/XML-RPC-HOWTO/index.html>`_
+ `XML-RPC HOWTO <https://tldp.org/HOWTO/XML-RPC-HOWTO/index.html>`_
A good description of XML-RPC operation and client software in several languages.
Contains pretty much everything an XML-RPC client developer needs to know.
Documentation on the ZIP file format by Phil Katz, the creator of the format and
algorithms used.
- `Info-ZIP Home Page <http://www.info-zip.org/>`_
+ `Info-ZIP Home Page <https://infozip.sourceforge.net/>`_
Information about the Info-ZIP project's ZIP archive programs and development
libraries.
This is intended to provide protection against a denial-of-service caused
by carefully chosen inputs that exploit the worst case performance of a
dict insertion, O(n\ :sup:`2`) complexity. See
- http://www.ocert.org/advisories/ocert-2011-003.html for details.
+ http://ocert.org/advisories/ocert-2011-003.html for details.
Changing hash values affects the iteration order of sets.
Python has never made guarantees about this ordering
and a Just in Time compiler. One of the goals of the project is to encourage
experimentation with the language itself by making it easier to modify the
interpreter (since it is written in Python). Additional information is
- available on `the PyPy project's home page <https://pypy.org/>`_.
+ available on `the PyPy project's home page <https://www.pypy.org/>`_.
Each of these implementations varies in some way from the language as documented
in this manual, or introduces specific information beyond what's covered in the
Hash randomization is intended to provide protection against a
denial-of-service caused by carefully chosen inputs that exploit the worst
case performance of a dict construction, O(n\ :sup:`2`) complexity. See
- http://www.ocert.org/advisories/ocert-2011-003.html for details.
+ http://ocert.org/advisories/ocert-2011-003.html for details.
:envvar:`PYTHONHASHSEED` allows you to set a fixed value for the hash
seed secret.
:program:`BBEdit` or :program:`TextWrangler` from Bare Bones Software (see
http://www.barebones.com/products/bbedit/index.html) are good choices, as is
:program:`TextMate` (see https://macromates.com/). Other editors include
-:program:`Gvim` (https://macvim-dev.github.io/macvim/) and :program:`Aquamacs`
+:program:`Gvim` (https://macvim.org/macvim/) and :program:`Aquamacs`
(http://aquamacs.org/).
To run your script from the Terminal window you must make sure that
additional functionality. The following is a list of popular versions and their
key features:
-`ActivePython <https://www.activestate.com/activepython/>`_
+`ActivePython <https://www.activestate.com/products/python/>`_
Installer with multi-platform compatibility, documentation, PyWin32
`Anaconda <https://www.anaconda.com/download/>`_
parser.parse( 'hamlet.xml' )
For more information, consult the Python documentation, or the XML HOWTO at
-http://pyxml.sourceforge.net/topics/howto/xml-howto.html.
+https://pyxml.sourceforge.net/topics/howto/xml-howto.html.
DOM Support
framework based on running embedded examples in docstrings and comparing the
results against the expected output. PyUnit, contributed by Steve Purcell, is a
unit testing framework inspired by JUnit, which was in turn an adaptation of
- Kent Beck's Smalltalk testing framework. See http://pyunit.sourceforge.net/ for
+ Kent Beck's Smalltalk testing framework. See https://pyunit.sourceforge.net/ for
more information about PyUnit.
* The :mod:`difflib` module contains a class, :class:`SequenceMatcher`, which
every square of an $NxN$ chessboard without visiting any square twice).
The idea of generators comes from other programming languages, especially Icon
-(https://www.cs.arizona.edu/icon/), where the idea of generators is central. In
+(https://www2.cs.arizona.edu/icon/), where the idea of generators is central. In
Icon, every expression and function call behaves like a generator. One example
from "An Overview of the Icon Programming Language" at
-https://www.cs.arizona.edu/icon/docs/ipd266.htm gives an idea of what this looks
+https://www2.cs.arizona.edu/icon/docs/ipd266.htm gives an idea of what this looks
like::
sentence := "Store it in the neighboring harbor"
every square of an $NxN$ chessboard without visiting any square twice).
The idea of generators comes from other programming languages, especially Icon
-(https://www.cs.arizona.edu/icon/), where the idea of generators is central. In
+(https://www2.cs.arizona.edu/icon/), where the idea of generators is central. In
Icon, every expression and function call behaves like a generator. One example
from "An Overview of the Icon Programming Language" at
-https://www.cs.arizona.edu/icon/docs/ipd266.htm gives an idea of what this looks
+https://www2.cs.arizona.edu/icon/docs/ipd266.htm gives an idea of what this looks
like::
sentence := "Store it in the neighboring harbor"
(Contributed by Kevin O'Connor.)
* The IDLE integrated development environment has been updated using the code
- from the IDLEfork project (http://idlefork.sourceforge.net). The most notable feature is
+ from the IDLEfork project (https://idlefork.sourceforge.net). The most notable feature is
that the code being developed is now executed in a subprocess, meaning that
there's no longer any need for manual ``reload()`` operations. IDLE's core code
has been incorporated into the standard library as the :mod:`idlelib` package.
:c:expr:`double` to an ASCII string.
The code for these functions came from the GLib library
-(https://developer.gnome.org/glib/stable/), whose developers kindly
+(https://developer-old.gnome.org/glib/2.26/), whose developers kindly
relicensed the relevant functions and donated them to the Python Software
Foundation. The :mod:`locale` module can now change the numeric locale,
letting extensions such as GTK+ produce the correct results.
`Scheme's numerical tower <https://www.gnu.org/software/guile/manual/html_node/Numerical-Tower.html#Numerical-Tower>`__, from the Guile manual.
- `Scheme's number datatypes <https://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2>`__ from the R5RS Scheme specification.
+ `Scheme's number datatypes <https://conservatory.scheme.org/schemers/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2>`__ from the R5RS Scheme specification.
The :mod:`fractions` Module
negotiation itself. (Patch contributed by Bill Fenner;
:issue:`829951`.)
-* The :mod:`socket` module now supports TIPC (http://tipc.sourceforge.net/),
+* The :mod:`socket` module now supports TIPC (https://tipc.sourceforge.net/),
a high-performance non-IP-based protocol designed for use in clustered
environments. TIPC addresses are 4- or 5-tuples.
(Contributed by Alberto Bertogli; :issue:`1646`.)
updated. It now supports company/tag syntax as defined in :pep:`514` using the
``-V:<company>/<tag>`` argument instead of the limited ``-<major>.<minor>``.
This allows launching distributions other than ``PythonCore``,
-the one hosted on `python.org <https://python.org>`_.
+the one hosted on `python.org <https://www.python.org>`_.
When using ``-V:`` selectors, either company or tag can be omitted, but all
installs will be searched. For example, ``-V:OtherPython/`` will select the
#endif
Or use the `pythoncapi_compat project
- <https://github.com/python/pythoncapi_compat>`__ to get these two
+ <https://github.com/python/pythoncapi-compat>`__ to get these two
functions on older Python versions.
* Changes of the :c:type:`PyThreadState` structure members:
}
#endif
- Or use `the pythoncapi_compat project
- <https://github.com/python/pythoncapi_compat>`__ to get these functions
+ Or use `the pythoncapi-compat project
+ <https://github.com/python/pythoncapi-compat>`__ to get these functions
on old Python functions.
* Distributors are encouraged to build Python with the optimized Blake2
(Contributed by Raymond Hettinger and incorporating design ideas from Jim
Baker, Miki Tebeka, and Nick Coghlan; see `recipe 498245
- <https://code.activestate.com/recipes/498245>`_\, `recipe 577479
- <https://code.activestate.com/recipes/577479>`_\, :issue:`10586`, and
+ <https://code.activestate.com/recipes/498245/>`_\, `recipe 577479
+ <https://code.activestate.com/recipes/577479/>`_\, :issue:`10586`, and
:issue:`10593`.)
* The :func:`functools.wraps` decorator now adds a :attr:`__wrapped__` attribute
for details. For users running a 32/64-bit
build, there is a known problem with the default Tcl/Tk on Mac OS X 10.6.
Accordingly, we recommend installing an updated alternative such as
-`ActiveState Tcl/Tk 8.5.9 <https://www.activestate.com/activetcl/downloads>`_\.
+`ActiveState Tcl/Tk 8.5.9 <https://web.archive.org/web/20101208191259/https://www.activestate.com/activetcl/downloads>`_\.
See https://www.python.org/download/mac/tcltk/ for additional details.
Porting to Python 3.2
* The :class:`~socket.socket` class now supports the PF_RDS protocol family
(https://en.wikipedia.org/wiki/Reliable_Datagram_Sockets and
- https://oss.oracle.com/projects/rds/).
+ `https://oss.oracle.com/projects/rds <https://web.archive.org/web/20130115155505/https://oss.oracle.com/projects/rds/>`__).
* The :class:`~socket.socket` class now supports the ``PF_SYSTEM`` protocol
family on OS X. (Contributed by Michael Goderbauer in :issue:`13777`.)
While these annotations are available at runtime through the usual
:attr:`__annotations__` attribute, *no automatic type checking happens at
runtime*. Instead, it is assumed that a separate off-line type checker
-(e.g. `mypy <http://mypy-lang.org>`_) will be used for on-demand
+(e.g. `mypy <https://mypy-lang.org>`_) will be used for on-demand
source code analysis.
The type system supports unions, generic types, and a special type
The :c:member:`PyTypeObject.tp_finalize` slot is now part of the stable ABI.
Windows builds now require Microsoft Visual C++ 14.0, which
-is available as part of `Visual Studio 2015 <https://www.visualstudio.com/>`_.
+is available as part of `Visual Studio 2015 <https://visualstudio.microsoft.com/en/vs/older-downloads/#visual-studio-2015-and-other-products>`_.
Extension modules now include a platform information tag in their filename on
some platforms (the tag is optional, and CPython will import extensions without
and Guido van Rossum. Implemented by Ivan Levkivskyi.
Tools that use or will use the new syntax:
- `mypy <http://www.mypy-lang.org/>`_,
+ `mypy <https://www.mypy-lang.org/>`_,
`pytype <https://github.com/google/pytype>`_, PyCharm, etc.
`Intel® Core™ i7-4960HQ processor
<https://ark.intel.com/content/www/us/en/ark/products/76088/intel-core-i7-4960hq-processor-6m-cache-up-to-3-80-ghz.html>`_
running the macOS 64-bit builds found at
-`python.org <https://www.python.org/downloads/mac-osx/>`_.
+`python.org <https://www.python.org/downloads/macos/>`_.
The benchmark script displays timings in nanoseconds.
`Intel® Core™ i7-4960HQ processor
<https://ark.intel.com/content/www/us/en/ark/products/76088/intel-core-i7-4960hq-processor-6m-cache-up-to-3-80-ghz.html>`_
running the macOS 64-bit builds found at
-`python.org <https://www.python.org/downloads/mac-osx/>`_.
+`python.org <https://www.python.org/downloads/macos/>`_.
Deprecated
.. section: Tools/Demos
The pybench and pystone microbenchmark have been removed from Tools. Please
-use the new Python benchmark suite https://github.com/python/performance
+use the new Python benchmark suite https://github.com/python/pyperformance
which is more reliable and includes a portable version of pybench working on
Python 2 and Python 3.