waxell
Docs · Quickstart · CLI Reference · Observability · Coming from LangChain/CrewAI?
Build and run governed AI agents. One install gets you the durable execution
engine (spawn/suspend, budget enforcement, governance hooks, lineage), the
authoring decorators, the wax CLI, and observability:
pip install waxell
Using another agent framework and just want observability + governance on top? That's the standalone observe SDK:
pip install waxell-observe # LangChain, OpenAI Agents, CrewAI, … — no runtime needed
What you get
| Piece | What it is | How you touch it | Docs |
|---|---|---|---|
waxell |
The library — author + run agents | from waxell import agent, workflow, tool |
Runtime quickstart |
wax |
The CLI — push, observe, govern from the terminal | wax push, wax runs, wax traces, … |
CLI reference |
waxell.observe |
Observability SDK (the waxell-observe package) |
mostly automatic | Observe overview |
Quick start
from waxell import agent, workflow
@agent(name="lead_research", description="Research a lead and draft outreach")
class LeadResearch:
@workflow("draft_email")
async def draft(self, ctx, domain: str):
company = await ctx.tool("fetch_company", domain=domain)
email = await ctx.llm.generate(
prompt=f"Write a 3-sentence intro for {company['name']}",
task="outreach_email",
)
return {"email": email, "company": company["name"]}
Then push and observe it with the CLI (full command reference):
wax login # authenticate (or: wax config init)
wax push ./my-agents # push agents, tools, workflows, and skills
wax runs # browse execution runs
wax traces # explore distributed traces
Full walkthrough: runtime quickstart · agent/workflow/tool spec reference: SDK docs
What's in the box
-
Execution engine —
ExecutionContext,WorkflowEnvelope, durableStep, checkpoint/resume,ctx.spawn/ctx.spawn_many, tree-budget enforcement. -
Governance — pluggable
GovernanceHook, in-runtime policy bridge, AXID mint/verify, lineage. -
Framework adapters — run governed LangGraph, CrewAI, Pydantic AI, AutoGen, and Claude Agent SDK agents (migration guides). Each adapter's framework dependency is optional:
pip install "waxell[langgraph]" pip install "waxell[all]" # every adapter
-
Authoring —
agent,workflow,router,tool,policydecorators, spec types, memory helpers, and typedContextobjects for IDE autocomplete. -
Observability — every run traced; cost, tokens, and policy decisions in the Waxell dashboard via
waxell.observe.
Import aliases: from waxell import agent is the documented path;
from waxell_runtime import agent works too and is kept forever. The internal
waxell_sdk package bundled in this wheel is an implementation detail — never
import it directly.
Development (monorepo)
# Editable install keeps protected modules as readable .py (no Cython)
pip install -e runtime/waxell-runtime
# The internal waxell_sdk is synced into src/ at build/install time from
# ../../sdk/waxell-sdk — that synced copy is gitignored. Source of truth is
# agentforge/sdk/waxell-sdk/.
cd runtime/waxell-runtime && hatch run types:check
pytest runtime/waxell-runtime/tests/ -v
License
waxell is distributed under the terms of the MIT license.
Metadata
Release files for waxell 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 37.6 MB
Release files / waxell-0.1.5-cp314-cp314-win_amd64.whl
| Download URL | waxell-0.1.5-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8658f7789ad9bd1119f7145934d390e32eaf6bbf733b183a618001e720d13056
|
|
BLAKE2b-256 checksum How to use checksums |
0d3ace9bd63600684c6a24aa279a8435a4f17b5fce81d743c3012c04415e4065
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / waxell-0.1.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | waxell-0.1.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ebee4c788c57ba0280bf537307aeb3a5f8c41ffe95429cf943255fda589cc8c3
|
|
BLAKE2b-256 checksum How to use checksums |
96786e61695172c957a14d77e3bb9c0ff01b43ffc533c727de6bb783767abe95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | waxell-0.1.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
da93a208fb2810386977fc9deb9b7ba1808a0ef0b05dba7c21af4d392e4668ef
|
|
BLAKE2b-256 checksum How to use checksums |
02656f9728b90abede3fbaa2a67d3ad31f9e5c635900894beac9330f4332c887
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp314-cp314-macosx_11_0_x86_64.whl
| Download URL | waxell-0.1.5-cp314-cp314-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
0812bded4cfbbe5d7cd9269fcb3c866903fca2f36420073c12f0000a8f39b717
|
|
BLAKE2b-256 checksum How to use checksums |
51987efa88204dd165afd70c6fc3ed55db53f1eac7a2bf8f6fc869f4970dddd6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | waxell-0.1.5-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dce5aea233b55a08089b92260bc5a34ff0250d5a8c947595cbf0209db0293aa8
|
|
BLAKE2b-256 checksum How to use checksums |
8a128d7b1b173960fd1a45e44be1f3cc69dae24e5d5a37edcb2a6f8e26097932
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp313-cp313-win_amd64.whl
| Download URL | waxell-0.1.5-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
97cb0d127fcc1c4b68627c1f34d8fd7da1b5c8f27eb4ce12491c5ef7649631f0
|
|
BLAKE2b-256 checksum How to use checksums |
d3439c4c83022e3e6b1dbd75ec8e7f4b04221d7d70dad38a96741fab421ca6d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / waxell-0.1.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | waxell-0.1.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
61c0bed304ae89a6fdb72a80fb215ed334b40e5e815d87bc4aef92e84dda135b
|
|
BLAKE2b-256 checksum How to use checksums |
9b308ac5d4de8b9f9bc054c127216c5fc1fbbb6794749555e8175fb80887968f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | waxell-0.1.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
d068a944e39c9a17b1268b00d6752415ed26d1fe5e91d46d8d5804b7083163f6
|
|
BLAKE2b-256 checksum How to use checksums |
3227dd45e20794c34a36cfaf9fc141e98169e9d76f56f0c8d30e44263af15725
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp313-cp313-macosx_11_0_x86_64.whl
| Download URL | waxell-0.1.5-cp313-cp313-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
e36b1230420ec055f06d1b93f771501598e812295c3f53c8fa217c595c4dc875
|
|
BLAKE2b-256 checksum How to use checksums |
78303117d6182f3920ac2f35e2cba3ef4b8e49a71446448d7965b7afddcbd88c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | waxell-0.1.5-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ea45cf01785dc50c7a4ad9269dfe12638a5e9e97e1964c22f43970d7da5bec0a
|
|
BLAKE2b-256 checksum How to use checksums |
cec58acaccb3af8fb225659b6b59402ab185e0282046583e6c1090dcd56be801
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp312-cp312-win_amd64.whl
| Download URL | waxell-0.1.5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
022f009cdb89f2be9fb45b0c94d3045d01e98b9711eefa9d7856364131bd1709
|
|
BLAKE2b-256 checksum How to use checksums |
36976b5b94cea133610865c86d15f92ff3901150f193dfe5c8be2226a2641eee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / waxell-0.1.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | waxell-0.1.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0cd4045213185ed1451f510bf2e6de5c4fd943f19c3bc3c7fa3f08f9ce074810
|
|
BLAKE2b-256 checksum How to use checksums |
aa7bd5bb40c2abdad95a806f6e9a0f3a3b044cf1a88b18300986b44b487a393d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | waxell-0.1.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
d8371baba85ff9545889baeb4a628bf45437891e635d8261877b51a6d98e7b3a
|
|
BLAKE2b-256 checksum How to use checksums |
540a245f01142b48f0df1e870c165c801b28e32fe7347284c362fb2fb14bf570
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp312-cp312-macosx_11_0_x86_64.whl
| Download URL | waxell-0.1.5-cp312-cp312-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
a9c9bc1ec55eb8b1b7b0576e93ddfce2c08447c4c6e52a0f5f91eb72adad2450
|
|
BLAKE2b-256 checksum How to use checksums |
ac9eadf073f0f8245eb13209e4b18298edcc53346e916d11ba6d12b5f2fd25ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | waxell-0.1.5-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c3bd62177a4890985a501a1191fd6161a073812d251a15f3d4bbf7c31125c511
|
|
BLAKE2b-256 checksum How to use checksums |
4fe20daddb99a58213014af2bfb8a41f1000741462b7f592629151e0972201ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp311-cp311-win_amd64.whl
| Download URL | waxell-0.1.5-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e696d90d2c16799440716a6e24b699c1907461966a6551844362b4a2b1ca5bc6
|
|
BLAKE2b-256 checksum How to use checksums |
ea20889c07c70e7c00f14708aba54f89cf227eb14af019391183df840ce2b4bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / waxell-0.1.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | waxell-0.1.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a31d99ae488bbc9c40c71dee2b39eab76d2cb23751a19f1214459dc894f617c8
|
|
BLAKE2b-256 checksum How to use checksums |
57a50271ed219e9c48113c1cc7f5c8bdc6803999d1503a3a3b381194c48566a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | waxell-0.1.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
8751c985f4d415f7bd40389067a926065174ead8c2a528ea8abc2cda46a5363b
|
|
BLAKE2b-256 checksum How to use checksums |
b9d781f9282ef58ddc04af1ed14eb4bd1f57c81773776c9dc0ac42d2d6aba1ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp311-cp311-macosx_11_0_x86_64.whl
| Download URL | waxell-0.1.5-cp311-cp311-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
749392382a073ba4243baba062bada26a6659868e656ce567199a82de41ca4a9
|
|
BLAKE2b-256 checksum How to use checksums |
f2eb1d710bd1fcd2c6b9d9b694973864c4d0e67d02b7067415e55c7b096cc2f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | waxell-0.1.5-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7552493757b2ed9511bff06e3616fdad8eb02c03fa6d687a35070f52e668a992
|
|
BLAKE2b-256 checksum How to use checksums |
e088cd6a5b61156242c75dc07b5510fefc896ffabfa5fde7ebc369a7e37f7753
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp310-cp310-win_amd64.whl
| Download URL | waxell-0.1.5-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
04c8357adaf56c33c189ab213045fb9eff3deebe990bd19342a01a4e628e5498
|
|
BLAKE2b-256 checksum How to use checksums |
f18ac4c28f09bdb768acfe776cee947e0735764edd2d7f530a9a9794fc24081d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / waxell-0.1.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | waxell-0.1.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b1d087c12523b73166da52bd72943d05c77b7b73f888a02ed8b619156a84e0fe
|
|
BLAKE2b-256 checksum How to use checksums |
83a9ece31214d4a4209d1abafec070ac172b29e121258cd5ccafee643d6c914e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | waxell-0.1.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
5948d16ba11448dfeeb9f5c1a58d9b87e82e1316932afa99e4db8a22a0ac9175
|
|
BLAKE2b-256 checksum How to use checksums |
a4521d52145b1c98099d3e1e66b0449438afbc0bdf6835e8494a6b373cc990f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.13
|
Release files / waxell-0.1.5-cp310-cp310-macosx_11_0_x86_64.whl
| Download URL | waxell-0.1.5-cp310-cp310-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
2c21efb19837352759bdddbbfb6bde758284d68c8248a71e4433efa0b53d6c58
|
|
BLAKE2b-256 checksum How to use checksums |
051217a5e13eb9ffa80a4590e1d69099a4ca9b61623c419eddb899767053a44a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / waxell-0.1.5-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | waxell-0.1.5-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8f157317a9aa6164744d5741be7824e9eb87e7b881765d75b89acbde0128f5f2
|
|
BLAKE2b-256 checksum How to use checksums |
b7340dd8024868e5bca3aeaeb20b162cc30d2ccdbf3886a90e36be8b32427315
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for waxell 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.