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

Uploaded CPython 3.14Windows x86-64

waxell_observe-0.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.6 MB view details)

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

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

waxell_observe-0.1.2-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.2-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.2-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.2-cp313-cp313-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

waxell_observe-0.1.2-cp311-cp311-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.11Windows x86-64

waxell_observe-0.1.2-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.2-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.2-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.2-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

waxell_observe-0.1.2-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.2-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.2-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.2-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.2-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e6da844e53c146f233dc4a1b50b3a095f6ce858a884014dea337d1c6b45c1005
MD5 75eeed2c88e239ed3127c46fc0c25a90
BLAKE2b-256 45bb7593870da45fad5e42307094ddf7cd5c2b02a4e7f5d799ad7feb55e674c4

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.2-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.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 102770110ccd1d7676148a7441198af61e404a42ebaf3cc38057620b3aded755
MD5 7ca3a13bc06530d7d3b2443fddce1745
BLAKE2b-256 64b57b0fd0c04fb6728450f8febceb8259710e54ac0ed369956be271beeb1515

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 10d4b6c48d434649f665c91d7ee4e565154198aa602bf24e480353af743dfd3b
MD5 a21f0467ea9082d557fff7d8f6f09edb
BLAKE2b-256 3d6c0c0487d610a49520baafe0b7a95bb22a2ed666ce6bd5ce4988ca8a6b48f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 7ebee8eaca8bad64e02dcaba44b0f94856a268c2575151f191dfae5f9ce6c08a
MD5 91ec0b195036970cf715c7417b0c814d
BLAKE2b-256 6de761ae9545e17577b5e3887f4832f2f20dca62aaa09573604a05917af04af7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf1a4730b1033a4552d6ffc6516b5cc8ed87ecfd756d3d1033e0c13e7b92a912
MD5 2443ae49a1558badd6f9a743367fb40e
BLAKE2b-256 15bd7717d146d156a36afc671267f697bec5bccf34299240991caa2622807928

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f80d63df2886ee28b1edc4e9368c7ac762f6142cad6c9ba0d6ce6bd0bc3fd559
MD5 6630a162d8f77dbe3f6bf4ed5224ecb6
BLAKE2b-256 7dcd5f217c1046af9e3822d405ed7bf1dc1dc6f85f37aecb129cd3032fbb10d1

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.2-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.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b19740de466dd0fa6b83282a819572141ae4f7a2778b3ba2a1e5b406814cc72
MD5 cbda9d33cd858cd46fc0bc7103688ec0
BLAKE2b-256 28771f1f90924d28b27a78ed67eecd927d11e70ecbde22c0e9b7080774d0edd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 425136bfdbbc10b6c8e5e129a501ac277aea9eabdfcc748766e5ddeae96ac0b2
MD5 0952d0d51e0cde0472e26af65438002b
BLAKE2b-256 a101753445404a6c479f6939c549c8181124b48af96eef428ad1cd43bb03d8dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 bfe31bf12044948992d803fb1d3c6af277f114bb7978cc78996c911c0e623fcb
MD5 b75f4aa5356de5da68a6095bbb4bbb8f
BLAKE2b-256 74c4735be8c928efed4e00c1b4369435f41c72349a484423393a26e57b7e98ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31df4b2d164be1aec549c996fee1c5526ff2b8da2b3eab15150304f5cd74d975
MD5 ccdd9f71b84f4014655d95de86879b67
BLAKE2b-256 aea1e66ef051fb24f91d4a8fc55a372cefec534e8f28d0f40598e0aa9dccca5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 74199e6e6f6a23c411abad5e66000ea10e8db4ea86ac69c6dcf04b1d4dd6e34b
MD5 33345618c009d5dcc207efd81f841a84
BLAKE2b-256 76bb86be4f7a7646255f23f6a9d6eb634598a24f998011a8955d35fc174158f8

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.2-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.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9182115684d411dc84e54f6f319360c517de8b73524cb17768ce0a942e639819
MD5 96ff24bc668d80cbec813e6f5ea4f080
BLAKE2b-256 36e95500c1ccb5f4cbfacb6a21fb33ba24d163206ab549cc4be5f6acf958c9ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a0bde4ccd80639445f4cc08249f50c65c5c5523131758172f262b113d3c9e1b1
MD5 d29b1157e653df375ac8ccb29829aff9
BLAKE2b-256 a81754c8c4b4ad437abcb816c031bf8a58245886578f051af325966d354eef94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e5fd0270eb3b744130d911a03eb83af5562f119120be068dc6bb3386cd6c3130
MD5 eadfbd2efddd125bb1b5d95687639c65
BLAKE2b-256 dcc72a34c2da537e087bc472b65673bd37f6cc26d9fc1a924fec9cd475a59873

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b4b150b002334e8e312ad61183e7a714c55da4d135cfd678c6dc5be118cb7fab
MD5 b57e95966ccf7c6166a8bc5c866c8ce9
BLAKE2b-256 3cee5d484132b596610ec442d63cdd55bdc96e66c2b6c739d45cfda30643bdec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 70743be654a4f2cffaa94066951ed0393092ae13bcc3375096bb6c0f2b3a86c9
MD5 91d370e4c3f9e5ee316f79cdc6962e44
BLAKE2b-256 5918d09fb261b084337bd9e51c3ff77eb3ab90d385f6c66860e2efde7410c560

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.2-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.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b30b4648b76a535405e2299bc939f7065413c6e7fa3267d5411319d7bb324e01
MD5 27f9ef4522ff6059f6f3a4bb4666e75d
BLAKE2b-256 ea0f9edf379b1bbea402460a987c6f693025708e0b2657e3b872051600f49ed5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3a2bdad87cb86a7603581c7508b6e2226421e6be90f8f98280c2d7c4a02b79ad
MD5 3e0d1c81d89bea29472fcede67310adb
BLAKE2b-256 5b089e7a4a7dd4904cd19ef62d8beb3ec0dd483108a814095ad00dfcffd4d312

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 640500c07f658d39a40ca4f68a6829e294612998c67e59e2d8c0d434e97ba567
MD5 655d2b9b7126bf2ff724aa8038fc16bd
BLAKE2b-256 cf4cb2f6ad1c25967e71acc059669a97229e535a2d1d886e0a45021d6a167c62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c51c441e02611e8f3898d5fb472c5cc8eb7e9e1007f809ec3e946e142c5b9f4
MD5 df5f8faa811d1112e077afb469fd18e5
BLAKE2b-256 7cc712731d151b1523c841c1f2e1984560dd3898080a1a8a82b086804a214b11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0db62874b74812f1b958597d3cd46437e074f79c798d47a1fc3d02ac2d728f2f
MD5 83e7de12c0a501120a508a3eee2c0d95
BLAKE2b-256 9fe2ac37444cd50a61ca38ec499e5561f6388811b038ccbd98ee591b7524a0ec

