Contributing

The repository for this project is https://github.com/ISISComputingGroup/fastcs-secop.

Contributions via GitHub issues and pull requests are welcome. If an issue or PR appears to have been ignored, it may have simply been missed - email ISISExperimentControls@stfc.ac.uk if an issue or PR appears to have been ignored accidentally.

Some changes may require preparatory changes in FastCS itself.

Developer installation

To install a developer version of the library, run pip install -e .[dev] in a python virtual environment. You can also use uv pip install -e .[dev] if you have the uv tool installed.

Linting

Linting is performed by ruff (formatting & linting) and pyright (type-checking).

ruff format
ruff check --fix
pyright

Documentation

Documentation is built using sphinx. To get a local development build of the docs, use sphinx-autobuild doc _build --watch src.

Spell checking is run automatically in CI - if a word is correctly spelt but the spellchecker flags it, add the word to doc/spelling_wordlist.txt.

The spellchecker can be run manually using sphinx-build -E -a -W --keep-going -b spelling doc _build - this is best run on a Windows machine due to differences in the system spelling dictionary between operating systems.

Tests

Tests run via pytest. Some tests spawn a very basic lewis emulator on port 57677 to test a full communication scenario. This is handled automatically by pytest, but may fail if port 57677 is already in use.