Contributing

With a few exceptions, that will be described in the following sections, most of the objects and features present in turbomoleio do not require specific explanations. A developer should nonetheless comply with the general coding guidelines provided here.

The most basic aspect concerns the coding in general. turbomoleio is written in python 3 and should support versions greater or equal to 3.8. It is important to have an understanding of the basic principles of object orientation programming, like inheritance and abstraction, since these are often used in the code. The coding follows mainly the conventions defined in the standard PEP 8 style guide. Although this is not strictly enforced and deviations are acceptable, it would be advisable to stick to it when possible.

Providing detailed in-code documentation in accordance with the standards is also essential to help future developers and to automatically generate the API documentation. In turbomoleio the Google style is used for docstrings and comments. New developments should also be described in the user and developer guides whose sources can be found in the turbomoleio/docs_rst folder. They are typeset using the reStructuredText and converted to html format using sphinx. The html files are located in the turbomoleio/docs folder and can be generated from the source rst files using the invoke make-doc task defined in ~turbomoleio/tasks.py.:

invoke make-doc

Implementing unit tests and, if suitable, integration tests is also a requirement for the acceptance of new developments in turbomoleio. See the Testing section for more details.

A final remark: since other packages rely on turbomoleio, changes to the current API are strongly discouraged. In case a backward incompatible change would lead to clear advantages these should be clearly highlighted and, possibly, the changes should be agreed with maintainers of packages that rely on turbomoleio.