Skip to main content

httpr

CodSpeed

Blazing fast http-client for Python in Rust 🦀 that can be used as drop-in replacement for httpx and requests in most cases.

  • Fast: httpr is built on top of reqwests, which is a blazing fast http client in Rust. Check out the benchmark.
  • Both async and sync: httpr provides both a sync and async client.
  • Lightweight: httpr is a lightweight http client with zero python-dependencies.
  • Async: first-class async support.
  • Streaming: supports streaming responses for efficient memory usage with large payloads.
  • http2: httpr supports HTTP/2.
  • mTLS: httpr supports mTLS.

Not implemented yet

  • Fine-grained error handling: Fine-grained error handling is not implemented yet.

Documentation

📖 Full documentation: thomasht86.github.io/httpr

🤖 LLM-friendly docs: llms.txt | llms-full.txt

Table of Contents

Installation

Install with uv

uv add httpr

or

uv pip install httpr

Install from PyPI

pip install -U httpr

Benchmark

Performance is tracked continuously in two complementary ways:

  • CPU cost per pull request with CodSpeed: tests/benchmark/codspeed/ runs under CodSpeed's CPU simulation instrument on every PR and every push to main, so a regression in decoding, request building or transfer handling is reported on the PR that introduces it. See tests/benchmark/codspeed/README.md.
  • Wall-clock trend over time with github-action-benchmark: on every push to main, tests/benchmark/test_performance.py runs in CI and the results are published as interactive charts.

📈 View live benchmark results

Against other clients, benchmark/benchmark.py is run every Monday against the latest release of each library (requests, httpx, httpx2, aiohttp, curl_cffi, pycurl, tls_client) and published at thomasht86.github.io/httpr/dev/bench/compare, with the full tables and raw CSVs. Seconds for 400 requests against a local server, lower is better:

HTTP client comparison

To run the benchmarks locally, see benchmark/README.md.

Usage

I. Client

class Client:
    """Initializes an HTTP client.

    Args:
        auth (tuple[str, str| None] | None): Username and password for basic authentication. Default is None.
        auth_bearer (str | None): Bearer token for authentication. Default is None.
        params (QueryParamTypes | None): Default query parameters to include in all requests, merged with
            each request's own `params` (the request wins per key). Default is None.
        headers (dict[str, str] | None): Default headers to send with requests. 
        cookies (dict[str, str] | None): - Map of cookies to send with requests as the `Cookie` header.
        timeout (float | None): Timeout in seconds for waiting on the server: for the response headers,
            then for each chunk of the body, so a response that keeps arriving is never cut off. Default is 30;
            `None` disables it.
        cookie_store (bool | None): Enable a persistent cookie store. Received cookies will be preserved and included
            in additional requests. Default is True.
        referer (bool | None): Enable or disable automatic setting of the `Referer` header. Default is True.
        proxy (str | None): Proxy URL for HTTP requests. Example: "socks5://127.0.0.1:9150". Default is None.
        follow_redirects (bool | None): Whether to follow redirects. Default is True.
        max_redirects (int | None): Maximum redirects to follow. Default 20. Applies if `follow_redirects` is True.
        verify (bool | None): Verify SSL certificates. Default is True.
        ca_cert_file (str | None): Path to CA certificate store. Default is None.
        https_only` (bool | None): Restrict the Client to be used with HTTPS only requests. Default is `false`.
        http2_only` (bool | None): Speak HTTP/2 from the first byte (prior knowledge), including cleartext h2c on
            `http://` URLs. Default is `false`, which negotiates: over TLS, HTTP/2 when the server offers it,
            otherwise HTTP/1.1; plain `http://` uses HTTP/1.1.
        http1_only` (bool | None): Only use HTTP/1.1, never HTTP/2. Cannot be combined with `http2_only`.
            Default is `false`.

    """

Client lifecycle

A Client owns a connection pool. Use it as a context manager, or call close() when you are done, to release the pooled connections back to the OS:

with httpr.Client() as client:
    client.get("https://httpbin.org/get")
# pool released here

client = httpr.Client()
try:
    client.get("https://httpbin.org/get")
finally:
    client.close()  # idempotent

