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 observe claude-code setup

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

# With MCP tools (Claude can check policies proactively)
wax observe 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.0a2-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.0a2-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.0a2-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.0a2-cp314-cp314-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

waxell_observe-0.1.0a2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

waxell_observe-0.1.0a2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

waxell_observe-0.1.0a2-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.0a2-cp313-cp313-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

waxell_observe-0.1.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

waxell_observe-0.1.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

waxell_observe-0.1.0a2-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.0a2-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

waxell_observe-0.1.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

waxell_observe-0.1.0a2-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.0a2-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

waxell_observe-0.1.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

waxell_observe-0.1.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

waxell_observe-0.1.0a2-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.0a2-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.0a2-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.0a2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9d6d5b001b5a9dafdcba3c51735981b265016a8a249ed746672b46ca9b40f554
MD5 f2b647ddc4cae7237f097685838a49a7
BLAKE2b-256 e7774da72855dcf4fb27a69141bc73409ee81b3c56e7101a1d69c29ab5b475ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 64467adb5bc4ceef59d4dcd1080e72ed1c61af4e045967cd3119ac49863e91d4
MD5 2c00ccee492111d07a1133fd5b319f9a
BLAKE2b-256 4193dae3535fe1d448a1909c391cdc37330c31c367d515af46974d2979cfa51a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 ea01c088ccc48ba04b9544ba97dd31dd208d0d65eca0c0b2fa16059c635cdb97
MD5 30b47b25f090b3e6d7df22f379925bbd
BLAKE2b-256 48fc16dfa907173e9142ed0a1e22352123ef0360461f3a6b8ed6c82fd6ea04e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 557333c32d0bc5437013fe9c57681ec33e8e6b3b93809377c301c312dd236a4e
MD5 1f858bc03517e745529b87e4b2d23b61
BLAKE2b-256 456dbf0d1802f59fb71ccb8661897481549026d04d971305de761d4404f5bd20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a464135f9a672b8692fc554f8348ec3ec0d473ee94a03db5053051606c71f4bb
MD5 ae01737d283c7b8bd60f632174e4c3fd
BLAKE2b-256 368d758dfff731924d0d6ee85e72301c446a6bbc2e84d715729069ef8336f4b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 38f9e79d4cca063b3ec68b931a9601f02f94223b76fc413d12cb2adf9fd745b5
MD5 af581c81b3f4cc8fbfecda1b76808821
BLAKE2b-256 29bb135c3764ab03fe4e13afe5c25332b209a5ac2211cd79c984bbab47c46066

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a6f2a2589a0c1b1a6348a8296a00e604b73a3942a604143a005dde22f6ad4ca7
MD5 4087b4c40d3742ce67818167aeeae375
BLAKE2b-256 893760a9bc199f84436dcc0aac2005af2480dbc02da35f0a1c5b91f0c8f9074e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f946de8914fdb2ac468217d08aacb16cfe76e3d30777325b3973d7f231794398
MD5 375af14313ae77077341d04f7205a060
BLAKE2b-256 c8e7bdc246ce310b471390fb0c9c4fd0aa5360e20eff87e749a7df33a04bce56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3eeeab4780a2b6abd26c3829b74d6ec7c39903f2a5893f371273371e27c97043
MD5 0cf307eb1f9793ce411db550c17f05e9
BLAKE2b-256 0d8e9aeb5b66d8e29416d938e9db0795eb95e06cff4172437efe9302df64b17a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 70a1bee28fe58fc4823764fbb08c475695edd7940703ac1caf326fef2061d6b0
MD5 8e176e387dfbb12a64bfeb4fb99430b4
BLAKE2b-256 e5017b619c6918c684e92bcf28d9dad1041d24733406e8d97bac2ca9b123786a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 de2b8481c4fdbeb238d18afd3f957cda8da23ba7190fae4ed8b8cdd910db2c58
MD5 71c9a616c6d76c93d9ab24fa366ee1e3
BLAKE2b-256 f5981abdb9d1ecf48aee96b940f9667feecda9c3b7ea3cc53b2725d277a64508

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f983c4ccdad5b9f694bb7500afbcbbf55c2ca29cc0fe7c7c567bacc457f0f6e
MD5 c4c125a60feeb0652fb512ac91f58459
BLAKE2b-256 63f2ff8fe1fdb1fffcd0408e36add1ccd0d1bd5d440a184cbf6dbd6d0d9c8d86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7fc015f4fcf33838bb06f39c7fa6853c9838d30685b0b7011703e39844d4c213
MD5 3814788a79c2a46ce12f8b433bf35fd0
BLAKE2b-256 9153b322f5ac91d1f4e70a4d5d4dfd70731151dc07045ddc76be525a4fd8ef9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 28f13b059aa0b67e28bd02a91da09d94b9342a465d0118ab388d6df6bff1b8b0
MD5 cffeb35865a1dac8a5440cbe2bb315de
BLAKE2b-256 c693f14ab13dd353f4637bd8010bd55598174fb940c039c6d8702cc50796d3dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 73b3f6681cd46bf97f8cd97d8201be8738c545c9fc3858d4fcbf2c062c27915b
MD5 88f0934edea332eb5a23af916219345b
BLAKE2b-256 d9b7e94c04e6e9b4e7360a09b4442b737de2bb96253fac722aa4e9715a76cefd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f041c627f02ba28359fa1b674479bf6edd556c282fee5b143f037023d8926b4
MD5 58ff3c0bcd9881437fe2b08fb61a0967
BLAKE2b-256 5224140ca93f0b68d106dcd3b54f2552bf0c53c8acbb0405507f89c07284b264

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bdd1a78d80ecc25b0a67defa6b84c9b21d0748b38a285ebe91d32e0e3a24bd47
MD5 314018943f0ff1ed71db89469885b3cf
BLAKE2b-256 47d5d118de8301bb962577438fba25553f323e1652515bc78b27688e81341164

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0da04b13df8e16145dbe2276718ac4f5e1aa0ec2b62f44861c25f7d76d17ec6a
MD5 5f8d66c2d40fe9203cca92e32499fbcc
BLAKE2b-256 da589981e26eb84cf1b44c90abba8fa7235fedb14e76e76f295334a1dc814eeb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 d21aa2f257c71d286556c33251f9ff587e168219a26d00d2d03a47cac2eace15
MD5 37732534b5218abc786d55edcb45d377
BLAKE2b-256 a798d7b51041582836e591e346e90d51dfb029244cd9448195c2fc1b09251761

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.0a2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f58ce1fd65cc1b940498a344d93a7412b5c3686908f9c56d2affb276cb34df0a
MD5 b7a3994dcbbfe66feccbdaebdc946359
BLAKE2b-256 9226a81ce4716ebb595031d1f71af8dc78b05f9edfa7491a62921e77589d277a

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