
    ,hM*                        d dl mZ d dlZd dlZd dlZej                  eef   Z	ej                  e	e
ee	f   e
ee	ef   f   Z	 d
	 	 	 	 	 ddZddZddZddZddZ G d d	      Zy)    )annotationsNc                B    | rt        j                  |       d   xs |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defaults     P/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/urllib3/fields.pyguess_content_typer
      s'     ##H-a0;G;N    c                Z   ddl }|j                  dt        d       t        t              rj                  d      t        fddD              s|  d	 d
}	 |j                  d       |S t        j                  j                  d      |  d S # t        t        f$ r Y :w xY w)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``.
    :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  &   K   | ]  }|v  
 y wN ).0chvalues     r	   	<genexpr>z.format_header_param_rfc2231.<locals>.<genexpr>@   s     /rrU{/s   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 B*)B*c                ~    t        |t              r|j                  d      }|j                  dddd      }|  d| dS )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_paramr0   O   sF    < %W% OOEu=>EV2eWAr   c                R    ddl }|j                  dt        d       t        | |      S )
    .. 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   r0   r(   r   r   s      r	   format_header_param_html5r5   u   4     MM	% 	   )u55r   c                R    ddl }|j                  dt        d       t        | |      S )r2   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   r3   r4   s      r	   format_header_paramr8      r6   r   c                      e Zd ZdZ	 	 	 d		 	 	 	 	 	 	 	 	 d
dZe	 d	 	 	 	 	 	 	 dd       ZddZ	 	 	 	 ddZddZ		 	 	 d		 	 	 	 	 	 	 ddZ
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 | _        |rt	        |      | _        |$dd l}|j                  dt        d       || _        y t        | _        y )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_formatterr0   )selfr(   r>   r   r?   rA   r   s          r	   __init__zRequestField.__init__   se     
!	.0=DL'MM5"	   %5D!$AD!r   c                    t        |t              r&t        |      dk(  r|\  }}}n|\  }}t        |      }nd}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)r   rA   )content_type)r   tuplelenr
   make_multipart)cls	fieldnamer   rA   r   r>   rF   request_params           r	   from_tupleszRequestField.from_tuples   st    6 eU#5zQ/4,$!&$1(;HLD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   )rB   r(   r   s      r	   _render_partzRequestField._render_part   s     $$T511r   c                    g }t        |t              r|j                         }n|}|D ])  \  }}|	|j                  | j	                  ||             + dj                  |      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"; ...`.
        ; )r   r@   itemsappendrO   join)rB   header_partspartsiterabler(   r   s         r	   _render_partszRequestField._render_parts  si    & lD)#))+H#H# 	=KD% T..tU;<	= yyr   c                `   g }g d}|D ]B  }| j                   j                  |d      s |j                  | d| j                   |           D | j                   j                         D ]#  \  }}||vs|s|j                  | d|        % |j                  d       dj	                  |      S )z=
        Renders the headers for this request field.
        )Content-DispositionContent-TypeContent-LocationFz: z
)r?   getrS   rR   rT   )rB   lines	sort_keyssort_keyheader_nameheader_values         r	   render_headerszRequestField.render_headers#  s     O	! 	FH||%0zDLL,B+CDE	F *.););)= 	C%K)+LLK=<.!AB	C
 	V{{5!!r   c           	         |xs ddj                  d| j                  d| j                  fd| j                  ff      g      z   }|| j                  d<   || j                  d<   || j                  d<   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-datarQ    r(   r   rZ   r[   r\   N)rT   rX   r<   r=   r?   )rB   content_dispositionrF   content_locations       r	   rI   zRequestField.make_multipart6  s    (  3AkTYY""djj)J+GHF
 
 /B*+'3^$+;'(r   )NNN)
r(   strr>   _TYPE_FIELD_VALUEr   
str | Noner?   ztyping.Mapping[str, str] | NonerA   5typing.Callable[[str, _TYPE_FIELD_VALUE], str] | Noner   )rK   rh   r   _TYPE_FIELD_VALUE_TUPLErA   rk   returnr:   r(   rh   r   ri   rm   rh   )rU   z[dict[str, _TYPE_FIELD_VALUE | None] | typing.Sequence[tuple[str, _TYPE_FIELD_VALUE | None]]rm   rh   )rm   rh   )rf   rj   rF   rj   rg   rj   rm   None)__name__
__module____qualname____doc__rC   classmethodrM   rO   rX   rc   rI   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   rj   r   rh   rm   rh   rn   )
__future__r   email.utilsr%   r   typingUnionrh   r   ri   rG   rl   r
   r*   r0   r5   r8   r:   r   r   r	   <module>ry      s    "   LLe,  ,,	# 
 !	# #
%&(  *D#& -`#L6$6$|< |<r   