
    h                         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                2   [         R                  " S5      U l        / U l        X@l        SU 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-dataF)r   MultipartWriter_writer_fields_is_multipart_is_processed_quote_fields_charset
isinstancedictlistitemstuple
add_fields)selfr   r   r   r   s        B/var/www/html/env/lib/python3.13/site-packages/aiohttp/formdata.py__init__FormData.__init__   sw     !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valuer1   r2   r3   c                   [        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b<  [        U[        5      (       d  [        SU-  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.r4   z,filename must be an instance of str. Got: %sr2   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   str	TypeErrorr   r   CONTENT_TYPEr   append)	r'   r4   r5   r1   r2   r3   msgtype_optionsheaderss	            r(   	add_fieldFormData.add_field.   st    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  *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!   r7   r8   r   rF   r	   r   extendr$   r%   lenr@   format)r'   r   to_addreckfps         r(   r&   FormData.add_fieldsc   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$ )Nr4   zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)doseqencoding)r1   )r   rB   r    r   BytesPayloadr   encode)r'   datarD   _r5   r   r1   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                   (       a  [        S5      e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     S	U l         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 formatz$Form data has been processed already)r1   rE   rV   )rE   rV   zCan not serialize value type: z
 headers: z	
 value: Nr   T)r   )r   RuntimeErrorr   r   rA   r   get_payloadr    	Exceptionr@   typeset_content_dispositionr   rE   popallCONTENT_LENGTHr   append_payload)r'   
dispparamsrE   r5   partexcs         r(   _gen_form_dataFormData._gen_form_data   s6   EFF*.,,&J$$/"..%,T->->%? '!%	D #..D ,,.2.@.@DN
 ||///##D$7$7>LL''-9 +7< "||%  15eguN s   AD(7D((
E2!EEc                 d    U R                   (       a  U R                  5       $ U R                  5       $ r-   )r   ri   r[   r.   s    r(   __call__FormData.__call__   s)    &&((,,..r+   )r    r   r   r   r   r   ) TN)__name__
__module____qualname____firstlineno____doc__r   r   boolr   r?   r)   propertyr/   rF   r&   r   rW   r[   r   r   ri   r   rl   __static_attributes__rn   r+   r(   r   r      s    !#!!%	! &+!! ! #	! #! 
!* "d " " '+"&373<3< 3<
 sm3< 3-3< $,C=3< 
3<j# $ 0
g&:&: 
$#	 9 9 #J/' /r+   r   )r7   r<   typingr   r   r   r   urllib.parser   	multidictr   r	    r   r   r   helpersr   r   __all__r   rn   r+   r(   <module>r}      s4    	  0 0 " / & & # 
g/ g/r+   