This release is a pre-release and may not be stable for production use.
Friday Telemetry
Provider-neutral event/span contracts, local recorders, validated instrumentation helpers and optional owned OpenTelemetry exporters. Applications select providers and control their lifetime.
Distribution: friday-framework-telemetry · Import: friday_telemetry
Python: 3.13.4+ · Status: alpha · License: MIT
Installation
python -m pip install "friday-framework-telemetry==0.1.0a4"
Friday distributions use the same release version; keep internal Friday dependencies aligned.
Quick start: record an event locally
from friday_telemetry import DebugTelemetryRecorder
recorder = DebugTelemetryRecorder()
span = recorder.start_span("example.operation")
recorder.capture_event("example.completed", {"count": 1})
recorder.end_span(span, {"outcome": "succeeded"})
print(recorder.get_event("example.completed"))
The event data includes count: 1. This recorder retains data in process memory; it is a debugging/test facility, not a durable or bounded production exporter. Never pass secrets or raw application content assuming the recorder will redact them.
Providers and lifecycle
| API | Responsibility |
|---|---|
TelemetryInterface |
Injectable event/span contract |
DebugTelemetryRecorder |
Local white-box inspection |
CompositeProvider |
Fan-out while preserving child span ownership |
create_telemetry, ManagedTelemetry |
Explicit owned provider construction, flush and shutdown |
OpenTelemetryProvider |
Optional SDK-backed tracing |
SafeLLMTelemetry, MCPEvent, ExecutionEvent |
Closed validated instrumentation families |
A managed local provider needs no exporter SDK:
from friday_telemetry import TelemetryFactoryConfig, create_telemetry
with create_telemetry(TelemetryFactoryConfig(provider="debug")) as owned:
owned.telemetry.capture_event("example.completed", {"count": 1})
result = owned.flush(1000)
print(result.status)
The factory defaults to disabled. Callers close handles they create; consumers borrowing TelemetryInterface must not close the caller's provider. Composite membership and each child's span identity are captured when a span starts. Unknown/repeated ends are no-ops; fan-out failures are reported after attempting children. Composite public IDs stay reserved for its lifetime, so that reservation set grows across completed spans; use a defined provider lifetime.
OpenTelemetry
python -m pip install "friday-framework-telemetry[otel]==0.1.0a4"
Use TelemetryFactoryConfig(provider="otel", otel=OTelConfig(...)) to choose an exporter explicitly. The owned provider does not install a global tracer. Missing requested SDK/exporter support fails explicitly; installing the extra alone does not enable an exporter or wire Runtime/Chat automatically.
The validated SDK/API profile is 1.39.1; broader metadata lower bounds do not assert compatibility with every SDK version. The exporter supports console and explicitly configured OTLP/gRPC destinations. Remote collection requires verified TLS; insecure collection is restricted to explicit literal-loopback endpoints. Inherited OTEL/GRPC, proxy and certificate overrides are rejected by the owned factory. No HTTP exporter, custom credential headers, automatic instrumentation or ambient context bridge is promised. snapshot(), flush() and shutdown() report categorical failures/timeouts rather than treating attempted delivery as success. Shutdown/flush budgets are capped at five seconds.
Content and integration boundaries
- Closed LLM/MCP/execution payloads contain bounded counts, timings, categories and generated opaque correlation identifiers. Raw prompts, responses, reasoning, schemas, tool payloads and credentials are excluded from those schemas.
- Generic
capture_eventvalues are caller data; string validation is not redaction. Historical LLM/memory helpers retain raw-content compatibility behavior and are outside the closed-schema guarantee. - Friday Chat has separate default-disabled YAML assembly, safe local diagnostics, turn correlation and caller-owned injection. Headless adoption of the newer factory/correlation path is separate work.
- Langfuse integration remains separately queued. Legacy LLM callback support and the
langfuseextra do not constitute a completed provider-neutral Langfuse backend.
For full limits and trust contracts, consult the factory, lifecycle and event-model source linked below.
Development
Work from the monorepo root after the shared contributor setup. Run the focused suite:
uv run --no-sync pytest packages/friday-telemetry/tests_telemetry -q
Documentation and support
Chat telemetry · Owned provider factory · Lifecycle contracts · Source · Issues · Contributing
License
MIT.
Metadata
Release files for friday-framework-telemetry 0.1.0a4
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 |
|---|---|---|---|---|
| friday_framework_telemetry-0.1.0a4.tar.gz | 53.5 kB | Without provenance | Details for friday_framework_telemetry-0.1.0a4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| friday_framework_telemetry-0.1.0a4-py3-none-any.whl | Python 3 | none | any | Details for friday_framework_telemetry-0.1.0a4-py3-none-any.whl |
Total release size: 100.0 kB
Release files / friday_framework_telemetry-0.1.0a4.tar.gz
| Download URL | friday_framework_telemetry-0.1.0a4.tar.gz |
|---|---|
| Size | 53.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d4a8db4244f9cb602ae4a632a4d7d3c6ea9c2da1c91e4ca8576de07f123a506d
|
|
BLAKE2b-256 checksum How to use checksums |
034348f360f9222163732db08bf0cedd5afc0d87181173555dea663cf6060558
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / friday_framework_telemetry-0.1.0a4-py3-none-any.whl
| Download URL | friday_framework_telemetry-0.1.0a4-py3-none-any.whl |
|---|---|
| Size | 46.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
36a61c779ab93c9b1d3a1f20dbfd6c80981de3c38087816235031ed2bd79e1fe
|
|
BLAKE2b-256 checksum How to use checksums |
f68991b36c33709f89ef537d39e74fe699f75a90330c11838d0ce0813ded86f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for friday-framework-telemetry 0.1.0a4
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.