Skip to main content
Pre-release

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_event values 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 langfuse extra 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)

Source distribution for friday-framework-telemetry 0.1.0a4
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)

Table of built distributions (wheels) for friday-framework-telemetry 0.1.0a4
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page