A modern, async-first HTTP client library for Python
Project description
Reqivo
Modern, async-first HTTP client for Python · Zero external dependencies · Built on standard library
🚀 TL;DR
from reqivo import AsyncSession
import asyncio
async def main():
async with AsyncSession() as session:
response = await session.get('https://api.github.com/users/octocat')
print(response.json())
asyncio.run(main())
✨ What is Reqivo?
Reqivo is a modern, async-first HTTP client library built entirely on Python's standard library. No external dependencies, pure performance.
Philosophy
Reqivo is not a requests replacement. It's a modern HTTP foundation.
Reqivo exists to bridge the gap between low-level socket/ssl usage and the need for a fast, modern HTTP client:
- Using only the standard library (Python 3.9+)
- Providing an async-first API with sync support
- Supporting modern protocols (HTTP/1.1, HTTP/2, WebSockets)
- Maintaining zero external dependencies for maximum portability
Reqivo is for:
- Developers who want async HTTP without heavyweight dependencies
- Teams building cloud-native applications
- Projects where dependencies matter (embedded systems, security-critical apps)
- Anyone seeking performance and simplicity
📦 Installation
pip install reqivo
🧪 Basic Example
Sync Usage
from reqivo import Session
session = Session()
response = session.get('https://api.example.com/data')
print(response.status) # 200
print(response.json()) # {"key": "value"}
Async Usage
import asyncio
from reqivo import AsyncSession
async def fetch():
async with AsyncSession() as session:
response = await session.get('https://api.example.com/data')
return response.json()
asyncio.run(fetch())
WebSocket Support
from reqivo import WebSocket
ws = WebSocket('wss://echo.websocket.org')
ws.connect()
ws.send('Hello WebSocket!')
message = ws.receive()
ws.close()
🔍 Key Features
- ✅ Zero external dependencies: Pure Python (Python 3.9+)
- ✅ Async-first design: Built for modern async/await workflows
- ✅ Sync support: Also works in synchronous code
- ✅ HTTP/1.1 support: Full protocol implementation
- ✅ WebSocket support: Sync and async WebSocket clients
- ✅ Connection pooling: Automatic connection reuse for performance
- ✅ Type hints: Fully typed following PEP 561
- ✅ Memory efficient: Optimized with
__slots__where beneficial - ✅ Comprehensive testing: 97%+ test coverage
Roadmap Features
- 🔄 HTTP/2 support (Planned v0.5.0)
- 🔄 HTTP/3/QUIC (Research phase)
- 🔄 Advanced retry strategies (Planned v0.3.0)
- 🔄 Request/Response interceptors (Planned v0.4.0)
🧾 Comparison with other libraries
Why not requests, httpx, or aiohttp?
| Feature | Reqivo | requests | httpx | aiohttp |
|---|---|---|---|---|
| Zero dependencies | ✅ | ❌ | ❌ | ❌ |
| Async/await native | ✅ | ❌ | ✅ | ✅ |
| Sync support | ✅ | ✅ | ✅ | ❌ |
| WebSocket support | ✅ | ❌ | ✅ | ✅ |
| HTTP/2 support | 🔄 | ❌ | ✅ | ✅ |
| Connection pooling | ✅ | ✅ | ✅ | ✅ |
| Type hints (PEP 561) | ✅ | ⚠️ | ✅ | ⚠️ |
Memory optimized (__slots__) |
✅ | ❌ | ❌ | ⚠️ |
| Coverage tested ≥ 97% | ✅ | ❓ | ✅ | ❓ |
| Standard library only | ✅ | ❌ | ❌ | ❌ |
Note: Benchmark suite coming soon in a future release.
📚 Documentation & Examples
Comprehensive examples and documentation are available in the Examples Directory:
📖 Guides
- Quick Start - Installation, basic GET/POST, async introduction
- Async Patterns - Concurrent requests, async patterns
- Session Management - Cookies, authentication, persistent connections
- Error Handling - Exception handling, retry logic, circuit breaker
- Advanced Usage - Connection pooling, streaming, WebSockets
🔧 Development & Testing
Run Tests
# Run all tests with tox
tox
# Run specific Python version
tox -e py312
# Run with coverage
tox -e py312
coverage html && open htmlcov/index.html
📖 Requirements
- Python 3.9 or higher
- No external dependencies for core functionality
🤝 Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
📝 License
MIT © 2026 — Rodrigo Ezequiel Roldán
View full license
🗺️ Roadmap & Changelog
- CHANGELOG - Version history and release notes
- GitHub Issues - Bug reports and feature requests
- Milestones - Planned features and development timeline
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reqivo-0.2.0.tar.gz.
File metadata
- Download URL: reqivo-0.2.0.tar.gz
- Upload date:
- Size: 79.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f72f0d34a1eeb60ec86de6cfa2424ab20bc4b02bdcf4a6bd9f466cccd0c19ab8
|
|
| MD5 |
04326fb694ed3301b0a1f12995885a59
|
|
| BLAKE2b-256 |
d83a9386cb36000b6392d52d6ed51d6338e3e98923d7a2b814dfaf5dec37e43a
|
Provenance
The following attestation bundles were made for reqivo-0.2.0.tar.gz:
Publisher:
release.yml on roldriel/reqivo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reqivo-0.2.0.tar.gz -
Subject digest:
f72f0d34a1eeb60ec86de6cfa2424ab20bc4b02bdcf4a6bd9f466cccd0c19ab8 - Sigstore transparency entry: 944475146
- Sigstore integration time:
-
Permalink:
roldriel/reqivo@11f3207343011e61f512e1e564f177cd2d7dc1c9 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/roldriel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@11f3207343011e61f512e1e564f177cd2d7dc1c9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file reqivo-0.2.0-py3-none-any.whl.
File metadata
- Download URL: reqivo-0.2.0-py3-none-any.whl
- Upload date:
- Size: 31.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1399881ceb194c708f5becf6d614cabdf512fe30667ecdc944bb7662e452f9ad
|
|
| MD5 |
a711e0d40669c783af719512ebb0ceb6
|
|
| BLAKE2b-256 |
c2802f1e216e75be338b32918a233907f274cece975464753143a72140247477
|
Provenance
The following attestation bundles were made for reqivo-0.2.0-py3-none-any.whl:
Publisher:
release.yml on roldriel/reqivo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reqivo-0.2.0-py3-none-any.whl -
Subject digest:
1399881ceb194c708f5becf6d614cabdf512fe30667ecdc944bb7662e452f9ad - Sigstore transparency entry: 944475185
- Sigstore integration time:
-
Permalink:
roldriel/reqivo@11f3207343011e61f512e1e564f177cd2d7dc1c9 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/roldriel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@11f3207343011e61f512e1e564f177cd2d7dc1c9 -
Trigger Event:
push
-
Statement type: