
    eg!              	          d dl mZ d dlZd dlZd dlZddlmZ ddZd Z	ddd	Z
e
j                   ed d
      D  ci c](  } | dvr" ej                  |       dj                  |       * c}        d Zd ZeZ G d de      Zyc c} w )    )absolute_importN   )sixc                 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     w/var/www/html/FastMealFinder_FlaskServer-InitialRelease/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/fields.pyguess_content_typer   
   s'     ##H-a0;G;N    c                    t        t        j                        rj                  d      t	        fddD              s| dd}	 |j                  d       |S t        j                  rj                  d      t        j                  j                  d      | dt        j                  rj                  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``.
    :ret:
        An RFC-2231-formatted unicode string.
    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*=)
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 CCz%22z\\)r   \    )   z%{:02X}c           
          fd}t        j                  dj                  j                         D cg c]  }t        j                  |       c}            }|j                  ||       }|S c c}w )Nc                 ,    | j                  d         S )Nr   )group)matchneedles_and_replacementss    r   replacerz#_replace_multiple.<locals>.replacerS   s    'A77r   |)recompilejoinkeysescapesub)r   r/   r0   needlepatternr&   s    `    r   _replace_multipler:   R   s_    8 jj		3K3P3P3RS299V$STG [[5)FM Ts   A.c                     t        |t        j                        r|j                  d      }t	        |t
              }| d|dS )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   r   )r   r   r   r   r:   _HTML5_REPLACEMENTS)r%   r   s     r   format_header_param_html5r=   _   s8    & %)W%e%89Eu%%r   c                   N    e Zd ZdZddefdZeefd       Zd Zd Z	d Z
	 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.
    :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                 n    || _         || _        || _        i | _        |rt	        |      | _        || _        y r   )_name	_filenamedataheadersdictheader_formatter)selfr%   rC   r	   rD   rF   s         r   __init__zRequestField.__init__   s6     
!	=DL 0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	   rF   )content_type)r   tuplelenr   make_multipart)cls	fieldnamer   rF   r	   rC   rK   request_params           r   from_tupleszRequestField.from_tuples   st    $ eU#5zQ/4,$!&$1(;HLDthAQ
 	$$,$?r   c                 &    | j                  ||      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.
        )rF   )rG   r%   r   s      r   _render_partzRequestField._render_part   s     $$T511r   c                     g }|}t        |t              r|j                         }|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   rE   itemsappendrT   r4   )rG   header_partspartsiterabler%   r   s         r   _render_partszRequestField._render_parts   si     lD)#))+H# 	=KD% T..tU;<	= zz%  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
)rD   getrX   rW   r4   )rG   lines	sort_keyssort_keyheader_nameheader_values         r   render_headerszRequestField.render_headers   s     O	! 	MH||%0(DLL4JKL	M *.););)= 	J%K)+LLk<!HI	J
 	W||E""r   c                    |xs d| j                   d<   | j                   dxx   dj                  d| j                  d| j                  fd| j                  ff      g      z  cc<   || 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_type:
            The 'Content-Type' of the request body.
        :param content_location:
            The 'Content-Location' of the request body.

        z	form-datar^   rV    r%   r	   r_   r`   N)rD   r4   r\   rA   rB   )rG   content_dispositionrK   content_locations       r   rN   zRequestField.make_multipart   s     /B.Q\*+*+uzz""tzz*[$..,IJ0
 	
+ (4^$+;'(r   )NNN)__name__
__module____qualname____doc__r=   rH   classmethodrR   rT   r\   rg   rN   r   r   r   r?   r?   ~   sJ    ( 21  <U ! !F2!,#( MQ<r   r?   )zapplication/octet-stream)
__future__r   email.utilsr"   r   r2   packagesr   r   r'   r<   updaterangeunichrformatr:   r=   format_header_paramobjectr?   )ccs   0r   <module>r{      s    &   	 'V      h'W 	

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