The ska-oso-scripting project provides a Python library intended to be useful for engineers and scientists writing observing scripts and engineering tests. The helper functions and classes contained in the library support the high-level configuration and control of an SKA subarray, hiding the low-level details of how the related Tango devices are controlled from the script author.

This library provides a simple object-oriented interface and a functional interface, located in ska_oso_scripting.objects and ska_oso_scripting.functions respectively. The objects are recommended as the most user-friendly option but the functions can also be called if preferred. Regardless, the same code is called at the lowest level: object methods call ‘public’ scripting functions, which then call ‘private’ lower-level scripting functions held in submodules of devicecontrol.

Observing scripts can be run interactively in a Jupyter notebook, or remotely executed by the Observation Execution Tool (OET). For documentation on how to use OET to run observing scripts, see the ska-oso-oet project documentation.

A major use case for the ska-oso-scripting library is to support the execution of Scheduling Blocks (SBs). Hence, in addition to Tango device control, much of the ska-oso-scripting library is concerned with translating SBs into the equivalent JSON configuration and control strings and with the issuing of commands to TMC Tango devices at the appropriate times.


Like all SKA projects, this project uses containers for development and testing so that the build environment, test environment and test results are reproducible and independent of the host environment. make is used to provide a consistent UI.

Build a new container image for the OET with:

make oci-build

Execute the test suite with:

make python-test

Format and lint the Python code with:

make python-format
make python-lint