3
æÈ[¡… ã @ sÊ d Z ddlZddlZddlZddlmZ ddlmZ ddl m
Z
ddlmZm
Z
mZmZ ddlmZ dd lmZ dd
lmZ ddlmZ ddlmZmZmZ dd
lmZmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ> ddl2m?Z@ ddlAmBZB eBjCeBjDeBjEeBjFeBjGfZHdZId!ZJdZKG dd„ deLƒZMG dd„ deLƒZNG dd„ deNƒZOG dd„ deMeNƒZPG dd „ d eLƒZQdS )"z`
requests.models
~~~~~~~~~~~~~~~
This module contains the primary objects that power Requests.
é N)ÚRequestField)Úencode_multipart_formdata)Ú parse_url)ÚDecodeErrorÚReadTimeoutErrorÚ
ProtocolErrorÚLocationParseError)ÚUnsupportedOperationé )Ú
default_hooks)ÚCaseInsensitiveDict)Ú
HTTPBasicAuth)Úcookiejar_from_dictÚget_cookie_headerÚ_copy_cookie_jar)Ú HTTPErrorÚ
MissingSchemaÚ
InvalidURLÚChunkedEncodingErrorÚContentDecodingErrorÚConnectionErrorÚStreamConsumedError)Úto_native_stringÚunicode_is_ascii)
Úguess_filenameÚget_auth_from_urlÚrequote_uriÚstream_decode_response_unicodeÚto_key_val_listÚparse_header_linksÚiter_slicesÚguess_json_utfÚ super_lenÚcheck_header_validity)ÚCallableÚMappingÚ cookielibÚ
urlunparseÚurlsplitÚ urlencodeÚstrÚbytesÚis_py2ÚchardetÚbuiltin_strÚ
basestring)Újson)Úcodesé é
i i c @ s0 e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZdS )ÚRequestEncodingMixinc C sN g }t | jƒ}|j}|sd}|j|ƒ |j}|rD|jdƒ |j|ƒ dj|ƒS )zBuild the path URL to use.ú/ú?Ú )r( ÚurlÚpathÚappendÚqueryÚjoin)Úselfr8 Úpr9 r; © r? ú/usr/lib/python3.6/models.pyÚpath_url= s
zRequestEncodingMixin.path_urlc C sÀ t | ttfƒr| S t| dƒr | S t| dƒr¸g }x|t| ƒD ]p\}}t |tƒsVt|dƒ r\|g}xJ|D ]B}|dk rb|jt |tƒr†|jdƒn|t |tƒrœ|jdƒn|fƒ qbW q8W t|dd�S | S dS )züEncode parameters in a piece of data.
Will successfully encode parameters when passed as a dict or a list of
2-tuples. Order is retained if data is a list of 2-tuples but arbitrary
if parameters are supplied as a dict.
ÚreadÚ__iter__Nzutf-8T)Zdoseq) Ú
isinstancer* r+ Úhasattrr r/ r: Úencoder) )ÚdataÚresultÚkZvsÚvr? r? r@ Ú_encode_paramsR s
$z#RequestEncodingMixin._encode_paramsc C s¾ | st dƒ‚nt|tƒr t dƒ‚g }t|p,i ƒ}t| p8i ƒ} xŠ|D ]‚\}}t|tƒs`t|dƒ rf|g}x\|D ]T}|dk rlt|tƒsŠt|ƒ}|jt|tƒr¢|jdƒn|t|tƒr¸|j dƒn|fƒ qlW qBW xà| D ]Ø\}}d}d} t|t
tfƒ�r.t|ƒdk�r|\}
}n&t|ƒdk�r |\}
}}n|\}
}}} nt
|ƒ�p:|}
|}t|tttfƒ�rX|}n(t|dƒ�rn|jƒ }n|dk�r|qÎn|}t|||
| d �}
|
j|d
� |j|
ƒ qÎW t|ƒ\}}||fS )a¥ Build the body for a multipart/form-data request.
Will successfully encode files when passed as a dict or a list of
tuples. Order is retained if data is a list of tuples but arbitrary
if parameters are supplied as a dict.
The tuples may be 2-tuples (filename, fileobj), 3-tuples (filename, fileobj, contentype)
or 4-tuples (filename, fileobj, contentype, custom_headers).
zFiles must be provided.zData must not be a string.rC Nzutf-8é é rB )ÚnamerG ÚfilenameÚheaders)Úcontent_type)Ú
ValueErrorrD r/ r rE r+ r* r: ÚdecoderF ÚtupleÚlistÚlenr Ú bytearrayrB r Zmake_multipartr )ÚfilesrG Z
new_fieldsZfieldsZfieldÚvalrJ rI ZftZfhÚfnÚfpZfdataZrfÚbodyrQ r? r? r@ Ú
_encode_filesm sP
$
z"RequestEncodingMixin._encode_filesN)Ú__name__Ú
__module__Ú__qualname__ÚpropertyrA ÚstaticmethodrK r] r? r? r? r@ r4 <