Requests that are still in flight when close() is called (including open stream() responses) finish normally; the pool is released as soon as the last of them completes. A request made afterwards reopens the client with a fresh pool, the way a requests.Session does, and emits httpr.ClientReopenedWarning (a ResourceWarning, silent by default). Run with -W error::httpr.ClientReopenedWarning or warnings.simplefilter("error", httpr.ClientReopenedWarning) to get httpx's strict use-after-close behaviour instead. client.is_closed tells you which state a client is in. AsyncClient offers the same via aclose() / async with, and additionally shuts down its own thread pool. A client that is garbage-collected without being closed releases its pool too, but only once the interpreter gets to it, so prefer closing explicitly.

Client methods

The Client class provides a set of methods for making HTTP requests: get, head, options, delete, post, put, patch, each of which internally utilizes the request() method for execution. The parameters for these methods closely resemble those in httpx.

def get(
    url: str,
    params: QueryParamTypes | None = None,
    headers: dict[str, str] | None = None,
    cookies: dict[str, str] | None = None,
    auth: tuple[str, str| None] | None = None,
    auth_bearer: str | None = None,
    timeout: float | None = 30,
):
    """Performs a GET request to the specified URL.

    Args:
        url (str): The URL to which the request will be made.
        params (QueryParamTypes | None): Query parameters to append to the URL, merged with the client's.
            Values may be str, int, float, bool (sent as `true`/`false`), None (sent empty) or a
            list/tuple of those, which repeats the key. Default is None.
        headers (dict[str, str] | None): A map of HTTP headers to send with the request. Default is None.
        cookies (dict[str, str] | None): Cookies to send with the request, merged with the client's into
            a single `Cookie` header.
        auth (tuple[str, str| None] | None): A tuple containing the username and an optional password
            for basic authentication. Default is None.
        auth_bearer (str | None): A string representing the bearer token for bearer token authentication. Default is None.
        timeout (float | None): The timeout for the request in seconds. Default is 30.

    """
def post(
    url: str,
    params: QueryParamTypes | None = None,
    headers: dict[str, str] | None = None,
    cookies: dict[str, str] | None = None,
    content: bytes | None = None,
    data: dict[str, Any] | None = None,
    json: Any | None = None,
    files: dict[str, str] | None = None,
    auth: tuple[str, str| None] | None = None,
    auth_bearer: str | None = None,
    timeout: float | None = 30,
):
    """Performs a POST request to the specified URL.

    Args:
        url (str): The URL to which the request will be made.
        params (QueryParamTypes | None): Query parameters to append to the URL, merged with the client's.
            Values may be str, int, float, bool (sent as `true`/`false`), None (sent empty) or a
            list/tuple of those, which repeats the key. Default is None.
        headers (dict[str, str] | None): A map of HTTP headers to send with the request. Default is None.
        cookies (dict[str, str] | None): Cookies to send with the request, merged with the client's into
            a single `Cookie` header.
        content (bytes | None): The content to send in the request body as bytes. Default is None.
        data (dict[str, Any] | None): The form data to send in the request body; values are converted
            like `params`, so a list repeats the field. Default is None.
        json (Any | None): A JSON serializable object to send in the request body. Default is None.
        files (dict[str, str] | None): A map of file fields to file paths to be sent as multipart/form-data. Default is None.
        auth (tuple[str, str| None] | None): A tuple containing the username and an optional password
            for basic authentication. Default is None.
        auth_bearer (str | None): A string representing the bearer token for bearer token authentication. Default is None.
        timeout (float | None): The timeout for the request in seconds. Default is 30.

    """

Response object

The Client class returns a Response object that contains the following attributes and methods:

resp.content
resp.cookies
resp.encoding
resp.headers
resp.json()
resp.status_code
resp.reason_phrase  # e.g. "OK", "Not Found"
resp.raise_for_status()  # raise HTTPStatusError on non-2xx (returns self)
resp.is_informational  # 1xx
resp.is_success  # 2xx
resp.is_redirect  # 3xx
resp.is_client_error  # 4xx
resp.is_server_error  # 5xx
resp.is_error  # 4xx or 5xx
resp.has_redirect_location  # 3xx with a Location header
resp.text
resp.text_markdown  # html is converted to markdown text using html2text-rs
resp.text_plain  # html is converted to plain text
resp.text_rich  # html is converted to rich text
resp.url

raise_for_status() follows httpx semantics: any non-2xx status raises HTTPStatusError (not just 4xx/5xx as in requests).

