Skip to main content

Lightweight observability & governance for any AI agent framework

Project description

waxell-observe

PyPI - Version Docs License: Apache 2.0

Overview · Quickstart · Installation · Claude Code · CLI Reference

Lightweight observability and governance for any AI agent framework. Add production-grade tracing, cost tracking, and policy enforcement to your agents with a single line of code.

Where this fits. waxell-observe is the standalone observability SDK — install it on its own to instrument an agent you already have (LangChain, OpenAI Agents, CrewAI, …). If you're building agents on Waxell, you don't need to install this separately: pip install waxell brings the runtime, the wax CLI, and observe together, available as waxell.observe.

Installation

# Core (HTTP telemetry only)
pip install waxell-observe

# With OpenTelemetry tracing (recommended)
pip install "waxell-observe[otel]"

# With infrastructure auto-instrumentation (HTTP, databases, caches, queues)
pip install "waxell-observe[infra]"

# With LangChain integration
pip install "waxell-observe[otel,langchain]"

# Everything
pip install "waxell-observe[all]"

# Development (includes test dependencies)
pip install "waxell-observe[dev,otel]"

Quick Start

import waxell_observe

# One-line init — configures tracing, AI/ML instrumentation, and infrastructure instrumentation
waxell_observe.init(api_key="wax_sk_...")

# That's it. All LLM calls, HTTP requests, database queries, and cache operations
# are now traced automatically.

After calling init(), every LLM call, HTTP request, database query, and cache operation made by your agent is automatically captured — model names, token counts, latency, SQL statements, HTTP endpoints, Redis commands — all nested in a trace tree visible in the Waxell dashboard.

Auto-Instrumentation

AI/ML Libraries

init() automatically detects and instruments installed AI/ML libraries:

Library What's Captured
OpenAI SDK All chat.completions.create() calls — model, tokens, latency, streaming
Anthropic SDK All messages.create() calls — model, tokens, latency
LangChain Chain executions, LLM calls, tool invocations via callback handler
+ 145 more Bedrock, Gemini, Mistral, Cohere, Groq, Pinecone, Chroma, etc.

To instrument only specific AI/ML libraries:

waxell_observe.init(api_key="wax_sk_...", instrument=["openai"])

Infrastructure Libraries

When installed with the [infra] extra, init() also instruments infrastructure libraries to capture everything your agent touches:

HTTP Clients:

Library Span Examples
httpx POST api.openai.com, GET api.example.com
requests POST api.stripe.com, GET api.weather.com
urllib3 Lower-level HTTP spans
aiohttp Async HTTP client spans

Databases:

Library Span Examples
psycopg2 / psycopg pg SELECT, pg INSERT
asyncpg / aiopg pg SELECT (async)
SQLAlchemy pg SELECT users, mysql INSERT orders
PyMongo mongo FIND, mongo AGGREGATE
PyMySQL / mysqlclient mysql SELECT, mysql INSERT
pymssql mssql SELECT, mssql INSERT
sqlite3 sqlite SELECT, sqlite CREATE
Elasticsearch es SEARCH, es INDEX
Cassandra cassandra SELECT

Caching:

Library Span Examples
redis redis GET, redis SET, redis HGET
pymemcache memcache GET, memcache SET

Message Queues & Task Brokers:

Library Span Examples
Celery apply_async/task, run/task
kafka-python / confluent-kafka kafka send events, kafka receive events
pika / aio-pika RabbitMQ publish/consume
aiokafka Async Kafka spans

Cloud & RPC:

Library Span Examples
botocore AWS SDK calls (aws s3.PutObject, aws dynamodb.GetItem)
boto3 (SQS) aws sqs.SendMessage
gRPC grpc UserService.GetUser

Example Trace Tree

With both AI/ML and infrastructure instrumentation enabled:

agent: rag-demo.document-qa (3200ms)
├── chain: analyze_query
│   ├── llm: chat gpt-4o (800ms)
│   │   └── tool: POST api.openai.com (790ms)
│   └── tool: redis GET session:abc (5ms)
├── chain: retrieve_documents
│   ├── tool: pg SELECT * FROM documents WHERE ... (15ms)
│   └── tool: POST pinecone.io/query (200ms)
├── chain: synthesize_answer
│   └── llm: chat gpt-4o (1000ms)
│       └── tool: POST api.openai.com (990ms)
└── [governance summary]

Controlling Infrastructure Instrumentation

# Default: auto-detect and instrument everything available
waxell_observe.init()

# Disable all infrastructure instrumentation
waxell_observe.init(instrument_infra=False)

