HTTPX
A next-generation HTTP client for Python with sync, async, and HTTP/2 support
Repository Health
Technical Analysis
HTTPX is a fully featured HTTP client for Python 3 that provides a broadly requests-compatible API while adding first-class support for both synchronous and asynchronous programming models. It supports HTTP/1.1 and HTTP/2 out of the box, ships an optional command-line client, and can dispatch requests directly to WSGI or ASGI applications for in-process testing.
Built by the Encode organization (also behind Starlette and Uvicorn), HTTPX layers a friendly, typed API on top of the lower-level httpcore transport library, giving developers connection pooling, streaming responses, proxy support, and strict timeout handling without sacrificing the ergonomics that made requests popular.
What You Get
- A
Client/AsyncClientpair with identical APIs for sync and async code, plus module-levelhttpx.get()/httpx.post()shortcuts - Native HTTP/2 support (opt-in via the
http2extra) alongside HTTP/1.1 - Direct-to-app transports (
WSGITransport,ASGITransport) for testing web apps without a running server - Connection pooling, streaming request/response bodies, and multipart file uploads
- A pluggable
httpcore-based transport layer with aMockTransportfor unit-testing HTTP calls - An optional CLI (
httpx[cli]) for making requests from the terminal with syntax-highlighted output
Common Use Cases
- Calling external REST APIs from a Python backend service, sync or async
- Writing integration tests for FastAPI/Starlette apps via
ASGITransportwithout binding a real port - Streaming large file downloads or uploads with bounded memory usage
- Migrating an existing
requests-based codebase to async with minimal API changes - Building HTTP/2-aware clients that need multiplexed connections to modern APIs
Under The Hood
Architecture — HTTPX separates concerns cleanly across a few layers: _client.py (2,019 lines) defines a BaseClient holding shared state (auth, headers, cookies, timeouts, redirect policy) that both the synchronous Client and asynchronous AsyncClient subclass; _api.py exposes stateless module-level functions (get, post, request, stream, etc.) that construct a short-lived Client under the hood for one-off calls; _models.py (1,277 lines) implements Request/Response/Headers/URL value objects; and the _transports/ package (default.py, asgi.py, wsgi.py, mock.py, base.py) implements the actual wire-level dispatch, delegating real network I/O to the httpcore library while ASGITransport/WSGITransport bypass the network entirely to call an application object in-process — this is what makes HTTPX popular for testing async web frameworks.
Tech Stack — Pure Python 3.9+, built with hatchling/hatch-fancy-pypi-readme. Core runtime dependencies are minimal and deliberate: httpcore==1.* (transport), certifi (CA bundle), idna (IDN support), and anyio (async concurrency abstraction, enabling both asyncio and Trio backends). Optional extras (h2 for HTTP/2, socksio for SOCKS proxies, click/rich/pygments for the CLI, brotli/zstandard for extra content-encoding support) keep the base install lean while allowing opt-in capability.
Code Quality — The project advertises and maintains 100% test coverage (tool.coverage.run config enforces this), with 37 test modules under tests/ covering client behavior, transports, models, and edge cases like redirects and multipart encoding. Strict mypy mode is enabled project-wide (tool.mypy: strict = true), and ruff lint rules (E, F, I, B, PIE) are enforced. Internal modules use a leading-underscore convention (_client.py, _models.py) to clearly separate public API surface (re-exported via __init__.py) from implementation detail.
API Design — HTTPX deliberately mirrors the requests API (httpx.get(url), response .json()/.text/.status_code) so migration is close to a drop-in replacement, while extending it with async def equivalents on AsyncClient using the identical method names and signatures. Context-manager usage (with httpx.Client() as client: / async with httpx.AsyncClient() as client:) is the documented idiom for connection reuse, and the library is fully type-annotated, giving strong editor autocomplete and static-analysis support out of the box.
Used by 86 apps in this directory
Promptfoo
AI Development
An open-source CLI and library for evaluating and red-teaming LLM applications — replace trial-and-error prompt engineering with systematic evals, vulnerability scanning, and CI/CD integration.
Rasa Open Source
AI Assistants · AI Development · Voice AI
Rasa Open Source is a Python machine learning framework for building contextual, multi-turn chatbots and voice assistants that understand natural language and maintain conversation state.
rowboat
AI Assistants · AI Development
Build, test, and deploy multi-agent AI workflows with a visual editor, RAG data sources, MCP tool integration, and a production-ready REST API.
Scalar
Developer Tools
Beautiful, interactive OpenAPI documentation with a built-in offline-first API client and multi-language code generation — all in one open-source platform.
SearXNG
Search
Privacy-first metasearch engine that aggregates results from 250+ search services — no tracking, no profiling, full control when self-hosted.
Second Me
AI Assistants · Productivity
Train a locally hosted AI twin on your own memories—then connect it to the world through a decentralized identity network.
Sentry
Analytics · Developer Tools · Monitoring
Developer-first error tracking and performance monitoring platform with AI-powered root-cause analysis across 20+ languages and frameworks.
Shadowbroker
Analytics · Monitoring · Security
Self-hosted OSINT dashboard that fuses 60+ live intelligence feeds — flight tracking, ship AIS, satellites, CCTV, seismic and radio networks — into one real-time map, with an agent-ready command channel for AI co-analysts.
Skyvern
AI Agents · Automation
Skyvern (YC S2023) automates browser-based workflows by pairing LLMs with computer vision, letting agents click, fill, and extract data on sites they've never seen, without brittle XPath selectors that break on every layout change.