Streaming responses

The Client class supports streaming responses for efficient memory usage when handling large payloads. Use the stream() context manager to iterate over response data without buffering the entire response in memory.

# Stream bytes chunks
with client.stream("GET", "https://example.com/large-file") as response:
    print(f"Status: {response.status_code}")
    for chunk in response.iter_bytes():
        process(chunk)

# Stream text chunks
with client.stream("GET", "https://example.com/text") as response:
    for text in response.iter_text():
        print(text, end="")

# Stream line by line (useful for Server-Sent Events)
with client.stream("GET", "https://example.com/events") as response:
    for line in response.iter_lines():
        print(line.strip())

# Read entire response (if needed after checking headers)
with client.stream("GET", url) as response:
    if response.status_code == 200:
        content = response.read()

StreamingResponse attributes:

  • status_code - HTTP status code
  • reason_phrase - Canonical reason phrase (e.g. "OK")
  • raise_for_status() - Raise HTTPStatusError on a non-2xx status (returns self)
  • is_success / is_error / is_redirect / ... - Status-class helpers (same as Response)
  • headers - Response headers (case-insensitive)
  • cookies - Response cookies
  • url - Final URL after redirects
  • is_closed - Whether the stream has been closed
  • is_consumed - Whether the stream has been fully consumed

StreamingResponse methods:

  • iter_bytes() - Iterate over response as bytes chunks
  • iter_text() - Iterate over response as text chunks (decoded using response encoding)
  • iter_lines() - Iterate over response line by line
  • read() - Read entire remaining response body into memory
  • close() - Close the stream and release resources

Important notes:

  • Streaming must be used as a context manager (with statement)
  • Headers, cookies, and status code are available immediately before reading the body
  • The response body is only read when you iterate over it or call read()
  • Once consumed, the stream cannot be read again
  • Streaming is supported for all HTTP methods (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)

Examples

import httpr

# Initialize the client
client = httpr.Client() 

# GET request
resp = client.get("https://tls.peet.ws/api/all")
print(resp.json())

# GET request with passing params and setting timeout
params = {"param1": "value1", "param2": "value2"}
resp = client.post(url="https://httpbin.org/anything", params=params, timeout=10)
print(r.text)

# POST Binary Request Data
content = b"some_data"
resp = client.post(url="https://httpbin.org/anything", content=content)
print(r.text)

# POST Form Encoded Data
data = {"key1": "value1", "key2": "value2"}
resp = client.post(url="https://httpbin.org/anything", data=data)
print(r.text)

# POST JSON Encoded Data
json = {"key1": "value1", "key2": "value2"}
resp = client.post(url="https://httpbin.org/anything", json=json)
print(r.text)

# POST Multipart-Encoded Files
files = {'file1': '/home/root/file1.txt', 'file2': 'home/root/file2.txt'}
r = client.post("https://httpbin.org/post", files=files)
print(r.text)

# Authentication using user/password
auth = ("user", "password")
resp = client.post(url="https://httpbin.org/anything", auth=auth)
print(r.text)

# Authentication using auth bearer
auth_bearer = "bearerXXXXXXXXXXXXXXXXXXXX"
resp = client.post(url="https://httpbin.org/anything", auth_bearer=auth_bearer)
print(r.text)

# Using proxy or env var HTTPR_PROXY
resp = httpr.Client(proxy="http://127.0.0.1:8080").get("https://tls.peet.ws/api/all")
print(resp.json())
export HTTPR_PROXY="socks5://127.0.0.1:1080"
resp = httpr.Client().get("https://tls.peet.ws/api/all")
print(resp.json())

# Using custom CA certificate store: ca_cert_file param, or env var HTTPR_CA_BUNDLE as the default
# (ca_cert_file applies only to the client it is passed to and never modifies the environment)
resp = httpr.Client(ca_cert_file="/cert/cacert.pem").get("https://tls.peet.ws/api/all")
print(resp.json())
resp = httpr.Client(ca_cert_file=certifi.where()).get("https://tls.peet.ws/api/all")
print(resp.json())
export HTTPR_CA_BUNDLE="/home/user/Downloads/cert.pem"
resp = httpr.Client().get("https://tls.peet.ws/api/all")
print(resp.json())

