Codebase Layout
===============

.. contents:: :local:

Source Code
-----------

``project_example_for_python/`` contains the codebase of the project. The
``tests/`` directory contains the unit and integration tests.

Documentation
-------------

- ``docs/`` contains the project documentation.

  - ``contributing/`` contains information on contributing to the project.

Python Packaging
----------------

.. contents:: :local:

MANIFEST.in
~~~~~~~~~~~

Files listed here are included in the archive of your package which is released.
If there is a file in your codebase and it's not listed here and it's not a
Python file it will not be in the released package.

``recursive-include`` with ``*`` at the end says to include everything under a
given directory.

.. literalinclude:: /../MANIFEST.in

entry_points.txt
~~~~~~~~~~~~~~~~

See Python's `Creating and discovering plugins
<https://packaging.python.org/guides/creating-and-discovering-plugins/>`_
documentation for how entry points are used to export plugins as well as
setuptool's `Entry Points
https://setuptools.pypa.io/en/latest/userguide/entry_point.html>_`
documentation.

.. .. literalinclude:: /../entry_points.txt

LICENSE
~~~~~~~

Your project's `LICENSE <https://opensource.org/licenses/alphabetical>`_

.. literalinclude:: /../LICENSE

README.rst
~~~~~~~~~~

This file is included in the archive of your package which is released. It is
also displayed on PyPi if you upload your package to PyPi.

setup.py
~~~~~~~~

This file is only around due to changes in the Python Packaging ecosystem.
Eventually it will no longer be required. It exists to point to the
``setup.cfg`` file until that file alone will suffice.

.. literalinclude:: /../setup.py

pyproject.toml
~~~~~~~~~~~~~~

This file is defined and it's format is outlined or referenced in:

- `PEP-518 <https://www.python.org/dev/peps/pep-0518/>`_

- `setuptools Dependency Management <https://setuptools.pypa.io/en/latest/userguide/dependency_management.html>_`

- `PEP-517 <https://www.python.org/dev/peps/pep-0517/>`_

- `PEP-440 <https://www.python.org/dev/peps/pep-0440/>`_

This file and ``setup.cfg`` define your package and it's build and run time
dependencies.

.. literalinclude:: /../pyproject.toml

setup.cfg
~~~~~~~~~

This file and ``pyproject.toml`` define your package and it's run time
dependencies.

- `setuptools quickstart <https://setuptools.pypa.io/en/latest/userguide/quickstart.html>_`

.. literalinclude:: /../setup.cfg