This release is a pre-release and may not be stable for production use.
benzene-mesh-fleet
Cloud service discovery and fleet trace-mappers for the
Benzene Python port — the two adapters a
benzene-mesh mesh grows once it spans a real fleet.
Depends on benzene-core and benzene-mesh.
pip install benzene-mesh-fleet # StaticDiscovery + all three trace-mappers, no SDK
pip install "benzene-mesh-fleet[aws]" # + boto3 for AWS Cloud Map discovery
pip install "benzene-mesh-fleet[kubernetes]"
Every cloud SDK is an optional extra imported lazily and every client is injectable, so the package imports and runs — and its tests pass — with no cloud SDK installed.
Discover the mesh
A Discovery answers which services are in the mesh, and where, returning a flat list of
ServiceEndpoints (name, address, metadata). The benzene.mesh MeshPoller already reads a service
once it has the address; discovery supplies the addresses instead of a hand-written list.
from benzene.mesh_fleet import KubernetesDiscovery, ServiceEndpoint, StaticDiscovery
# The SDK-free default / test double.
discovery = StaticDiscovery([ServiceEndpoint("orders", "https://orders.svc")])
endpoints = await discovery.discover()
# Or read a live registry (boto3 / azure / kubernetes imported lazily, client injectable):
discovery = KubernetesDiscovery(namespace="mesh", label_selector="benzene.io/mesh=true")
endpoints = await discovery.discover() # [] for an empty namespace, never an error
StaticDiscovery— a fixed, in-memory endpoint list (the default and test impl).AwsCloudMapDiscovery— lists a Cloud Map namespace's services + instances ([aws],boto3).AzureDiscovery— thebenzene:service-tagged resources in a subscription ([azure]).KubernetesDiscovery— theServices in a namespace, addressed by in-cluster DNS ([kubernetes]).
An empty registry is an empty list, never a raise; a discovered service with no resolvable address is skipped rather than emitted blank.
Map traces to any backend
A mesh TraceEvent already is a cross-language span, so this port ships tracing ahead of the field:
a TraceMapper projects a trace (the spans sharing a trace_id) into the JSON a backend ingests, no
re-instrumentation — you pick the mapper, not the instrumentation.
from benzene.mesh_fleet import JaegerTraceMapper, TempoTraceMapper, XRayTraceMapper
jaeger_doc = JaegerTraceMapper().map(spans) # {"traceID", "spans", "processes"}, µs
tempo_doc = TempoTraceMapper().map(spans) # OTLP-JSON {"resourceSpans"}, Unix ns
xray_doc = XRayTraceMapper().map(spans) # X-Ray segment + subsegments, epoch seconds
The backends differ mostly in time units, which is where fidelity matters: Jaeger microseconds,
Tempo (OTLP-JSON) Unix nanoseconds, X-Ray floating-point epoch seconds — and X-Ray's tree of
subsegments is reconstructed from each span's parent_span_id.
Mirrors .NET's Benzene.Mesh.Discovery.* and Benzene.Mesh.Fleet.*, and contributes the
benzene.mesh_fleet subpackage to the shared benzene namespace. The discovery endpoints and the
trace documents are ordinary data, so the whole package is exercised in memory with no SDK, no
network, and no backend.
Metadata
Release files for benzene-mesh-fleet 0.1.0b2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| benzene_mesh_fleet-0.1.0b2.tar.gz | 11.4 kB | With provenance | Details for benzene_mesh_fleet-0.1.0b2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| benzene_mesh_fleet-0.1.0b2-py3-none-any.whl | Python 3 | none | any | Details for benzene_mesh_fleet-0.1.0b2-py3-none-any.whl |
Total release size: 25.3 kB
Release files / benzene_mesh_fleet-0.1.0b2.tar.gz
| Download URL | benzene_mesh_fleet-0.1.0b2.tar.gz |
|---|---|
| Size | 11.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f360088c74031af917ee3cc6068714ca8352319350335b9b9a6f7ec0329546d9
|
|
BLAKE2b-256 checksum How to use checksums |
31df9614509583be25aee27c2ae90c97a184ac9ae2e216c705e2f8dfc1dc3e5a
|
| 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 Oct 16, 2026.
Transparency logRelease files / benzene_mesh_fleet-0.1.0b2-py3-none-any.whl
| Download URL | benzene_mesh_fleet-0.1.0b2-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
304c1b1a0961cf09a8e276e453e56c1b3b49828d22cd912e9d2d82061d757b45
|
|
BLAKE2b-256 checksum How to use checksums |
46354e574ee13312fbb08a0cd11f581d6c74adce87fd09a3fe70d4bb7bf9c7a5
|
| 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 Oct 16, 2026.
Transparency logSecurity for benzene-mesh-fleet 0.1.0b2
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for benzene_mesh_fleet-0.1.0b2.tar.gz
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 Oct 16, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.