Skip to main content

A modern, async-first HTTP client library for Python

Project description

Reqivo

Python PyPI Coverage Build


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


🔧 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reqivo-0.2.0.tar.gz (79.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reqivo-0.2.0-py3-none-any.whl (31.9 kB view details)

Uploaded Python 3

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

Hashes for reqivo-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f72f0d34a1eeb60ec86de6cfa2424ab20bc4b02bdcf4a6bd9f466cccd0c19ab8
MD5 04326fb694ed3301b0a1f12995885a59
BLAKE2b-256 d83a9386cb36000b6392d52d6ed51d6338e3e98923d7a2b814dfaf5dec37e43a

See more details on using hashes here.

Provenance

The following attestation bundles were made for reqivo-0.2.0.tar.gz:

Publisher: release.yml on roldriel/reqivo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for reqivo-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1399881ceb194c708f5becf6d614cabdf512fe30667ecdc944bb7662e452f9ad
MD5 a711e0d40669c783af719512ebb0ceb6
BLAKE2b-256 c2802f1e216e75be338b32918a233907f274cece975464753143a72140247477

See more details on using hashes here.

Provenance

The following attestation bundles were made for reqivo-0.2.0-py3-none-any.whl:

Publisher: release.yml on roldriel/reqivo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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