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: //home/arjun/projects/env/lib/python3.10/site-packages/aiohttp/__pycache__/formdata.cpython-310.pyc
o

+we��@s~ddlZddlmZmZmZmZddlmZddlm	Z	m
Z
ddlmZm
Z
mZddlmZddlmZd	ZGd
d�d�ZdS)�N)�Any�Iterable�List�Optional)�	urlencode)�	MultiDict�MultiDictProxy�)�hdrs�	multipart�payload)�guess_filename)�Payload)�FormDatac
@s�eZdZdZ			ddeededeeddfd	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.
    �TN�fields�quote_fields�charset�returncCsdt�d�|_g|_d|_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)�selfrrrrr�I/home/arjun/projects/env/lib/python3.10/site-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+cCst|tj�r
d|_nt|tttf�r|dur|dur|}td|i�}|dur1t|t�s1t	d|��|dur@t|tj�r@t
||�}|durK||d<d|_i}|durdt|t�s\t	d|��||tj<d|_|dur{t|t�sst	d|��||tj
<d|_|j�|||f�dS)NTr,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: %s)r�io�IOBaser�bytes�	bytearray�
memoryviewr�str�	TypeErrorr
r
�CONTENT_TYPE�CONTENT_TRANSFER_ENCODINGr�append)r#r,r-r)r*r+�type_options�headersrrr$�	add_field+sB
�

�

��
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.r/r
r:rr�extendr r!�lenr4�format)r#r�to_add�rec�k�fprrr$r"Ys 

��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))rr7rr�BytesPayloadr�encode)r#�datar8�_r-rr)rrr$�_gen_form_urlencodedqs�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)r9rF)r9rFz8Can not serialize value type: %r
 headers: %r
 value: %rNrrT)r)r�RuntimeErrorrr
r5r�get_payloadr�	Exceptionr4�type�set_content_dispositionrr9�popall�CONTENT_LENGTHr�append_payload)r#�
dispparamsr9r-�part�excrrr$�_gen_form_data�sL
�����������zFormData._gen_form_datacCs|jr|��S|��Sr&)rrWrKr'rrr$�__call__�szFormData.__call__)rTN)�__name__�
__module__�__qualname__�__doc__rr�boolrr3r%�propertyr(r:r"rrGrKrrrWrrXrrrr$rsH����
�������
�.%r)r.�typingrrrr�urllib.parser�	multidictrr�r
rr�helpersr
r�__all__rrrrr$�<module>s