# Only instrument specific libraries (allowlist)
waxell_observe.init(infra_libraries=["redis", "httpx", "psycopg2"])

# Instrument everything except specific libraries (blocklist)
waxell_observe.init(infra_exclude=["celery", "grpc"])

Coexistence with Existing OTel

If your application already uses OpenTelemetry instrumentation, waxell-observe works alongside it:

  • No double-patching: OTel instrumentors have a singleton guard. If you already called RedisInstrumentor().instrument(), our call is a safe no-op.
  • Additive: We add our span processor to the global TracerProvider alongside your existing exporters (Datadog, Jaeger, Honeycomb, etc.). Your spans still flow to your backend AND also appear in Waxell.
  • Context-gated: Outside of agent runs, our processor does nothing — your app's normal telemetry is untouched.

Manual Instrumentation

@waxell_agent Decorator

Wrap any function to create an observed agent run:

from waxell_observe import waxell_agent

@waxell_agent(agent_name="my-agent")
async def run_agent(query: str, waxell_ctx=None) -> str:
    # waxell_ctx is automatically injected when declared as a parameter
    response = openai_client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": query}],
    )

    # Record steps for hierarchical trace visualization
    waxell_ctx.record_step("llm_response", {"model": "gpt-4o"})

    return response.choices[0].message.content

WaxellContext Context Manager

For more control, use the context manager directly. Works as both async with and plain with:

from waxell_observe import WaxellContext

# Async
async with WaxellContext(agent_name="my-agent") as ctx:
    result = await my_agent.run(query)
    ctx.record_llm_call(model="gpt-4o", tokens_in=150, tokens_out=80)
    ctx.record_step("retrieval", {"documents": 5})
    ctx.set_result({"output": result})

# Sync — ideal for batch scripts, CLI tools, ETL pipelines
with WaxellContext(agent_name="my-agent") as ctx:
    result = my_agent.run(query)
    ctx.record_llm_call(model="gpt-4o", tokens_in=150, tokens_out=80)
    ctx.record_step("retrieval", {"documents": 5})
    ctx.set_result({"output": result})

LangChain Integration

from waxell_observe.integrations.langchain import create_langchain_handler

handler = create_langchain_handler(agent_name="my-langchain-agent")
chain.invoke(input, config={"callbacks": [handler]})
handler.flush_sync()

Claude Code & Cowork

Add observability and security guardrails to Claude Code sessions:

# Set up hooks (basic observability)
wax claude-code setup

# With governance (policy enforcement on Bash/Edit/Write)
wax claude-code setup --governance

# With MCP tools (Claude can check policies proactively)
wax claude-code setup --governance --mcp

Every session is traced as an agent run — tool calls, LLM usage, and cost are captured automatically. The local guard provides instant security checks:

  • Destructive command blockingrm -rf /, fork bombs, pipe-to-shell
  • Sensitive file protection.env, private keys, credentials
  • Git safety — block force push, hard reset, config edits on protected branches
  • Path boundary enforcement — block writes outside project directory
  • Network access control — block WebFetch to internal/private URLs
  • CI/CD protection — require confirmation for Dockerfiles, CI configs, Terraform
  • Cowork conflict detection — warn when teammate modified the same file

Customize via .waxell/guard.json:

{
  "git_protected_branches": ["main", "master", "staging"],
  "max_file_changes": 30,
  "path_boundary_enabled": true
}

See the full Claude Code docs for server-side policies, MCP tools, and all configuration options.

Session Tracking

Group related agent runs into sessions:

from waxell_observe import generate_session_id, waxell_agent

session = generate_session_id()  # "sess_" + 16 hex chars

@waxell_agent(agent_name="chat-agent", session_id=session)
async def handle_message(msg: str) -> str:
    ...

Tags and Metadata

Attach searchable metadata to spans:

@waxell_agent(agent_name="my-agent")
async def run_agent(query: str, waxell_ctx=None) -> str:
    waxell_ctx.add_tags(environment="production", version="1.2.0")
    waxell_ctx.add_metadata(user_id="u_123", prompt_template="v3")
    ...

Governance

Policy Enforcement

Policies configured in the Waxell platform are automatically enforced:

from waxell_observe import waxell_agent, PolicyViolationError

@waxell_agent(agent_name="my-agent", enforce_policy=True)
async def run_agent(query: str) -> str:
    ...  # Raises PolicyViolationError if blocked by policy

# Disable policy enforcement for development
@waxell_agent(agent_name="my-agent", enforce_policy=False)
async def run_agent_dev(query: str) -> str:
    ...

Mid-Execution Governance

Enable cooperative policy checks during agent execution:

