Skip to main content

Vendor-neutral telematics seam for mgf-common consumers — the TelematicsProvider device-session ABC, the codec-agnostic AVL frame types, the typed error hierarchy, and a scripted mock. Per-vendor codecs (mgf-tele-teltonika, …) build on this. Sibling of mgf-common under the mgf.* namespace.

Project description

mgf-tele-core

The vendor-neutral telematics seam for mgf-common consumers: the TelematicsProvider device-session ABC, the codec-agnostic AVL frame types, a typed error hierarchy, and a scripted mock. A sibling of mgf-common under the mgf.* namespace, and the foundation of the mgf-tele-* family — per-vendor codec packages (mgf-tele-teltonika, later mgf-tele-queclink, …) depend on this and never the other way.

Extracted from PlasmaMapper's ingest path (ADR-010's two-layer seam): the provider owns the device session; a per-vendor codec is a pure bytes → DecodedAvlRecord dependency injected into it.

Install

pip install mgf-tele-core

What's in it

Name What
TelematicsProvider the device-session ABC: open_session / receive_packet / send_command / close_session
SessionHandle / TrackerCommand / CommandAck the seam's command/session vocabulary
GeoPoint / DecodedAvlRecord / ReceivedPacket / ParseStatus codec-agnostic AVL frame types (every vendor normalises to these)
TelematicsError (+ MalformedPacketError, ChecksumError, UnsupportedCodecError, MalformedHandshakeError, UnknownTrackerError, SessionClosedError) typed errors, all subclass mgf.common.exceptions.AppError
mgf.tele.core.mock.MockTelematicsProvider scripted in-memory provider for consumers' tests

The two-layer shape

mgf-tele-core        TelematicsProvider (ABC)  +  AVL frame types  +  errors
      ▲
      │ depends on
mgf-tele-teltonika   Codec 8/8E/12 parser  +  TeltonikaProvider(codec)
mgf-tele-queclink    (future) …

A consumer wires a concrete provider into its ingest loop:

async def session_loop(provider: TelematicsProvider, reader, writer):
    handle = await provider.open_session(reader, writer)
    try:
        while True:
            packet = await provider.receive_packet(handle)   # ReceivedPacket
            persist_raw(packet)                               # always (forensic)
            if packet.parse_status == "ok":
                ingest(packet.records)                        # DecodedAvlRecord[]
    except SessionClosedError:
        pass
    finally:
        await provider.close_session(handle)

Tests use MockTelematicsProvider(batches=[…]) — no socket, no vendor codec — to drive the consumer's ingest logic deterministically.

Design notes

  • Frozen frame types (rule DP-03); UTC at the boundary (DP-12).
  • receive_packet always returns the raw bytes even on decode failure (parse_status"ok") so the consumer can persist a forensic record a future codec update may recover.
  • Read-only consumers may have their provider raise NotImplementedError from send_command until a control plane lands.

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

mgf_tele_core-0.1.2.tar.gz (88.6 kB view details)

Uploaded Source

Built Distribution

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

mgf_tele_core-0.1.2-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file mgf_tele_core-0.1.2.tar.gz.

File metadata

  • Download URL: mgf_tele_core-0.1.2.tar.gz
  • Upload date:
  • Size: 88.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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":null}

File hashes

Hashes for mgf_tele_core-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f5489c81230298888ebd4438193aa5aba14c925ae1d6f5e3d921df479aeff471
MD5 00c08664366a7b59501797c8f2c62935
BLAKE2b-256 5ec453e6c920ca5e932be48f4e8065108f8593e2d6446bc1a33924699f544859

See more details on using hashes here.

File details

Details for the file mgf_tele_core-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: mgf_tele_core-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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":null}

File hashes

Hashes for mgf_tele_core-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 93f213f066fa12c664978e29372cf9fbf468590fe6465f0ee12f21eb170413ee
MD5 14cf63d9b3b22c8d61370550760560d6
BLAKE2b-256 cb8b6ae519dd54a8a444eb5035b7b19f52945d8157e785c30d9c178b8d73aaf4

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