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.1-cp314-cp314-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.14Windows x86-64

waxell_observe-0.1.1-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.1-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.1-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.1-cp314-cp314-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

waxell_observe-0.1.1-cp313-cp313-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.13Windows x86-64

waxell_observe-0.1.1-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.1-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.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

waxell_observe-0.1.1-cp312-cp312-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.12Windows x86-64

waxell_observe-0.1.1-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.1-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.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

waxell_observe-0.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

waxell_observe-0.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (6.6 MB view details)

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

waxell_observe-0.1.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

waxell_observe-0.1.1-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.1-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.1-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.1-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.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c5c719804921fb00f641cebc8e21fbb8b40e89db53c9e016183136ca961af407
MD5 2e9ba5984188b99974c2a07bae3447f8
BLAKE2b-256 811bca883f777f307b9402350f06fac798872a95a3f5487598ab542fc5b62abb

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.1-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.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dbe6478e5f562e06568f631e72d89d3023cf0287c8af68e1eabc647f44d9b7f7
MD5 161500e4032f9d18496c4d5710c18869
BLAKE2b-256 bddcf415b45d92f48606f8b65f5323d8d751b158557b6d0da3343f29a8ca22d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2ea399f18fdc06d9736e2da3f4c7e5e64e6e887ec928b0a657682dc29df17340
MD5 f9392887c9157acdca496867485f852d
BLAKE2b-256 824a6e80ab19e6ec7f1bf207d922368e8f9316a38ee9cdc6daf5afd02ae07156

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 324a432fd21951a76e9807223f25fcdaac40bcaf65890666bcd76d8cdfe757cf
MD5 14d76ca457d02dc40b8d8d9d7b327bac
BLAKE2b-256 ab59d6e10d0d64c70b4dfb1c0f3e360885cb54505ba55a4cb8e6069450b77380

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 130ba5be2f174a9ecb5d41cb80960480d2d15cf33e8a9b3f5cc1bf962b3d44ef
MD5 7699cf17c6b225bd22eff42dadf36a3e
BLAKE2b-256 bfc4205344d4461ef00baaaedd1a85e239e78cd2cecd0bada14416a5bda18422

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ee754a3a5834397f3f0dc98c755b4088e7a60df5347fcec096592f57a4a6d681
MD5 1027f7c423e855c4f1fd36d537864460
BLAKE2b-256 b8d18ce749130ee4216b00742c255e172b4deb653ebb630b2fce71489d9bf58f

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.1-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.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 010126568c1d0b45632962d496c88a764051251cfcff76a1117ac630298d96d4
MD5 000b0a1d098f5ceaec91b5835cc2af4c
BLAKE2b-256 894eb812b9e82949856ddddebfae436a8cc16775e7b9f1a9e5a1d6658e70e51d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5efad73f164afa33309990c885e7374be8ff365dc365996e6b9b692609b47ad8
MD5 6df9f8f8a7f28d4934c0d02f8e3d873b
BLAKE2b-256 43d869a2b686c6713a72073d58bf8b1924b44f35c0725172ac0a528164f5d8b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e0d3295c2f6830e3205897f8d3edd57f4535fea385fe0e331b01310cf9cd909d
MD5 5b97f3b60e8a1ea55ab464b46c6c2857
BLAKE2b-256 0ac7a1936e3b4bdb81465505a05fade5d24f57d72009194854706640e55140c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aba655c01c4b1045752f1e354190510b7124906239b93688dbb218c0ba6de31b
MD5 9220749d4d6e40d3a7a251e21cfa574c
BLAKE2b-256 c91c6c131368ed03f78cf59330d4c9aa1b361e5e43f615b189333de8bc8c39ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d08243efd786563a86e4f5fe9c0ceca21cc810404b546946cb438b940dd64af7
MD5 f61e5b0db5b585fac58d4d8b8c6ce59c
BLAKE2b-256 0c0df3cc36e93d994a6b303485b8fdaaadcefe1e6e3252e75d9971bf16a77709

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.1-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.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 01e3312600f53a83964f6253cdd76d28458e13049a3a928cb79a75b52a761257
MD5 21eb679269df41ff12329b6e5be79bfb
BLAKE2b-256 cffb5b532d53708676516c0ff7a38190e8048b9f2042085a576abdf1330d8acd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 535eefe7c6610e9d0e880bc27814e2713e55b263b0b77da07d8b76190a1b3fa7
MD5 1c81946cf34b690eba3feb2f381c1bb2
BLAKE2b-256 f567127fb697c29f21864ff248a3026d8ce86f654f5026ad360c1ad801aa09a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 847257f7746c0325b3f5e79fe989fd4fe2832402c6e091cfeb9007f0e9ea6a3d
MD5 38b886f4d9091e3c9bef8d12779e899d
BLAKE2b-256 3b8415edebdd6af39057d3c20a236e422c9110a22416762936562248b1873e48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4be479b1769425104de57a2536beac03434f7df8736a1ef4415ca315adccf310
MD5 2a6cc85214524c2f23fd0c7d3bdc7a05
BLAKE2b-256 8416091aa0198d0bb51a6324d6209e688504b5a120e8c036f088ba788b0d23ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 602df684603d138dcb05de0ff82b044f4c07875660ea622cf2479f6417540580
MD5 83660a0a69b6196dec28ff66cba9a9f0
BLAKE2b-256 a73fd35c53a0a022ea53a2a65594071cda64e067f9848397767a23fa4c0c7a8c

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.1-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.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9727e045295119799b84e374b58a3f5596ceb25f2e433b1655c6dcff6d4de02b
MD5 75238f03a86fb57869821f459fa516a2
BLAKE2b-256 7e7f7e3a28d89ad27adaa59f993e6508aa467936ba2748f72153ef328f381091

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 05b3ed3d01dc25e3ce2a7a84f36b78d2f5922dc3f555f4a37f3fbf13420bb2ad
MD5 0a483885120c0b6f5df626c48270a90b
BLAKE2b-256 5fa3aa0a3d851b14ed6b3ffe6de6b6311724f6b15bdc981ecdc70511899b45e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 f639c21b86644046ee799d40d541d94e0ddad3f6e663128c081576e68e58f473
MD5 b1a8555b61028a1c50d705531c989bfa
BLAKE2b-256 8ecfbb3b4d343f10dbf93d91b3e1f9be10cc380e6ebacf6a233c3d506c7dc9f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6ea2d7e09c1ddc8324804dfa78e4a3c72a296c0eaefd1c4a4ba946baea65a13
MD5 14725fe0cad284010c58c49443c9b9c3
BLAKE2b-256 ff5bd77e9da53f42eefd64dc5c5c10699bad383a47ef943a200fc3544b435d6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0c6bafd1b91e774f508c12103f59ceb438ef57f97efd68f3b0f1789578077224
MD5 07dcfa9f88609e40198a272781c01fc3
BLAKE2b-256 7cb16c69234ae5b4b8e55a9a2816205766ed85dc381dd3f312fa49552d0fd8ea

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.1-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.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 03ffa883d24c8ddfb7b6d75a992c90d697c125c9ee6ca2a99e45c60511744c87
MD5 53ce394e64e0a1efb8c436b4dea9a45a
BLAKE2b-256 6efc864cb8eddebb21a55b167788f869a37b567371b66a296058c06b545a5f2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0cdfef931ff8945218c045506ddd4353fca124fe50485f35317a2342882e8751
MD5 c0f9b7f0630375179dd803199fdeacf4
BLAKE2b-256 73a9a4ab6c0352f93fa3fdb4f050171f883e972346c1d19445e8d12437c6bf3c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 f302573020454e0f7cb0a38e2d600badd0ef05a6fabda7c43fc70bf738d9885f
MD5 af61e6a14b9e5af7926f1a23f96e8762
BLAKE2b-256 e47c9955aedeb6fc959f6de636284bbba77f703b0307e1b6888e9c0b0d3e5c51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bfaea0b4870de1e3f1ff57807041fc6502384aa38bd502f20ab09770925b311
MD5 4e1d597a87a0213f1b0da0d1925702e2
BLAKE2b-256 6f077649f7a1c5459a7d5c3658341c4e9f9ad7f647b9f872b383a781277c48c6

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