
    hM*                        S SK Jr  S SKrS SKrS SKr\R                  \\4   r	\R                  \	\
\\	4   \
\\	\4   4   r S
     SS jjrSS jrSS jrSS jrSS jr " S S	5      rg)    )annotationsNc                X    U (       a"  [         R                  " U 5      S   =(       d    U$ U$ )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defaults     @/var/www/html/env/lib/python3.13/site-packages/urllib3/fields.pyguess_content_typer
      s'     ##H-a0;G;N    c                l  ^ SSK nUR                  S[        SS9  [        T[        5      (       a  TR                  S5      m[        U4S jS 5       5      (       d  U  S	T S
3n UR                  S5        U$ [        R                  R                  TS5      mU  ST 3mT$ ! [        [        4 a     N;f = f)ax  
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 <https://tools.ietf.org/html/rfc2388#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.
r   Nz'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.   
stacklevelutf-8c              3  ,   >#    U  H	  oT;   v   M     g 7fN ).0chvalues     r	   	<genexpr>.format_header_param_rfc2231.<locals>.<genexpr>@   s     /YrU{Ys   z"\
=""asciiz*=)warningswarnDeprecationWarning
isinstancebytesdecodeanyencodeUnicodeEncodeErrorUnicodeDecodeErroremailutilsencode_rfc2231)namer   r   results    `  r	   format_header_param_rfc2231r+      s    ( MM	1 	   %W%/Y///6E7!$	MM'" MKK&&ug6EfBugEL #$67 		s   $B   B32B3c                    [        U[        5      (       a  UR                  S5      nUR                  SSSS.5      nU  SU S3$ )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.
r   z%0Az%0Dz%22)
      "   r   r   )r   r    r!   	translate)r)   r   s     r	   format_multipart_header_paramr1   O   sI    < %W% OOEu=>EV2eWAr   c                J    SSK nUR                  S[        SS9  [        X5      $ )t
.. deprecated:: 2.0.0
    Renamed to :func:`format_multipart_header_param`. Will be
    removed in urllib3 v2.1.0.
r   Nz'format_header_param_html5' has been renamed to 'format_multipart_header_param'. The old name will be removed in urllib3 v2.1.0.r   r   r   r   r   r1   r)   r   r   s      r	   format_header_param_html5r6   u   2     MM	% 	   )55r   c                J    SSK nUR                  S[        SS9  [        X5      $ )r3   r   Nzz'format_header_param' has been renamed to 'format_multipart_header_param'. The old name will be removed in urllib3 v2.1.0.r   r   r4   r5   s      r	   format_header_paramr9      r7   r   c                      \ rS rSrSr   S         SS jjr\ S       SS jj5       rSS jr    SS jr	SS jr
   S       SS	 jjrS
rg)RequestField   a  
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                    Xl         X0l        X l        0 U l        U(       a  [	        U5      U l        Ub   SS KnUR                  S[        SS9  XPl        g [        U l        g )Nr   zUThe 'header_formatter' parameter is deprecated and will be removed in urllib3 v2.1.0.r   r   )
_name	_filenamedataheadersdictr   r   r   header_formatterr1   )selfr)   r@   r   rA   rC   r   s          r	   __init__RequestField.__init__   s]     
!	.0=DL'MM5"	   %5!$AD!r   c                    [        U[        5      (       a%  [        U5      S:X  a  Uu  pEnOUu  pE[        U5      nOSnSnUnU " XXCS9nUR	                  US9  U$ )aS  
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)r   rC   )content_type)r   tuplelenr
   make_multipart)cls	fieldnamer   rC   r   r@   rI   request_params           r	   from_tuplesRequestField.from_tuples   sn    6 eU##5zQ/4,!&1(;HLDh
 	$$,$?r   c                $    U R                  X5      $ )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:
)rC   )rD   r)   r   s      r	   _render_partRequestField._render_part   s     $$T11r   c                    / n[        U[        5      (       a  UR                  5       nOUnU H*  u  pEUc  M
  UR                  U R	                  XE5      5        M,     SR                  U5      $ )a  
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"; ...`.
; )r   rB   itemsappendrS   join)rD   header_partspartsiterabler)   r   s         r	   _render_partsRequestField._render_parts  sc    & lD))#))+H#H#KD T..t;< $ yyr   c                   / n/ SQnU HI  nU R                   R                  US5      (       d  M&  UR                  U SU R                   U    35        MK     U R                   R                  5        H+  u  pEXB;  d  M  U(       d  M  UR                  U SU 35        M-     UR                  S5        SR	                  U5      $ )z-
Renders the headers for this request field.
)Content-DispositionContent-TypeContent-LocationFz: z
)rA   getrX   rW   rY   )rD   lines	sort_keyssort_keyheader_nameheader_values         r	   render_headersRequestField.render_headers#  s     O	!H||%00zDLL,B+CDE " *.););)=%K+<LLK=<.!AB *>
 	V{{5!!r   c           	         U=(       d    SSR                  SU R                  SU R                  4SU R                  445      /5      -   nXR                  S'   X R                  S'   X0R                  S'   g	)
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-datarV    r)   r   r`   ra   rb   N)rY   r]   r>   r?   rA   )rD   content_dispositionrI   content_locations       r	   rL   RequestField.make_multipart6  sy    (  3AkTYY""djj)J+GHF
 
 /B*+'3^$+;'(r   )r?   r>   r@   rC   rA   )NNN)
r)   strr@   _TYPE_FIELD_VALUEr   
str | NonerA   ztyping.Mapping[str, str] | NonerC   5typing.Callable[[str, _TYPE_FIELD_VALUE], str] | Noner   )rN   rp   r   _TYPE_FIELD_VALUE_TUPLErC   rs   returnr;   r)   rp   r   rq   ru   rp   )rZ   z[dict[str, _TYPE_FIELD_VALUE | None] | typing.Sequence[tuple[str, _TYPE_FIELD_VALUE | None]]ru   rp   )ru   rp   )rm   rr   rI   rr   rn   rr   ru   None)__name__
__module____qualname____firstlineno____doc__rE   classmethodrP   rS   r]   ri   rL   __static_attributes__r   r   r	   r;   r;      s    *  $37RVBB  B 	B
 1B PB8 
 SW	** '* P	*
 
* *X2  D  
 >"* +/#''+	<'< !< %	<
 
< <r   r;   )zapplication/octet-stream)r   rr   r   rp   ru   rp   rv   )
__future__r   email.utilsr&   r   typingUnionrp   r    rq   rJ   rt   r
   r+   r1   r6   r9   r;   r   r   r	   <module>r      s    "   LLe,  ,,	# 
 !	# #
%&(  *D#& -`#L6$6$|< |<r   