
    i                         S SK r S SKrS SKJrJrJr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	r " S
 S5      rg)    N)AnyIterableListOptional)	urlencode)	MultiDictMultiDictProxy   )hdrs	multipartpayload)guess_filename)Payload)FormDatac                      \ rS rSrSr   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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        =/app/mltbenv/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valuer0   r1   r2   c                6   [        U[        R                  5      (       a  SU l        OE[        U[        [
        [        45      (       a%  SnUc   Uc  [        R                  " U[        5        Un[        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  XGS'   SU l        0 nUbS  [        U[        5      (       d  [        SU-  5      eSU;   d  SU;   a  [        S	5      e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.r3   z,filename must be an instance of str. Got: %sr1   z0content_type must be an instance of str. Got: %s
zRNewline or carriage return detected in headers. Potential header injection attack.z=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   str	TypeErrorr   
ValueErrorr   CONTENT_TYPEr   append)	r&   r3   r4   r0   r1   r2   msgtype_optionsheaderss	            r'   	add_fieldFormData.add_field-   s    eRYY''!%Dy*=>>Y  $=$Ec#56'0&$'@
8S(A(AJXUVV
5")) < <%e2H'/$!%D#lC00FU  |#t|'; 9  *6D%%&!%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        OZ[        U[         [        45      (       a%  [        U5      S:X  a  Uu  pEU R                  XE5        O[        SR                  U5      5      eU(       a  M  g g )Nr   unknown   zxOnly io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got {!r})r"   popr    r8   r9   r   rH   r	   r   extendr#   r$   lenrA   format)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%  88>s  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$ )Nr3   zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)doseqencoding)r0   )r   rD   r   r   BytesPayloadr   encode)r&   datarF   _r4   r   r0   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)r0   rG   rX   )rG   rX   zCan not serialize value type: z
 headers: z	
 value: Nr   )r   )r   r   rC   r   get_payloadr   	ExceptionrA   typeset_content_dispositionr   rG   popallCONTENT_LENGTHr   append_payloadclear)r&   
dispparamsrG   r4   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   rk   r]   r-   s    r'   __call__FormData.__call__   s)    &&((,,..r*   )r   r   r   r   r   ) TN)__name__
__module____qualname____firstlineno____doc__r   r   boolr   r@   r(   propertyr.   rH   r%   r   rY   r]   r   r   rk   r   rn   __static_attributes__rp   r*   r'   r   r      s    !#!!%	! &+!! ! #	! #! 
!( "d " " '+"&378<8< 8<
 sm8< 3-8< $,C=8< 
8<t# $ 0
g&:&: 
$!	 9 9 !F/' /r*   r   )r8   r=   typingr   r   r   r   urllib.parser   	multidictr   r	    r   r   r   helpersr   r   __all__r   rp   r*   r'   <module>r      s4    	  0 0 " / & & # 
i/ i/r*   