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.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

waxell_observe-0.1.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.6 MB view details)

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

waxell_observe-0.1.3-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.3-cp314-cp314-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

waxell_observe-0.1.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

waxell_observe-0.1.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.6 MB view details)

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

waxell_observe-0.1.3-cp313-cp313-macosx_11_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

waxell_observe-0.1.3-cp313-cp313-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

waxell_observe-0.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

waxell_observe-0.1.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.6 MB view details)

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

waxell_observe-0.1.3-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.3-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

waxell_observe-0.1.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.9 MB view details)

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

waxell_observe-0.1.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.8 MB view details)

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

waxell_observe-0.1.3-cp311-cp311-macosx_11_0_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

waxell_observe-0.1.3-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

waxell_observe-0.1.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.6 MB view details)

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

waxell_observe-0.1.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.5 MB view details)

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

waxell_observe-0.1.3-cp310-cp310-macosx_11_0_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

waxell_observe-0.1.3-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file waxell_observe-0.1.3-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.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a3c6bbcb4198892389601eac8c6f20c0f6b5b700106618204eb77e5c9c8249cf
MD5 78fc3073a1f3f145ceef55a591557d49
BLAKE2b-256 ccfcffd626024e18169dafcd46a0841b4f8579cd77a2e6b080cb9fbbaf0317c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d0af4b2fb29b920836aa1d564fa120ccd7cb6a14fa28c833cc509f3b6ad9cb90
MD5 ee586f51f2110d13c4a0d5abb5aeec80
BLAKE2b-256 f4aec0f311d708f3bb3c0f9813e7379277ea4027e5188990a16e90c31414d593

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8322bb30de74decff2b03078981eb533ee64aadc2006c02be7e94df465db10a5
MD5 e0dc2846ce9d386c0e5e07f24ec407f9
BLAKE2b-256 f67f1707a6db258ddd82d7ada56a30d8df89332f4c13606ef0c5894a6b78f890

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e4ee4222decedc027ec76741354b1979608358a48398f1ea819b957f7cc2930
MD5 dc9368162b3bc6a2c85b751a283404aa
BLAKE2b-256 5f0498f2ab720d413835eec80a07ada46e517b7fdb764b26c6d4cd9bd668d5ae

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.3-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.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 46b2e021dc6a83dd210601691c18adfe9e93adc51e48d7089ad8af603c483d08
MD5 bba2654acb8b2b90aa818945e7a29055
BLAKE2b-256 82285eec530d24263f2ba3519b01c9a6cda97ed9f7af1097de915593f824ebb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4cac6e7a4d2612294eddb3c8d75365c8b548e4ffbe592d9a0f68cf2bcbfc07fa
MD5 88c2e08554debe92f495d71ed0ee066d
BLAKE2b-256 b5f6c50955d2ed09b6546d2cdfd88b299754be46fd9776856725d11219882a5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 229aa07c561fc8e425bcd6c7fa9bc9289c1ab4bb8c27a29a49af72dc1418625d
MD5 6884bee194f4c4947d8565b88af1a33e
BLAKE2b-256 d01a2ea4a06a5124a945b752cfe184daa3b873e4c89e01e974aa8d77f9f4da1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6fa9b26d97ba554d87ce71afdf355eaf066af731e225e8aeb0e9c76e32b9f7ed
MD5 a0f0d340bd94696b5ed3ebe2fdf6245e
BLAKE2b-256 3b83f7397f534c011df032c01c8f67e1291ada4d8174f40cb5e4601f20139ae5

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.3-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.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08317abfe0fd24022347cea5d995e866f01a6fd0589c211a5dc8f160c2263dff
MD5 8f06f2c0460918c6e63f72e26b27ac1f
BLAKE2b-256 2bf54f13d446b1ea84db2a4d4368650243d90154c57edfb827ea5ffc27445ee5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 edcac69835d4da455069aa64bc761a55efb7afc986f5b978a44343a05644c6b9
MD5 0d2e1b623a6a3b5c48f749ae9705c3f3
BLAKE2b-256 a22df3c01d3757dcc9ec844456fa6a249fbd906715feb21090d53bcc638354e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 457905400c1acd934e66cffa5cf795965ac9fc7563217ef38c39a1280043661c
MD5 f742c87242f176383f7b30ae6ca5cacd
BLAKE2b-256 e4723b0b018c1e9c6016c4abdf863b8ce1badd20a2ce6e9fb555915e009df8ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e41ac0717b069ce76f205df8663a37a9334ddb21358f8bba89678825ee30221
MD5 6a808a7735e0da4a752bd5a2cbf27994
BLAKE2b-256 4cae888ccf64d75053ba24133f58411a25caaa06745f132abd5a71a99a838900

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.3-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.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d78932ad33e3fd8a434f0acf24970b099d0ab06ce70b65a9b336efe4d682099d
MD5 adec5c8e70db0e3c306a145071a1746f
BLAKE2b-256 648f011c2db41def3e25b8e6443b08dba6d24a48e5bece2ae5ea340827b90099

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 044780db47467cf1a7724ffb5947dad18e17bb472a12bf3ce30e0a5ee7df4d85
MD5 61b1e99fd742679be3954f1dbf262219
BLAKE2b-256 cac95fda35dfbc8bc6fef2e008f4d2e312e2e06c9005b9f0cba56a3dca64781c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2af90f8caca2ad2c916de76283a9f8e1f822262b2db1aad59edfe6f9e1c2abb7
MD5 61022a029d5093e5c9e4918ce2391445
BLAKE2b-256 0c567a0c0bdf7d174a14535bc56484f69acd84765893ca8a45930d905786df87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9582b75ab062b18e4b6834b727b9680bd53489d6c6bfab0a24bad1abb1940c55
MD5 4a5fe114a7785c24872b00feca617cde
BLAKE2b-256 757ea2f269514a7acca8901035ef94f9bcb43250b0ae12657bf2ec4197a4296c

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.3-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.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c22f73b5651cd5d78482338c9243c1bca29823748914a427a623778b8d11282e
MD5 733699f043a972ed04f8aeda2e8b8320
BLAKE2b-256 6999de9d5f11f605eb0fd8adaa29b8af337161d1126ee0e4c0237045fdc7a872

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 257886184e5d6d09c018326e39ee7b4b5b12291792d5b804a5b6e3f1bbff4d3d
MD5 9985c63d3a6969ad1848c05011470976
BLAKE2b-256 9730e4be4a2aad95d1b98e13384169c3fe29ab196c02113a7fee7f45bfb2f169

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 604e4efa6ab8038fe8034a64d712a6e5456c0c8cf5ae823a63883ef3dada995a
MD5 86aecd70c7d6df250d9877f49c5f58a4
BLAKE2b-256 e8840d5023adef3f0e76be1d10a217a40ab575339adf3ec472dcef71b0af9d16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a502fa40e9e0a89531a114a133b9948109d6853ab2075759dd18c286252d03d2
MD5 6e66b91dfb3ab2dd6081731ef6a2152d
BLAKE2b-256 626607427db6533e9602e69f11d746cfbb35ec60663dd7228fbf486976f17f4b

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