Features#

This code is used to showcase a number of good software practices:

  • Argument validation with type annotations and runtime checking using the typing module

  • Consistent error messages for invalid operations and inputs via custom Exceptions

  • Unit tests with pytest. Use tests/convtest.py to set global testing variables

  • Example notebooks and scripts

  • Google-style documentation generated with sphinx

  • Pre-commit routine set up in file .pre-commit-config.yaml. It includes:

    • Formatting with black

    • Linting with ruff via pre-commit

    • Type checking with mypy

    • Additional checks and fixes (trailing whitespace removal, enforcing empty line at EOF, YAML syntax checks, blocking large files) via pre-commit-hooks

  • Modern packaging, easy installation, and project settings with pyproject.toml

  • Automated test suite and coverage reporting integrated with GitHub Actions; coverage reports can be published to GitHub Pages. See .github/workflows/tests.yml

  • Automatic documentation build and deployment to GitHub Pages with GitHub Actions. Setup in .github/workflows/docs.yml

  • Easy contribution workflow for new features and improvements.