Additional Python code¶
Overview¶
Python code that is not part of ‘core’ Mantid, e.g. is not an algorithm, not
related to the Python exports (mantid.* modules) nor an integral part of
workbench should go to either the scripts directory or qt
directory.
scripts is a place to put non-GUI modules and scripts such as pure Python
reduction frameworks or technique specific plotting modules which are
desirable to be included in an official release. The code in scripts can
be included in the automatic unit testing machinery making it possible to
avoid breakages due to changes in Mantid’s core parts. Although some reduction
interface code lives in scripts, adding more GUI related code there is
discouraged.
Python interfaces should go to the qt directory.
The scripts directory¶
Python code should be written as proper modules. For example, the code of
a module called spam should go into scripts/spam and contain a file
named __init__.py at minimum. Then the module can be imported into Mantid
simply by import spam.
Documentation¶
Documentation can be added to Mantid’s Python API docs in docs/source/api
and linked to docs/source/api/index.rst. Note, that it is possible to
import Python’s docstrings in .rst files using directives such as ..
automodule:: or .. autoclass::, see here.
Unit testing¶
Unit tests for each module should be added to scripts/test/modulename. The
tests follow the standard Mantid unit testing practices.
The qt directory¶
There are no official rules for qt yet. Follow the structure of already
existing code there.