A cookiecutter based project template for Brightway ecosystem packages.
We prefer using cruft
as tooling to create/check/update projects created with the template over direct cookiecutter because of the following features of cruft:
cruft
( mamba install cruft
for example)cruft create https://github.com/brightway-lca/cookiecutter-brightwaylib
You will be asked for the following information:
https://github.com/brightway-lca/
If the cookiecutter template is updated, you can upgrade your project with:
cruft update
inside the repository of the project. See cruft documentation for more on this.
The template provides enough information to build a PyPI
and conda
package, under the pyproject.toml
and conda.recipe/meta.yaml
files.
Make sure you have "build" installed, and then you can build the package with:
python -m build --outdir dist/ .
Make sure you have conda-build
installed, and then you can build the package with:
conda config --set anaconda_upload no
conda build -c conda-forge conda.recipe .
The previous snippet disables automatic uploading to anaconda. You can see the publishing/uploading part below.
The template includes github actions to automatically publish/upload the packages to PyPI
and anaconda.org
, but you can find below the instructions to do it manually as well.
The repository is configured to do the publishing/uploading automatically on develop
and main
branches.
You have to enable trusted publishing from your PyPI account for this to work.
Hint: the publisher is the python-package-deploy.yml
.
If you prefer to deactivate the automatic github actions, here is how to publish/upload.
build
and twine
in your current or a new environmenttwine
with you pypi username and password and with your pypi API token.python -m build
twine upload dist/*
You can also consider uploading to testpypi first to test that the process works fine.
The repository is configured to do the publishing/uploading automatically on develop
and main
branches.
You must add 2 secrets to your repository:
ANACONDA_USER
ANACONDA_PASSWORD
conda-build
and anaconda-client
in your current or a new environmentanaconda
to login to anaconda.org (see anaconda documentation conda config --set anaconda_upload yes
conda build -c conda-forge conda.recipe .
main
and develop
on push and on pull requests to this branches on the following:
test.pypi.org
on push events to the develop
and main
branches.pypi.org
on tagged push events to the develop
and main
branch with tags.src
!pyproject.toml
used for everythingFollow the instructions at the pre-commit website.
In our pre-commit configuration, we run pylint, and this needs to be installed locally as its Github repo doesn't play nicely with pre-commit. Follow the instructions at the pylint website