# You can also use convenience functions that use a default Client instance under the hood:
# httpr.get() | httpr.head() | httpr.options() | httpr.delete() | httpr.post() | httpr.patch() | httpr.put()
resp = httpr.get("https://httpbin.org/anything")
print(r.text)

II. AsyncClient

httpr.AsyncClient() is an asynchronous wrapper around the httpr.Client class, offering the same functions, behavior, and input arguments.

import asyncio
import logging

import httpr

async def aget_text(url):
    async with httpr.AsyncClient() as client:
        resp = await client.get(url)
        return resp.text

async def main():
    urls = ["https://nytimes.com/", "https://cnn.com/", "https://abcnews.go.com/"]
    tasks = [aget_text(u) for u in urls]
    results = await asyncio.gather(*tasks)

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    asyncio.run(main())

Streaming with AsyncClient:

AsyncClient.stream() yields an AsyncStreamingResponse with async for iteration. aiter_bytes(), aiter_text(), aiter_lines() and aread() read each chunk on the client's thread pool, so the event loop keeps serving other tasks while the server is producing data (useful for Server-Sent Events and LLM token streams that stay open for a long time):

async with httpr.AsyncClient() as client:
    async with client.stream("GET", "https://example.com/large-file") as response:
        async for chunk in response.aiter_bytes():
            process(chunk)

    async with client.stream("GET", "https://example.com/events") as response:
        async for line in response.aiter_lines():
            handle(line)

The synchronous iter_bytes(), iter_text(), iter_lines() and read() are still available on the async response, but each step blocks the event loop until the next chunk arrives, so prefer the a-prefixed variants in async code.

Precompiled wheels

Provides precompiled wheels for the following platforms:

  • 🐧 linux: amd64, aarch64, armv7 (aarch64 and armv7 builds are manylinux_2_34 compatible. ubuntu>=22.04, debian>=12)
  • 🐧 musllinux: amd64, aarch64
  • 🪟 windows: amd64
  • 🍏 macos: amd64, aarch64.

Development

This project uses Taskfile for development workflows.

Setup

# Install dependencies
uv sync --extra dev

# Build Rust extension (required after any .rs changes)
uv run maturin develop

# Add hosts entry for e2e tests (one-time setup)
echo '127.0.0.1 httpbun.local' | sudo tee -a /etc/hosts

Running Tests

# List all available tasks
task --list

# Run unit tests only
task test:unit

# Run e2e tests (full workflow: start httpbun → test → stop)
task e2e

# Run e2e tests iteratively (keep httpbun running)
task e2e:local
task test:e2e  # run tests against running container

# Run all tests
task test

Other Tasks

task dev           # Build Rust extension
task check         # Run all checks (lint + test) - use before committing
task test:benchmark    # Wall-clock benchmarks
task test:codspeed     # CodSpeed CPU-simulation benchmarks (requires the codspeed CLI)
task lint          # Run Python linters (ruff + mypy)
task lint:rust     # Run Rust linters (fmt + clippy)
task lint:all      # Run all linters (Python + Rust)
task fmt           # Format Python code with ruff
task fmt:rust      # Format Rust code
task fmt:all       # Format all code (Python + Rust)
task certs         # Generate SSL certificates for e2e tests
task httpbun:start # Start httpbun container
task httpbun:stop  # Stop httpbun container
task httpbun:logs  # Show container logs

Test Structure

  • tests/unit/ - Unit tests using pytest-httpbin (fast, no Docker required)
  • tests/e2e/ - E2E tests using httpbun Docker container with SSL
  • tests/benchmark/test_performance.py - Wall-clock benchmarks published to the live charts
  • tests/benchmark/codspeed/ - CPU benchmarks measured by CodSpeed on every PR

CI

Job PRs Push to main Tags (Release) Manual
lint ✓
test (Python 3.10-3.14) ✓ ✓ ✓
docs (build) ✓
benchmarks (CodSpeed) ✓ ✓ ✓
linux, musllinux, windows, macos, sdist ✓ ✓
release (PyPI publish) ✓ ✓
  • PRs: Run lint, tests across Python 3.10-3.14 matrix, verify docs build, and report the CPU cost of the CodSpeed benchmark suite
  • Push to main: Run tests and the CodSpeed benchmarks, then the separate Benchmark workflow runs the wall-clock suite and publishes results to the live benchmark charts
  • Weekly (Monday 06:00 UTC): The Client comparison workflow benchmarks httpr against the latest release of each other client and publishes the comparison page
  • Tags: Run tests, build wheels, publish stable release to PyPI
  • Manual: Full multi-platform wheel builds with release

