ACE Tools
This is the AMM CODEC Engine (ACE) for the DTN Management Architecture (DTNMA). It is part of the larger Asynchronous Network Managment System (ANMS) managed for NASA AMMOS.
It is a library to manage the information in DTNMA Application Data Models (ADMs) and use that information to encode and decode DTNMA Application Resource Identifiers (ARIs) in:
- Text form based on URI encoding
- Binary form based on CBOR encoding
It also includes an ace_ari command line interface (CLI) for translating between the two ARI forms.
Development
It is advised to operate within a Python virtual environment, ideally Python 3.11, to help prevent dependency errors later on. You can run the following commands to create and activate your venv:
python3.11 -m venv .venv
source .venv/bin/activate
If you wish to deactivate your venv, simply run deactivate.
To install development and test dependencies for this project, run from the root directory (possibly under sudo if installing to the system path):
pip3 install -r <(python3 -m piptools compile --extra test pyproject.toml 2>&1)
If this command fails, you may have to install the pip-tools package first and then run two separate commands like so:
pip3 install pip-tools
python3 -m piptools compile --extra test pyproject.toml
pip3 install -r requirements.txt
To install the project itself from source run:
pip3 install .
If you are still encountering installation errors, please refer to the Troubleshooting section below.
Testing
If you are a developer seeking to do unit testing, you can run the following two commands to install the dependencies for unit tests and then run said unit tests to see if any are failing:
pip3 install -e '.[test]'
python3 -m pytest -v --cov=ace test
You can also run this command to only run one unit test within a test file, which can save time:
python3 -m pytest -v test/<file name>.py -k '<unit test name>'
When running either of the pytest commands above, it is ideal to include the explicit environment variable PYTHONPATH=src/ at the start of the command. It is not always necessary, but if you have an older version of ACE somewhere in your paths, it can negatively affect importing modules/packages.
Likewise, if you wish to update our Sphinx documentation and then see your changes, you can run the following two commands to install and build the docs, and then open the generated html files in a web browser:
pip3 install .[docs]
./build_docs.sh
Troubleshooting
For certain installation errors, you may need to update the submodules with this command:
git submodule update --init --recursive
If you get a database error running ACE at any point, you may need to remove the outdated database file:
rm ~/.cache/ace/adms.sqlite
As previously mentioned, it can be beneficial to include PYTHONPATH=src/ at the start of a command to avoid accidentally using an older version of ACE.
It can also be beneficial to run pip install . every time before running unit tests with pytest.
Using ACE
An example of using the ARI transcoder, from the source tree, to convert from text to binary form is:
echo 'ari:/EXECSET/n=123;(//ietf/dtnma-agent/CTRL/inspect(//ietf/dtnma-agent/EDD/sw-version))' | PYTHONPATH=./src ADM_PATH=./test/adms python3 -m ace.tools.ace_ari --inform=text --outform=cborhex
which will produce a hexadecimal output:
0x821482187B8501012205818401012301
An example of using the ADM parser, from the source tree, to normalize and compare ADMs (with a text difference tool like meld) is below. Note that the ADM_PATH environment is required to be set first, using export ADM_PATH="{path-goes-here}". Once that is done, then run:
ADMFILE=../adms/ietf-inet.yang; meld ${ADMFILE} <(PYTHONPATH=./src python3 -m ace.tools.ace_adm -f yang ${ADMFILE})
Contributing
To contribute to this project, through issue reporting or change requests, see the CONTRIBUTING document.
Release files for dtnma-ace 2.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dtnma_ace-2.3.0.tar.gz | 96.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dtnma_ace-2.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 185.6 kB
Release files / dtnma_ace-2.3.0.tar.gz
| Download URL | dtnma_ace-2.3.0.tar.gz |
|---|---|
| Size | 96.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7334018d20f7f6e0e38dbc4071ca2fb362a017a323154167d3c13319fae4f1f6
|
|
BLAKE2b-256 checksum How to use checksums |
23740dbb28a7664ff54193a8c1fff4b591ee33619ed4b3c84cc8a279fe829682
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 31, 2026.
Transparency logRelease files / dtnma_ace-2.3.0-py3-none-any.whl
| Download URL | dtnma_ace-2.3.0-py3-none-any.whl |
|---|---|
| Size | 89.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b3a05207f86752b9ee93500f85b251de8336cd122310fc70c1610fe7445f6144
|
|
BLAKE2b-256 checksum How to use checksums |
dcc8a885621331e25c3fbefde21bbc7b15c995dc60cfc6e1cf6503c97b32ea03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 31, 2026.
Transparency log