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.