Skip to main content

Wraps MAX IV's dsconfig JSON generator to let the user use Python to generate the config

Project description

dsconfig-wrapper

pipeline status coverage report

This is a small Python library to complement MAX IV's excellent dsconfig library, which can make the database for the Tango controls system declarative by updating it from a JSON file.

Usually, it looks like this:

flowchart TD
    DatabaseDs[(Tango Database)]
    DatabaseDs -->|dsconfig.dump| JsonFile[JSON file]
    Human -->|vim/emacs| JsonFile
    JsonFile -->|json2tango| DatabaseDs

With this tool, it looks like this:

flowchart TD
    DatabaseDs[(Tango Database)]
    Human -->|vim/emacs| PythonFile[Python file]
    DsconfigWrapper[dsconfig-wrapper] -->|import| PythonFile
    PythonFile -->|dsconfig-wrapper| JsonFile
    JsonFile -->|json2tango| DatabaseDs

This way, we can have our configuration not in JSON, but in Python! And in Python, we can have, for instance, argparse, to create a little program that can generate a configuration with parameters. You can also use Python DRY elements in your configuration (say, you have the same motor, but with various different properties set).

Usage

Just do

pip install dsconfig-wrapper

and then use it to create a config JSON. Example:

test_servers = [
    Server(
        instance_name="my_instance_name",
        class_name="my_class_name",
        devices=[
            Device(
                identifier=Identifier(
                    domain="my_domain",
                    family="my_family",
                    member="my_member",
                    host="my_host:10000",
                ),
                properties={
                    "prop_str": "strvalue",
                    "prop_list_str": ["value1", "value2"],
                    "prop_list_int": [2000, 3000],
                    "prop_int": 2000,
                },
                polled_commands={"update": 1000},
                attribute_properties={
                    "State": AttributeProperties(archive_period_ms=1001),
                    "velocity_mm_per_s": AttributeProperties(
                        archive_abs_change=(-0.5, 0.5),
                        archive_period_ms=5000,
                        rel_change=(-0.05, 0.05),
                    ),
                },
            )
        ],
    )
]
test_config = Config(servers=test_servers)
print(config_to_json(test_config))

Here, we create a config for a device server with class my_class_name and one instance running at tango://myhost:10000/my_domain/my_family/my_member. The update command is polled every second, and we also set some properties and attribute properties.

We now run this program (say it's stored in main.py) and pipe it into dsconfig:

python main.py | json2tango

Voila!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dsconfig_wrapper-1.1.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

dsconfig_wrapper-1.1.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file dsconfig_wrapper-1.1.0.tar.gz.

File metadata

  • Download URL: dsconfig_wrapper-1.1.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.0 CPython/3.10.12 Linux/6.1.47

File hashes

Hashes for dsconfig_wrapper-1.1.0.tar.gz
Algorithm Hash digest
SHA256 03c35c7a1896c6cdc35bb532b9c25a200acc0ad6b01cc8d628974d388c0609b2
MD5 cbc2d9f9f4b0d50cebdd6e28e8bfab97
BLAKE2b-256 71169558ce281b566e0f1e1d75600f752994157e278cfaa6f682ed451eb5e505

See more details on using hashes here.

File details

Details for the file dsconfig_wrapper-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dsconfig_wrapper-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 41ba2cd8b8055007978570f631c07743bb70398afb10e5d820f77d855068fc87
MD5 4c755e2da81553fa8b709b25e1dca481
BLAKE2b-256 66fe174f693216ed47a5e53eab73d0a5e47a13b79fa5421f1a5e773debf295fe

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page