Skip to main content

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

Metadata

Release files for omniray 1.2.1

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

Source distribution (sdist)

Source distribution for omniray 1.2.1
File Size Uploaded Provenance
omniray-1.2.1.tar.gz 47.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for omniray 1.2.1
File Interpreter ABI Platform
omniray-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 75.4 kB

Release files / omniray-1.2.1.tar.gz

Download URL omniray-1.2.1.tar.gz
Size 47.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f955095f294ea47619a874f62cf1f3babfe2aed5509126f5e8aabbb80e8522a6
BLAKE2b-256 checksum
How to use checksums
65410a560f695138f57692456df6753181f120378f4e3f51c2fee15be832372f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / omniray-1.2.1-py3-none-any.whl

Download URL omniray-1.2.1-py3-none-any.whl
Size 27.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
56ad17b2db44ba578b9e1615b783db5579738facf343b473a75c3a108dd8c615
BLAKE2b-256 checksum
How to use checksums
b210dbd93c1e6f6983a3e589a229728c2b28710a011dee4618e14edd9232b1dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Security for omniray 1.2.1

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