Metadata-Version: 2.4
Name: tts-dictionary-interface
Version: 0.2.3
Summary: Core code for developing Python AMPCS dictionary interfaces.
Author: muszynsk
Author-email: muszynsk <matt.muszynski@jpl.nasa.gov>
License: Apache-2.0
Project-URL: Homepage, https://github.com/NASA-JPL-Teamtools-Studio/tts_dictionary_interface
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: lxml
Requires-Dist: pytest
Requires-Dist: tomli
Requires-Dist: tts-utilities<=1.0.0,>=0.2.2
Dynamic: author
Dynamic: requires-python

# Teamtools Dictionary Interface

![Project logo](https://github.com/NASA-JPL-Teamtools-Studio/teamtools_documentation/blob/main/docs/images/tts_image_artifacts/tts_dictionary_interface.png)

## About Teamtools Studio

Teamtools Studio Utilities is part of JPL's Teamtools Studio (TTS).

TTS is an effort originated in JPL's Planning and Execution section to centralize shared repositories across missions. This benefits JPL by reducing cost through reducing duplicated code, collaborating across missions, and unifying standards for development and design across JPL.

Although Planning and Execution is primarily concerned with flight operations, the TTS suite has been generalized and atomized to the point where many of these tools are applicable during other mission phases and even in non-spaceflight contexts. Through our work flying space missions, we hope to provide tools to the open source community that have utility in data analysis or planning for any complex system where failure is not an option.

For more infomation on how to contribute, and how these libraries form a complete ecosystem for high reliability data analysis, see the [Full TTS Documentation](https://nasa-jpl-teamtools-studio.github.io/teamtools_documentation/).

## What is Teamtools Dictionary Interface?

### Overview

The TTS Dicitonary Interface is an interoperability solution to ensure that other TTS libraries (Dexter, Tower, Dante, TTS Seq, FRESH) can
make common assumptions about how to retreive the metadata on spacraft commands and telemetry they need in order to appropriately interpret it.
This helps them answer questions like "is this arugment value valid?" and "what are the units for this telemetry point?".

Dictionaries are a key part of the Flight Ground Interface for any spacecraft. They containing the information needed to translate human-readable commands and arugments to binary files that make sense to a spacecraft's command and sequencing flight software and the to take the stream of
ones and zeros returned from the spacecraft back into human-readable telemetry back on the ground. They are the Rosetta Stone of any space mission.

While TTS Dictionary Interface is built around AMPCS's XML dictionary schema, it can ostensibly be used with any format of dictionary so long
as it can be made into a Pyhton class that behaves the same way that the SemanticDictionary does. More than anything this is an interoperability
layer.

For projects that do not use AMPCS, the easiest way to leverage this library is likely to write some middleware to turn your dictionary format
into the kind of XML that would be required if you were using AMPCS. Short of that, it is likely that the only other solution is to write
a completely new class that looks to downstream TTS modules as if it were generated by TTS Dictionary Interface. This is likely much harder
to validate than simply converting to XML and validating against the multimisison AMPCS schema shared in the DemoSat extension of this library.

### Projects Currently Supported

* DemoSat
* Orbiting Carbon Observatory 2 (OCO-2)
* NISAR

## Architecture

### TTS dependencies

* TTS Utilities
