Repository Structure

pyTooling Actions assumes a certain repository structure and usage of technologies. Besides assumed directory or file names in default parameters to job templates, almost all can be overwritten if the target repository has a differing structure.

  • Python source code is located in a directory named after the Python package name.

    • A <package>/__init__.py should be provided with global package information like: version number, author, copyrights, license, maintainer, …

  • All tests are located in a /tests directory and further divided into subdirectories by testing approach.

    • E.g. unit tests are located in a /tests/unit directory.

  • The package documentation is located in a /doc directory.

    • Documentation is written with ReStructured Text (ReST) and translated using Sphinx.

    • Documentation requirements are listed in a /doc/requirements.txt.

  • Dependencies are listed in a /requirements.txt.

    • If the build process requires separate dependencies, a /build/requirements.txt is used.

    • If the publishing/distribution process requires separate dependencies, a /dist/requirements.txt is used.

    • To reduce duplication of dependencies, dependency files should recursively call each other with -r <path>.

  • All Python project settings are stored in a pyproject.toml.

  • The Python package is described in a setup.py.

  • Packages are build with build instead of setuptools.

  • A repository overview is given in a README.md.

<Repository>/
  .github/
    workflows/
      Pipeline.yml
    dependabot.yml
  .vscode/
    settings.json
  build/
    requirements.txt
  dist/
    requirements.txt
  doc/
    conf.py
    index.rst
    requirements.txt
  <package>
    __init__.py
  tests/
    unit/
    requirements.txt
  .editorconfig
  .gitignore
  LICENSE.md
  pyproject.toml
  README.md
  requirements.txt
  setup.py