Acknowledgements

  • uv: The package manager used, and for leading the way in the "Rust for python tools"-sphere.
  • primp: A lot of code is borrowed from primp, that wraps rust library rquest for python in a similar way. If primp supported mTLS, I would have used it instead.
  • reqwests: The rust library that powers httpr.
  • pyo3
  • maturin

Metadata

Release files for httpr 0.7.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for httpr 0.7.4
File Size Uploaded
httpr-0.7.4.tar.gz 277.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for httpr 0.7.4
File
httpr-0.7.4-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
httpr-0.7.4-cp314-cp314t-win32.whl CPython 3.14 CPython 3.14 free-threading Windows x86-32 Details
httpr-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
httpr-0.7.4-cp314-cp314t-musllinux_1_2_i686.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-32 Details
httpr-0.7.4-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
httpr-0.7.4-cp314-cp314t-manylinux_2_39_riscv64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ RISC-V 64 Details
httpr-0.7.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
httpr-0.7.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARMv7l Details
httpr-0.7.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
httpr-0.7.4-cp314-cp314t-manylinux_2_12_i686.manylinux2010_i686.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.12+ x86-32 Details
httpr-0.7.4-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
httpr-0.7.4-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details
httpr-0.7.4-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
httpr-0.7.4-cp310-abi3-win32.whl CPython 3.10 abi3 Windows x86-32 Details
httpr-0.7.4-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
httpr-0.7.4-cp310-abi3-musllinux_1_2_i686.whl CPython 3.10 abi3 Linux musl 1.2+ x86-32 Details
httpr-0.7.4-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
httpr-0.7.4-cp310-abi3-manylinux_2_39_riscv64.whl CPython 3.10 abi3 Linux glibc 2.39+ RISC-V 64 Details
httpr-0.7.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
httpr-0.7.4-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.10 abi3 Linux glibc 2.17+ ARMv7l Details
httpr-0.7.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
httpr-0.7.4-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl CPython 3.10 abi3 Linux glibc 2.12+ x86-32 Details
httpr-0.7.4-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
httpr-0.7.4-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 58.9 MB

Release files / httpr-0.7.4.tar.gz

Download URL httpr-0.7.4.tar.gz
Size 277.3 kB
Tags Source
SHA-256 checksum
How to use checksums
37a7fd75fcad82cf63c5d75eb25a5099824d40c0d05e82f67668deda32df19b4
BLAKE2b-256 checksum
How to use checksums
b578b298f0020ffa38b23f017dcd72386e654f17f5cfa4ee6f3e19272639c585
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-win_amd64.whl

Download URL httpr-0.7.4-cp314-cp314t-win_amd64.whl
Size 2.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
3896aab579f07e997d2a25ff690df7868c12eae8795c051e3220acd2548fac4c
BLAKE2b-256 checksum
How to use checksums
94e6e6e1e73c4366f5c5fd54be60b9dd6ed8ee50bfe4b45cee1f1ec21933a7fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-win32.whl

Download URL httpr-0.7.4-cp314-cp314t-win32.whl
Size 2.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-32
SHA-256 checksum
How to use checksums
0f40086eac5b796b50c8dc20f10e8a8b1c4df7e405339b64ce961a573e810e49
BLAKE2b-256 checksum
How to use checksums
63cef884e27c3ab4c4abd761efadaaff36172afc6da7b53c0966f95878fd3661
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL httpr-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 2.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e08ba18797b931e8d86d6ffc32ed3b8796cdfef2aa4a060c948e9d1938ec271d
BLAKE2b-256 checksum
How to use checksums
a051cfe0dc44edc882758e3f88d6a2932bcde863f697a81cc73488e05b5daa70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-musllinux_1_2_i686.whl

