In any contribution, please be as explicit as possible.
Use our issue tracker to report bugs.
A bug is either: an unexpected result or an unexpected exception raised by Python. It can't be anything else.
- choose an explicit title that starts with "Bug: " or "Error: "
- the title is not enough: always insert a short and explicit description of what's going wrong,
- the description must be followed by the short python script that reproduces the issue. The script must be self-contained, i.e. it can just be copied/pasted in a text editor and be executed, no need for additional imports or tweaks,
- use the correct markdown directives to insert your syntax highlighted python code,
- set the "bug" label to the issue, so that the ticket can quickly be identified as a bug.
Use our issue tracker to request new features.
A request feature has to be understood as "something I would like ProcessScheduler to be able at, but I think it cant't currently do". If you think wrong, or if there is a way to do it in a straightforward manner, then the Feature request entry will be closed after you got an answer
- choose an explicit title that starts with "Feature request: "
- insert a short/long/as you want/ description. Be as explicit as possible. Generally speaking, too general descriptions are difficult to read/understand,
- you may insert a shot python snippet that demonstrates what you would like to achieve using the library, and how,
- set the "enhancement" label to the issue.
You're welcome to contribute new jupyter notebooks.
- follow the naming conventions (see below),
- each commit should be described by a short and explicit commit message,
- use ruff format and check to ensure code quality
pip install ruff
cd ProcessScheduler/processscheduler
ruff format *.py
ruff check *.py
- submit a Pull Request (PR)
- function and method names follow the
lowercase_separated_by_underscores
convention - class names follow the
UpperCamelCase
naming convention - Tasks constraints names start either by Task or Tasks (with an ending 's'). If the constraint targets one single tasks, use the first one. If it targets two or more tasks, use the second one.