requests/toolbelt
requests/toolbelt has 1,038 GitHub stars and 199 forks. GitHot measured -1 stars in 24 hours. Last checked 2026-11-09 11:47 UTC. Last push 2026-10-17.
A toolbelt of useful classes and functions to be used with python-requests
Measured star growth
- in 24h
- -1
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalThe Requests Toolbelt
This is just a collection of utilities for python-requests_, but don't
really belong in requests proper. The minimum tested requests version is
2.1.0. In reality, the toolbelt should work with 2.0.1 as well, but
some idiosyncracies prevent effective or sane testing on that version.
pip install requests-toolbelt to get started!
multipart/form-data Encoder
The main attraction is a streaming multipart form-data object, MultipartEncoder.
Its API looks like this:
.. code-block:: python
from requests_toolbelt import MultipartEncoder
import requests
m = MultipartEncoder(
fields={'field0': 'value', 'field1': 'value',
'field2': ('filename', open('file.py', 'rb'), 'text/plain')}
)
r = requests.post('http://httpbin.org/post', data=m,
headers={'Content-Type': m.content_type})
You can also use multipart/form-data encoding for requests that don't
require files:
.. code-block:: python
from requests_toolbelt import MultipartEncoder
import requests
m = MultipartEncoder(fields={'field0': 'value', 'field1': 'value'})
r = requests.post('http://httpbin.org/post', data=m,
headers={'Content-Type': m.content_type})
Or, you can just create the string and examine the data:
.. code-block:: python
# Assuming `m` is one of the above
m.to_string() # Always returns unicode
User-Agent constructor
You can easily construct a requests-style User-Agent string::
from requests_toolbelt import user_agent
headers = {
'User-Agent': user_agent('my_package', '0.0.1')
}
r = requests.get('https://api.github.com/users', headers=headers)
SSLAdapter
The SSLAdapter was originally published on Cory Benfield's blog_.
This adapter allows the user to choose one of the SSL protocols made available
in Python's ssl module for outgoing HTTPS connections:
.. code-block:: python
from requests_toolbelt import SSLAdapter
import requests
import ssl
s = requests.Session()
s.mount('https://', SSLAdapter(ssl.PROTOCOL_TLSv1))
cookies/ForgetfulCookieJar
The ForgetfulCookieJar prevents a particular requests session from storing
cookies:
.. code-block:: python
from requests_toolbelt.cookies.forgetful import ForgetfulCookieJar
session = requests.Session()
session.cookies = ForgetfulCookieJar()
Contributing
Please read the suggested workflow <https://toolbelt.readthedocs.io/en/latest/contributing.html>_ for
contributing to this project.
Please report any bugs on the issue tracker_
.. _Cory Benfield's blog: https://lukasa.co.uk/2013/01/Choosing_SSL_Version_In_Requests/ .. _python-requests: https://github.com/kennethreitz/requests .. _issue tracker: https://github.com/requests/toolbelt/issues
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,345 starspublic-apis/public-apis
A collective list of free APIs
497,592 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
446,712 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,251 stars