@waxell_agent(agent_name="my-agent", mid_execution_governance=True)
async def run_agent(query: str, waxell_ctx=None) -> str:
    # Each record_step() triggers a server-side policy check.
    # If a policy blocks, PolicyViolationError is raised.
    waxell_ctx.record_step("step_1", {"tokens_so_far": 5000})
    waxell_ctx.record_step("step_2", {"tokens_so_far": 12000})  # May halt here
    ...

Configuration

Configuration is resolved in priority order:

  1. Explicit init() arguments (highest)
  2. Environment variables
  3. Config file (~/.waxell/config)

init() Parameters

waxell_observe.init(
    # Core
    api_key="wax_sk_...",        # API key (or WAXELL_API_KEY env var)
    api_url="https://...",        # API URL (or WAXELL_API_URL env var)
    debug=False,                  # Enable debug logging + console span export

    # Tracing
    capture_content=False,        # Include prompt/response content in traces
    resource_attributes=None,     # Custom OTel resource attributes on all spans
                                  # e.g. {"deployment.environment": "production"}

    # AI/ML Instrumentation
    instrument=None,              # List of AI/ML libraries (None = auto-detect all)
                                  # e.g. ["openai", "anthropic"]

    # Infrastructure Instrumentation
    instrument_infra=True,        # Enable infra auto-instrumentation
    infra_libraries=None,         # Allowlist (None = auto-detect all installed)
                                  # e.g. ["redis", "httpx", "psycopg2"]
    infra_exclude=None,           # Blocklist — exclude specific libraries
                                  # e.g. ["celery", "grpc"]

    # Prompt Guard
    prompt_guard=False,           # Enable client-side PII/injection detection
    prompt_guard_server=False,    # Enable server-side ML-powered detection
    prompt_guard_action="block",  # "block", "warn", or "redact"
)

Environment Variables

Variable Description Default
WAXELL_API_KEY API key (wax_sk_...)
WAXELL_API_URL Platform API URL
WAXELL_OBSERVE Kill switch — set to false to disable all telemetry true
WAXELL_INSTRUMENT_INFRA Enable/disable infrastructure instrumentation true
WAXELL_INFRA_EXCLUDE Comma-delimited list of infra libraries to exclude
WAXELL_DEBUG Enable debug logging false
WAXELL_CAPTURE_CONTENT Capture prompt/response content false
WAXELL_PROMPT_GUARD Enable prompt guard false

Config File (~/.waxell/config)

INI-format config file with profile support:

[default]
api_url = https://api.waxell.dev
api_key = wax_sk_...
instrument_infra = true
infra_exclude = celery,grpc
debug = false
capture_content = false

[local]
api_url = http://localhost:8001
api_key = wax_sk_...
instrument_infra = true

The config file is created automatically by wax login or can be edited manually.

Kill Switch

Disable all observability with a single environment variable:

export WAXELL_OBSERVE=false  # Disables init(), auto-instrumentation, and span emission

The agent code runs identically — only telemetry emission is suppressed.

Architecture

Your Agent Code
    │
    ├─► waxell-observe SDK (this package)
    │       ├─► Auto-instrumented AI/ML spans (OpenAI, Anthropic, 145+ libraries)
    │       ├─► Auto-instrumented infra spans (HTTP, Redis, PostgreSQL, 30 libraries)
    │       ├─► HTTP REST API (runs, LLM calls, steps, policy checks)
    │       └─► OTel OTLP/HTTP (spans with gen_ai.* semantic conventions)
    │
    └─► Waxell Platform
            ├─► OTel Collector (tenant routing via X-Scope-OrgID)
            ├─► Tempo (distributed traces)
            ├─► Loki (structured logs)
            ├─► PostgreSQL (runs, LLM records, policy audit)
            └─► Grafana (dashboards, trace explorer)

Key design principles:

  • Dual data path: OTel spans flow to Tempo for trace visualization; HTTP REST calls persist structured data to PostgreSQL for cost tracking, governance, and analytics.
  • Zero latency impact: OTel spans export in a background thread via BatchSpanProcessor. Agent execution sees <0.01ms p99 overhead.
  • Fail-safe: If the Waxell backend is unreachable, telemetry is silently dropped. Agent execution continues unimpaired.
  • Multi-tenant: Tenant isolation via API key resolution at SDK init. Spans include waxell.tenant_id as an OTel resource attribute for collector routing.

Requirements

  • Python 3.10+
  • httpx (included in base install)
  • OpenTelemetry SDK 1.20+ (optional, via [otel] extra)
  • Infrastructure instrumentors (optional, via [infra] extra)

Development

# Install with dev dependencies
pip install -e "observe/waxell-observe[dev,otel,infra]"

