Contributing¶
Prerequisites¶
- Python 3.10+
- uv
Setup¶
git clone https://github.com/geoparquet/geoparquet-io.git
cd geoparquet-io
uv sync --all-extras
uv run pre-commit install
Tests¶
uv run pytest # Full suite
uv run pytest tests/test_yourfile.py -v # Single file
uv run pytest -m "not slow and not network" # Fast tests only
Coverage minimum: 67% (enforced in CI).
Test Markers¶
| Marker | Description |
|---|---|
@pytest.mark.slow |
marks tests as slow (deselect with '-m "not slow"') |
@pytest.mark.network |
marks tests requiring network access (deselect with '-m "not network"') |
@pytest.mark.integration |
marks end-to-end integration tests |
Code Quality¶
All handled by pre-commit:
uv run pre-commit run --all-files
Documentation¶
uv run mkdocs serve
Commits¶
Use Conventional Commits: type(scope): message
Types: feat, fix, docs, refactor, test, chore
Architecture¶
New CLI commands need corresponding Python API:
- Core logic in
geoparquet_io/core/<feature>.py - CLI wrapper in
geoparquet_io/cli/main.py - Python API in
geoparquet_io/api/table.pyandapi/ops.py
See CLAUDE.md for full architecture details.
Publishing¶
(Maintainers only)
- Update version in
pyproject.toml - Update
CHANGELOG.md - Create tag:
git tag v0.x.0 && git push origin v0.x.0
License¶
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.