Tooling#

This is a list of first party and third party tools used for developing Scipp.

Third Party#

Compilers#

All compilers can be installed through conda. See conda/meta.yaml.

  • GCC [Linux]

  • XCode [macOS]

  • MSVC [Windows]

Static Analysis and Formatters#

We use tox and pre-commit to do auto formatting and static analysis. See in particular pre-commit-config.yaml for the list of used tools and versions.

Misc#

  • CMake >= 3.21

  • Conda

Note: Ubuntu users can use the Kitware Repo to obtain the latest version.

First Party#

There are several development tools in the tools directory at the top level of the Scipp repository. See the readmes in the folder.

Stubgen#

A number of classes are defined in C++ and exposed to Python via Pybind11. These classes are invisible to static analysis tools, in particular type checkers. In addition, some classes have many dynamically bound methods which are equally invisible to type checkers.

So stubs are provided in src/scipp/core/cpp_classes.pyi which lists these classes and all their methods. This file is automatically generated by the stubgen package located in tools/stubgen/. It can be used by calling

cd tools
python -m stubgen

A tox environment is also provided: tox -e stubgen.

Both ways of using stubgen require Scipp to be installed (potentially in editable mode) in the current environment. See tools/stubgen/README.md for details.

Remember to call the stubgen whenever you make a change to the interface of those core classes!