Skip to content

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:

  1. Core logic in geoparquet_io/core/<feature>.py
  2. CLI wrapper in geoparquet_io/cli/main.py
  3. Python API in geoparquet_io/api/table.py and api/ops.py

See CLAUDE.md for full architecture details.

Publishing

(Maintainers only)

  1. Update version in pyproject.toml
  2. Update CHANGELOG.md
  3. 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.