zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
U
I=®di!ã@sddlmZddlZddlZddlZddlmZddd„Zdd    „Z    d
d d d œZ
e
  d d„e ddƒDƒ¡dd„Z dd„ZeZGdd„deƒZdS)é)Úabsolute_importNé)Úsixúapplication/octet-streamcCs|rt |¡dp|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)ÚfilenameÚdefault©r
úQD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\pip/_vendor/urllib3/fields.pyÚguess_content_type    s    r c    s¢tˆtjƒrˆ d¡‰t‡fdd„dDƒƒsdd|ˆf}z| d¡Wnttfk
r^YnX|Stjrtˆ d¡‰t    j
  ˆd¡‰d|ˆf‰tjržˆ 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.
    úutf-8c3s|]}|ˆkVqdS©Nr
)Ú.0Úch©Úvaluer
r Ú    <genexpr>)sz.format_header_param_rfc2231.<locals>.<genexpr>z"\
ú%s="%s"Úasciiz%s*=%s) Ú
isinstancerÚ binary_typeÚdecodeÚanyÚencodeÚUnicodeEncodeErrorÚUnicodeDecodeErrorÚPY2ÚemailÚutilsÚencode_rfc2231)ÚnamerÚresultr
rr Úformat_header_param_rfc2231s  
 
 
r#z%22z\\)ú"ú\r%cCs&i|]}|dkrt |¡d |¡“qS))éz%{:02X})rÚunichrÚformat)rÚccr
r
r Ú
<dictcomp>Isþr*é cs:‡fdd„}t d dd„ˆ ¡Dƒ¡¡}| ||¡}|S)Ncsˆ| d¡S)Nr)Úgroup)Úmatch©Úneedles_and_replacementsr
r ÚreplacerRsz#_replace_multiple.<locals>.replacerú|cSsg|]}t |¡‘qSr
)ÚreÚescape)rÚneedler
r
r Ú
<listcomp>Vsz%_replace_multiple.<locals>.<listcomp>)r2ÚcompileÚjoinÚkeysÚsub)rr/r0Úpatternr"r
r.r Ú_replace_multipleQs  ÿ r;cCs,t|tjƒr| d¡}t|tƒ}d||fS)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.
    r r)rrrrr;Ú_HTML5_REPLACEMENTS)r!rr
r
r Úformat_header_param_html5^s 
 
r=c@sReZdZdZddefdd„Zeefdd„ƒZdd„Zd    d
„Z    d d „Z
dd d„Z dS)Ú 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`.
    NcCs0||_||_||_i|_|r&t|ƒ|_||_dSr)Ú_nameÚ    _filenameÚdataÚheadersÚdictÚheader_formatter)Úselfr!rArrBrDr
r
r Ú__init__Žs
zRequestField.__init__cCs`t|tƒr4t|ƒdkr"|\}}}q@|\}}t|ƒ}n d}d}|}|||||d}|j|d|S)a³
        A :class:`~urllib3.fields.RequestField` factory from old-style tuple parameters.
 
        Supports constructing :class:`~urllib3.fields.RequestField` from
        parameter of key/value strings AND key/filetuple. A filetuple is a
        (filename, data, MIME type) tuple where the MIME type is optional.
        For example::
 
            'foo': 'bar',
            'fakefile': ('foofile.txt', 'contents of foofile'),
            'realfile': ('barfile.txt', open('realfile').read()),
            'typedfile': ('bazfile.bin', open('bazfile').read(), 'image/jpeg'),
            'nonamefile': 'contents of nonamefile field',
 
        Field names and filenames must be unicode.
        éN)rrD)Ú content_type)rÚtupleÚlenr Úmake_multipart)ÚclsÚ    fieldnamerrDrrArHÚ request_paramr
r
r Ú from_tuplesžs 
 
ÿ zRequestField.from_tuplescCs | ||¡S)aI
        Overridable helper function to format a single header parameter. By
        default, this calls ``self.header_formatter``.
 
        :param name:
            The name of the parameter, a string expected to be ASCII only.
        :param value:
            The value of the parameter, provided as a unicode string.
        )rD)rEr!rr
r
r Ú _render_partÂs zRequestField._render_partcCsLg}|}t|tƒr| ¡}|D]"\}}|dk    r| | ||¡¡qd |¡S)aO
        Helper function to format and quote a single header.
 
        Useful for single headers that are composed of multiple items. E.g.,
        'Content-Disposition' fields.
 
        :param header_parts:
            A sequence of (k, v) tuples or a :class:`dict` of (k, v) to format
            as `k1="v1"; k2="v2"; ...`.
        Nú; )rrCÚitemsÚappendrPr7)rEÚ header_partsÚpartsÚiterabler!rr
r
r Ú _render_partsÏs 
 zRequestField._render_partscCs„g}dddg}|D]*}|j |d¡r| d||j|f¡q|j ¡D]&\}}||krH|rH| d||f¡qH| d¡d |¡S)z=
        Renders the headers for this request field.
        úContent-Dispositionú Content-TypeúContent-LocationFz%s: %sz
)rBÚgetrSrRr7)rEÚlinesÚ    sort_keysÚsort_keyÚ header_nameÚ header_valuer
r
r Úrender_headersås
 
zRequestField.render_headersc CsX|pd|jd<|jdd d| d|jfd|jff¡g¡7<||jd<||jd<d    S)
a|
        Makes this request field into a multipart request field.
 
        This method overrides "Content-Disposition", "Content-Type" and
        "Content-Location" headers to the request parameter.
 
        :param content_type:
            The 'Content-Type' of the request body.
        :param content_location:
            The 'Content-Location' of the request body.
 
        z    form-datarXrQÚr!rrYrZN)rBr7rWr?r@)rEÚcontent_dispositionrHÚcontent_locationr
r
r rKøsÿþÿ
zRequestField.make_multipart)NNN) Ú__name__Ú
__module__Ú __qualname__Ú__doc__r=rFÚ classmethodrOrPrWrarKr
r
r
r r>}sú
# ÿr>)r)Ú
__future__rÚ email.utilsrrr2Úpackagesrr r#r<ÚupdateÚranger;r=Úformat_header_paramÚobjectr>r
r
r
r Ú<module>s&  
*üþÿ