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