
    h                         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                >   t          j        d          | _        g | _        || _        d| _        || _        || _        t          |t                    r"t          |                                          }nt          |t          t          f          s|f} | j        |  d S )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        R/var/www/html/prod/cognitive/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/   r0   r1   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.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   str	TypeErrorr   r   CONTENT_TYPEr   append)	r'   r2   r3   r/   r0   r1   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!   r5   r6   r   rD   r	   r   extendr$   r%   lenr>   format)r'   r   to_addreckfps         r(   r&   zFormData.add_fieldsc   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 )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_urlencodedzFormData._gen_form_urlencoded{   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           
      H   | j         rt          d          | 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                            |           d
| _         | j        S )zAEncode a list of fields using the multipart/form-data MIME formatz$Form data has been processed already)r/   rC   rR   )rC   rR   zCan not serialize value type: z
 headers: z	
 value: Nr   r   T)r   )r   RuntimeErrorr   r   r?   r   get_payloadr    	Exceptionr>   typeset_content_dispositionr   rC   popallCONTENT_LENGTHr   append_payload)r'   
dispparamsrC   r3   partexcs         r(   _gen_form_datazFormData._gen_form_data   s    	GEFFF*., 	. 	.&J$//".%,T->%? '!%	  DD #.w  D    i15eggguuN    ?,, .2.@DN  
 |///##D$7>>>L''----!|s   AA>>
B3&B..B3c                 `    | j         r|                                 S |                                 S r,   )r   rd   rW   r-   s    r(   __call__zFormData.__call__   s1     	/&&(((,,...r*   )r   TN)__name__
__module____qualname____doc__r   r   boolr   r=   r)   propertyr.   rD   r&   r   rS   rW   r   r   rd   r   rf   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 # # # #J/' / / / / / /r*   r   )r5   r:   typingr   r   r   r   urllib.parser   	multidictr   r	    r   r   r   helpersr   r   __all__r   r   r*   r(   <module>rs      s    				  0 0 0 0 0 0 0 0 0 0 0 0 " " " " " " / / / / / / / / & & & & & & & & & & # # # # # #      
g/ g/ g/ g/ g/ g/ g/ g/ g/ g/r*   