Skip to main content

tango-takeoff

A tool that can find, start and stop Tango Device Servers. It's like Astor for the command line.

In general, the tool is explaining itself. Run it and look at the output.

Installation

tango-takeoff is on PyPI and conda-forge. Install it with your preferred package manager: pip, uv, conda or pixi.

As it's intended to be used as a script, we recommend installing it globally. With uv, do:

uv tool install tango-takeoff

And with pixi:

pixi global install tango-takeoff

Usage

The tool depends on the TANGO_HOST environment variable.

Help

> takeoff --help
usage: takeoff [-h] {find,up,down,restart} ...

Start (up), stop (down) or restart (restart) Tango Device Servers

positional arguments:
  {find,up,start,down,stop,restart}
    find                Finds servers based on terms and shows the 'dry run' version of what will be used in 'up' and 'down'
    up (start)          Bring servers up based on terms
    down (stop)         Bring servers down based on terms
    restart             Restart servers based on terms

options:
  -h, --help      show this help message and exit

Find

> takeoff find --help
usage: takeoff find [-h] [--json] [--default-host DEFAULT_HOST] [-v] servers [servers ...]

positional arguments:
  servers               A name or search term of a server, use * for wildcard in the end of the name. Use the format [host,]<server-name>

  options:
    -h, --help            show this help message and exit
    --json                Output structured as JSON (default: False)
    --default-host DEFAULT_HOST
                          Default host for Tango device servers (default: None)
    -v, --verbose         Set the trace level. Can be used in count way: -vv or --verbose --verbose (default: None)

Up / Start

> takeoff up --help
usage: takeoff up [-h] [--json] [--default-host DEFAULT_HOST] [-v] [-t RUNNING_TIMEOUT] [-s STARTER_TIMEOUT] [-d] servers [servers ...]

positional arguments:
  servers               A name or search term of a server, use * for wildcard in the end of the name. Use the format [host,]<server-name>[,<level>]

options:
  -h, --help            show this help message and exit
  --json                Output structured as JSON (default: False)
  --default-host DEFAULT_HOST
                        Default host for Tango device servers (default: None)
  -v, --verbose         Set the trace level. Can be used in count way: -vv or --verbose --verbose (default: None)
  -t RUNNING_TIMEOUT, --timeout RUNNING_TIMEOUT
                        Time to wait for a server to be running (in seconds) (default: 60)
  -s STARTER_TIMEOUT, --starter-timeout STARTER_TIMEOUT
                        Time to wait for starter if it's not running (in seconds) (default: 10)
  -d, --dry-run         outputs the servers with the details that will take effect by the command (default: False)

Down / Stop

> takeoff down --help
usage: takeoff down [-h] [--json] [--default-host DEFAULT_HOST] [-v] [-f] [-k KILL_TIMEOUT] [-s STARTER_TIMEOUT] [-d] servers [servers ...]

positional arguments:
  servers               A name or search term of a server, use * for wildcard in the end of the name. Use the format [host,]<server-name>

options:
  -h, --help            show this help message and exit
  --json                Output structured as JSON (default: False)
  --default-host DEFAULT_HOST
                        Default host for Tango device servers (default: None)
  -v, --verbose         Set the trace level. Can be used in count way: -vv or --verbose --verbose (default: None)
  -f, --force           Force kill servers (default: False)
  -k KILL_TIMEOUT, --kill-timeout KILL_TIMEOUT
                        Time before force killing (in seconds) (default: 30)
  -s STARTER_TIMEOUT, --starter-timeout STARTER_TIMEOUT
                        Time to wait for starter if it's not running (in seconds) (default: 10)
  -d, --dry-run         outputs the servers with the details that will take effect by the command (default: False)

Restart

> takeoff restart --help
usage: takeoff restart [-h] [--json] [--default-host DEFAULT_HOST] [-v] [-f] [-k KILL_TIMEOUT] [-t RUNNING_TIMEOUT] [-s STARTER_TIMEOUT] [-d] [-w WAIT_AFTER_STOP] servers [servers ...]

positional arguments:
  servers               A name or search term of a server, use * for wildcard in the end of the name. Use the format [host,]<server-name>

options:
  -h, --help            show this help message and exit
  --json                Output structured as JSON (default: False)
  --default-host DEFAULT_HOST
                        Default host for Tango device servers (default: None)
  -v, --verbose         Set the trace level. Can be used in count way: -vv or --verbose --verbose (default: None)
  -f, --force           Force kill servers (default: False)
  -k KILL_TIMEOUT, --kill-timeout KILL_TIMEOUT
                        Time before force killing (in seconds) (default: 30)
  -t RUNNING_TIMEOUT, --timeout RUNNING_TIMEOUT
                        Time to wait for a server to be running (in seconds) (default: 60)
  -s STARTER_TIMEOUT, --starter-timeout STARTER_TIMEOUT
                        Time to wait for starter if it's not running (in seconds) (default: 10)
  -d, --dry-run         outputs the servers with the details that will take effect by the command (default: False)
  -w WAIT_AFTER_STOP, --wait-after-stop WAIT_AFTER_STOP
                        Time to wait between stop / start (in seconds) (default: 1)

Testing

To test locally, you should use pixi.

  1. Run pixi install -e servers to install the servers environment (including Starter, TangoTest and UniversalTest that are used during the tests).
  2. Run pixi run pytest to launch the test suite. The tests use pytango-db fixtures and will automatically start a database and Starter.

To run takeoff yourself from this repo:

  1. Start a Tango PyDatabaseds by running pixi run pydb. You could use your own instance if you prefer. Press CTRL-C to stop it.

  2. export TANGO_HOST to point to your tango database (127.0.0.1:10000 if you used the previous steps).

  3. Start Starter by running pixi run starter. This will automatically create the required Tango devices and install some servers for testing purpose:

    • TangoTest
    • UniversalTest
    • SlowToStart: a dummy server that takes 7 seconds to start
    • SlowToStop: a dummy server that takes 7 seconds to stop
    • FailToStart: a dummy server that can't start (raises an exception in init_device)

You can manually test different scenarios by running pixi run takeoff and passing any argument you want. Or run pixi shell and then takeoff directly.

For convenience, you have 2 tasks predefined:

  • pixi run up to start all the servers
  • pixi run down to stop all the servers

Metadata

Release files for tango-takeoff 3.1.1

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

Source distribution (sdist)

Source distribution for tango-takeoff 3.1.1
File Size Uploaded
tango_takeoff-3.1.1.tar.gz 61.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tango-takeoff 3.1.1
File Interpreter ABI Platform
tango_takeoff-3.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 90.7 kB

Release files / tango_takeoff-3.1.1.tar.gz

Download URL tango_takeoff-3.1.1.tar.gz
Size 61.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7ade4c136f5a19534a41dc5b23b344a5e1300cba134cb428f929d831661dca3d
BLAKE2b-256 checksum
How to use checksums
a101b764d72a641f674f556824484eedac47284acc2eea2c099fe756ac8b9724
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / tango_takeoff-3.1.1-py3-none-any.whl

Download URL tango_takeoff-3.1.1-py3-none-any.whl
Size 29.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b92e26e6ef674310cd710bb7c2694c8df79a5b31ec292df9aa410f88400eb9e
BLAKE2b-256 checksum
How to use checksums
487bef3f755b99007f4d3706986198ebfa6eea1e03997242dd52bc36fe2da2b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

3.1.1 This release

2 release files

3.1.0

2 release files

3.0.0

2 release files

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