=================
Project Structure
=================
This document gives an overview of the project structure. Furthermore the repository contains a number of
various configuration files whose functions are briefly introduced below.
- `src/`
This is where the source code of the project resides.
- `tests/` and `tests_cython/`
Here are the unittests of the project. There are tests for python and cython code.
Configuration files
-------------------
- `.ci/`, `.gitlab-ci.yml`
.gitlab-ci.yml defines the CI/CD structure for the project. The individual jobs are:
- Linting
- Style guide checking
- Testing with tox
- Test coverage generation
- Building sources distribution packages
- Creating binary distribution packages (Linux only)
- Creating new releases
- Updating the documentation
The shell scripts in the ``.ci`` folder are used to create wheel binary packages.
The Dockerfiles represent the images on which the CI/CD jobs are executed.
- `.gitignore`
`Git `_ configuration file to manage the tracking of files within the version control system.
- `.coveragrc`
Test coverage configuration file for the `Coverage.py `_
package.
- `dev-requirements.txt`
Here the development dependencies of the project are specified.
- `LICENSE`
The license under which the project is published.
- `manifest.in`
This file specifies additional files that should be packaged with the source distribution of the package.
`Read more `_ about packaging source distributions.
- `setup.py`
The `setup.py `_ makes the repository a python package.
It is used to provide the package with meta information, to include the C extensions and to build the project.
- `README.md`, `CHANGELOG.rst`, `.readthedocs.yml` and `docs/`
All these files are used to describe the project. The ``README.rst`` acts as the landing page of the repository. the
``CHANGELOG.rst`` contains notable changes between different versions. and ``.readthedocs.yml`` controls the generation of
documentation at https://readthedocs.org/.
The docs folder contains the detailed documentation of the project. The format of the files is
`reStructuredText `_ and is used in
combination with the Sphinx library to generate the documentation.
- `setup.cfg`
This configuration file is a `setup `_ configuration file.
It is used to define generic settings in the project. Among other things, settings for linting are stored here,
but also for testing. The project uses `pytest `_ to execute the tests, which
also reads settings from this file.
- `tox.ini`
`Tox `_ is a test automation system intended to improve the
testing workflow. Tox runs the `pytest` module to execute the tests. This project makes use of the test
environment generation functionality to run tests against a combination of different requirement configurations.