================= 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.