Requests III: HTTP for Humans and Machines, alike.
Requests III is an HTTP library for Python, built for Humans and Machines, alike. This repository is a work in progress, and the expected release timeline is "before PyCon 2020".
Behold, the power of Requests III:
>>> from requests import HTTPSession
# Make a connection pool.
>>> http = HTTPSession()
# Make a request.
>>> r = http.request('get', 'https://httpbin.org/ip')
# View response data.
>>> r.json()
{'ip': '172.69.48.124'}
Requests III allows you to send organic, grass-fed HTTP/1.1 & HTTP/2 (wip) requests, without the need for manual thought-labor. There's no need to add query strings to your URLs, or to form-encode your POST data. Keep-alive and HTTP connection pooling are 100% automatic, as well.
Besides, all the cool kids are doing it. Requests is one of the most downloaded Python packages of all time, pulling in over ~1.6 million installations per day!
Feature Support
Requests III is ready for today's web.
- Support for H11 & H2 protocols.
- Type-annotations for all public-facing APIs.
- Better defaults; required timeouts.
async
/await
keyword &asyncio
support.- Compability with Python 3.6+.
While retaining all the features of Requests Classic:
- International Domains and URLs
- Keep-Alive & Connection Pooling
- Sessions with Cookie Persistence
- Browser-style SSL Verification
- Basic/Digest Authentication
- Elegant Key/Value Cookies
- Automatic Decompression
- Automatic Content Decoding
- Unicode Response Bodies
- Multipart File Uploads
- HTTP(S) Proxy Support
- Connection Timeouts
- Streaming Downloads
.netrc
Support- Chunked Requests
Satisfaction guaranteed.
Documentation
Fantastic documentation is available at http://3.python-requests.org/, for a limited time only.
How to Contribute
- Become more familiar with the project by reading our Contributor's Guide and our development philosophy.
- Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug. There is a Contributor Friendly tag for issues that should be ideal for people who are not very familiar with the codebase yet.
- Fork the repository on GitHub to start making your changes to the master branch (or branch off of it).
- Write a test which shows that the bug was fixed or that the feature works as expected.
- Send a pull request and bug the maintainer until it gets merged and published. :) Make sure to add yourself to AUTHORS.