{f[*ddlmZddlZddlZddlZej eefZ ej e ejee fejee effZ d d dZ d dZ d dZd dZd dZGdd Zy) ) annotationsNcB|rtj|dxs|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)filenamedefaults W/var/lib/jenkins/workspace/mettalog/venv/lib/python3.12/site-packages/urllib3/fields.pyguess_content_typer s'##H-a0;G; NcZddl}|jdtdttrj dt fddDs|d d } |jd |Stjjd|d S#ttf$rY:wxYw) 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``. :returns: An RFC-2231-formatted unicode string. .. deprecated:: 2.0.0 Will be removed in urllib3 v2.1.0. This is not valid for ``multipart/form-data`` header parameters. rNz'format_header_param_rfc2231' is deprecated and will be removed in urllib3 v2.1.0. This is not valid for multipart/form-data header parameters. stacklevelutf-8c3&K|]}|v ywN).0chvalues r z.format_header_param_rfc2231..@s/rrU{/sz"\ =""asciiz*=) warningswarnDeprecationWarning isinstancebytesdecodeanyencodeUnicodeEncodeErrorUnicodeDecodeErroremailutilsencode_rfc2231)namerrresults ` r format_header_param_rfc2231r*s( MM 1  % W% /Y/ /6E7!$  MM' "M KK & &ug 6EfBug E L#$67   sBB*)B*c~t|tr|jd}|jdddd}|d|dS)a Format and quote a single multipart header parameter. This follows the `WHATWG HTML Standard`_ as of 2021/06/10, matching the behavior of current browser and curl versions. Values are assumed to be UTF-8. The ``\n``, ``\r``, and ``"`` characters are percent encoded. .. _WHATWG HTML Standard: https://html.spec.whatwg.org/multipage/ form-control-infrastructure.html#multipart-form-data :param name: The name of the parameter, an ASCII-only ``str``. :param value: The value of the parameter, a ``str`` or UTF-8 encoded ``bytes``. :returns: A string ``name="value"`` with the escaped value. .. versionchanged:: 2.0.0 Matches the WHATWG HTML Standard as of 2021/06/10. Control characters are no longer percent encoded. .. versionchanged:: 2.0.0 Renamed from ``format_header_param_html5`` and ``format_header_param``. The old names will be removed in urllib3 v2.1.0. rz%0Az%0Dz%22) "rr)rrr translate)r(rs r format_multipart_header_paramr0OsF<% W% OOEu= >EV2eWA r cRddl}|jdtdt||S) .. deprecated:: 2.0.0 Renamed to :func:`format_multipart_header_param`. Will be removed in urllib3 v2.1.0. rNz'format_header_param_html5' has been renamed to 'format_multipart_header_param'. The old name will be removed in urllib3 v2.1.0.r rrrrr0r(rrs r format_header_param_html5r5u4  MM %   )u 55r cRddl}|jdtdt||S)r2rNzz'format_header_param' has been renamed to 'format_multipart_header_param'. The old name will be removed in urllib3 v2.1.0.r rr3r4s r format_header_paramr8r6r ceZdZdZ d d dZe d d dZd dZ ddZddZ d ddZ y) 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. .. versionchanged:: 2.0.0 The ``header_formatter`` parameter is deprecated and will be removed in urllib3 v2.1.0. Nc||_||_||_i|_|rt ||_|$ddl}|j dtd||_yt|_y)NrzUThe 'header_formatter' parameter is deprecated and will be removed in urllib3 v2.1.0.r r) _name _filenamedataheadersdictrrrheader_formatterr0)selfr(r>rr?rArs r __init__zRequestField.__init__se ! .0 =DL  '  MM5"   %5D !$AD !r ct|tr&t|dk(r|\}}}n|\}}t|}nd}d}|}|||||}|j ||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)rrA) content_type)rtuplelenr make_multipart)cls fieldnamerrArr>rF request_params r from_tupleszRequestField.from_tuplesst6 eU #5zQ/4,$ !&$1(; HLD thAQ  $$,$?r c&|j||S)a Override this method to change how each multipart header parameter is formatted. By default, this calls :func:`format_multipart_header_param`. :param name: The name of the parameter, an ASCII-only ``str``. :param value: The value of the parameter, a ``str`` or UTF-8 encoded ``bytes``. :meta public: )rA)rBr(rs r _render_partzRequestField._render_parts$$T511r cg}t|tr|j}n|}|D])\}}| |j|j ||+dj |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"; ...`. ; )rr@itemsappendrOjoin)rB header_partspartsiterabler(rs r _render_partszRequestField._render_partssd& lD )#))+H#H#KD%  T..tU;<$yyr c`g}gd}|D]B}|jj|ds |j|d|j|D|jjD]#\}}||vs |s|j|d|%|jddj |S)z= Renders the headers for this request field. )Content-Disposition Content-TypeContent-LocationFz: z )r?getrSrRrT)rBlines sort_keyssort_key header_name header_values r render_headerszRequestField.render_headers#sO !H||%0 zDLL,B+CDE"*.););)= %K)+LLK=<.!AB*>  V{{5!!r c |xsddjd|jd|jfd|jffgz}||jd<||jd<||jd<y ) 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_disposition: The 'Content-Disposition' of the request body. Defaults to 'form-data' :param content_type: The 'Content-Type' of the request body. :param content_location: The 'Content-Location' of the request body. z form-datarQr(rrZr[r\N)rTrXr<r=r?)rBcontent_dispositionrFcontent_locations r rIzRequestField.make_multipart6s( 3AkTYY""djj)J+GH F  /B *+'3 ^$+; '(r )NNN) r(strr>_TYPE_FIELD_VALUEr str | Noner?ztyping.Mapping[str, str] | NonerA5typing.Callable[[str, _TYPE_FIELD_VALUE], str] | Noner)rKrhr_TYPE_FIELD_VALUE_TUPLErArkreturnr:r(rhrrirmrh)rUz[dict[str, _TYPE_FIELD_VALUE | None] | typing.Sequence[tuple[str, _TYPE_FIELD_VALUE | None]]rmrh)rmrh)rfrjrFrjrgrjrmNone) __name__ __module__ __qualname____doc__rC classmethodrMrOrXrcrIrr r r:r:s* $37RV BB B B 1 B P B8 SW **'*P *  **X2   D  >"*+/#''+ <'<!<% <  rzs" LLe, ,, LL''( LL',-/*D  #&   -`#L6$6$|<|