Download URL httpr-0.7.4-cp314-cp314t-musllinux_1_2_i686.whl
Size 2.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
c11e1ec73fe45bee1292380ee167c08aff97bd3a8d5e227e5c59a7fc2edb3c8c
BLAKE2b-256 checksum
How to use checksums
b79364342138d6eda4ac2521e0cc2d4f909bfcd7897bbcda584535e7fee1f80f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL httpr-0.7.4-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 2.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
2056138d24491398a962eec29607fab2d0eb2aaf1b16e6b17376cba43bae924a
BLAKE2b-256 checksum
How to use checksums
a03c76f33a0a4951269aeb4e5463088f167655d78b8b4e574ea1e73d8adc0826
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-manylinux_2_39_riscv64.whl

Download URL httpr-0.7.4-cp314-cp314t-manylinux_2_39_riscv64.whl
Size 2.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ RISC-V 64
SHA-256 checksum
How to use checksums
1d7548231500eddaf139cd3d9524ff29607cfa15a28b037ac212069363960f83
BLAKE2b-256 checksum
How to use checksums
c5348e67e87e213cdb695deb987bf26321c47420c02e40c4a4187c58f8116bf6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL httpr-0.7.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c26d467d1858b9dbdff72282ec3367020d567011d50c3a303048e36e06cd2b13
BLAKE2b-256 checksum
How to use checksums
ac00d10e45d0f33d5a81dfa076a46b87e1fc4c717108042174cf23f1019ccbfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL httpr-0.7.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 2.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
7233144b482d16cd291ab0eea0026aa1cdfd9afe3acb30a57aade71e9eb68e66
BLAKE2b-256 checksum
How to use checksums
bef5c6231561c753efb8ac7dcf207c56f3093c8b03952024ffa0741739770d53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL httpr-0.7.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
1182b57275d09e66e8562b6d21311ecaa99606196e420bd0f44aee9c0ea1ed24
BLAKE2b-256 checksum
How to use checksums
8e33935d4c7f27f64d65ed9b799c5357be17b54853d8f13d2be46bf39c385e25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-manylinux_2_12_i686.manylinux2010_i686.whl

Download URL httpr-0.7.4-cp314-cp314t-manylinux_2_12_i686.manylinux2010_i686.whl
Size 2.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.12+ x86-32
SHA-256 checksum
How to use checksums
3789f04af09bce26ebba83290c9d99bca82dbbb02711c91d632abdd8529a6f6a
BLAKE2b-256 checksum
How to use checksums
aa35999f8caa8ff2d419fe71cfa0ec5fecbcf5b9fdb2b33b4dc78d8cb8cf8719
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-macosx_11_0_arm64.whl

Download URL httpr-0.7.4-cp314-cp314t-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b1217739cf8e5f12264aa497897f2cd3b6b8a0d37fd53221d332cf1dbb58ca54
BLAKE2b-256 checksum
How to use checksums
600f50dd0f70648df1de73d862d6de960419dc8e9ae3101332aa6007e5301e81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL httpr-0.7.4-cp314-cp314t-macosx_10_12_x86_64.whl
Size 2.4 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
8f04f7b4cb7e87e1e61f21e2a6262dd829b7ed2cb1972fbecf98d7f2ad41a7eb
BLAKE2b-256 checksum
How to use checksums
a09755a50b47657d592c15831ff8e75fbfdaae7126174d221dc16d5ea1967b0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-win_amd64.whl

Download URL httpr-0.7.4-cp310-abi3-win_amd64.whl
Size 2.3 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
b75a89115a18d1b9e69145622106ea15d697d294cc05365614a6292d2dfae21e
BLAKE2b-256 checksum
How to use checksums
7ce5537176ac4121541fa85446a8ff62e678b9ea23d8500b422b77c38315e59d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-win32.whl

Download URL httpr-0.7.4-cp310-abi3-win32.whl
Size 2.1 MB
Tags CPython 3.10 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
bbfea1c4e1dff5ea0027d0c0f8a5e9127b8d0f0fcb272a5a4d7e92ff9d63c99c
BLAKE2b-256 checksum
How to use checksums
95e3959bb670ea4ace15d37c26a8bd0c3705e4062bc2e3d048bb063103f97103
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL httpr-0.7.4-cp310-abi3-musllinux_1_2_x86_64.whl
Size 2.8 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
0df836861b865e1abe206d15021c47f8be6c25807543e42259b3323237b979b9
BLAKE2b-256 checksum
How to use checksums
fd2de707141e266cd30db6bc4ea580213753b5bd9d8714249f0c2e99b52e9198
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-musllinux_1_2_i686.whl

