Skip to content

Contributing

Welcome! We're happy to have you here. Thank you in advance for your contribution to protarrow.

Development environment set up

python3 -m venv --clear venv
uv sync --all-groups
uv run python ./scripts/generate_proto.py
uv run python ./scripts/protoc.py
pre-commit install

Testing

This library relies on property based testing. Tests convert randomly generated data from protobuf to arrow and back, making sure the end result is the same as the input.

The tests take a long time to run. To run them faster:

uv run pytest --numprocesses=auto -p no:benchmark ./tests

To Get coverage:

uv run coverage run --branch --include "./protarrow/*" -m pytest tests
uv run coverage report --show-missing

Generating the change log

We use git-change-log to generate our CHANGELOG.md

Please follow the basic convention for commit message.

To update the change log, run:

git-changelog -io CHANGELOG.md

New Release

For new release, first prepare the change log, push and merge it.

git-changelog --bump=auto -io CHANGELOG.md

Then tag and push:

git tag vX.X.X
git push origin vX.X.X

Lastly on github, go to tags and create a release. The CI will deploy to pypi automatically from then.

Testing the documentation

uv run mkdocs serve --livereload --watch=./

Updating dependencies

  • For the repo uv lock --upgrade
  • For the doc: (cd docs/;uv pip compile ./requirements.in > ./requirements.txt)
  • For pre-commit: pre-commit autoupdate; pre-commit run --all-files

Resources

The repo set up is inspired by this guide