from .utils import (
get_encoding_from_headers, stream_untransfer, guess_filename, requote_uri,
stream_decode_response_unicode, get_netrc_auth, get_environ_proxies,
- DEFAULT_CA_BUNDLE_PATH)
+ to_key_val_list, DEFAULT_CA_BUNDLE_PATH)
from .compat import (
cookielib, urlparse, urlunparse, urljoin, urlsplit, urlencode, str, bytes,
- StringIO, is_py2, chardet, json, builtin_str)
+ StringIO, is_py2, chardet, json, builtin_str, numeric_types)
REDIRECT_STATI = (codes.moved, codes.found, codes.other, codes.temporary_moved)
CONTENT_CHUNK_SIZE = 10 * 1024
fp = v
if isinstance(fp, (bytes, str)):
fp = StringIO(fp)
- fields.update({k: (fn, fp.read())})
-
- for field in fields:
- if isinstance(fields[field], numeric_types):
- fields[field] = str(fields[field])
- if isinstance(fields[field], list):
- newvalue = ', '.join(fields[field])
- fields[field] = newvalue
-
+ fields.append((k, (fn, fp.read())))
+
+ new_fields = []
+ for field, val in fields:
+ if isinstance(val, float):
+ new_fields.append((field, str(val)))
+ elif isinstance(val, list):
+ newvalue = ', '.join(val)
+ new_fields.append((field, newvalue))
+ else:
+ new_fields.append((field, val))
+ fields = new_fields
-
(body, content_type) = encode_multipart_formdata(fields)
return (body, content_type)
method = str(method).upper()
# Default empty dicts for dict params.
- data = {} if data is None else data
- files = {} if files is None else files
- headers = {} if headers is None else headers
- params = {} if params is None else params
+ data = [] if data is None else data
+ files = [] if files is None else files
+ headers = [] if headers is None else headers
+ params = [] if params is None else params
hooks = {} if hooks is None else hooks
- prefetch = self.prefetch or prefetch
+ prefetch = prefetch if prefetch is not None else self.prefetch
# use session's hooks as defaults
for key, cb in list(self.hooks.items()):