Rei! @ s d d l m Z d d l Z d d l Z d d l Z d d l m Z d d d Z d d Z d
d d d
d d
i Z
e
j d d e d d D d d Z
d d Z e Z Gd d d e Z d S) )absolute_importN )sixzapplication/octet-streamc C s! | r t j | d p | S| S)z
Guess the "Content-Type" of a file.
:param filename:
The filename to guess the "Content-Type" of using :mod:`mimetypes`.
:param default:
If no "Content-Type" can be guessed, default to `default`.
r ) mimetypes
guess_type)filenamedefault r /builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/urllib3/fields.pyguess_content_type s r c s t t j r! j d t f d d d D s d | f } y | j d Wn t t f k
r{ Yn X| St j r j d t j
j d d | f t j r j d S)a
Helper function to format and quote a single header parameter using the
strategy defined in RFC 2231.
Particularly useful for header parameters which might contain
non-ASCII values, like file names. This follows RFC 2388 Section 4.4.
:param name:
The name of the parameter, a string expected to be ASCII only.
:param value:
The value of the parameter, provided as ``bytes`` or `str``.
:ret:
An RFC-2231-formatted unicode string.
zutf-8c 3 s | ] } | k Vq d S)Nr ).0ch)valuer r
) s z.format_header_param_rfc2231..z"\
z%s="%s"asciiz%s*=%s)
isinstancer binary_typedecodeanyencodeUnicodeEncodeErrorUnicodeDecodeErrorPY2emailutilsencode_rfc2231)namer resultr )r r
format_header_param_rfc2231 s r "z%22\z\\c C s7 i | ]- } | d k r d j | t j | q S) z%{:02X})r! )formatr unichr)r ccr r r
I s r% c sS f d d } t j d j d d j D } | j | | } | S)Nc s | j d S)Nr )group)match)needles_and_replacementsr r
replacerR s z#_replace_multiple..replacer|c S s g | ] } t j | q Sr )reescape)r needler r r
V s z%_replace_multiple..)r, compilejoinkeyssub)r r) r* patternr r )r) r
_replace_multipleQ s
%r5 c C s> t | t j r! | j d } t | t } d | | f S)a
Helper function to format and quote a single header parameter using the
HTML5 strategy.
Particularly useful for header parameters which might contain
non-ASCII values, like file names. This follows the `HTML5 Working Draft
Section 4.10.22.7`_ and matches the behavior of curl and modern browsers.
.. _HTML5 Working Draft Section 4.10.22.7:
https://w3c.github.io/html/sec-forms.html#multipart-form-data
:param name:
The name of the parameter, a string expected to be ASCII only.
:param value:
The value of the parameter, provided as ``bytes`` or `str``.
:ret:
A unicode string, stripped of troublesome characters.
zutf-8z%s="%s")r r r r r5 _HTML5_REPLACEMENTS)r r r r r
format_header_param_html5^ s r7 c @ sy e Z d Z d Z d d e d d Z e e d d Z d d Z d d
Z d d Z
d d d d
d Z d S)RequestFielda
A data container for request body parameters.
:param name:
The name of this request field. Must be unicode.
:param data:
The data/value body.
:param filename:
An optional filename of the request field. Must be unicode.
:param headers:
An optional dict-like object of headers to initially use for the field.
:param header_formatter:
An optional callable that is used to encode and format the headers. By
default, this is :func:`format_header_param_html5`.
Nc C sF | | _ | | _ | | _ i | _ | r9 t | | _ | | _ d S)N)_name _filenamedataheadersdictheader_formatter)selfr r; r r<