Development#
If you wan to get started with umami you can pick an issue and work on it, well suited
are the issues labeled with good-first-issue
which can be found here. Please tell us if you are working on an issue and create already in the beginning a merge request marked as Draft
. This helps us to see who is working at what.
Please follow the good coding practices which are also summarised here.
Test suite#
Umami's development uses unit tests to ensure it is working. The unit tests are located in umami/tests
.
You can run the unit tests with the command:
pytest ./umami/tests/ -v
If you want to only run unit tests, this can be done via
pytest ./umami/tests/unit/ -v
and the integration test similarly via
pytest ./umami/tests/integration/ -v
If you want to see the output of the code which is being tested you can also add the -s
flag.
Tools for uniform coding style#
In order to run the code style checker flake8
use the following command:
flake8 ./umami
In order to run the yaml linter yamllint
use the following command:
yamllint -d "{extends: relaxed, rules: {line-length: disable}}" .
In order to format the code using black
use the following command:
black ./umami
Checking doc strings (more infos below)
darglint * -s numpy -z full --log-level INFO
Commiting changes and pre-commit hooks#
If you want to commit changes it is recommended to install the pre-commit hooks by doing the following:
pre-commit install
This will run isort
, black
, flake8
and yamllint
on staged python files when commiting.
Excluding files from git only locally#
If you want to exclude certain files only locally for you and not changing the .gitignore
file from umami
you can
find some solution on stack overflow.
You can e.g. add the patterns for the files which should be excluded to the file in your git folder .git/info/exclude
.
Global Configuration#
There is a global configuration file which allows to set different global settings.
Option | Description |
---|---|
pTvariable |
Setting the name of the p_T variable which is used in several places. |
etavariable |
Setting the name of the absolute eta variable which is used in several places. |
DebugLevel |
Defines the debug level. Possible values: DEBUG , INFO , WARNING , ERROR , CRITICAL |
TFDebugLevel |
Defines the debug level of tensorflow, it takes integer values [0,1,2,3], where 0 prints all messages. |
Updating CI files#
In certain cases it is necessary to update the CI files located e.g. in /eos/user/u/umamibot/www/ci/preprocessing
.
To prepare these preprocessing files you can use the provided config in .gitlab/workflow/ci-preprocessing.yaml
and create the files then via
preprocessing.py -c .gitlab/workflow/ci-preprocessing.yaml --prepare
This will give you 5 different files
ci_ttbar_basefile.h5
ci_ttbar_testing.h5
ci_zpext_basefile.h5
ci_zpext_testing.h5
To copy them to the eos
area, please ask one of the umami responsibles.