HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/aiohttp/__pycache__/formdata.cpython-310.pyc
o

���g��@s�ddlZddlZddlmZmZmZmZddlmZddl	m
Z
mZddlm
Z
mZmZddlmZddlmZd	ZGd
d�d�ZdS)�N)�Any�Iterable�List�Optional)�	urlencode)�	MultiDict�MultiDictProxy�)�hdrs�	multipart�payload)�guess_filename)�Payload)�FormDatac
@s�eZdZdZ			d dd�deeded	eed
eddf
dd
�Z	e
defdd��Zdddd�dededeedeedeeddfdd�Zdeddfdd�Z
dejfdd�Zdejfdd�Zdefdd�ZdS)!rztHelper class for form body generation.

    Supports multipart/form-data and application/x-www-form-urlencoded.
    �TNF)�default_to_multipart�fields�quote_fields�charsetr�returncCsdt�d�|_g|_||_d|_||_||_t|t	�r!t
|���}n
t|t
tf�s+|f}|j
|�dS)N�	form-dataF)r�MultipartWriter�_writer�_fields�
_is_multipart�
_is_processed�
_quote_fields�_charset�
isinstance�dict�list�items�tuple�
add_fields)�selfrrrrrr�;/usr/local/lib/python3.10/dist-packages/aiohttp/formdata.py�__init__s
zFormData.__init__cCs|jS�N)r�r$rrr%�is_multipart*szFormData.is_multipart)�content_type�filename�content_transfer_encoding�name�valuer*r+r,c	Cs"t|tj�r
d|_nt|tttf�r$d}|dur$|dur$t�|t	�|}t
d|i�}|dur9t|t�s9td|��|durHt|tj�rHt
||�}|durS||d<d|_i}|durlt|t�sdtd|��||tj<d|_|dur�t|t�s{td|��d}t�|t	�d|_|j�|||f�dS)	NTzIn v4, passing bytes will no longer create a file field. Please explicitly use the filename parameter or pass a BytesIO object.r-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$r-r.r*r+r,�msg�type_options�headersrrr%�	add_field.sH
�

�

���zFormData.add_fieldcGs�t|�}|rO|�d�}t|tj�rt|d�}|�||�n.t|ttf�r,|�	|�
��nt|ttf�rDt|�dkrD|\}}|�||�nt
d�|���|sdSdS)Nr�unknown�zxOnly io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got {!r})r �poprr/r0r
r>rr�extendr!r"�lenr8�format)r$r�to_add�rec�k�fprrr%r#cs 

��zFormData.add_fieldscCsng}|jD]\}}}|�|d|f�q|jdur|jnd}|dkr%d}nd|}tjt|d|d���|d�S)Nr-zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)�doseq�encoding)r*)rr:rr�BytesPayloadr�encode)r$�datar<�_r.rr*rrr%�_gen_form_urlencoded{s�zFormData._gen_form_urlencodedcCs�|jrtd��|jD]_\}}}ztj|vr#tj||tj||jd�}n	tj|||jd�}WntyE}zt	dt
|�||f�|�d}~ww|rc|j	d	d|ji|��|j
dus[J�|j
�tjd�|j�|�q
d|_|jS)
zAEncode a list of fields using the multipart/form-data MIME formatz$Form data has been processed already)r*r=rJ)r=rJz8Can not serialize value type: %r
 headers: %r
 value: %rNrrT)r)r�RuntimeErrorrr
r9r�get_payloadr�	Exceptionr8�type�set_content_dispositionrr=�popall�CONTENT_LENGTHr�append_payload)r$�
dispparamsr=r.�part�excrrr%�_gen_form_data�sL
�����������zFormData._gen_form_datacCs|jr|��S|��Sr')rr[rOr(rrr%�__call__�szFormData.__call__)rTN)�__name__�
__module__�__qualname__�__doc__rr�boolrr7r&�propertyr)r>r#rrKrOrrr[rr\rrrr%rsP������
�������
�5%r)r/r4�typingrrrr�urllib.parser�	multidictrr�r
rr�helpersr
r�__all__rrrrr%�<module>s