Skip to content

Latest commit

 

History

History
756 lines (596 loc) · 29.7 KB

File metadata and controls

756 lines (596 loc) · 29.7 KB

Glossary

.. glossary::
   :sorted:

   Acceptance test
   User Acceptance Test
       Verification that software functions as intended from the user’s
       perspective and that users accept the software. Acceptance tests are
       primarily used in :term:` Extreme Programming`.

   Argument
       A value that is passed to a function. There are two types of arguments:

       Keyword argument
           an argument that is preceded by an identifier (for example ``name=``)
           in a function call or that is passed as a value in a dictionary
           preceded by ``**``.
       Position argument
           an argument that is not a keyword argument. Position arguments can be
           at the beginning of an argument list and/or passed as elements of an
           iteration preceded by ``*``.


   Constant
       Python has :term:`immutable` objects, but no constant variables.
       Variables refer to objects, but there is no way to prevent a new
       assignment from being made.

   Control flow
       Time sequence of the individual commands of a computer program.

       .. seealso::
          * :doc:`/control-flow/index`

   Decorator
       A function that returns another function, usually applied as a function
       transformation using ``@wrapper`` syntax. Common examples of decorators
       are :ref:`classmethod` and :ref:`staticmethod`.

       .. seealso::
          * :doc:`/functions/decorators`

   Docstring
       A :doc:`/types/strings/built-in-modules/string` literal that appears as
       the first expression in a class, function or module. It is recognised by
       the Python compiler and included in the ``__doc__`` attribute of the
       enclosing class, function or module.

       .. seealso::
          * :doc:`/document/sphinx/docstrings`

   Duck typing
       Programming style in which the type of an object is not examined to
       determine whether it has the correct interface, but instead the method or
       attribute is simply called.

           ‘If it looks like a duck, swims like a duck, and quacks like a duck,
           then it probably is a duck.’

       By emphasising interfaces rather than specific types, well-designed code
       improves its flexibility by allowing polymorphic substitution. Duck
       typing avoids tests with :class:`type` or :func:`isinstance` and
       typically uses :func:`hasattr` tests or :term:`EAFP` programming instead.

       .. seealso::
          * :ref:`duck-typing`

   EAFP
       Easier to ask for forgiveness than permission. This common Python style
       assumes the existence of valid keys or attributes and catches exceptions
       if this assumption proves false. It is characterised by many :term:`try`
       and :term:`except` statements. This technique is in contrast to the
       :term:`LBYL` style, which is common in many other languages such as C.

   Exception
   Exception handling
       An exception passes on certain programme states – usually error states –
       to other programme levels. It is a customisable form of :term:`assert`.

       .. seealso::
          * :doc:`/control-flow/exceptions`
          * `Logging exceptions
            <https://python-basics-tutorial.readthedocs.io/en/latest/logging/examples.html#Logging-exceptions>`_
          * :ref:`pytest_fail`
          * :class:`python3:Exception`

   Extreme Programming
   XP
       Software development methodology that aims to improve software quality
       and responsiveness to changing customer requirements. As a form of agile
       software development, it advocates frequent releases in short development
       cycles to increase productivity and introduce control points where new
       requirements can be taken into account.

   F-string
       :doc:`String </types/strings/built-in-modules/string>` literal preceded
       by an ``f`` or ``F``.

       .. seealso::
          * :ref:`f-strings`
          * :pep:`498`

   Function
       A series of instructions that returns a value. It can also be passed
       zero or more arguments that can be used when executing the main part.

       .. seealso::
          * :doc:`/functions/index`

   Garbage collection
       Process of releasing memory when it is no longer in use.

       .. seealso::
          * :py:mod:`gc`

   Immutable
       An object that cannot be mutated. The value of an immutable object cannot
       change. :doc:`Tuples <../types/sequences-sets/tuples>` are examples of
       immutable objects.

   LBYL
       Look before you leap. With this style, the preconditions are explicitly
       checked before the call. This style is in contrast to the :term:`EAFP`
       approach and is characterised by the presence of many ``if`` statements.

   Method
       A :term:`function` that is defined within a class. If it is called as an
       attribute of an instance of this class, the method receives the instance
       object as its first :term:`argument` (which is normally called ``self``).

   Parameter
       :term:`Argument` of a :term:`function` (or :term:`method`) definition.

       .. seealso::
          * :doc:`/functions/params`

   Singleton object
       A singleton class can only create one instance of itself.
       :doc:`../types/none` is an example of a singleton class in Python.

   Zen of Python
       Listing of Python design principles and philosophies that are helpful for
       understanding and using the language. The list can be output by entering
       ``import this``.

   .. _start-packaging:

   build
       ``build`` is a :pep:`517`-compatible Python package builder. It offers a
       :abbr:`CLI (Command Line Interface)` for creating packages and a Python
       :abbr:`API (Application Programming Interface)`.

       .. seealso::
          * `Docs <https://build.pypa.io/en/stable/index.html>`__
          * `GitHub <https://github.com/pypa/build>`__
          * `PyPI <https://pypi.org/project/build>`__

   Built distribution
   bdist
       A structure of files and metadata that only need to be moved to the
       correct location on the target system during installation. :term:`wheel`
       is such a format, but not *distutil’s* :term:`source distribution`, which
       requires a build step.

   cibuildwheel
       :doc:`/packs/cibuildwheel` is a Python package that builds :term:`wheels
       <wheel>` for all common platforms and Python versions on most :term:`CI`
       systems.

       .. seealso::
          * :term:`multibuild`
          * `Docs <https://cibuildwheel.pypa.io/>`__
          * `GitHub <https://github.com/pypa/cibuildwheel>`__
          * `PyPI <https://pypi.org/project/cibuildwheel>`__

   conda
       Package management tool for the `Anaconda distribution
       <https://docs.anaconda.com/anaconda/index.html>`_. It is specifically
       aimed at the scientific community, especially Windows, where the
       installation of binary extensions is often difficult.

       Conda does not install packages from :term:`PyPI` and can only install
       from the official Continuum repositories or from `anaconda.org
       <https://anaconda.org/>`_ or local (for example intranet) package
       servers.

       .. note::
          :term:`pip` can be installed in conda and work side-by-side to manage
          distributions of :term:`PyPI`.

       .. seealso::
          * `Conda: Myths and Misconceptions
            <https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/>`_
          * `Conda build variants
            <https://docs.conda.io/projects/conda-build/en/latest/resources/variants.html>`_
          * `Docs <https://docs.conda.io/en/latest/>`__
          * `GitHub <https://github.com/conda/conda>`__

   devpi
       `devpi <https://www.devpi.net/>`_ is a powerful :term:`PyPI`-compatible
       server and PyPI proxy cache with a command line tool to enable packaging,
       testing and publishing activities.

       .. seealso::
          * `Docs <https://devpi.net/docs/>`__
          * `GitHub <https://github.com/devpi/devpi>`__
          * `PyPI <https://pypi.org/project/devpi>`__

   Distribution package
       A versioned archive file containing Python :term:`packages <Import
       package>`, :term:`modules <Module>` and other resource files used to
       distribute a release.

   distutils
       Python standard library package that provides support for bootstrapping
       :term:`pip` into an existing Python installation or :term:`virtual
       environment`.

       .. seealso::
          * :doc:`Docs <python3:library/ensurepip>`
          * `GitHub <https://github.com/pypa/distutils>`__

   Egg
       A :term:`built distribution` format introduced by :term:`setuptools` and
       now replaced by :term:`wheel`. For more information, see `The Internal
       Structure of Python Eggs
       <https://setuptools.pypa.io/en/latest/deprecated/python_eggs.html>`_ and
       `Python Eggs <http://peak.telecommunity.com/DevCenter/PythonEggs>`_.

   enscons
       enscons is a Python packaging tool based on `SCons
       <https://scons.org/>`_. It builds :term:`pip`-compatible :term:`source
       distributions <Source distribution>` and :term:`wheels <wheel>` without
       using :term:`distutils` or :term:`setuptools`, including distributions
       with C extensions. enscons has a different architecture and philosophy
       than :term:`distutils`, as it adds Python packaging to a general build
       system. enscons can help you build :term:`sdists <sdist>` and
       :term:`wheels <wheel>`.

       .. seealso::
          * `GitHub <https://github.com/dholth/enscons>`__
          * `PyPI <https://pypi.org/project/enscons>`__

   Flit
       Flit provides an easy way to create pure Python packages and modules and
       upload them to the :term:`Python Package Index`. Flit can generate a
       configuration file to quickly set up a project, create a :term:`source
       distribution` and :term:`wheel`, and upload them to PyPI.

       Flit uses :term:`pyproject.toml` to configure a project. Flit does not
       rely on tools like :term:`setuptools` to create distributions or
       :term:`twine` to upload them to :term:`PyPI`.

       .. seealso::
          * `Docs <https://flit.pypa.io>`__
          * `GitHub <https://github.com/pypa/flit>`__
          * `PyPI <https://pypi.org/project/flit>`__

   Hatch
       Hatch is a command line tool that can be used to configure and version
       packages and to specify dependencies. The plugin system allows you to
       easily extend the functionalities.

       .. seealso::
          * `Docs <https://hatch.pypa.io/latest/>`__
          * `GitHub <https://github.com/pypa/hatch>`__
          * `PyPI <https://pypi.org/project/hatch>`__

   hatchling
       Build backend of :term:`Hatch`, which can also be used for publishing on
       the :term:`Python Package Index`.

   Import Package
       A Python module that can contain other modules or recursively other
       packages.

   maturin
       Formerly pyo3-pack, is a :pep:`621`-compatible build tool for
       :doc:`binary extensions <../packs/binary-extensions>` in Rust.

   meson-python
       Build backend that uses the `Meson <https://mesonbuild.com>`_ build
       system. It supports a variety of languages, including C, and is able to
       fulfil the requirements of most complex build configurations.

       .. seealso::
          * `Docs <https://mesonbuild.com/meson-python/>`__
          * `GitHub <https://github.com/mesonbuild/meson-python>`__
          * `PyPI <https://pypi.org/project/meson-python/>`__

   Module
       An object that serves as an organisational unit of Python code. Modules
       have a :doc:`namespace </oop/namespaces>` that contains any Python
       objects. They are loaded by importing them into Python.

       Python modules can exist in two different variants:

       Pure Module
           A module written in Python and contained in a single ``.py`` file
           (and possibly associated ``.pyc`` and/or ``.pyo`` files).

       Extension Module
           Usually included in a single dynamically loadable precompiled file,
           for example a common object file (``.so``).

       .. seealso::
          * :doc:`/libs/batteries`

   multibuild
       ``multibuild`` is a set of CI scripts for building and testing Python
       :term:`wheels <wheel>` for Linux, macOS and Windows.

       .. seealso::
          :term:`cibuildwheel`

   pdm
       Python package manager with :pep:`582` support. It installs and manages
       packages without the need to create a :term:`virtual environment`. It
       also uses :term:`pyproject.toml` to store project metadata as defined in
       :pep:`621`.

       .. seealso::
          * `Docs <https://pdm.fming.dev/>`__
          * `GitHub <https://github.com/pdm-project/pdm/>`__
          * `PyPI <https://pypi.org/project/pdm>`__

   pex
       Library and tool for creating Python executable (:file:`.pex`) files,
       which are independent Python environments. :file:`.pex` files are zip files with #!/usr/bin/env python and a special __main__.py file, which can greatly simplify the deployment of Python applications.

       Bibliothek und Werkzeug zur Erzeugung von Python Executable
       (:file:`.pex`)-Dateien, die eigenständige Python-Umgebungen sind.
       .pex-Dateien sind Zip-Dateien mit ``#!/usr/bin/env python`` und einer
       speziellen :file:`__main__.py`-Datei, die das Deployment von
       Python-Applikationen stark vereinfachen können.

       .. seealso::
          * `Docs <https://docs.pex-tool.org/>`__
          * `GitHub <https://github.com/pex-tool/pex>`__
          * `PyPI <https://pypi.org/project/pex>`__

   pip
       Popular tool for installing Python packages that is included in new
       versions of Python.

       It provides the essential core functions for searching, downloading and
       installing packages from the :term:`Python Package Index` and other
       Python package directories and can be integrated into a variety of
       development workflows via a :abbr:`CLI (command line interface)`.

       .. seealso::
          * `Docs <https://pip.pypa.io/>`__
          * `GitHub <https://github.com/pypa/pip>`__
          * `PyPI <https://pypi.org/project/pip/>`__

   pip-tools
       Set of tools that can keep your builds deterministic and still keep up to
       date with new versions of your dependencies.

       .. seealso::
          * `Docs <https://pip-tools.readthedocs.io/en/latest/>`__
          * `GitHub <https://github.com/jazzband/pip-tools/>`__
          * `PyPI <https://pypi.org/project/pip-tools/>`__

   Pipenv
       Pipenv bundles :term:`Pipfile`, :term:`pip` and :term:`virtualenv` in a
       single toolchain. It can automatically import the
       :file:`requirements.txt` and also check the environment for CVEs using
       `safety <https://safetycli.com>`_. Finally, it also facilitates the
       uninstallation of packages and their dependencies.

       .. seealso::
          * `Docs <https://pipenv.pypa.io/en/latest/>`__
          * `GitHub <https://github.com/pypa/pipenv>`__
          * `PyPI <https://pypi.org/project/pipenv>`__

   Pipfile
   Pipfile.lock
       :file:`Pipfile` and :file:`Pipfile.lock` are a higher-level,
       application-orientated alternative to :term:`pip`’s
       :file:`requirements.txt` file. The :pep:`PEP 508 Environment Markers
       <508#environment-markers>` are also supported.

       .. seealso::
          * `Docs <https://pipenv.pypa.io/en/latest/pipfile.html>`__
          * `GitHub <https://github.com/pypa/pipfile>`__

   pipx
       pipx helps you to avoid dependency conflicts with other packages
       installed on the system.

       .. seealso::
          * `Docs <https://pipx.pypa.io/stable/>`__
          * `GitHub <https://github.com/pypa/pipx>`__
          * `PyPI <https://pypi.org/project/pipx/>`__

   piwheels
       Website and underlying software that fetches :term:`source distribution`
       packages from :term:`PyPI` and compiles them into binary :term:`wheels
       <wheel>` optimised for installation on Raspberry Pis.

       .. seealso::
          * `Home <https://www.piwheels.org/>`__
          * `Docs <https://piwheels.readthedocs.io/en/latest/index.html>`__
          * `GitHub <https://github.com/piwheels/piwheels/>`__

   poetry
       An all-in-one solution for pure Python projects. It replaces
       :term:`setuptools`, :term:`venv`/:term:`pipenv`, :term:`pip`,
       :term:`wheel` and :term:`twine`. However, it makes some poor default
       assumptions for libraries and the :term:`pyproject.toml` configuration is
       non-standard.

       .. seealso::
          * `Docs <https://python-poetry.org/>`__
          * `GitHub <https://github.com/python-poetry/poetry>`__
          * `PyPI <https://pypi.org/project/poetry/>`__

   pybind11
       This is :term:`setuptools`, but with a C++ extension and :term:`wheels
       <wheel>` generated by :term:`cibuildwheel`.

       .. seealso::
          * `Docs <https://pybind11.readthedocs.io/en/stable/>`__
          * `GitHub <https://github.com/pybind/pybind11>`__
          * `PyPI <https://pypi.org/project/pybind11/>`__

   pypi.org
       `pypi.org  <https://pypi.org/>`_ is the domain name for the :term:`Python
       Package Index` (:term:`PyPI`). It replaced the old index domain name
       ``pypi.python.org`` in 2017. It is supported by :term:`warehouse`.

   pyproject.toml
       Tool-independent file for specifying projects, which is defined in
       :pep:`518`.

       .. seealso::
          * :ref:`pyproject-toml`
          * `Docs
            <https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml/>`__

   Python Package Index
   PyPI
       :term:`pypi.org` is the standard package index for the Python community.
       All Python developers can use and share their distributions.

   Python Packaging Authority
   PyPA
       The `Python Packaging Authority <https://www.pypa.io/en/latest/>`_ is a
       working group that manages several software projects for the packaging,
       distribution and installation of Python libraries. However, the goals
       stated in `PyPA Goals <https://www.pypa.io/en/latest/future/>`_ were
       created during the discussions around :pep:`516`, :pep:`517` and
       :pep:`518`, which allowed competing workflows with the
       :term:`pyproject.toml`-based build system that do not need to be
       interoperable.

   readme_renderer
       ``readme_renderer`` is a library that is used to render documentation
       from markup languages like Markdown or reStructuredText to HTML. You can
       use it to check whether your package descriptions are displayed correctly
       on :term:`PyPI`.

       .. seealso::
          * `GitHub <https://github.com/pypa/readme_renderer/>`__
          * `PyPI <https://pypi.org/project/readme-renderer/>`__

   Release
       The snapshot of a project at a specific point in time, characterised by a
       version identifier.

       A release can result in several :term:`built distributions <Built
       distribution>`.

   scikit-build
       Build system generator for ``C``, ``C++``, ``Fortran`` and ``Cython``
       extensions that integrates :term:`setuptools`, :term:`wheel` and
       :term:`pip`. It uses ``CMake`` internally to provide better support for
       additional compilers, build systems, cross-compilation and finding
       dependencies and their associated build requirements. To speed up and
       parallelise the creation of large projects, `Ninja
       <https://ninja-build.org>`_ can also be installed.

       .. seealso::
          * `Docs <https://scikit-build.readthedocs.io/en/latest/>`__
          * `GitHub <https://github.com/scikit-build/scikit-build>`__
          * `PyPI <https://pypi.org/project/scikit-build>`__

   setuptools
       setuptools are the classic build system, which is very powerful, but with
       a steep learning curve and high configuration effort. From version
       61.0.0, the setuptools also support :term:`pyproject.toml` files.

       .. seealso::
          * `Docs <https://setuptools.readthedocs.io/>`__
          * `GitHub <https://github.com/pypa/setuptools>`__
          * `PyPI <https://pypi.org/project/setuptools>`__
          * `Packaging and distributing projects
            <https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/>`_

   shiv
       Command line programme for creating Python zip apps as described in
       :pep:`441`, but with all additional dependencies.

       .. seealso::
          * `Docs <https://shiv.readthedocs.io/en/latest/>`__
          * `GitHub <https://github.com/linkedin/shiv>`__
          * `PyPI <https://pypi.org/project/shiv/>`__

   Source distribution
   sdist
       A distribution format (usually generated using ``python setup.py
       sdist``).

       It provides metadata and the essential source files required for
       installation with a tool such as :term:`Pip` or for generating
       :term:`built distributions <Built distribution>`.

   Spack
       Flexible package manager that supports multiple versions, configurations,
       platforms and compilers. Any number of versions of packages can coexist
       on the same system. Spack was developed for the rapid creation of
       high-performance scientific applications on clusters and supercomputers.

       .. seealso::
          * :doc:`Python4DataScience:productive/envs/spack/index`
          * `Docs <https://spack.readthedocs.io/en/latest/index.html>`__
          * `GitHub <https://github.com/spack/spack>`__

   trove-classifiers
       trove classifiers are classifiers that are used in the :term:`Python
       Package Index` to systematically describe projects and make them easier
       to find. On the other hand, they are a package that contains a list of
       valid and outdated classifiers that can be used for checking.

       .. seealso::
          * `Docs <https://pypi.org/classifiers/>`__
          * `GitHub <https://github.com/pypa/trove-classifiers>`__
          * `PyPI <https://pypi.org/project/trove-classifiers/>`__

   twine
       Command line programme that transfers programme files and metadata to a
       web :abbr:`API (Application Programming Interface)`. This allows Python
       packages to be uploaded to the :term:`Python Package Index`.

       .. seealso::
          * `Docs <https://twine.readthedocs.io/en/latest/>`__
          * `GitHub <https://github.com/pypa/twine>`__
          * `PyPI <https://pypi.org/project/twine>`__

   uv
       An extremely fast Python package and project manager written in `Rust
       <https://www.rust-lang.org>`_.

       uv greatly simplifies the development and deployment of Python projects:

       * :ref:`Installation <uv>`
       * :ref:`Create packages <uv-package-structure>` and publish them on
         :doc:`PyPI <../packs/publish>` or :doc:`GitLab <../packs/gitlab>`
       * :doc:`Developing applications <../packs/apps>`
       * Testing libraries with different :ref:`Python versions
         <various-python-versions>` and :ref:`tox_uv`
       * :ref:`Reproducing <reproduce-virtual-env>` and :ref:`updating
         <update-uv-lock>` the Python environment, if necessary also with a
         :doc:`Python4DataScience:productive/envs/uv/dependency-bot`
       * :doc:`Python4DataScience:productive/envs/uv/cicd`
       * :doc:`Python4DataScience:productive/envs/uv/claude-cursor`
       * :doc:`Python4DataScience:productive/envs/uv/docker`
       * Check vulnerabilities with :ref:`uv-secure <check-vulnerabilities>`

       .. seealso::
          * `Docs <https://docs.astral.sh/uv/>`__
          * `GitHub <https://github.com/astral-sh/uv>`__
          * `PyPI <https://pypi.org/project/uv/>`__

   venv
       Package that is part of the Python standard library from Python ≥ 3.3 and
       is intended for creating :term:`virtual environments <Virtual
       environment>`.

       .. seealso::
          * :doc:`Docs <python3:library/venv>`
          * `GitHub <https://github.com/python/cpython/tree/main/Lib/venv>`__

   virtualenv
       Tool that uses the ``path`` command line environment variable to create
       isolated Python :term:`virtual environments <Virtual environment>`,
       similar to :term:`venv`, but provides additional functionality for
       configuration, maintenance, duplication and troubleshooting.

       As of version 20.22.0, virtualenv no longer supports Python versions 2.7,
       3.5 and 3.6.

   Virtual environment
       An isolated Python environment that allows the installation of packages
       for a specific application instead of installing them system-wide.

       .. seealso::
          * :ref:`venv`
          * `Creating Virtual Environments
            <https://packaging.python.org/en/latest/tutorials/installing-packages/#creating-virtual-environments>`_

   Warehouse
       The current code base that drives the :term:`Python Package Index`
       (:term:`PyPI`). It is hosted on :term:`pypi.org`.

       .. seealso::
          * `Docs <https://warehouse.pypa.io/>`__
          * `GitHub <https://github.com/pypi/warehouse>`__

   wheel
       Distribution format that was introduced with :pep:`427`. It is intended
       to replace the :term:`Egg` format and is supported by current :term:`pip`
       installations.

       C extensions can be provided as platform-specific wheels for Windows,
       macOS and Linux on the :term:`PyPI`. This has the advantage for you that
       you do not have to compile the package when installing it.

       .. seealso::
          * `Home <https://pythonwheels.com/>`__
          * `Docs <https://wheel.readthedocs.io/>`__
          * :pep:`427`
          * `GitHub <https://github.com/pypa/wheel>`__
          * `PyPI <https://pypi.org/project/wheel/>`__

       .. seealso::
          * :ref:`wheels`

   whey
       Simple Python :term:`wheel` builder with automation options for
       :term:`trove-classifiers`.

   .. _end-packaging:

   .. _start-test-procedures:

   Static test procedures
       are used to check the source code, although this is not executed. They
       are divided into

       * :ref:`reviews <code_reviews>` and
       * `static program analysis
         <https://en.wikipedia.org/wiki/Static_program_analysis>`_

         There are various Python packages that can help you with static code
         analysis, including :doc:`Python4DataScience:productive/qa/flake8`,
         :doc:`Python4DataScience:productive/qa/pysa` and
         :doc:`Python4DataScience:productive/qa/wily`.

   Dynamic test procedures
       are used to find errors when executing the source code. A distinction is
       made between :term:`whitebox <Whitebox test>` and :term:`blackbox
       <Blackbox test>` tests.

   .. _end-test-procedures:

   .. _start-test:

   Whitebox test
       is developed with knowledge of the source code and the software
       structure.

       Various modules are available in Python:

       :doc:`/test/unittest`
           supports you in the automation of tests.
       :doc:`/test/mock`
           allows you to create and use mock objects.
       :doc:`../document/doctest`
           allows you to test tests written in Python :term:`docstrings
           <Docstring>`.
       :doc:`/test/tox`
           allows you to test in different environments.

   Blackbox test
       is developed without knowledge of the source code. In addition to
       :doc:`/test/unittest`, :doc:`/test/hypothesis` can also be used for such
       tests in Python.

   ``assert``
       A keyword that stops code execution if its argument is false.

   Continuous Integration
   CI
       Automatic checking of the creation and testing process on different
       platforms.

   Dummy
       Object that is passed around but never actually used. Normally dummies
       are only used to fill :term:`parameter` lists.

   ``except``
       Keyword used to intercept an :term:`exception` and handle it carefully.

   Fake
       Object that has an implementation that actually works, but usually takes
       a shortcut that makes it unsuitable for production.

   Integration test
       Tests that check whether the different parts of the software work
       together as expected.

   Mock
       Objects programmed with :term:`exceptions <exception>` that form a
       specification of the calls you are likely to receive.

       .. seealso::
          * `Mock object <https://en.wikipedia.org/wiki/Mock_object>`_

   pytest
       A Python package with test utilities.

       .. seealso::
          * :doc:`/test/pytest/index`

   Regression test
       Tests to protect against new errors or regressions that may occur as a
       result of new software and updates.

   Stubs
       provide ready-made responses to calls made during the test and usually
       do not react at all to anything that has not been programmed for the
       test.

   Test-driven development
   TDD
       A technique for creating software that guides software development by
       writing tests. It was developed in the late 1990s by Kent Beck as part of
       Extreme Programming. Essentially, it involves repeating three simple
       steps:

       * Write a test for the next feature to be added.
       * Write the function code until the test passes.
       * Refactor both the new and old code to make it well structured.

       Although these three steps, often summarised as *‘red – green –
       refactor’*, form the core of the process, there is also an important
       first step, in which a list of test cases is created. One of these tests
       is then selected, *‘Red – Green – Refactor’* is applied to it, and the
       next test is selected. During the process, further tests are added to
       this list.

       .. seealso::
          * `Canon TDD <https://tidyfirst.substack.com/p/canon-tdd>`_ by Kent
            Beck
          * `Test-driven development by example
            <https://archive.org/details/est-driven-development-by-example/test-driven-development-by-example/>`_ by Kent Beck

   ``try``
       A keyword that protects a part of the code that can throw an
       :term:`exception`.

   .. _end-test: