Skip to main content

urllib3.future is a powerful HTTP 1.1, 2, and 3 client with both sync and async interfaces

Project description

urllib3.future logo

PyPI Version Python Versions
urllib3.future is as BoringSSL is to OpenSSL but to urllib3 (except support is available!)
✨🍰 Enjoy HTTP like its 2024 🍰✨
💰 Promotional offer, get everything and more for 40k 0$!

⚡ urllib3.future is a powerful, user-friendly HTTP client for Python.
⚡ urllib3.future goes beyond supported features while remaining compatible.
⚡ urllib3.future brings many critical features that are missing from both the Python standard libraries and urllib3:

  • Async.
  • Task safety.
  • Thread safety.
  • Happy Eyeballs.
  • Connection pooling.
  • Client-side SSL/TLS verification.
  • Highly customizable DNS resolution.
  • File uploads with multipart encoding.
  • DNS over UDP, TLS, QUIC, or HTTPS. DNSSEC protected.
  • Helpers for retrying requests and dealing with HTTP redirects.
  • Support for gzip, deflate, brotli, and zstd encoding.
  • Support for Python/PyPy 3.7+, no compromise.
  • HTTP/1.1, HTTP/2 and HTTP/3 support.
  • Proxy support for HTTP and SOCKS.
  • Detailed connection inspection.
  • Multiplexed connection.
  • Mirrored Sync & Async.
  • Amazingly Fast.

urllib3.future is powerful and easy to use:

>>> import urllib3
>>> pm = urllib3.PoolManager()
>>> resp = pm.request("GET", "https://httpbin.org/robots.txt")
>>> resp.status
200
>>> resp.data
b"User-agent: *\nDisallow: /deny\n"
>>> resp.version
20

or using asyncio!

import asyncio
import urllib3

async def main() -> None:
    async with urllib3.AsyncPoolManager() as pm:
        resp = await pm.request("GET", "https://httpbin.org/robots.txt")
        print(resp.status)  # 200
        body = await resp.data
        print(body)  # # b"User-agent: *\nDisallow: /deny\n"
        print(resp.version)  # 20

asyncio.run(main())

Installing

urllib3.future can be installed with pip:

$ python -m pip install urllib3.future

You either do

import urllib3

Or...

import urllib3_future

Doing import urllib3_future is the safest option for you as there is a significant number of projects that require urllib3.

Notes

  • It's a fork

⚠️ Installing urllib3.future shadows the actual urllib3 package (depending on installation order). The semver will always be like MAJOR.MINOR.9PP like 2.0.941, the patch node is always greater or equal to 900.

Support for bugs or improvements is served in this repository. We regularly sync this fork with the main branch of urllib3/urllib3 against bugfixes and security patches if applicable.

  • OS Package Managers

Fellow OS package maintainers, you cannot just build and ship this package to your package registry. As it override urllib3 and due to its current criticality, you'll have to set:

URLLIB3_NO_OVERRIDE=true python -m build. Set URLLIB3_NO_OVERRIDE variable with "true" in it.

It will prevent the override.

Compatibility with downstream

You should always install the downstream project prior to this fork.

e.g. I want requests to be use this package.

python -m pip install requests
python -m pip install urllib3.future

Nowadays, we suggest using the package Niquests as a drop-in replacement for Requests. It leverages urllib3.future capabilities appropriately.

Documentation

urllib3.future has usage and reference documentation at urllib3future.readthedocs.io.

Contributing

urllib3.future happily accepts contributions.

Security Disclosures

To report a security vulnerability, please use the GitHub advisory disclosure form.

Sponsorship

If your company benefits from this library, please consider sponsoring its development.

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

urllib3_future-2.7.902.tar.gz (940.8 kB view details)

Uploaded Source

Built Distribution

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

urllib3_future-2.7.902-py3-none-any.whl (535.2 kB view details)

Uploaded Python 3

File details

Details for the file urllib3_future-2.7.902.tar.gz.

File metadata

  • Download URL: urllib3_future-2.7.902.tar.gz
  • Upload date:
  • Size: 940.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for urllib3_future-2.7.902.tar.gz
Algorithm Hash digest
SHA256 c346fd976dcc9b4123bbc0329235515d5f9778e0ca68f24065d37ee6cd9a4872
MD5 116fa248867c10844348215ef01d855c
BLAKE2b-256 12b6c80c2c99d973434a91d7951f1551125c3552cb7a02f5968c431c430a9b63

See more details on using hashes here.

File details

Details for the file urllib3_future-2.7.902-py3-none-any.whl.

File metadata

File hashes

Hashes for urllib3_future-2.7.902-py3-none-any.whl
Algorithm Hash digest
SHA256 44d178708b237cd37ed47dfabb6c6d86e2f2225257adc2c210e0208f3b34db79
MD5 e43e5cff17e3e9157bb5e34c5882e25b
BLAKE2b-256 be8884fd7453db9ccd77a6def6fbaa1b9e5d1fe631bdd5e6b8dc7f93fd66fa76

See more details on using hashes here.

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