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_packetalways 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
NotImplementedErrorfromsend_commanduntil a control plane lands.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5489c81230298888ebd4438193aa5aba14c925ae1d6f5e3d921df479aeff471
|
|
| MD5 |
00c08664366a7b59501797c8f2c62935
|
|
| BLAKE2b-256 |
5ec453e6c920ca5e932be48f4e8065108f8593e2d6446bc1a33924699f544859
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93f213f066fa12c664978e29372cf9fbf468590fe6465f0ee12f21eb170413ee
|
|
| MD5 |
14cf63d9b3b22c8d61370550760560d6
|
|
| BLAKE2b-256 |
cb8b6ae519dd54a8a444eb5035b7b19f52945d8157e785c30d9c178b8d73aaf4
|