Python-requests高级用户工具包
项目描述
Requests Toolbelt
这只是python-requests的一个实用工具集合,但实际上并不属于requests本身。最低测试的requests版本是2.1.0。实际上,工具包应该也能与2.0.1一起工作,但由于一些特殊问题,该版本无法有效或合理地测试。
使用 pip install requests-toolbelt 开始!
multipart/form-data 编码器
主要特色是一个流式multipart/form-data对象,MultipartEncoder。它的API看起来像这样
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})
您也可以为不需要文件的请求使用 multipart/form-data 编码
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})
或者,您也可以创建字符串并检查数据
# Assuming `m` is one of the above
m.to_string() # Always returns unicode
User-Agent构造函数
您可以轻松构建一个类似requests风格的User-Agent字符串
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
SSLAdapter最初发布在Cory Benfield的博客上:选择Requests中的SSL版本。此适配器允许用户在Python的ssl模块提供的SSL协议中选择一个用于出站HTTPS连接
from requests_toolbelt import SSLAdapter
import requests
import ssl
s = requests.Session()
s.mount('https://', SSLAdapter(ssl.PROTOCOL_TLSv1))
贡献
请阅读建议的工作流程,了解如何为此项目做出贡献。
请将任何错误报告在问题跟踪器上
历史记录
1.0.0 – 2023-05-01
重大变更
移除对Google App Engine的支持,以便使用urllib3 2.0
修复错误
确保测试套件不再访问互联网
杂项
添加对Python 3.11的显式支持
0.10.1 – 2022-10-25
修复错误
修复urllib3警告,仅在X509Adapter使用时发出
0.10.0 – 2022-10-06
新功能
在BaseUrlSession中添加对准备请求的支持
修复错误
修复dump实用程序中缺少换行符的问题
0.9.1 – 2019-01-29
修复错误
修复从urllib3导入pyOpenSSL shim以用于PKCS12适配器的问题
0.9.0 – 2019-01-29
新功能
添加可以处理PKCS12的X509适配器
添加通过MultipartEncoder从一台主机到另一台主机(分块)进行流式传输文件的无状态解决方案
修复错误
更新示例链接
将collections中的ABCs导入到_compatibility模块的特定版本部分
修复get_encodings_from_content中的向后不兼容性
更正MultipartEncoderMonitor的回调文档
修复在请求编码零部分时的问题
更正非字符串请求正文转储的类型
从MultipartDecoder中删除内容
通过启用对大写字母content-type的支持来修复错误
在转储请求之前将代理URL强制转换为字节
在空响应原因上避免抛出异常而退出
更正Pool文档
更正示例用法中的括号匹配
在MultipartEncoder中将“oject”更正为“object”
在迁移后修复项目URL
为OSX TCPKeepAliveAdapter添加修复
杂项
从测试中删除py33,并在travis矩阵中添加Python 3.6和夜间测试
0.8.0 – 2017-05-20
有关此版本的信息,请参阅0.8.0里程碑。
新功能
添加UserAgentBuilder以提供对生成的User-Agent字符串的更多控制。
修复错误
将_validate_certificate包含在AppEngineAdapter选择的属性列表中。
修复get_encodings_from_content中的向后不兼容性
0.7.1 – 2017-02-13
有关此版本的信息,请参阅0.7.1里程碑。
修复错误
修复了AppEngineAdapter的monkey-patching问题。
使禁用AppEngine时的证书验证变得更加容易。
处理没有尾部CRLF的multipart/form-data正文。
0.7.0 – 2016-07-21
有关此版本的信息,请参阅0.7.0里程碑。
新功能
添加BaseUrlSession以允许开发人员拥有具有“Base”URL的会话。有关更多详细信息,请参阅文档和示例。
将stream_response_to_file的逻辑拆分为两个单独的函数
get_download_file_path 从响应中生成文件名。
stream_response_to_file 在需要时会使用 get_download_file_path。
修复错误
修复了使用非常旧版本的 Requests 的用户遇到的问题,他们在尝试导入 connection 时会看到来自 requests_toolbelt._compat 的 ImportError。
0.6.2 – 2016-05-10
修复错误
当通过 Requests 传递超时时,它没有被适当地转换为 urllib3 代码所期望的超时。
0.6.1 – 2016-05-05
修复错误
在 AppEngineAdapter 中删除了对请求 URL 的断言。
阻止 pip 在发布时安装 requests 3.0.0,直到我们准备好处理它。
0.6.0 – 2016-01-27
关于此版本的更多信息可以在 0.6.0 里程碑 上找到。
新功能
添加 AppEngineAdapter 以支持使用 Google AppEngine 平台的 Requests 开发者。
添加 GuessProxyAuth 类以支持代理之间猜测 Basic 和 Digest 认证。
修复错误
确保在使用 SSLAdapter 时,代理使用正确的 TLS 版本。
修复了使用 HTTPProxyDigestAuth 类时的 AttributeError。
杂项
停止对 Python 3.2 的测试支持。virtualenv 和 pip 已经停止支持它,这意味着在我们的 CI 基础设施中对其进行测试变得更加困难。从现在开始,我们将尽力支持 3.2,但不会对其进行测试。
0.5.1 – 2015-12-16
有关此版本的更多信息可以在 0.5.1 里程碑 上找到。
修复错误
现在解决 requests 的 super_len 函数在不同版本(2.9.0 之前和 2.9.0 及以后)之间的差异。
0.5.0 – 2015-11-24
有关此版本的更多信息可以在 0.5.0 里程碑 上找到。
新功能
在 requests_toolbelt.downloadutils 中添加了 tee 子模块。它允许你在写入文件的同时迭代响应的字节。函数 tee.tee 期望你传递一个打开的文件对象,而 tee.tee_to_file 将使用提供的文件名为你打开文件。
向 requests_toolbelt.utils.user_agent 添加了一个新参数,允许用户指定附加项。
添加了嵌套的表单数据辅助程序,requests_toolbelt.utils.formdata.urlencode。
在 requests_toolbelt.cookies 中添加了 ForgetfulCookieJar。
在 requests_toolbelt.utils.dump 中添加了有关请求-响应周期信息的实用程序。
实现了 requests_toolbelt.threaded 模块文档字符串中描述的 API,即添加了 requests_toolbelt.threaded.map 作为可用函数。
修复错误
现在解决从系统软件包安装的 requests 版本和从 PyPI 安装的 requests 版本之间的 API 差异。
允许为 SourceAddressAdapter 使用字符串类型。
0.4.0 – 2015-04-03
有关此版本的更多信息,请参阅项目页面上的 0.4.0 里程碑。
新功能
工具包中现在包含了一个简单的线程池实现。请参阅 docs/threading.rst 或在 Read The Docs 上的文档。
现在 StreamingIterator 接受没有特定长度的文件(如 sys.stdin),并将正确地流式传输它们。
现在,MultipartEncoder 接受与请求的 files 参数完全相同的字段格式。换句话说,你现在也可以向请求体中的某个部分添加额外的头信息。你现在还可以为部分指定自定义的 Content-Type。
现在已包含 HTTP Digest 认证代理的实现。
工具包中现在包含一个传输适配器,允许用户指定特定的证书指纹。
工具包中现在包含一个简化用户指定套接字选项的传输适配器。
工具包中现在包含一个简化用户指定 TCP Keep-Alive 选项的传输适配器。
现在包含了从 requests.utils 中弃用的函数,并进行了维护。
现在包含了一个身份验证工具,允许用户同时指定如何对多个不同域名进行认证。
现在包含了一个函数,可以通过分析 Content-Disposition 头将流式响应保存到磁盘。
修复错误
MultipartEncoder 现在将允许用户在 32 位系统上上传大于 4GB 的文件。
MultipartEncoder 现在接受空 Unicode 字符串作为表单值。
0.3.1 – 2014-06-23
修复了 0.3.0 版本包不包括 StreamingIterator 的问题。
0.3.0 – 2014-05-21
错误修复
MultipartEncoder 的全面重写修复了上传中字节丢失的 bug。
新功能
MultipartDecoder 接受 multipart/form-data 响应体并将它们解析为易于使用的对象。
SourceAddressAdapter 允许用户选择要绑定连接的本地地址。
GuessAuth 接受用户名和密码,并使用 WWW-Authenticate 头确定如何对服务器进行认证。
MultipartEncoderMonitor 包装了一个 MultipartEncoder 实例,并跟踪读取了多少字节,并将调用提供的回调。
StreamingIterator 将包装一个迭代器,流式传输上传而不是分块上传,前提是你也提供了要上传的内容的长度。
0.2.0 – 2014-02-24
添加了告诉 MultipartEncoder 使用哪种编码的能力。默认使用 'utf-8'。
修复 #10 - 允许用户使用 pip 进行安装
修复 #9 - 修复 MultipartEncoder#to_string,使其能够正确处理文件对象作为字段
0.1.2 – 2014-01-19
在开发过程中,我们破坏了如何处理普通文件对象的方法。感谢 @konomae,这个问题现在已经修复。
0.1.1 – 2014-01-19
更好地处理 io.BytesIO 类似的对象
0.1.0 – 2014-01-18
添加了流式 MultipartEncoder 的初始实现
添加了 user_agent 函数的初始实现
添加了 SSLAdapter
requests-toolbelt-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6 |
|
MD5 | 6a8348cfc9991b44e499345db1c6f925 |
|
BLAKE2b-256 | f361d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb |
requests_toolbelt-1.0.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06 |
|
MD5 | a85998b5e6620919a7e79e854128fae4 |
|
BLAKE2b-256 | 3f51d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c |