Contributing

Contributions are welcome and appreciated. This page covers how to get set up and what to keep in mind before opening a pull request.


Getting Started

  1. Fork the repository on GitHub.

  2. Clone your fork and create a new branch:

    git clone https://github.com/<your-username>/skeval.git
    cd skeval
    git checkout -b my-feature
    
  3. Install the package in editable mode with dev dependencies:

    pip install -e ".[dev]"
    
  4. (Optional) install pre-commit hooks:

    pre-commit install
    

Running Tests

pytest

For a coverage report:

pytest --cov=src/skeval --cov-report=term-missing

All tests must pass before a pull request can be merged.


Code Style

This project uses:

  • black for formatting (line length 88)

  • isort for import ordering

  • flake8 for linting

  • mypy for type checking

Run them all at once:

black src/ tests/
isort src/ tests/
flake8 src/ tests/
mypy src/

Building the Docs Locally

pip install -e ".[docs]"
sphinx-build -b html docs/ docs/build/

The built site is written to docs/build/. Open index.html in a browser to preview.


Submitting a Pull Request

  • Keep pull requests focused — one feature or fix per PR.

  • Add tests for any new behaviour.

  • Update CHANGELOG.md with a brief entry under the [Unreleased] heading.

  • Make sure pytest, black --check, and flake8 all pass locally before pushing.

  • A maintainer will comment /run-ci on your PR to trigger the CI checks.

If you are unsure whether your change fits the project direction, open an issue first to discuss it.


Code of Conduct

This project follows the Contributor Covenant Code of Conduct. By participating you agree to uphold a respectful and inclusive environment for everyone.