
    tni                         d dl Z d dlZd dlmZmZmZmZ d dlmZ d dl	m
Z
mZ ddlmZmZmZ ddlmZ ddlmZ d	Z G d
 d          ZdS )    N)AnyIterableListOptional)	urlencode)	MultiDictMultiDictProxy   )hdrs	multipartpayload)guess_filename)Payload)FormDatac                      e Zd ZdZ	 	 	 ddddee         ded	ee         d
eddf
dZ	e
defd            Zdddddededee         dee         dee         ddfdZdeddfdZdej        fdZdej        fdZdefdZdS )r   ztHelper class for form body generation.

    Supports multipart/form-data and application/x-www-form-urlencoded.
     TNF)default_to_multipartfieldsquote_fieldscharsetr   returnc                0   t          j        d          | _        g | _        || _        || _        || _        t          |t                    r"t          |
                                          }nt          |t          t          f          s|f} | j        |  d S )N	form-data)r   MultipartWriter_writer_fields_is_multipart_quote_fields_charset
isinstancedictlistitemstuple
add_fields)selfr   r   r   r   s        M/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/aiohttp/formdata.py__init__zFormData.__init__   s     !0=="$1)fd## 	&,,..))FFFT5M22 	YF        c                     | j         S N)r   r&   s    r'   is_multipartzFormData.is_multipart)   s    !!r)   )content_typefilenamecontent_transfer_encodingnamevaluer.   r/   r0   c                   t          |t          j                  rd| _        nDt          |t          t
          t          f          r"d}||t          j        |t                     |}t          d|i          }|'t          |t                    st          d|z            |*t          |t          j                  rt          ||          }|||d<   d| _        i }|=t          |t                    st          d|z            ||t          j        <   d| _        |Jt          |t                    st          d|z            d}t          j        |t                     d| _        | j                            |||f           d S )	NTzIn v4, passing bytes will no longer create a file field. Please explicitly use the filename parameter or pass a BytesIO object.r1   z,filename must be an instance of str. Got: %sr/   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&   r1   r2   r.   r/   r0   msgtype_optionsheaderss	            r'   	add_fieldzFormData.add_field-   s    eRY'' 		 !%Dy*=>> 	 Y  $=$Ec#5666'0&$'@'@
8S(A(AJXUVVV
5") < <%eT22H'/L$!%D#lC00 FU   *6GD%&!%D$07== ')BC  
P  M#1222!%D\7E:;;;;;r)   c                 B   t          |          }|r|                    d          }t          |t          j                  r't          |d          }|                     ||           nt          |t          t          f          r(|	                    |
                                           nmt          |t           t          f          r/t          |          dk    r|\  }}|                     ||           n"t          d                    |                    |
d S d S )Nr   unknown   zxOnly io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got {!r})r"   popr    r4   r5   r   rC   r	   r   extendr#   r$   lenr=   format)r&   r   to_addreckfps         r'   r%   zFormData.add_fieldsb   s   f 	**Q--C#ry)) "3	22q#&&&&C.)!<== ciikk****C$// 	CHHMM2q"%%%%  88>s    	 	 	 	 	r)   c                    g }| j         D ]#\  }}}|                    |d         |f           $| j        | j        nd}|dk    rd}nd|z  }t          j        t          |d|                                          |          S )Nr1   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&   datarA   _r2   r   r.   s          r'   _gen_form_urlencodedzFormData._gen_form_urlencodedz   s    &*l 	7 	7"L!UKKf-u56666#'=#<$--'g>LLJWTL#d$999@@BB%
 
 
 	
r)   c           
      @   | j         D ]\  }}}	 t          j        |v r.t          j        ||t          j                 || j                  }nt          j        ||| j                  }n8# t          $ r+}t          dt          |          d|d|          |d}~ww xY w|rC |j	        	 d	d| j
        i| |j        J |j                            t          j        d           | j                            |           | j                                          | j        S )
zAEncode a list of fields using the multipart/form-data MIME format)r.   rB   rQ   )rB   rQ   zCan not serialize value type: z
 headers: z	
 value: Nr   r   )r   )r   r   r>   r   get_payloadr   	Exceptionr=   typeset_content_dispositionr   rB   popallCONTENT_LENGTHr   append_payloadclear)r&   
dispparamsrB   r2   partexcs         r'   _gen_form_datazFormData._gen_form_data   sr   *., 	. 	.&J$//".%,T->%? '!%	  DD #.w  D    i15eggguuN    ?,, .2.@DN  
 |///##D$7>>>L''----|s   AA((
B2&BBc                 `    | j         r|                                 S |                                 S r+   )r   rc   rV   r,   s    r'   __call__zFormData.__call__   s1     	/&&(((,,...r)   )r   TN)__name__
__module____qualname____doc__r   r   boolr   r<   r(   propertyr-   rC   r%   r   rR   rV   r   r   rc   r   re   r   r)   r'   r   r      s         !#!!%	! &+! ! !! ! #	! #! 
! ! ! !( "d " " " X" '+"&373< 3< 3<3< 3<
 sm3< 3-3< $,C=3< 
3< 3< 3< 3<j# $    0
g&: 
 
 
 
$!	 9 ! ! ! !F/' / / / / / /r)   r   )r4   r9   typingr   r   r   r   urllib.parser   	multidictr   r	    r   r   r   helpersr   r   __all__r   r   r)   r'   <module>rr      s    				  0 0 0 0 0 0 0 0 0 0 0 0 " " " " " " / / / / / / / / & & & & & & & & & & # # # # # #      
d/ d/ d/ d/ d/ d/ d/ d/ d/ d/r)   