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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| omniray-1.2.1.tar.gz | 47.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.