Skip to main content

A utility belt for advanced users of python-requests

Project description

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.

multipart/form-data Encoder

The main attraction is a streaming multipart form-data object, MultipartEncoder. Its API looks like this:

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:

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:

# 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:

from requests_toolbelt import SSLAdapter
import requests
import ssl

s = requests.Session()
s.mount('https://', SSLAdapter(ssl.PROTOCOL_TLSv1))

History

0.3.1 – 2014-06-23

  • Fix the fact that 0.3.0 bundle did not include the StreamingIterator

0.3.0 – 2014-05-21

Bug Fixes

  • Complete rewrite of MultipartEncoder fixes bug where bytes were lost in uploads

New Features

  • MultipartDecoder to accept multipart/form-data response bodies and parse them into an easy to use object.

  • SourceAddressAdapter to allow users to choose a local address to bind connections to.

  • GuessAuth which accepts a username and password and uses the WWW-Authenticate header to determine how to authenticate against a server.

  • MultipartEncoderMonitor wraps an instance of the MultipartEncoder and keeps track of how many bytes were read and will call the provided callback.

  • StreamingIterator will wrap an iterator and stream the upload instead of chunk it, provided you also provide the length of the content you wish to upload.

0.2.0 – 2014-02-24

  • Add ability to tell MultipartEncoder which encoding to use. By default it uses ‘utf-8’.

  • Fix #10 - allow users to install with pip

  • Fix #9 - Fix MultipartEncoder#to_string so that it properly handles file objects as fields

0.1.2 – 2014-01-19

  • At some point during development we broke how we handle normal file objects. Thanks to @konomae this is now fixed.

0.1.1 – 2014-01-19

  • Handle io.BytesIO-like objects better

0.1.0 – 2014-01-18

  • Add initial implementation of the streaming MultipartEncoder

  • Add initial implementation of the user_agent function

  • Add the SSLAdapter

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

requests-toolbelt-0.3.1.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

requests_toolbelt-0.3.1-py2.py3-none-any.whl (22.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file requests-toolbelt-0.3.1.tar.gz.

File metadata

File hashes

Hashes for requests-toolbelt-0.3.1.tar.gz
Algorithm Hash digest
SHA256 f170eadbe01be2356d65862857a9b2eb8bb17b895cde158a7dd1c358a3a48d1a
MD5 e563377e46cd0be8c7b3ac144a65844c
BLAKE2b-256 933ed593f6be713ddcabce4a64c6b607c2abd9032f16cfb7ff1c333416fbae2e

See more details on using hashes here.

Provenance

File details

Details for the file requests_toolbelt-0.3.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for requests_toolbelt-0.3.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c4ba839a2da1d1e884430d742049fe1add34356be8f3e0813e9c7eb959d8ea27
MD5 91fc855ef0ed8a61f7b2d20fc1fddbe7
BLAKE2b-256 2f87009da697025dc624a06c46be59479610f02375a24c3494501bed26e606bd

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page