diff options
30 files changed, 59 insertions, 47 deletions
diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst index 18a4aac..74c4814 100644 --- a/Doc/distutils/apiref.rst +++ b/Doc/distutils/apiref.rst @@ -11,7 +11,7 @@ API Reference and other APIs, makes the API consistent across different Python versions, and is hence recommended over using ``distutils`` directly. -.. _New and changed setup.py arguments in setuptools: https://setuptools.readthedocs.io/en/latest/setuptools.html#new-and-changed-setup-keywords +.. _New and changed setup.py arguments in setuptools: https://web.archive.org/web/20210614192516/https://setuptools.pypa.io/en/stable/userguide/keywords.html .. include:: ./_setuptools_disclaimer.rst diff --git a/Doc/faq/library.rst b/Doc/faq/library.rst index 85b04c9..8167bf2 100644 --- a/Doc/faq/library.rst +++ b/Doc/faq/library.rst @@ -670,7 +670,7 @@ A summary of available frameworks is maintained by Paul Boddie at https://wiki.python.org/moin/WebProgramming\ . Cameron Laird maintains a useful set of pages about Python web technologies at -http://phaseit.net/claird/comp.lang.python/web_python. +https://web.archive.org/web/20210224183619/http://phaseit.net/claird/comp.lang.python/web_python. How can I mimic CGI form submission (METHOD=POST)? diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index f87eaff..0b11bc9 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -56,7 +56,7 @@ Are there tools to help find bugs or perform static analysis? Yes. -`Pylint <https://www.pylint.org/>`_ and +`Pylint <https://pylint.pycqa.org/en/latest/index.html>`_ and `Pyflakes <https://github.com/PyCQA/pyflakes>`_ do basic checking that will help you catch bugs sooner. diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst index 12d5257..e77feff 100644 --- a/Doc/howto/urllib2.rst +++ b/Doc/howto/urllib2.rst @@ -4,13 +4,13 @@ HOWTO Fetch Internet Resources Using The urllib Package *********************************************************** -:Author: `Michael Foord <http://www.voidspace.org.uk/python/index.shtml>`_ +:Author: `Michael Foord <https://agileabstractions.com/>`_ .. note:: There is a French translation of an earlier revision of this HOWTO, available at `urllib2 - Le Manuel manquant - <http://www.voidspace.org.uk/python/articles/urllib2_francais.shtml>`_. + <https://web.archive.org/web/20200910051922/http://www.voidspace.org.uk/python/articles/urllib2_francais.shtml>`_. @@ -22,7 +22,7 @@ Introduction You may also find useful the following article on fetching web resources with Python: - * `Basic Authentication <http://www.voidspace.org.uk/python/articles/authentication.shtml>`_ + * `Basic Authentication <https://web.archive.org/web/20201215133350/http://www.voidspace.org.uk/python/articles/authentication.shtml>`_ A tutorial on *Basic Authentication*, with examples in Python. diff --git a/Doc/installing/index.rst b/Doc/installing/index.rst index 4bacc7b..e158bf1 100644 --- a/Doc/installing/index.rst +++ b/Doc/installing/index.rst @@ -214,7 +214,7 @@ It is possible that ``pip`` does not get installed by default. One potential fix python -m ensurepip --default-pip There are also additional resources for `installing pip. -<https://packaging.python.org/tutorials/installing-packages/#install-pip-setuptools-and-wheel>`__ +<https://packaging.python.org/en/latest/tutorials/installing-packages/#ensure-pip-setuptools-and-wheel-are-up-to-date>`__ Installing binary extensions diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst index bde24ec..ef1535c 100644 --- a/Doc/library/datetime.rst +++ b/Doc/library/datetime.rst @@ -2603,7 +2603,7 @@ Notes: many other calendar systems. .. [#] See R. H. van Gent's `guide to the mathematics of the ISO 8601 calendar - <https://www.staff.science.uu.nl/~gent0113/calendar/isocalendar.htm>`_ + <https://web.archive.org/web/20220531051136/https://webspace.science.uu.nl/~gent0113/calendar/isocalendar.htm>`_ for a good explanation. .. [#] Passing ``datetime.strptime('Feb 29', '%b %d')`` will fail since ``1900`` is not a leap year. diff --git a/Doc/library/hashlib.rst b/Doc/library/hashlib.rst index 57f270c..0906ce7 100644 --- a/Doc/library/hashlib.rst +++ b/Doc/library/hashlib.rst @@ -668,7 +668,7 @@ function: hash function used in the protocol summarily stops this type of attack. (`The Skein Hash Function Family - <http://www.skein-hash.info/sites/default/files/skein1.3.pdf>`_, + <https://www.schneier.com/wp-content/uploads/2016/02/skein.pdf>`_, p. 21) BLAKE2 can be personalized by passing bytes to the *person* argument:: diff --git a/Doc/library/html.entities.rst b/Doc/library/html.entities.rst index 7d836fe..cb8b623 100644 --- a/Doc/library/html.entities.rst +++ b/Doc/library/html.entities.rst @@ -44,4 +44,4 @@ This module defines four dictionaries, :data:`html5`, .. rubric:: Footnotes -.. [#] See https://html.spec.whatwg.org/multipage/syntax.html#named-character-references +.. [#] See https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references diff --git a/Doc/library/importlib.metadata.rst b/Doc/library/importlib.metadata.rst index d40ed70..107b746 100644 --- a/Doc/library/importlib.metadata.rst +++ b/Doc/library/importlib.metadata.rst @@ -136,7 +136,7 @@ Inspect the resolved entry point:: The ``group`` and ``name`` are arbitrary values defined by the package author and usually a client will wish to resolve all entry points for a particular group. Read `the setuptools docs -<https://setuptools.readthedocs.io/en/latest/setuptools.html#dynamic-discovery-of-services-and-plugins>`_ +<https://setuptools.pypa.io/en/latest/userguide/entry_point.html>`_ for more information on entry points, their definition, and usage. *Compatibility Note* diff --git a/Doc/library/importlib.resources.rst b/Doc/library/importlib.resources.rst index f62d15d..b88c988 100644 --- a/Doc/library/importlib.resources.rst +++ b/Doc/library/importlib.resources.rst @@ -4,7 +4,7 @@ .. module:: importlib.resources :synopsis: Package resource reading, opening, and access -**Source code:** :source:`Lib/importlib/resources.py` +**Source code:** :source:`Lib/importlib/resources/__init__.py` -------------- diff --git a/Doc/library/math.rst b/Doc/library/math.rst index 5efcc7f..6d9a992 100644 --- a/Doc/library/math.rst +++ b/Doc/library/math.rst @@ -578,7 +578,7 @@ Special functions The :func:`erf` function can be used to compute traditional statistical functions such as the `cumulative standard normal distribution - <https://en.wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_function>`_:: + <https://en.wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_functions>`_:: def phi(x): 'Cumulative distribution function for the standard normal distribution' diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 87e9eb6..baf89bf 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -4318,7 +4318,7 @@ written in Python, such as a mail server's external command delivery program. :attr:`!children_system`, and :attr:`!elapsed` in that order. See the Unix manual page - :manpage:`times(2)` and :manpage:`times(3)` manual page on Unix or `the GetProcessTimes MSDN + :manpage:`times(2)` and `times(3) <https://www.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. diff --git a/Doc/library/pathlib.rst b/Doc/library/pathlib.rst index 982b567..2b79869 100644 --- a/Doc/library/pathlib.rst +++ b/Doc/library/pathlib.rst @@ -328,14 +328,13 @@ Pure paths provide the following methods and properties: .. note:: This behavior conforms to *The Open Group Base Specifications Issue 6*, - paragraph `4.11 *Pathname Resolution* <xbd_path_resolution>`_: + paragraph `4.11 Pathname Resolution + <https://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11>`_: *"A pathname that begins with two successive slashes may be interpreted in an implementation-defined manner, although more than two leading slashes shall be treated as a single slash."* - .. xbd_path_resolution: https://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11 - .. data:: PurePath.anchor The concatenation of the drive and root:: diff --git a/Doc/library/signal.rst b/Doc/library/signal.rst index 678411d..36bb4a9 100644 --- a/Doc/library/signal.rst +++ b/Doc/library/signal.rst @@ -95,7 +95,7 @@ The signal module defines three enums: :class:`enum.IntEnum` collection the constants :const:`SIG_BLOCK`, :const:`SIG_UNBLOCK` and :const:`SIG_SETMASK`. - Availability: Unix. See the man page :manpage:`sigprocmask(3)` and + Availability: Unix. See the man page :manpage:`sigprocmask(2)` and :manpage:`pthread_sigmask(3)` for further information. .. versionadded:: 3.5 diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst index c7ca439..7e26e2e 100644 --- a/Doc/library/ssl.rst +++ b/Doc/library/ssl.rst @@ -1910,7 +1910,7 @@ to speed up repeated connections from the same clients. .. method:: SSLContext.session_stats() Get statistics about the SSL sessions created or managed by this context. - A dictionary is returned which maps the names of each `piece of information <https://www.openssl.org/docs/man1.1.1/ssl/SSL_CTX_sess_number.html>`_ to their + A dictionary is returned which maps the names of each `piece of information <https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_sess_number.html>`_ to their numeric values. For example, here is the total number of hits and misses in the session cache since the context was created:: @@ -2704,7 +2704,7 @@ enabled when negotiating a SSL session is possible through the :meth:`SSLContext.set_ciphers` method. Starting from Python 3.2.3, the ssl module disables certain weak ciphers by default, but you may want to further restrict the cipher choice. Be sure to read OpenSSL's documentation -about the `cipher list format <https://www.openssl.org/docs/manmaster/man1/ciphers.html#CIPHER-LIST-FORMAT>`_. +about the `cipher list format <https://www.openssl.org/docs/man1.1.1/man1/ciphers.html#CIPHER-LIST-FORMAT>`_. If you want to check which ciphers are enabled by a given cipher list, use :meth:`SSLContext.get_ciphers` or the ``openssl ciphers`` command on your system. diff --git a/Doc/library/statistics.rst b/Doc/library/statistics.rst index 4cd983b..347a1be 100644 --- a/Doc/library/statistics.rst +++ b/Doc/library/statistics.rst @@ -798,7 +798,7 @@ of applications in statistics. Compute the inverse cumulative distribution function, also known as the `quantile function <https://en.wikipedia.org/wiki/Quantile_function>`_ or the `percent-point - <https://www.statisticshowto.datasciencecentral.com/inverse-distribution-function/>`_ + <https://web.archive.org/web/20190203145224/https://www.statisticshowto.datasciencecentral.com/inverse-distribution-function/>`_ function. Mathematically, it is written ``x : P(X <= x) = p``. Finds the value *x* of the random variable *X* such that the @@ -947,7 +947,7 @@ probability that the Python room will stay within its capacity limits? Normal distributions commonly arise in machine learning problems. Wikipedia has a `nice example of a Naive Bayesian Classifier -<https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Sex_classification>`_. +<https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Person_classification>`_. The challenge is to predict a person's gender from measurements of normally distributed features including height, weight, and foot size. diff --git a/Doc/library/struct.rst b/Doc/library/struct.rst index 978eeab..25e2620 100644 --- a/Doc/library/struct.rst +++ b/Doc/library/struct.rst @@ -467,6 +467,6 @@ The :mod:`struct` module also defines the following type: .. _half precision format: https://en.wikipedia.org/wiki/Half-precision_floating-point_format -.. _ieee 754 standard: https://en.wikipedia.org/wiki/IEEE_floating_point#IEEE_754-2008 +.. _ieee 754 standard: https://en.wikipedia.org/wiki/IEEE_754-2008_revision .. _IETF RFC 1700: https://tools.ietf.org/html/rfc1700 diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst index acc0d67..b768557 100644 --- a/Doc/library/unittest.mock.rst +++ b/Doc/library/unittest.mock.rst @@ -1944,7 +1944,7 @@ Both patch_ and patch.object_ correctly patch and restore descriptors: class methods, static methods and properties. You should patch these on the *class* rather than an instance. They also work with *some* objects that proxy attribute access, like the `django settings object -<http://www.voidspace.org.uk/python/weblog/arch_d7_2010_12_04.shtml#e1198>`_. +<https://web.archive.org/web/20200603181648/http://www.voidspace.org.uk/python/weblog/arch_d7_2010_12_04.shtml#e1198>`_. MagicMock and magic method support diff --git a/Doc/license.rst b/Doc/license.rst index e0ca5f2..e0276b4 100644 --- a/Doc/license.rst +++ b/Doc/license.rst @@ -626,9 +626,9 @@ strtod and dtoa The file :file:`Python/dtoa.c`, which supplies C functions dtoa and strtod for conversion of C doubles to and from strings, is derived from the file of the same name by David M. Gay, currently available -from http://www.netlib.org/fp/. The original file, as retrieved on -March 16, 2009, contains the following copyright and licensing -notice:: +from https://web.archive.org/web/20220517033456/http://www.netlib.org/fp/dtoa.c. +The original file, as retrieved on March 16, 2009, contains the following +copyright and licensing notice:: /**************************************************************** * diff --git a/Doc/tools/templates/download.html b/Doc/tools/templates/download.html index 2456625..7920e06 100644 --- a/Doc/tools/templates/download.html +++ b/Doc/tools/templates/download.html @@ -3,6 +3,10 @@ {% if daily is defined %} {% set dlbase = pathto('archives', 1) %} {% else %} + {# + The link below returns HTTP 404 until the first related alpha release. + This is expected; use daily documentation builds for CPython development. + #} {% set dlbase = 'https://docs.python.org/ftp/python/doc/' + release %} {% endif %} diff --git a/Doc/using/unix.rst b/Doc/using/unix.rst index 0a18344..3f9f136 100644 --- a/Doc/using/unix.rst +++ b/Doc/using/unix.rst @@ -69,7 +69,7 @@ Building Python If you want to compile CPython yourself, first thing you should do is get the `source <https://www.python.org/downloads/source/>`_. You can download either the latest release's source or just grab a fresh `clone -<https://devguide.python.org/setup/#getting-the-source-code>`_. (If you want +<https://devguide.python.org/setup/#get-the-source-code>`_. (If you want to contribute patches, you will need a clone.) The build process consists of the usual commands:: diff --git a/Doc/using/venv-create.inc b/Doc/using/venv-create.inc index ddb36f9..b978583 100644 --- a/Doc/using/venv-create.inc +++ b/Doc/using/venv-create.inc @@ -17,7 +17,7 @@ re-used. .. deprecated:: 3.6 ``pyvenv`` was the recommended tool for creating virtual environments for Python 3.3 and 3.4, and is `deprecated in Python 3.6 - <https://docs.python.org/dev/whatsnew/3.6.html#deprecated-features>`_. + <https://docs.python.org/dev/whatsnew/3.6.html#id8>`_. .. versionchanged:: 3.5 The use of ``venv`` is now recommended for creating virtual environments. diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index dcc5337..d7e0a5e 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -513,9 +513,11 @@ key features: Popular scientific modules (such as numpy, scipy and pandas) and the ``conda`` package manager. -`Canopy <https://www.enthought.com/product/canopy/>`_ - A "comprehensive Python analysis environment" with editors and other - development tools. +`Enthought Deployment Manager <https://www.enthought.com/edm/>`_ + "The Next Generation Python Environment and Package Manager". + + Previously Enthought provided Canopy, but it `reached end of life in 2016 + <https://support.enthought.com/hc/en-us/articles/360038600051-Canopy-GUI-end-of-life-transition-to-the-Enthought-Deployment-Manager-EDM-and-Visual-Studio-Code>`_. `WinPython <https://winpython.github.io/>`_ Windows-specific distribution with prebuilt scientific packages and @@ -1170,7 +1172,7 @@ Compiling Python on Windows If you want to compile CPython yourself, first thing you should do is get the `source <https://www.python.org/downloads/source/>`_. You can download either the latest release's source or just grab a fresh `checkout -<https://devguide.python.org/setup/#getting-the-source-code>`_. +<https://devguide.python.org/setup/#get-the-source-code>`_. The source tree contains a build solution and project files for Microsoft Visual Studio, which is the compiler used to build the official Python diff --git a/Doc/whatsnew/2.1.rst b/Doc/whatsnew/2.1.rst index b690f90..0136de5 100644 --- a/Doc/whatsnew/2.1.rst +++ b/Doc/whatsnew/2.1.rst @@ -542,8 +542,11 @@ PEP 241: Metadata in Python Packages A common complaint from Python users is that there's no single catalog of all the Python modules in existence. T. Middleton's Vaults of Parnassus at -http://www.vex.net/parnassus/ are the largest catalog of Python modules, but -registering software at the Vaults is optional, and many people don't bother. +``www.vex.net/parnassus/`` (retired in February 2009, `available in the +Internet Archive Wayback Machine +<https://web.archive.org/web/20090130140102/http://www.vex.net/parnassus/>`_) +was the largest catalog of Python modules, but +registering software at the Vaults is optional, and many people did not bother. As a first small step toward fixing the problem, Python software packaged using the Distutils :command:`sdist` command will include a file named diff --git a/Doc/whatsnew/2.5.rst b/Doc/whatsnew/2.5.rst index 103a72f..597eaf5 100644 --- a/Doc/whatsnew/2.5.rst +++ b/Doc/whatsnew/2.5.rst @@ -551,7 +551,7 @@ exhausted. https://en.wikipedia.org/wiki/Coroutine The Wikipedia entry for coroutines. - http://www.sidhe.org/~dan/blog/archives/000178.html + https://web.archive.org/web/20160321211320/http://www.sidhe.org/~dan/blog/archives/000178.html An explanation of coroutines from a Perl point of view, written by Dan Sugalski. .. ====================================================================== @@ -1746,8 +1746,8 @@ modules, now that :mod:`ctypes` is included with core Python. .. seealso:: - http://starship.python.net/crew/theller/ctypes/ - The ctypes web page, with a tutorial, reference, and FAQ. + https://web.archive.org/web/20180410025338/http://starship.python.net/crew/theller/ctypes/ + The pre-stdlib ctypes web page, with a tutorial, reference, and FAQ. The documentation for the :mod:`ctypes` module. @@ -2065,7 +2065,7 @@ up a server takes only a few lines of code:: .. seealso:: - http://www.wsgi.org + https://web.archive.org/web/20160331090247/http://wsgi.readthedocs.org/en/latest/ A central web site for WSGI-related resources. :pep:`333` - Python Web Server Gateway Interface v1.0 diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst index 08a7c58..0dbb5e5 100644 --- a/Doc/whatsnew/2.6.rst +++ b/Doc/whatsnew/2.6.rst @@ -176,7 +176,7 @@ Hosting of the Python bug tracker is kindly provided by of Stellenbosch, South Africa. Martin von Löwis put a lot of effort into importing existing bugs and patches from SourceForge; his scripts for this import operation are at -http://svn.python.org/view/tracker/importer/ and may be useful to +``http://svn.python.org/view/tracker/importer/`` and may be useful to other projects wishing to move from SourceForge to Roundup. .. seealso:: diff --git a/Doc/whatsnew/2.7.rst b/Doc/whatsnew/2.7.rst index 297ce06..8eb8daa 100644 --- a/Doc/whatsnew/2.7.rst +++ b/Doc/whatsnew/2.7.rst @@ -1545,7 +1545,7 @@ changes, or look through the Subversion logs for all the details. *ciphers* argument that's a string listing the encryption algorithms to be allowed; the format of the string is described `in the OpenSSL documentation - <https://www.openssl.org/docs/manmaster/man1/ciphers.html#CIPHER-LIST-FORMAT>`__. + <https://www.openssl.org/docs/man1.0.2/man1/ciphers.html>`__. (Added by Antoine Pitrou; :issue:`8322`.) Another change makes the extension load all of OpenSSL's ciphers and @@ -2001,7 +2001,7 @@ module is imported or used. .. seealso:: - http://www.voidspace.org.uk/python/articles/unittest2.shtml + https://web.archive.org/web/20210619163128/http://www.voidspace.org.uk/python/articles/unittest2.shtml Describes the new features, how to use them, and the rationale for various design decisions. (By Michael Foord.) diff --git a/Doc/whatsnew/3.2.rst b/Doc/whatsnew/3.2.rst index 15f8672..93e4551 100644 --- a/Doc/whatsnew/3.2.rst +++ b/Doc/whatsnew/3.2.rst @@ -1647,7 +1647,7 @@ for secure (encrypted, authenticated) internet connections: * The :func:`ssl.wrap_socket` constructor function now takes a *ciphers* argument. The *ciphers* string lists the allowed encryption algorithms using the format described in the `OpenSSL documentation - <https://www.openssl.org/docs/manmaster/man1/ciphers.html#CIPHER-LIST-FORMAT>`__. + <https://www.openssl.org/docs/man1.0.2/man1/ciphers.html#CIPHER-LIST-FORMAT>`__. * When linked against recent versions of OpenSSL, the :mod:`ssl` module now supports the Server Name Indication extension to the TLS protocol, allowing @@ -2593,10 +2593,12 @@ Changes to Python's build process and to the C API include: longer used and it had never been documented (:issue:`8837`). There were a number of other small changes to the C-API. See the -:source:`Misc/NEWS` file for a complete list. +Misc/NEWS <https://github.com/python/cpython/blob/v3.2.6/Misc/NEWS>`_ +file for a complete list. Also, there were a number of updates to the Mac OS X build, see -:source:`Mac/BuildScript/README.txt` for details. For users running a 32/64-bit +`Mac/BuildScript/README.txt <https://github.com/python/cpython/blob/v3.2.6/Mac/BuildScript/README.txt>`_ +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>`_\. diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst index d35a0fd..e54475f 100644 --- a/Doc/whatsnew/3.6.rst +++ b/Doc/whatsnew/3.6.rst @@ -2117,7 +2117,8 @@ API and Feature Removals platform specific ``Lib/plat-*/`` directories, but were chronically out of date, inconsistently available across platforms, and unmaintained. The script that created these modules is still available in the source - distribution at :source:`Tools/scripts/h2py.py`. + distribution at `Tools/scripts/h2py.py + <https://github.com/python/cpython/blob/v3.6.15/Tools/scripts/h2py.py>`_. * The deprecated ``asynchat.fifo`` class has been removed. diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index 49246be..b2078f5 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -2120,7 +2120,8 @@ Platform Support Removals of other LTS Linux releases (e.g. RHEL/CentOS 7.5, SLES 12-SP3), use OpenSSL 1.0.2 or later, and remain supported in the default build configuration. - CPython's own :source:`CI configuration file <.travis.yml>` provides an + CPython's own `CI configuration file + <https://github.com/python/cpython/blob/v3.7.13/.travis.yml>`_ provides an example of using the SSL :source:`compatibility testing infrastructure <Tools/ssl/multissltests.py>` in CPython's test suite to build and link against OpenSSL 1.1.0 rather than an |