1.8 KiB
Contributing
Thanks for contributing to parsedmarc.
Local setup
Use a virtual environment for local development.
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
pip install .[build]
Before opening a pull request
Run the checks that match your change:
ruff check .
pytest --cov --cov-report=xml tests.py
If you changed documentation:
cd docs
make html
If you changed CLI behavior or parsing logic, it is also useful to exercise the sample reports:
parsedmarc --debug -c ci.ini samples/aggregate/*
parsedmarc --debug -c ci.ini samples/forensic/*
To skip DNS lookups during tests, set:
GITHUB_ACTIONS=true
Pull request guidelines
- Keep pull requests small and focused. Separate bug fixes, docs updates, and repo-maintenance changes where practical.
- Add or update tests when behavior changes.
- Update docs when configuration or user-facing behavior changes.
- Include a short summary, the reason for the change, and the testing you ran.
- Link the related issue when there is one.
Branch maintenance
Upstream master may move quickly. Before asking for review or after another PR
lands, rebase your branch onto the current upstream branch and force-push with
lease if needed:
git fetch upstream
git rebase upstream/master
git push --force-with-lease
CI and coverage
GitHub Actions is the source of truth for linting, docs, and test status.
Codecov patch coverage is usually the most relevant signal for small PRs. Project coverage can be noisier when the base comparison is stale, so interpret it in the context of the actual diff.
Questions
Use GitHub issues for bugs and feature requests. If you are not sure whether a change is wanted, opening an issue first is usually the safest path.