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 |
|---|---|
|
arrays: the basis of |
|
instruments on a serial connection |
|
instruments reached through VISA (USB, Ethernet, GPIB), the usual way to reach SCPI instruments |
|
direct USB access, and resetting USB devices |
|
the network connection between a device server and its clients |
|
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.