Thank you for wanting to contribute to Farsante! Here is a guide to get started on your first PR.
If this is your first time working with git, here is a helpful GitHub resource for some of the terminology below like fork
, clone
, and branch
in this example, we will be working in a-new-feature
cd path/to/your/cloned/repo
git checkout -b a-new-feature
Farsante uses python and rust. Below details the current setup needed to work on this repository locally.
Here are links to download python and rust if you don't have them installed on your system:
- Use poetry to create a virtualenv using a version of python on your system. In this example, we are using pyenv to make python version selection easier.
set up environment for the virtualenv install
pyenv install 3.10.9
pyenv shell 3.10.9
pip install poetry
install required dependencies
poetry install
install optional dev dependencies
poetry install --with dev
Now that you have a virtualenv installed with all of the required dependencies, you can run scripts (like unit tests)
using poetry shell
poetry shell
pytest tests/
or with poetry run
poetry run pytest tests/
Farsante uses rust to generate large datasets quickly. You will need to use maturin
to create a rust library that can be used by other python functions.
cd h2o-data-rust
maturin develop
Commit early and often. Working in small chunks makes reviews easier on other collaborators. Ensure that you don't break existing functionality by running unit tests, and add coverage for any new features with a unit test. Once you feel like your changes are ready to be reviewed, navigate to the a-new-feature
branch on your GitHub fork and click on "make pull request".
Add additional context detailing what was changed, and reference any issues that this pull request addresses, like "fixes #123".
Other collaborators will review your PR, and those with merge permissions will merge your work into the main branch once no changes need to be made.
After your PR is merged, you can delete the a-new-feature
branch from your fork.
We discuss work on all MrPowers projects in the #mrpowers channel in this slack workspace. It's a good way to meet other data engineers and hone your programming skills!