| Index: third_party/requests/packages/urllib3/filepost.py
 | 
| diff --git a/third_party/requests/packages/urllib3/filepost.py b/third_party/requests/packages/urllib3/filepost.py
 | 
| index 470309a0066e6ace43d0730fe4a76e7d67a4c538..4575582e91c57b7f0a194020effd48747d471cd6 100644
 | 
| --- a/third_party/requests/packages/urllib3/filepost.py
 | 
| +++ b/third_party/requests/packages/urllib3/filepost.py
 | 
| @@ -1,5 +1,5 @@
 | 
|  # urllib3/filepost.py
 | 
| -# Copyright 2008-2012 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
 | 
| +# Copyright 2008-2013 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
 | 
|  #
 | 
|  # This module is part of urllib3 and is released under
 | 
|  # the MIT License: http://www.opensource.org/licenses/mit-license.php
 | 
| @@ -12,6 +12,7 @@ from io import BytesIO
 | 
|  
 | 
|  from .packages import six
 | 
|  from .packages.six import b
 | 
| +from .fields import RequestField
 | 
|  
 | 
|  writer = codecs.lookup('utf-8')[3]
 | 
|  
 | 
| @@ -23,15 +24,38 @@ def choose_boundary():
 | 
|      return uuid4().hex
 | 
|  
 | 
|  
 | 
| -def get_content_type(filename):
 | 
| -    return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
 | 
| +def iter_field_objects(fields):
 | 
| +    """
 | 
| +    Iterate over fields.
 | 
| +
 | 
| +    Supports list of (k, v) tuples and dicts, and lists of
 | 
| +    :class:`~urllib3.fields.RequestField`.
 | 
| +
 | 
| +    """
 | 
| +    if isinstance(fields, dict):
 | 
| +        i = six.iteritems(fields)
 | 
| +    else:
 | 
| +        i = iter(fields)
 | 
| +
 | 
| +    for field in i:
 | 
| +      if isinstance(field, RequestField):
 | 
| +        yield field
 | 
| +      else:
 | 
| +        yield RequestField.from_tuples(*field)
 | 
|  
 | 
|  
 | 
|  def iter_fields(fields):
 | 
|      """
 | 
|      Iterate over fields.
 | 
|  
 | 
| +    .. deprecated ::
 | 
| +
 | 
| +      The addition of `~urllib3.fields.RequestField` makes this function
 | 
| +      obsolete. Instead, use :func:`iter_field_objects`, which returns
 | 
| +      `~urllib3.fields.RequestField` objects, instead.
 | 
| +
 | 
|      Supports list of (k, v) tuples and dicts.
 | 
| +
 | 
|      """
 | 
|      if isinstance(fields, dict):
 | 
|          return ((k, v) for k, v in six.iteritems(fields))
 | 
| @@ -44,15 +68,7 @@ def encode_multipart_formdata(fields, boundary=None):
 | 
|      Encode a dictionary of ``fields`` using the multipart/form-data MIME format.
 | 
|  
 | 
|      :param fields:
 | 
| -        Dictionary of fields or list of (key, value) or (key, value, MIME type)
 | 
| -        field tuples.  The key is treated as the field name, and the value as
 | 
| -        the body of the form-data bytes. If the value is a tuple of two
 | 
| -        elements, then the first element is treated as the filename of the
 | 
| -        form-data section and a suitable MIME type is guessed based on the
 | 
| -        filename. If the value is a tuple of three elements, then the third
 | 
| -        element is treated as an explicit MIME type of the form-data section.
 | 
| -
 | 
| -        Field names and filenames must be unicode.
 | 
| +        Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`).
 | 
|  
 | 
|      :param boundary:
 | 
|          If not specified, then a random boundary will be generated using
 | 
| @@ -62,24 +78,11 @@ def encode_multipart_formdata(fields, boundary=None):
 | 
|      if boundary is None:
 | 
|          boundary = choose_boundary()
 | 
|  
 | 
| -    for fieldname, value in iter_fields(fields):
 | 
| +    for field in iter_field_objects(fields):
 | 
|          body.write(b('--%s\r\n' % (boundary)))
 | 
|  
 | 
| -        if isinstance(value, tuple):
 | 
| -            if len(value) == 3:
 | 
| -                filename, data, content_type = value
 | 
| -            else:
 | 
| -                filename, data = value
 | 
| -                content_type = get_content_type(filename)
 | 
| -            writer(body).write('Content-Disposition: form-data; name="%s"; '
 | 
| -                               'filename="%s"\r\n' % (fieldname, filename))
 | 
| -            body.write(b('Content-Type: %s\r\n\r\n' %
 | 
| -                       (content_type,)))
 | 
| -        else:
 | 
| -            data = value
 | 
| -            writer(body).write('Content-Disposition: form-data; name="%s"\r\n'
 | 
| -                               % (fieldname))
 | 
| -            body.write(b'\r\n')
 | 
| +        writer(body).write(field.render_headers())
 | 
| +        data = field.data
 | 
|  
 | 
|          if isinstance(data, int):
 | 
|              data = str(data)  # Backwards compatibility
 | 
| 
 |