Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.7.4 instead.
Reason given by maintainers: contains breaking change with pyvespa

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): If true - use only HTTP/2; if false - use only HTTP/1. 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. Any request made afterwards, or assigning client.proxy, raises httpr.ClientClosed (a RuntimeError, as in httpx); 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.1

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.1
File Size Uploaded
httpr-0.7.1.tar.gz 271.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for httpr 0.7.1
File
httpr-0.7.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
httpr-0.7.1-cp314-cp314t-win32.whl CPython 3.14 CPython 3.14 free-threading Windows x86-32 Details
httpr-0.7.1-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.1-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.1-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
httpr-0.7.1-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.1-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.1-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.1-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.1-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
httpr-0.7.1-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.1-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
httpr-0.7.1-cp310-abi3-win32.whl CPython 3.10 abi3 Windows x86-32 Details
httpr-0.7.1-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
httpr-0.7.1-cp310-abi3-musllinux_1_2_i686.whl CPython 3.10 abi3 Linux musl 1.2+ x86-32 Details
httpr-0.7.1-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
httpr-0.7.1-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.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.10 abi3 Linux glibc 2.17+ ARMv7l Details
httpr-0.7.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
httpr-0.7.1-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl CPython 3.10 abi3 Linux glibc 2.12+ x86-32 Details
httpr-0.7.1-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
httpr-0.7.1-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 54.1 MB

Release files / httpr-0.7.1.tar.gz

Download URL httpr-0.7.1.tar.gz
Size 271.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a393b25f26f4fd2ffde33d74d6740dc7bc11e2b3ba9c72aaff4f6571f4d9098c
BLAKE2b-256 checksum
How to use checksums
d9bea11307d4887beed4cf2817f1ef6b063c621b283efb1910f97984f6c2be7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
22ec0590a193e302183dce0c42fe701c329b6358b5c3ba1cee3f25def2981df8
BLAKE2b-256 checksum
How to use checksums
d1f4ea3b18c60b79768f1b0d4a6a23ba9f8d68d3258829b7c0879329c86914b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
1592721aac9a8502345b0f349b4ae73f78a24fa3d10c01c80247d8d7429dfeeb
BLAKE2b-256 checksum
How to use checksums
82d5db3238e80e59893cc9026c89e86834bbadd07322af6cbcfda381dcfce346
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
c2ae1a0e6f81e8f65135424f8105e0dc74661312c2bb7485e19d44f51eb006e2
BLAKE2b-256 checksum
How to use checksums
a95c845653c6290135c16d77429976e492aed8225fc8b4c0a8e71b0704524835
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
a0c52b23a7cbcbceee208b6180e0f47d3c970a93c28eeae28f593860f9840206
BLAKE2b-256 checksum
How to use checksums
e75f3437ef11a8788fdaa964bccea1313f1c1bcb4df1f7e953cef624d41516e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
558e8447a9fdc1ede386053ee1c09f7d63945750125886dee94ae23c949c7c4c
BLAKE2b-256 checksum
How to use checksums
c96eacffb32ac3e04846c916a617fe0bbb078d1a8d590705f684b48440b4f5e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
f73b1f6086c2ef879150edc26b82892af16dddb01e237f66f43c4409bf9a86d8
BLAKE2b-256 checksum
How to use checksums
232486b74c41fba3814a9a00435b94563125dcc674c7415e58f73aacc756b894
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
49a7e91b511aa724ab79986aa5a65ab112ee42ab8e26d39285e5c41ec1be3b1a
BLAKE2b-256 checksum
How to use checksums
af729bab1c69dce6d203da91d75543a2cb836a071145cdd5f39d69bfd4cb4909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
0ae1f3ba80d06f546448e693101bcf0e5461bcfda404312e90c22e345d1ed749
BLAKE2b-256 checksum
How to use checksums
d68c3466d76212c68155803769acaf85957e3979f6a42b0a0e86085e9a9ea51b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
a7595f5fde098c98e468f19ae08992c1d0accdbb50451fd8a0850db1d7c88ceb
BLAKE2b-256 checksum
How to use checksums
50c6d6be832617cd3fb42df3064d7302eec1e007e9795dffef0a951c598fc4f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
222f4bddbcf6dcd3ea74cf594d69fe75f7e8e151e4e70abe75ac29d0f741ee28
BLAKE2b-256 checksum
How to use checksums
d974bc7bbc085b4109371f8beb609382bac9a1ad6968ce245172e081cdf74531
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
47bba5e3d7cfa01c99fac0d8eb6581fc267bf351b80690043f5a53e04548aaae
BLAKE2b-256 checksum
How to use checksums
0ede4e5b5fade0471606d6fb0811aa42a0b448f060ca7842951369cdfccedc64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

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

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

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

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

Download URL httpr-0.7.1-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
82e37957338c8e53a503a5a8cab8678fbb8fc38f6f124143b3eae23b838e275e
BLAKE2b-256 checksum
How to use checksums
43a683354f14d5fcf078cf4f54fa7fae8c58ede9d4c9b2f3f86c1f4ded8eb164
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
54937781a1d25fb5076177d62ebce7304f329e769406ba1b56dbaed333966074
BLAKE2b-256 checksum
How to use checksums
e3bd852d31bd059134ce4fda73695ea64962ececee2ac34cc20f6ec6a77e8dee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
104678423168262cec21a887a3c10ab01869c62f12eaa46b35884f2c48cfc50c
BLAKE2b-256 checksum
How to use checksums
780d149eb33d6559fba49e10974c67b95630119d1d5021a422bec925b403c6d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
760709bf79932883f1e5f18337d40cacae07080ae5793976868b49d8f0cb5dc5
BLAKE2b-256 checksum
How to use checksums
a350e3bc7794180bf8237456ff08dda42b37b533edccddd2a7cc01fb189a408d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
d1a05acfb5d9b92279da58b3de520c79fd8a34b3a631c39f619b551cd9e33e3e
BLAKE2b-256 checksum
How to use checksums
f487e7d0395765abd2f04b8cde431e5eac25b7560708c1a90f5396f18eaaeffb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
b94e8ca96ccefee3be12857833f39e8c8a547d5e42730f476e20170c3986f387
BLAKE2b-256 checksum
How to use checksums
4e6e64e9da183b0bd000fd5280694e4d6eaaaca352bcaaa1af9788f71cf55d77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
f31f6fb29394b415de9fef66ed56ced4925d0cda4ce610f90d4bb63fb4e015c7
BLAKE2b-256 checksum
How to use checksums
a15f2bab43fd3ad98522a931ff82df5b404b0dd84afeae54dd09a46f8b89eac6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
0299ce948515f54e4bdb300c7439bf3e7048fc2a708585ed4b7e3091d0b3fa1b
BLAKE2b-256 checksum
How to use checksums
21189fb26547eab318212cac9c9fdde0dfdd6729c5e7436ee5156b5cde9bc4ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL httpr-0.7.1-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
88504d815caf7e0d4c5dc006a5f2573ce5f62813309737a656d3de25f57a1cb2
BLAKE2b-256 checksum
How to use checksums
905c51fea98b3c63143799fe1db35707d2f2ce12cf5beee573692de7c6334590
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

0.7.2

23 release files

This release

0.7.1 This release

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