Skip to main content

pyrtma

Python package Documentation Status

RTMA/Dragonfly client written in python with no external dependencies. Based on and compatible with Dragonfly Messaging

Installation

pyrtma is available on PyPI

pip install pyrtma

Installing for pyrtma development

This is only necessary for individuals who would like to contribute to pyrtma.

pip install --upgrade pip setuptools
pip install -e .

Usage

Launch Manager

python -m pyrtma.manager -a "127.0.0.1"

Create a message in message.yaml

Message definitions are created in a .yaml file.

The ruamel.yaml parser library is used internally (https://yaml.readthedocs.io/en/latest/)

Notes about yaml format:

  • Whitespace sensitive. Use either 2 or 4 spaces for tab not '\t'
  • Key-values must be separated by a colon followed by a space, (Key: Value, not Key:Value)
  • Must follow the top-level headers shown below.
  • Unused sections should be marked null
  • Names must start with letter. (no _ or numeric prefixes allowed)
  • Use (.yaml) extension not (.yml)

List of supported native data types:

  • char
  • unsigned char
  • byte
  • int
  • signed int
  • unsigned int
  • short
  • unsigned short
  • long
  • signed long
  • unsigned long
  • long long
  • signed long long
  • unsigned long long
  • float
  • double
  • int8
  • uint8
  • int16
  • uint16
  • int32
  • uint32
  • int64
  • uint64

Below is an example:

# message.yaml

imports: null

# Constant values and expressions
constants: 
    STR_SIZE: 32
    LONG_STRING: STR_SIZE * 2

# Constant string values
string_constants:
    default_msg: "hello_world"

host_ids: null

module_ids:
    PERSON_PUBLISHER: 212
    PERSON_SUBSCRIBER: 214

# Alias a type by another name
aliases:
    AGE_TYPE: int

# Non-message structured data (no id field)
struct_defs:
    TEST_STRUCT:
        fields:
            value_str: char[STR_SIZE]
            value_int: int

# Message defintions with user assigned id field
message_defs:
    PERSON_MESSAGE:
        id: 1234
        fields:
            name: char[STR_SIZE]
            age: AGE_TYPE

    ANOTHER_EXAMPLE:
        id: 5678
        fields:
            value_struct: TEST_STRUCT
            value_float: float
            value_double: double

    # Example signal definition
    USER_SIGNAL:
        id: 2468
        fields: null

    # Example using a nested message defintion 
    PERSON_LIST:
        id: 1357
        fields:
            person: PERSON_MESSAGE[32]

    # Example reusing a message definition by another name
    EMPLOYEES:
        id: 1368
        fields: PERSON_LIST

    # A block of message ids can be reserved by a file for future use
    # Ranges are inclusive on both ends
    _RESERVED_:
        id: [1000, 1002:1005, 1006 - 1008, 1009 to 1012]

Run the following command to compile the yaml file into Python, C, Matlab, or Javascript files. This will output a message.(py|h|m|js) file.

python -m pyrtma.compile -i examples/msg_defs/message.yaml --py --c --mat --js

The msg_defs directory should now have message def files created for each language.

The rtma objects are compiled into objects suitable for each language.

Examples

See /examples/example.py for pub/sub demo app

Compile the example message defintions:

python -m pyrtma.compile -i ./examples/msg_defs/message.yaml --py

Start the demo MessageManager server

python -m pyrtma.manager

Start the publisher in one console:

python ./examples/example.py --pub

Start the subscriber in another:

python ./examples/example.py --sub

Download files

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

Source Distribution

pyrtma-2.0.1.tar.gz (43.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyrtma-2.0.1-py3-none-any.whl (46.1 kB view details)

Uploaded Python 3

File details

Details for the file pyrtma-2.0.1.tar.gz.

File metadata

  • Download URL: pyrtma-2.0.1.tar.gz
  • Upload date:
  • Size: 43.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pyrtma-2.0.1.tar.gz
Algorithm Hash digest
SHA256 81b4851dc4fe01902eb3d02b86d201118f3c35f93d23a098c3576815d2fc1ff9
MD5 98dbb28ccd8205b822fcc46a3b437dfc
BLAKE2b-256 8f1bccb8fc53ca785011dac7d1b72f822079da31a09897fd8732189e086295bd

See more details on using hashes here.

File details

Details for the file pyrtma-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: pyrtma-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 46.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pyrtma-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c0f83ea3cf6f2846201cc8d209b140435ea2216cf7038a5fdaf3f90610662fcd
MD5 528df6592c4e45f7e15484e6dbb208f0
BLAKE2b-256 91c927885a1cd579a6da807ea8f37bd77938dba8ee20d4dada01817f22152474

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page