
    q"h!              	          S SK Jr  S SKrS SKrS SKrSSKJr  SS jrS r	SSS	.r
\
R                  \" S S
5       V s0 s H,  n U S;  d  M  \R                  U 5      SR                  U 5      _M.     sn 5        S rS r\r " S S\5      rgs  sn f )    )absolute_importN   )sixc                 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     L/var/www/html/env/lib/python3.13/site-packages/pip/_vendor/urllib3/fields.pyguess_content_typer   
   s'     ##H-a0;G;N    c                   ^ [        T[        R                  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                  (       a  TR                  S5      m[        R                  R                  TS5      mU < ST< 3m[        R                  (       a  TR                  S5      mT$ ! [        [        4 a     Nf = f)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 <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``.
:ret:
    An RFC-2231-formatted unicode string.
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*=)
isinstancer   binary_typedecodeanyencodeUnicodeEncodeErrorUnicodeDecodeErrorPY2emailutilsencode_rfc2231)namer   results    ` r   format_header_param_rfc2231r(      s      %))W%/Y///#U+	MM'" M
wwW% KK&&ug6Ee$E
wwW%L! #$67 		s   C! !C43C4z%22z\\)r   \    )   z%{:02X}c           
         ^ U4S jn[         R                  " SR                  TR                  5        Vs/ s H  n[         R                  " U5      PM     sn5      5      nUR                  X 5      nU$ s  snf )Nc                 ,   > TU R                  S5         $ )Nr   )group)matchneedles_and_replacementss    r   replacer#_replace_multiple.<locals>.replacerS   s    'A77r   |)recompilejoinkeysescapesub)r   r0   r1   needlepatternr'   s    `    r   _replace_multipler<   R   sc    8 jj		3K3P3P3RS3R299V$3RSTG [[)FM Ts    A3c                     [        U[        R                  5      (       a  UR                  S5      n[	        U[
        5      nU < SU< S3$ )ay  
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   r   )r   r   r   r   r<   _HTML5_REPLACEMENTS)r&   r   s     r   format_header_param_html5r?   _   s;    & %))W%e%89Eu%%r   c                   \    \ rS rSrSrSS\4S jr\\4S j5       rS r	S r
S r SS	 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.
: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                 p    Xl         X0l        X l        0 U l        U(       a  [	        U5      U l        XPl        g r   )_name	_filenamedataheadersdictheader_formatter)selfr&   rF   r	   rG   rI   s         r   __init__RequestField.__init__   s.     
!	=DL 0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	   rI   )content_type)r   tuplelenr   make_multipart)cls	fieldnamer   rI   r	   rF   rO   request_params           r   from_tuplesRequestField.from_tuples   sn    $ eU##5zQ/4,!&1(;HLDh
 	$$,$?r   c                 $    U R                  X5      $ )a  
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.
)rI   )rJ   r&   r   s      r   _render_partRequestField._render_part   s     $$T11r   c                     / nUn[        U[        5      (       a  UR                  5       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   rH   itemsappendrY   r6   )rJ   header_partspartsiterabler&   r   s         r   _render_partsRequestField._render_parts   sc     lD))#))+H#KD T..t;< $ zz%  r   c                    / n/ SQnU HK  nU R                   R                  US5      (       d  M&  UR                  U< SU R                   U   < 35        MM     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
)rG   getr^   r]   r6   )rJ   lines	sort_keyssort_keyheader_nameheader_values         r   render_headersRequestField.render_headers   s     O	!H||%00(DLL4JKL " *.););)=%K+<LLk<!HI *>
 	W||E""r   c                    U=(       d    SU R                   S'   U R                   S==   SR                  SU R                  SU R                  4SU R                  445      /5      -  s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_type:
    The 'Content-Type' of the request body.
:param content_location:
    The 'Content-Location' of the request body.

z	form-datare   r\    r&   r	   rf   rg   N)rG   r6   rb   rD   rE   )rJ   content_dispositionrO   content_locations       r   rR   RequestField.make_multipart   s     /B.Q\*+*+uzz""tzz*[$..,IJ0
 	
+ (4^$+;'(r   )rE   rD   rF   rI   rG   )NNN)__name__
__module____qualname____firstlineno____doc__r?   rK   classmethodrV   rY   rb   rn   rR   __static_attributes__r   r   r   rA   rA   ~   sJ    ( 21  <U ! !F2!,#( MQ<r   rA   )zapplication/octet-stream)
__future__r   email.utilsr#   r   r4   packagesr   r   r(   r>   updaterangeunichrformatr<   r?   format_header_paramobjectrA   )ccs   0r   <module>r      s    &   	 'V      h''BW 	.

2
))"--'
&8 0 T<6 T<is   
B

%B
