Skip to main content

tango-simlib: Easily generate TANGO device simulators

Main website: http://tango-simlib.readthedocs.io

Introduction

tango-simlib is a library that aids the data-driven development of TANGO device simulators. It aims to make it easy to develop basic simulators while making it possible to implement more complex simulators. In addition to the simulated device interface, a separate TANGO simulation-control interface is generated, allowing the simulator to be manipulated via a back-channel to simulate e.g. failure conditions on the simulated device interface.

Using only the basic TANGO interface description captured via a POGO generated XMI file, a basic simulator with randomly varying attributes and no-op command handlers can be generated with no further coding. Attribute simulation parameters and simple command behaviour can be specified using a Simulator Description Datafile (SimDD). The format of this file is currently a working proposal and subject to change. A more formal format specification is being worked on.

Note that tango-simlib does not generate simulator code. Rather, the simulator’s behaviour is driven by the description data at run-time using Python’s dynamic programming features. If the description files (XMI or SimDD) are modified, the simulator device server only needs to be restarted for the changes to take effect.

Basic Usage

Installation

Please Note

  • tango-simlib is compatible with Python2.7 and Python>=3.5.

  • Installation requires the TANGOBINARY prerequisites to be installed.

$ sudo apt-get install -y --no-install-recommends $(grep -vE "^\s*#" apt-build-requirements.txt | tr "\n" " ")

If you cannot install the PyTango package you will not be able to install tango-simlib. For more, documentation.

Installation from source, working directory where source is checked out

$ pythonX -m pip install . # Where 'x' is the version of Python

This package is available on PYPI, allowing

$ pip install tango-simlib

Tango-YAML

After installing tango_simlib, the tango-yaml script will be available to use

$ tango-yaml -h

usage: tango_yaml [-h] {xmi,fandango,tango_device,validate} ...

This program translates various file formats that describe Tango devices to
YAML. Or validates the conformance of a device against a specification.

positional arguments:
{xmi,fandango,tango_device,validate}
                        sub command help
    xmi                 Build YAML from a XMI file
    fandango            Build YAML from a fandango file
    tango_device        Build YAML from a running Tango device
    validate            Check conformance of a Tango device against a
                        specification in YAML format

optional arguments:
-h, --help            show this help message and exit

Documentation

Check out the documentation for more information. Download Manual: https://media.readthedocs.org/pdf/tango-simlib/latest/tango-simlib.pdf

License

This project is licensed under the BSD 3-Clause License - see license for details.

Contribute

Contributions are always welcome! Please ensure that you adhere to our coding standards CAM_Style_guide.

Changelog

0.9.4

  • Reduce more logs spewed by device servers 150.

0.9.3

  • Reduce logs spewed by device servers 148.

  • Updated class instance prefix to be more definitive 146.

  • Pinned jsonschema package to py2 compatible version 143.

0.9.2

  • Reduce the noisy logging in the tango device 138.

0.9.1

  • Configure the device state from the simulator data description file(s) at device start up 135.

0.9.0

  • Flattened the dict structure generated by the fandango parser for the device attributes 132.

  • Configured all the default properties of the TANGO device’s attributes 133.

0.8.0

  • Updated DishMaster.yaml 126.

  • Pinned last known compatible Py2 version of pyrsistent 127.

  • Added ability to override min_update_period 128.

  • Added the ability to pass a custom logger to model 129.

  • Reduced logging verbosity 131.

0.7.1

  • Include enum labels in YAML spec document and sort labels 123.

  • Arranged the - name as the top value and have the keys sorted alphabetically 123.

0.7.0

  • Updated CHANGELOG in 122

  • Added validate option to tango-yaml tool in 121
    • This sub command enables conformance verification of a running Tango device against a specification file.

0.6.0

  • Updated CHANGELOG in 118

  • Added tango-yaml tool in 119
    • This tool translates fandango (fgo), XMI (xmi) or a running Tango device to YAML.

    • Once installed, run tango-yaml -h for details.

0.5.0

  • Added Weather.xmi to MANIFEST.in 117

  • Refactor the code base 116

  • Update compat function docstrings 115

0.4.0

  • Added Python2.7 and Python>=3.5 Compatibility Pull Request 110.

  • Formatted code with black

  • Added some missing XMI parser types Pull Request 101.

0.3.0

  • Support multiple device and control interfaces per server process (Enhancement)
    • Addressing issue raised in 56

  • Adding a log when writing to the attributes

  • Reduced the unnecessary logging of the TANGO device

  • Handle non scalar value
    • Linked to the Pull Request 91

0.2.1

  • Supporting more tango data types.
    • DevUChar

    • DevShort

    • DevUShort

    • DevLong64

    • DevULong64

    • DevState

    • DevEncoded

  • Updating documentation. Addresses issue 79.

0.2.0

  • Adding support to register and run a TANGO device using a file as a database.

  • Initialising the model quantity values with the default values specified in the simulator data description files.

  • Parsing simulator data description files in a pre-determined precendence order.

  • Removing unmaintained python-devicetest dependency.

  • Added a fandango json parser
    • This parser is used to process the TANGO device data file generated by the fandango library.

  • Making use of the PyTango v9.2.2 feature to create dynamic commands.

0.1.6

  • Force all unicode attributes in XMI files to byte strings.

0.1.5

  • Updates to the SimDD
    • Added a new type of behaviour in the side-effect actions suite for long-running commands.

  • Handle vector data type from pogo

  • Populate tango-db with device properties

0.1.4

  • Package release documentation

  • Updated console script names
    • tango-simlib-tango-launcher -> tango-simlib-launcher

    • tango-simlib-tango-simulator-generator -> tango-simlib-generator

0.1.3

  • DISH config files included in examples of device simulators

  • JSON Schema for SimDD configuration file validation

0.1.2

  • Modified the update method of the Model class to invoke the override pre-update and post-update method, respectively.

0.1.1

  • Handle DevEnum data type TANGO attributes

  • Handle Spectrum data format TANGO attributes

Metadata

Release files for tango-simlib 0.9.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for tango-simlib 0.9.4
File Interpreter ABI Platform Actions
tango_simlib-0.9.4-py3-none-any.whl Python 3 none any Details for tango_simlib-0.9.4-py3-none-any.whl

Release files / tango_simlib-0.9.4-py3-none-any.whl

Download URL tango_simlib-0.9.4-py3-none-any.whl
Size 134.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b1c969db57976f0509851b1a86b0250cf7522dc47e0ebed7fd0e53435f8ac758
BLAKE2b-256 checksum
How to use checksums
b76e09703454a39da55aed2d9bdfefdd999249b93e315c1a9b3c499d738b9ffd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Security for tango-simlib 0.9.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page