Download URL httpr-0.7.4-cp310-abi3-musllinux_1_2_i686.whl
Size 2.6 MB
Tags CPython 3.10 Linux musl 1.2+ x86-32 abi3
SHA-256 checksum
How to use checksums
129609aefd6eded0503a024761da7df4e5bb76d2659a987ba598cf85ac107092
BLAKE2b-256 checksum
How to use checksums
ef2b720eae1bd0fe8cdfffa87a169a0b1e67ec1ba45c8d06227bad63161a4393
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL httpr-0.7.4-cp310-abi3-musllinux_1_2_aarch64.whl
Size 2.7 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
472aebd60f54abc86935828cc494704f1105a5a6c4c23b699b7437c14b26caa4
BLAKE2b-256 checksum
How to use checksums
59fae1482db4a443fc98d655ccd221cae3c34f4b976b20f39d691821ffd978e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-manylinux_2_39_riscv64.whl

Download URL httpr-0.7.4-cp310-abi3-manylinux_2_39_riscv64.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.39+ RISC-V 64 abi3
SHA-256 checksum
How to use checksums
9e8081c547e84039588a6c28583bb43a6a603ed0bd92f8ce77e3e0d6941b8a3b
BLAKE2b-256 checksum
How to use checksums
5c0e33c7f510c619050a6d9cc5a5a53c4e33953379a8eba61b2d84cf15e3c546
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL httpr-0.7.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.6 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
62c783c1dcebddaf9fdea60a2bf8a53489da4a2e2b0a2f0c15dcdf7b963f2e72
BLAKE2b-256 checksum
How to use checksums
758d8856e997a0093eb37125d9c6eccd91773373d819dca2c36b9c79b775e9e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL httpr-0.7.4-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.17+ ARMv7l abi3
SHA-256 checksum
How to use checksums
1730f217f96450aab5180cbf26922243db281d740f100c8172b2211147d8ed03
BLAKE2b-256 checksum
How to use checksums
7f91411fe8d6a9fb97c6a9ef64b5e87cb3ecfdbe57b32fddc97917725f891ef5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL httpr-0.7.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.5 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
bd74fa6efd15aa30aecaf794872d5ff8193c583c115d46a02b114a75ae62a82a
BLAKE2b-256 checksum
How to use checksums
9cd4c42f81c686860055ba813c1f064621f1ac6a8fff61c9d0dc267ac083a193
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl

Download URL httpr-0.7.4-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Size 2.5 MB
Tags CPython 3.10 Linux glibc 2.12+ x86-32 abi3
SHA-256 checksum
How to use checksums
a8c0bb84ff7701b5e8f826fe4f78f86f1bd0b7430f1d061f8cff2e0bfe1b6ff2
BLAKE2b-256 checksum
How to use checksums
53411f722149dba583a2209c1fdd7bd3dfa1ac5ad5c3c32cac92e4314a1aa90b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-macosx_11_0_arm64.whl

Download URL httpr-0.7.4-cp310-abi3-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dfb73cfdd15ad5bd10038c434127b3467eb47f6fd8a7ed5ab0d3c65b3ea841c7
BLAKE2b-256 checksum
How to use checksums
4b7a25a2c4a82db7e1ccd2578716e76b8e254fb1913f8c2ff5677864f30a1180
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / httpr-0.7.4-cp310-abi3-macosx_10_12_x86_64.whl

Download URL httpr-0.7.4-cp310-abi3-macosx_10_12_x86_64.whl
Size 2.4 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c5477c748f54eb078045f6f7812019c9cdbca322545bc3b62521197dbe3b48eb
BLAKE2b-256 checksum
How to use checksums
80c7385573f0d8b0f0e34507478a221e1b3fa63177d29fa3f5179e179d2e4fc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

This release

0.7.4 This release

25 release files

0.7.2

23 release files

0.6.0

23 release files

0.5.2

23 release files

0.4.8

34 release files

0.4.7

34 release files

0.4.4

34 release files

0.4.3

34 release files

0.4.2

34 release files

0.4.1

34 release files

0.4.0

34 release files

0.3.3

34 release files

0.3.2

34 release files

0.3.1

34 release files

0.2.6

34 release files

0.2.5

34 release files

0.2.2

34 release files

0.1.0

25 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page