Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
If something goes wrong at any point during installing the library please see how our CI/CD on GitHub Actions installs and builds the project as it will always be the most up-to-date.
Ready to contribute? Here's how to set up cdp-backend
for local development.
-
Fork the
cdp-backend
repo on GitHub. -
Clone your fork locally:
git clone [email protected]:{your_name_here}/cdp-backend.git
-
Install dependencies:
- graphviz
- ffmpeg
- rust toolchain (required by tokenizers)
- just
After installation you may need to reload your shell.
-
Install the project in editable mode. (It is also recommended to work in a virtualenv or anaconda environment):
cd cdp-backend/ just install
If this doesn't work try:
pip install -e '.[pipeline,functions,lint,test,docs,dev]'
. -
Create a branch for local development:
git checkout -b {your_development_type}/short-description
Ex: feature/read-tiff-files or bugfix/handle-file-not-found
Now you can make your changes locally. -
When you're done making changes, check that your changes pass linting and tests with just:
just build
-
Commit your changes and push your branch to GitHub:
git add . git commit -m "Your detailed description of your changes." git push origin {your_development_type}/short-description
-
Submit a pull request through the GitHub website.
For development commands we use just.
just
Available recipes:
build # run lint and then run tests
clean # clean all build, python, and lint files
default # list all available commands
generate-docs # generate Sphinx HTML documentation
install # install with all deps
lint # lint, format, and check all files
release # release a new version
serve-docs # generate Sphinx HTML documentation and serve to browser
tag-for-release version # tag a new version
test # run tests
update-from-cookiecutter # update this repo using latest cookiecutter-py-package
A reminder for the maintainers on how to deploy. Make sure the main branch is checked out and all desired changes are merged. Then run:
just tag-for-release "vX.Y.Z"
just release
The presence of a tag starting with "v" will trigger the publish
step in the
main github workflow, which will build the package and upload it to PyPI. The
version will be injected into the package metadata by
setuptools-scm