Skip to main content

Function tracing and observability with console output and optional OpenTelemetry.

Project description

omniray

A live tracing tool for Python -- console profiling with optional OpenTelemetry tracing for omniwrap.

See the main README for full documentation.

Installation

pip install omniray

Quick Start

from omniwrap import wrap_all
from omniray import create_trace_wrapper, trace

# Auto-instrument with console profiling (OTel spans off by default)
wrap_all(create_trace_wrapper())

# Selectively enable OTel on high-value functions
@trace(otel=True)
def process_payment(order_id: str) -> bool: ...

@trace(otel=True)
async def execute_sql(query: str) -> list[dict]: ...

# Regular functions get profiling only — no OTel cost
@trace()
def validate_input(data: dict) -> bool: ...

Environment Variables

Variable Default Description
OMNIRAY_OTEL false Generate OpenTelemetry spans globally (use @trace(otel=True) for selective opt-in)
OMNIRAY_LOG false Enable colored console tree output
OMNIRAY_LOG_INPUT false Log function arguments
OMNIRAY_LOG_OUTPUT false Log function return values
OMNIRAY_LOG_INPUT_SIZE false Append deep input size (MB) to the timing line. Uses pympler.asizeof — opt-in, can be slow on very large object graphs.
OMNIRAY_LOG_OUTPUT_SIZE false Append deep return-value size (MB) to the timing line. Uses pympler.asizeof — opt-in, can be slow on very large object graphs.
OMNIRAY_LOG_RSS false Append process RSS (current MB, delta before→after, peak since process start) to the timing line. Current RSS uses psutil; peak uses resource.getrusage (Unix). ~5–20µs per call.
OMNIRAY_LOG_COLOR true Enable ANSI colors in console output
OMNIRAY_LOG_STYLE auto Box-drawing style: unicode, ascii, or auto (detect from terminal)

Configuration via pyproject.toml

Color thresholds for the per-segment coloring of the timing line live under [tool.omniray] in the host project's pyproject.toml. Each list defines the DIM → GREEN → YELLOW → RED boundaries for its value class.

[tool.omniray]
size = [0.1, 1, 10]              # MB: in/out payload (DIM < 0.1, GREEN < 1, YELLOW < 10, RED ≥ 10)
rss = [100, 500, 1000]           # MB: rss current / peak
rss_delta = [1, 10, 100]         # MB: RSS delta (negative / near-zero → DIM)
duration_ms = [1, 10, 100]       # ms: span duration color boundaries
size_big_tag_mb = 10             # MB: in/out size at/above which the `[BIG]` tag is appended
duration_slow_tag_ms = 200       # ms: duration at/above which the `[SLOW]` tag is appended

All keys are optional — omitted ones fall back to defaults shown above. The file is resolved by walking up from the current working directory until the first pyproject.toml is found; missing/malformed files cause silent fallback to defaults. Thresholds are loaded once at import time; restart the process to pick up changes.

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omniray-1.2.1.tar.gz (47.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omniray-1.2.1-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file omniray-1.2.1.tar.gz.

File metadata

  • Download URL: omniray-1.2.1.tar.gz
  • Upload date:
  • Size: 47.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for omniray-1.2.1.tar.gz
Algorithm Hash digest
SHA256 f955095f294ea47619a874f62cf1f3babfe2aed5509126f5e8aabbb80e8522a6
MD5 bfc37e028d7b40b87bfc02b74d67c8a8
BLAKE2b-256 65410a560f695138f57692456df6753181f120378f4e3f51c2fee15be832372f

See more details on using hashes here.

File details

Details for the file omniray-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: omniray-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for omniray-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 56ad17b2db44ba578b9e1615b783db5579738facf343b473a75c3a108dd8c615
MD5 261818b445bc3186733fac646e40c5de
BLAKE2b-256 b210dbd93c1e6f6983a3e589a229728c2b28710a011dee4618e14edd9232b1dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page