
    rp0jr                         S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	J
r
  SSKJrJrJr  SSKJr  SS	KJr  SS
KJr  Sr " S S5      rg)    N)Iterable)Any)	urlencode)	MultiDictMultiDictProxy   )hdrs	multipartpayload)guess_filename)_safe_header)Payload)FormDatac                      \ rS rSrSr   SSS.S\\   S\S\S-  S	\S
S4
S jjjr	\
S
\4S j5       rSSSS.S\S\S\S-  S\S-  S\S-  S
S4S jjrS\S
S4S jrS
\R                  4S jrS
\R$                  4S jrS
\4S jrSrg)r      zlHelper class for form body generation.

Supports multipart/form-data and application/x-www-form-urlencoded.
NF)default_to_multipartfieldsquote_fieldscharsetr   returnc                $   [         R                  " S5      U l        / U l        X@l        X l        X0l        [        U[        5      (       a  [        UR                  5       5      nO[        U[        [        45      (       d  U4nU R                  " U6   g )N	form-data)r
   MultipartWriter_writer_fields_is_multipart_quote_fields_charset
isinstancedictlistitemstuple
add_fields)selfr   r   r   r   s        J/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/formdata.py__init__FormData.__init__   so     !00="$1)fd##&,,.)FFT5M22YF     c                     U R                   $ N)r   r%   s    r&   is_multipartFormData.is_multipart+   s    !!!r)   )content_typefilenamecontent_transfer_encodingnamevaluer/   r0   r1   c                J   [        U[        R                  5      (       a  SU l        OE[        U[        [
        [        45      (       a%  SnUc   Uc  [        R                  " U[        5        Un[        U5        [        SU05      nUb#  [        U[        5      (       d  [        SU-  5      eUc*  [        U[        R                  5      (       a  [        X!5      nUb  [        U5        XGS'   SU l        0 nUbG  [        U[        5      (       d  [        SU-  5      e[        U5        X8[        R                   '   SU l        UbG  [        U[        5      (       d  [        SU-  5      eSn[        R                  " U[        5        SU l        U R"                  R%                  XxU45        g )	NTzIn v4, passing bytes will no longer create a file field. Please explicitly use the filename parameter or pass a BytesIO object.r2   z,filename must be an instance of str. Got: %sr0   z0content_type must be an instance of str. Got: %sz=content_transfer_encoding must be an instance of str. Got: %szfcontent_transfer_encoding is deprecated. To maintain compatibility with v4 please pass a BytesPayload.)r   ioIOBaser   bytes	bytearray
memoryviewwarningswarnDeprecationWarningr   r   str	TypeErrorr   r	   CONTENT_TYPEr   append)	r%   r2   r3   r/   r0   r1   msgtype_optionsheaderss	            r&   	add_fieldFormData.add_field/   s    eRYY''!%Dy*=>>Y  $=$Ec#56T'0&$'@
8S(A(AJXUVV
5")) < <%e2H"'/$!%D#lC00FU  &)5D%%&!%D$07==')BC 
P  MM#12!%D\E:;r)   c                    [        U5      nU(       a  UR                  S5      n[        U[        R                  5      (       a  [        US5      nU R                  XC5        O[        U[        [        45      (       a   UR                  UR                  5       5        OO[        U[         [        45      (       a%  [        U5      S:X  a  Uu  pEU R                  XE5        O[        SU< 35      eU(       a  M  g g )Nr   unknown   ztOnly io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got )r!   popr   r5   r6   r   rD   r   r   extendr"   r#   lenr>   )r%   r   to_addreckfps         r&   r$   FormData.add_fieldsg   s    f**Q-C#ryy))"3	2q&C.)!<==ciik*C$//CHMq%  4477<  fr)   c                    / nU R                    H  u  p#nUR                  US   U45        M     U R                  b  U R                  OSnUS:X  a  SnOSU-  n[        R                  " [        USUS9R                  5       US9$ )Nr2   zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)doseqencoding)r/   )r   r@   r   r   BytesPayloadr   encode)r%   datarB   _r3   r   r/   s          r&   _gen_form_urlencodedFormData._gen_form_urlencoded   s    &*ll"LUKKf-u56 '3 $(==#<$--'g>LJWTL##d$9@@B%
 	
r)   c           
         U R                    H  u  pn [        R                  U;   a3  [        R                  " UU[        R                     UU R
                  S9nO [        R                  " X2U R
                  S9n U(       aX  UR                  "  SSU R                  0UD6  UR                  c   eUR                  R                  [        R                  S5        U R                  R                  U5        M     U R                   R!                  5         U R                  $ ! [         a&  n[        S[        U5      < SU< SU< 35      UeSnAff = f)	zAEncode a list of fields using the multipart/form-data MIME format)r/   rC   rS   )rC   rS   zCan not serialize value type: z
 headers: z	
 value: Nr   )r   )r   r	   r?   r   get_payloadr   	Exceptionr>   typeset_content_dispositionr   rC   popallCONTENT_LENGTHr   append_payloadclear)r%   
dispparamsrC   r3   partexcs         r&   _gen_form_dataFormData._gen_form_data   s)   *.,,&J$$/"..%,T->->%? '!%	D #..D ,,.2.@.@DN
 ||///##D$7$7>LL''-9 +7< 	||%  15eguN s   ADD
E)!E

Ec                 d    U R                   (       a  U R                  5       $ U R                  5       $ r+   )r   rf   rX   r,   s    r&   __call__FormData.__call__   s)    &&((,,..r)   )r   r   r   r   r   ) TN)__name__
__module____qualname____firstlineno____doc__r   r   boolr=   r'   propertyr-   rD   r$   r   rT   rX   r
   r   rf   r   ri   __static_attributes__rk   r)   r&   r   r      s    !#!"	! &+!! ! t	! #! 
!( "d " " $(#046<6< 6<
 Dj6< *6< $':6< 
6<p# $ 0
g&:&: 
$!	 9 9 !F/' /r)   r   )r5   r:   collections.abcr   typingr   urllib.parser   	multidictr   r    r	   r
   r   helpersr   http_writerr   r   __all__r   rk   r)   r&   <module>r|      s7    	  $  " / & & # % 
g/ g/r)   