# Install all dependencies
conda env create -f environment.yml
conda activate next_pass
# Install package in editable mode
pip install -e .# Install pre-commit hooks
pre-commit install
# Run hooks on all files (optional, to check current state)
pre-commit run --all-filesThe pre-commit hooks will automatically run on every commit and check:
- Code formatting (black)
- Import sorting (isort)
- Linting (flake8)
- Trailing whitespace
- YAML/TOML syntax
- Large file additions
- Debug statements
pytest tests/Pre-commit will auto-format code, but you can also run manually:
# Format all Python files
black .
# Sort imports
isort .
# Check linting
flake8- Ensure all tests pass
- Add tests for new features
- Update documentation as needed
- Follow existing code style (enforced by pre-commit)
- Keep commits focused and atomic
- Write clear commit messages
When adding support for a new satellite:
- Create a new module in
utils/(e.g.,utils/new_satellite_pass.py) - Add corresponding tests in
tests/test_new_satellite_pass.py - Update CLI options in
next_pass.py - Add examples to README.md
- Include small test fixtures if needed
Releases are automated via GitHub Actions when a version tag is pushed.
-
Update version in
pyproject.toml:version = "0.2.0"
-
Commit the version bump:
git add pyproject.toml git commit -m "Bump version to 0.2.0" -
Create and push a tag:
git tag -a v0.2.0 -m "Release v0.2.0" git push origin main git push origin v0.2.0 -
Automated workflow:
- Builds distribution packages (wheel + sdist)
- Publishes to PyPI (requires
PYPI_API_TOKENsecret) - Creates GitHub release with auto-generated changelog
Follow Semantic Versioning:
- MAJOR (1.0.0): Breaking API changes
- MINOR (0.2.0): New features, backward compatible
- PATCH (0.1.1): Bug fixes, backward compatible