# Run SDK tests
pytest observe/waxell-observe/tests/ -v

# Run integration tests (requires Django)
cd controlplane/waxell-controlplane
DJANGO_SETTINGS_MODULE=config.settings pytest ../../tests/integration/ -v

# Run benchmarks
pytest tests/benchmarks/ -v --tb=short

License

Apache 2.0 — see LICENSE for details.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

waxell_observe-0.1.0-cp314-cp314-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.14Windows x86-64

waxell_observe-0.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

waxell_observe-0.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

waxell_observe-0.1.0-cp314-cp314-macosx_11_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ x86-64

waxell_observe-0.1.0-cp314-cp314-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

waxell_observe-0.1.0-cp313-cp313-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.13Windows x86-64

waxell_observe-0.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

waxell_observe-0.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

waxell_observe-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

waxell_observe-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

waxell_observe-0.1.0-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

waxell_observe-0.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

waxell_observe-0.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

waxell_observe-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

waxell_observe-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

waxell_observe-0.1.0-cp311-cp311-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.11Windows x86-64

waxell_observe-0.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

waxell_observe-0.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

waxell_observe-0.1.0-cp311-cp311-macosx_11_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

waxell_observe-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

waxell_observe-0.1.0-cp310-cp310-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.10Windows x86-64

waxell_observe-0.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

waxell_observe-0.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

waxell_observe-0.1.0-cp310-cp310-macosx_11_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

