Skip to main content

ASAM ODS EXD API implementation to read external data from MDF4 files.

Project description

ASAM ODS EXD-API MDF4 plugin

Build PyPI version Python versions License: MIT

This repository contains a ASAM ODS EXD-API plugin that uses asammdf to read the ASAM MDF4 files.

It is built on the ods-exd-api-box helper library which provides the gRPC server infrastructure and proto stubs.

Content

Implementation

  • external_data_file.py
    Implements the ExdFileInterface from ods-exd-api-box to access MDF4 files using asammdf. Also contains the entry point to run the gRPC service.

Tests

Development

Setup

Install uv and then install the project with dev dependencies:

uv sync --group dev

Run Tests

uv run python -m unittest discover tests

Run Plugin Locally

Use an explicit IPv4 bind address on Windows to avoid IPv6 bind issues:

uv run asam-ods-exd-api-mdf4 --bind-address 127.0.0.1 --port 50051

Stop the server with Ctrl+C. A non-zero exit code after interruption is expected.

Run Plugin With uvx

Run the latest published package without installing it into the current project environment:

uvx asam-ods-exd-api-mdf4 --bind-address 127.0.0.1 --port 50051

Code Quality

uv sync --group dev                    # 1. Install all dependencies
uv run ruff format .                   # 2. Format code
uv run ruff check --fix .              # 3. Fix lint violations
uv run mypy external_data_file.py      # 4. Type check
uv run python -m unittest discover tests  # 5. Run tests

Docker

Docker Image Details

The Docker image for this project is available at:

ghcr.io/peak-solution/asam-ods-exd-api-mdf4:latest

This image is automatically built and pushed via a GitHub Actions workflow. To pull and run the image:

docker pull ghcr.io/peak-solution/asam-ods-exd-api-mdf4:latest
docker run -v /path/to/local/data:/data -p 50051:50051 ghcr.io/peak-solution/asam-ods-exd-api-mdf4:latest

Using the Docker Container

To build the Docker image locally:

docker build -t asam-ods-exd-api-mdf4 .

To start the Docker container:

docker run -v /path/to/local/data:/data -p 50051:50051 asam-ods-exd-api-mdf4

have a look at start options to figure out how to customize the behavior of the EXD-API plugin.

Architecture and Usage in ODS Server

sequenceDiagram

actor CLIENT as Client
participant PDTT as 🛠️Importer
participant PODS as 🗃️ASAM ODS server
participant PLUGIN as 📊EXD-API plugin
participant FILE as 🗂️File Storage

autonumber

opt Import phase
  FILE ->>+ PDTT: New file shows up
  PDTT ->>+ PLUGIN : Get Structure
  PLUGIN -> FILE: Extract content information
  PLUGIN ->> PLUGIN: Create Structure
  PLUGIN ->>- PDTT: Return Structure
  PDTT ->> PODS: Import ODS structure
  Note right of PDTT: Create hierarchy<br/>AoTest,AoMeasurement,...
  PDTT ->>- PODS: Add External Data info
  Note right of PDTT: Attach AoFile ... for external data<br/>AoFile,AoSubmatrix,AoLocalColumn,...
end

Note over CLIENT, FILE: Now we can work with the imported files

loop Runtime phase
  CLIENT ->> PODS: Establish ODS session
  CLIENT ->> PODS: Work with meta data imported from structure
  CLIENT ->> PODS: Access external channel in preview
  PODS ->> PLUGIN: GetValues
  PLUGIN ->> FILE: Get Channel values
  PLUGIN ->> PODS: Return values of channels
  PODS ->> CLIENT: Return values needed for plot
end

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

asam_ods_exd_api_mdf4-1.2.1.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

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

asam_ods_exd_api_mdf4-1.2.1-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file asam_ods_exd_api_mdf4-1.2.1.tar.gz.

File metadata

  • Download URL: asam_ods_exd_api_mdf4-1.2.1.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for asam_ods_exd_api_mdf4-1.2.1.tar.gz
Algorithm Hash digest
SHA256 1a27878d1ae15aa2e6ebdecfe9e1e12c2810a6581a8c2ebec0c321b9f3a498c5
MD5 1af72324036856cebc6c50eb63890608
BLAKE2b-256 6369a48cbde956080608a1955e5b4e4c540e0126175a49637734fa412c5b68f1

See more details on using hashes here.

File details

Details for the file asam_ods_exd_api_mdf4-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: asam_ods_exd_api_mdf4-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for asam_ods_exd_api_mdf4-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6e80ef389f5e61d3c71371dae27dcdc62ebaa6b16afcf8a527c69eb5c1b4c969
MD5 c98fd275ddf1c6630ee10ec80033f0b8
BLAKE2b-256 1d73c95fa1237739c59a05a92a3aa07accc6f5f88708eb890b87d149869e4871

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 Pingdom Monitoring Sentry Error logging StatusPage Status page