See more details on using hashes here.

File details

Details for the file waxell_observe-0.1.2-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.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 625759aea5f1ab5be24147b08e0d2110073b0b797120e4e425c7877fe3605d6a
MD5 5efd5a80b359a05597dff8a540aeb340
BLAKE2b-256 21afebfa1a4090c5dd4283a51f30ab452ef8fce1f81c01104c1401ede2e90d3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2af0e68d3203ff78e1eda635bf32266bd4a277af7dfd17cc1d5fe284fbe549c7
MD5 2c7601661bf1735e6b5e8f830118520a
BLAKE2b-256 92602516b4c3bc332794517f3b9f674f731c53d7f3e12c8fb76758880fad0111

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 c1832ef73d3f04decc530406e31bd0171970f8101b11e8030eacda228b75f678
MD5 09db537ecafbe58aba6a9d37947120fe
BLAKE2b-256 57caa42d501be21c0906a19d6dad84a6f517565b4eeef6aeed6b00300b5a3db7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for waxell_observe-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 346bcda973e3eb2b2ee654a2b7bfddf8b1eaca04f07fc33964895d3a8b8afdf7
MD5 d129431f476ed53261b207576d2f92a6
BLAKE2b-256 6b7857e82ecf64e5616f859acc4d53ed1b9f1ad915c500d000d482ed11987a3d

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