Dependencies

Every PLESTY module depends on plesty-lib, so every package plesty-lib requires is installed on every computer in the lab that runs PLESTY. That is why the list is short, and why adding to it follows the rules below.

Required packages

Package

Why plesty-lib needs it

numpy

arrays: the basis of PlestyArray and every data type

pyserial

instruments on a serial connection

pyvisa

instruments reached through VISA (USB, Ethernet, GPIB), the usual way to reach SCPI instruments

pyusb

direct USB access, and resetting USB devices

pyzmq

the network connection between a device server and its clients

pyyaml

reading the YAML configuration files every module ships and every experiment reads (see YAML Configuration)

pytest and plesty-sdk are needed only to develop plesty-lib, and must never become requirements of the installed package.

A new required package must be actively maintained, with a release or commits upstream within the last two years, and is added to the table above in the same merge request. Every push also checks all dependencies for known security problems (pip-audit, gate 10 of plesty check), so a package that stops receiving fixes is noticed and has to be replaced.

Optional packages: extras

A package that only one feature needs, or that is large, compiled or tied to one operating system, is an extra instead: listed under [project.optional-dependencies] in pyproject.toml, imported only inside the function that needs it, and reported by name in the error when it is missing. Install lists the extras and what each one enables.

The packages of the hdf5, fit and report extras are also listed in the optional dependency group, which a development install includes by default. The tests in CI install no extras, so without that group the code behind them would never be tested there.