Contributions are welcome, and they are greatly appreciated! Every little bit helps, and you always earn credits.
You can contribute on the code side in many ways:
add new features,
implement a new cluster/cloud computation backend,
Linting and pre-commit#
conda install -c conda-forge pre-commitor
pip install pre-commit
To automatically activate
git commit: Run
To manually run it:
pre-commit run --all
Add a new test if you want to contribute new functionality to the config.
We perform currently multiple integration tests which means various workflows need to work.
All test configs are build by updating the
config.tutorial.yaml with the configs in
You can test your contribution locally with
snakemake --cores 4 run_tests. This will build test configs and executes them.
snakemake -j1 build_test_configsto build and analyse locally the test configs.
To contribute a test:
Provide a new test in
test/<new test>.yaml, or adjust one of the existing ones. These tests update the config.tutorial.yaml to test other options e.g. landlock countries.
Add a new test config path to the
rule build_all_testin the
If your functionality should be tested in the CI for every pull request, add a respective code in
.github/workflows/ci-linux.yaml. We test all functionalities only for Linux while providing a general test for windows and mac.
Performance profiling is important to understand bottlenecks and the accordingly optimize the speed in PyPSA-Earth. We use the Python built-in cProfiler, custom decorators on single functions and analysis tools like snakeviz. See a detailed example in this discussion #557.
Instead of contributing code there are alternatives to support the PyPSA-Earth goals. You can fund projects, supervise people, support us with outreach activities or events. Check out our website for more details.
Join us and get involved#
Any person/ group is welcome to join us. Be it research leader, researcher, undergraduate, or industry professional. A simple way to explore opportunities for collaboration is to join our meetings. All of them are OPEN.