..
The turbomoleio package, a python interface to Turbomole
for preparing inputs, parsing outputs and other related tools.
Copyright (C) 2018-2022 BASF SE, Matgenix SRL.
This file is part of turbomoleio.
Turbomoleio is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Turbomoleio is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with turbomoleio (see ~turbomoleio/COPYING). If not,
see .
.. _developer_contributing:
============
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 :ref:`developer_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.