capo - capo

2 min read Original article ↗

capo (caporegime)

Community-driven AWS SDK for Python. Manage AWS services like a capo.

Features

  • async and sync — Use the same API for both async and sync code, with support for asyncio and trio.
  • WASM support — Runs in WASM environments via Pyodide.
  • typed and documented — Fully typed and documented for a better developer experience.
  • simple inputs — No need to import separate parameter classes; nested inputs are fully typed via TypedDicts.
  • generated from Smithy models — The SDK is generated from the official Smithy models describing AWS APIs, ensuring accuracy and consistency.
  • zero runtime overhead — Codegen produces dedicated serialization and deserialization code for each operation, avoiding reflection.
  • interchangeable input/output — Input and output types use the same TypedDicts, so you can pass a response directly as input when appropriate.
  • built on zapros — A modern HTTP client for Python that abstracts HTTP semantics from the transport implementation.
  • fast to import — import time stays flat even for huge services like EC2.
  • interceptors — Hook into the operation request/response lifecycle to inspect, log, or modify calls.

Warning The API should be mostly stable, but some breaking changes may occur as the SDK is still in early development. We strongly recommend pinning the version before the first major release.

Installation

Every service is a standalone package, so you only install the ones you actually use. Packages are published under the capo- prefix:

uv add capo-ec2                        # Amazon EC2 (also covers Amazon VPC)
uv add capo-s3                         # Amazon S3
uv add capo-iam                        # AWS IAM
uv add capo-rds                        # Amazon RDS
uv add capo-lambda                     # AWS Lambda
uv add capo-cloudwatch                 # Amazon CloudWatch
uv add capo-elastic-load-balancing     # Elastic Load Balancing (ELB)
uv add capo-route-53                   # Amazon Route 53
uv add capo-cloudfront                 # Amazon CloudFront

Note that Amazon VPC has no separate package — its API is part of EC2, so capo-ec2 covers it.

Services not yet on PyPI

Not every service is on PyPI yet. We publish incrementally because of PyPI's limits on new projects and total upload size. If the service you need isn't published, please open an issue so we can prioritize publishing it.