waxell_observe-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file waxell_observe-0.1.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 43330512e44b04d6658b4557fdf5e050c72dbf49ff667db3c0c65bb88cf96d16
MD5 f1128ea02b190145123fca25880ba26b
BLAKE2b-256 0336b80b9b8d396f44c780b596ec7c0d62a5462e83f790a058d1fd197ae90304

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a0c3107712208464ebf66c0783234fdb2926dac6cbc8364706d801b36cbe00e1
MD5 cc1f041ff6cece5c9b876aa1462ec228
BLAKE2b-256 27b32ce1189944d8d43b67bbc98323123816b7a5fab122fcc8c3673216fab851

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c80b175bffc0a95bc914b1b476b3d13afec648fe61010a14ef6808004fc7911e
MD5 55b07c7a6b101be58d6e2b6470f9bbda
BLAKE2b-256 7804f6c8e2801076e0d17e447644a9f9fad37dba7398a1b82de69fdaa8a89f5d

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp314-cp314-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 5f0246bbd94fda73e82e61d93317c7ceb26559981dacba619cccb16a15d47b2a
MD5 8ff52e23115b55974ea79203e1e7015b
BLAKE2b-256 9cf165e4f2794809899299779fe95ebeb6bce632cbcc3ba3b154011ac88d0a11

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2babd46d21fbc3d0f4e257151f228c60d930114eb72383b075fc313ff532b5c
MD5 9dd1c108a34e9ca0562f4d3e6afc253e
BLAKE2b-256 bf4320443100641f32836f4f988de2e40c93f9a03c039b2b74c4fc2dc4fc8dd5

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0febf3d5ba3b3f3d379d5cc5ff8dfada88d9b089f2e9ed6ae7f1097b1fb94ea3
MD5 72daec03ee061c4590f6d70b688d6b8b
BLAKE2b-256 1f872cb369cdff7534a2394e4678d69eee11b427ba0cd19af82425771489c9d6

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fe3e1a5d28ea4f12690414669b2025dd0ad98f03f4e3c031f8117b4834208541
MD5 95e5c1473991e20d55bbdb18f83486c7
BLAKE2b-256 c03948da8cd2099afba29c8b359c2349dcbea9b1e62ac755c68218673d9e6510

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b5ce60e8340391681c6ffefee62dc8fb3df1b542cc9954af00f877ba3b6eb08
MD5 4b9ab7306225040a1d6e137a76c0c0f9
BLAKE2b-256 1ce0e3cc9b2d87d285e22e5341159397a13b44adf7213c2910a339932ec3beb1

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 c3460ea3daf4542bce574ac96fc4ec68971a3018fce37b9ca9f97a6091971e0e
MD5 77f31e8b1b2d82a9d072b3eb80f0d6d1
BLAKE2b-256 549912bf23a72023da9d31215b859d1703b0e50cfcae51b9ba8830ea4cd93e5a

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 540559bf028df1e735c8da0694d58f42471ab5da5d15dee63bdc50a9d519ec57
MD5 8bd125fbdc0703020816058340d9dbb9
BLAKE2b-256 de82646e757f51baef913bd1325caae5ee263b475950144bf556b0c75d0f6ad8

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 32d9999a0b36de567236b75cf0b3d837b97035d481c80a956fa40a0d83f31887
MD5 00a27c6a698801198eb863ded1646c7e
BLAKE2b-256 5e7ae78ad40831d044216738a5c2fde408a50871bfdc1b076dfcf9429e3203c0

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6c08324ea50e326c7c2532b4d1ee0255aabb80ef0890a0c04dfe504d384be27c
MD5 4df6345b5a032cfe08a508d4cc6e43b5
BLAKE2b-256 5222d44b3ed89f79b985ac7541dc677a5b681068a5c0d6836d6e47c8dc2179b5

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1459b3a5a82b783647870d71c3012972dc6d136e97448519a1fac786eac08399
MD5 97ba70bc38c4e9a3ec7713c29bc3c283
BLAKE2b-256 2dda2f2f404b0b0741030b527343259f13effcae7ecc492098f56955f8372e07

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8586409616cd29b10ab29a2f3c57b107fa5c4370bfd70980ec56c3c31c6bb72b
MD5 2c45b2b6769985f10b54510054e599cd
BLAKE2b-256 77b7e500184859eae3d4eea6215912e6c9306def76620ed35cc714721e25a3a3

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3aac9e5b4622f0da1daf38136227cef3e2db045e27f1a445ed3326c0f37c8821
MD5 e76c02a557c9351d13b12c60e63b4dd4
BLAKE2b-256 aa59f07b7581a210792d219710c9c0cd047b2f280915f4a1f177e907633006cf

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 798abe4f6b8c9b565d6bbd566f84f00b5c8d46c1c87cd2af3a3e956123077700
MD5 1a497dcb2b9b97b3d3c976c457742fb1
BLAKE2b-256 3452d4fad2757212de742974d6442762a5e0c9b1a73f334210e1a6739d65013a

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 47a65bc094387ba0edc171bc5f228901c9f095d8b63d7fe69607f984d7a203ad
MD5 6af182e21997be4281d986162e3c2c2c
BLAKE2b-256 a3d623489458d7c8d1d86a799bb3b012bae099fcae35752e7c05f3a53b68eddc

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 235247363e6c799ab6db9646aa48e5274748a9487aa2604180fd0aefbea1b2fc
MD5 9c526ee2f3e9f0d05f7a2ad6d467a627
BLAKE2b-256 f996fa09722a1adbbba8d1905984018744aec2ebefae68299f386b43d424fcd4

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 11bc2b640528ee68210be22cca9fab43a4991f192a44410586463553b3ff3727
MD5 e00b705d34ed9331039ee4a0a49f9305
BLAKE2b-256 b1b2ad0e018e4c4afbba766c0016d3c0f58bab0a979b52d1642f4680f0f82fe7

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3738aa4b235d88d94f4ba8e605b3f633d18cba333f4985dcffb20f5314e76a20
MD5 3fb1f2db2bc86d0ff298bc3e9263a36f
BLAKE2b-256 2115e4d9ea419094faf92a9851d7d317c6f0998d9f6d70400760e93a7b461747

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 86e0507a4ed936626f9be8edbbf52264670dec2da55f8297b74ccfc7a846ee96
MD5 c495708b797a754caa6ae126ec61dcff
BLAKE2b-256 8f297046ac579fae6cefd9e5018df42b7a5bb1a30bb543dc94e955054599366e

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 233f516f88f7cf9f1f55d6e7fc0ad87884bb587b7fce7cd294a6ba63b31b44f3
MD5 982143979824373f41bc6835f9e6e293
BLAKE2b-256 8cb08489cecccb83c5e6fe7dd85bb3a47b01fa4ec7a67b03ee2b10bebd842012

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3d388568dc4efab275d0387ff2ee443ab2fc21f0d7f0a59f6c0a10508209f4d4
MD5 068c352a7ce5f65d461f2c4fb81ca59e
BLAKE2b-256 c0f590825564582055129a7c33755dc87b1b53481f590a741ae351549bb446ae

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a0aa72a0281aea9f002d6f9b73651ce7fb5d0b719d407bc20d3258915ee3445b
MD5 b454a1c5ef207252b22aff22305b3838
BLAKE2b-256 f776e17835d191d392dd927729923cc9a97518c1016ba7a11b12d5f1d05223ed

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c0a5f7d47918b9fe4adde81257dae3d91c496fd8b18e493252d3cafebc9511c7
MD5 585fc21e2afb8b679f6845c0ee03ec31
BLAKE2b-256 5c601ab6a168cfea9444c8893e9b7c949ac6a95951883ec251c46dbcca22963f

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