Skip to main content

neat-otel

Runtime-attachment call-site attribution for NEAT.

neat-otel stamps the stable OpenTelemetry code attributes (code.file.path / code.line.number / code.function.name) onto your CLIENT / PRODUCER / SERVER spans, so NEAT can fuse a runtime span onto the exact source file and line that issued it — at symbol grain.

It changes no code. You run your app under the standard OpenTelemetry auto-instrumentation runner, and neat-otel loads its span processor through the opentelemetry_post_instrument entry point:

pip install neat-otel
opentelemetry-bootstrap -a install          # instrumentations for your libraries
opentelemetry-instrument python app.py      # or: opentelemetry-instrument uvicorn app:app

That's it — no import, no edit to your entry point. Point NEAT's OTLP endpoint at your app the usual way (OTEL_EXPORTER_OTLP_ENDPOINT), run it, and the spans arrive already carrying their call site.

If you configure OpenTelemetry yourself

If you don't use opentelemetry-instrument, add the processor once, after your tracer provider is set up:

import neat_otel
neat_otel.register()

register() is idempotent and attaches to the active tracer provider.

Notes

  • Fork-safe. The processor is synchronous and holds no background thread, so gunicorn / uvicorn pre-fork workers inherit it without a post-fork hook.
  • Fails safe. If OpenTelemetry isn't installed, or a frame can't be read, it degrades to a no-op rather than breaking your app.
  • SERVER spans stay route-grained. A framework SERVER span is created before your handler runs, so it isn't attributed to a handler line — that's honest; the outbound CLIENT/PRODUCER spans your code issues carry the call site.
  • Turn it off with NEAT_CALLSITE_DISABLED=1.

Grain

neat-otel is the Python half of NEAT's attachment-first instrumentation (ADR-232): symbol-grain runtime fusion, delivered without editing your source.

License

Apache-2.0

Metadata

Release files for neat-otel 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for neat-otel 0.1.0
File Size Uploaded
neat_otel-0.1.0.tar.gz 3.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for neat-otel 0.1.0
File Interpreter ABI Platform
neat_otel-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 8.4 kB

Release files / neat_otel-0.1.0.tar.gz

Download URL neat_otel-0.1.0.tar.gz
Size 3.9 kB
Tags Source
SHA-256 checksum
How to use checksums
08283bf79ce2d59b1b44bf4ce166049d21d6056e554aefdca8f95d975386cea4
BLAKE2b-256 checksum
How to use checksums
e64948fa407a36eb571dca35252514c5f3d1879afa50e187c41070d38211a7d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / neat_otel-0.1.0-py3-none-any.whl

Download URL neat_otel-0.1.0-py3-none-any.whl
Size 4.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
feb4cb9455b4d9bbb2c2a33ab6eb9b7a5f7e98342a3ceda62e8593dfae3a6175
BLAKE2b-256 checksum
How to use checksums
11449db32909e0fb92c0bf495ffba2cfe412e7944a7473079a01142abf5fddff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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