Skip to content

Contributing

Contributions are welcome — bug reports, fixes, docs, and features. Please also read the Code of Conduct. If you are choosing a first task, start with the First PR guide and the Project labels.

Development setup

git clone https://github.com/FreshCode-Org/freshdata
cd freshdata
pip install -e ".[dev,ml,polars]"
pre-commit install

Run the checks

pytest                       # full test suite (coverage gate ≥ 93%)
ruff check src tests         # lint
ruff format --check src tests
mypy src/freshdata           # type check

All four must pass; CI runs them on Python 3.9–3.13.

Build the docs locally

pip install -e ".[docs]"
mkdocs serve     # live preview at http://127.0.0.1:8000
mkdocs build --strict

Updating golden snapshots

After an intentional engine change:

pytest tests/test_golden.py tests/test_online_datasets.py --update-golden

Pull requests

  1. Branch from main.
  2. Add tests for new behavior and keep coverage ≥ 93%.
  3. Ensure pytest, ruff, and mypy pass.
  4. Update CHANGELOG.md under the Unreleased section.
  5. Open the PR using the template; describe the change and its rationale.

Reporting security issues

Do not open public issues for vulnerabilities — see SECURITY.md for private disclosure.