Thank you for your interest in contributing to snakesee!
- Python 3.11 or later
- pixi (recommended) or uv
# Clone the repository
git clone https://github.com/nh13/snakesee.git
cd snakesee
# Install development environment
pixi run install-dev
# Run all checks (lint, type check, tests)
pixi run check
# Run tests only
pixi run test
# Auto-fix linting issues
pixi run fix
# Build documentation
pixi run docs# Clone the repository
git clone https://github.com/nh13/snakesee.git
cd snakesee
# Create virtual environment and install
uv sync --group dev --group docs
uv pip install -e '.[logo]'
# Run checks
uv run poe check-allThis project uses:
- ruff for linting and formatting
- mypy for type checking
- pytest for testing
All code should:
- Pass
ruff format(formatting) - Pass
ruff check(linting) - Pass
mypy(type checking) - Have tests with >65% coverage
# Run all checks
pixi run check
# or
uv run poe check-all
# Auto-fix linting issues
pixi run fix
# or
uv run poe fix-all
# Run just tests
pixi run test
# or
uv run pytest- Fork the repository and create a feature branch
- Make your changes
- Ensure all checks pass:
pixi run check - Update documentation if needed
- Submit a pull request
Releases are automated via GitHub Actions when a SemVer tag is pushed:
# Ensure everything is committed and pushed
git push origin main
# Create and push a tag
git tag 0.2.0
git push origin 0.2.0The CI will automatically:
- Run all tests
- Build the source distribution
- Publish to PyPI
- Generate changelog with git-cliff
- Create a GitHub release
We use Conventional Commits for generating changelogs:
feat:New featuresfix:Bug fixesdocs:Documentation changestest:Test changesrefactor:Code refactoringstyle:Code style changeschore:Maintenance tasks
Examples:
feat: add support for filtering by rule name
fix: handle missing log files gracefully
docs: update keyboard shortcuts table
The repository includes an optional Snakemake logger plugin in snakemake-logger-plugin-snakesee/.
# Install the plugin in development mode
cd snakemake-logger-plugin-snakesee
pip install -e .
# Run plugin tests
pytest tests/src/snakemake_logger_plugin_snakesee/handler.py- Main LogHandler implementationsrc/snakemake_logger_plugin_snakesee/events.py- Event types and serializationsrc/snakemake_logger_plugin_snakesee/writer.py- JSONL event file writer
The plugin writes events to .snakesee_events.jsonl which snakesee reads via snakesee/events.py.
Open an issue at https://github.com/nh13/snakesee/issues