o
    NEg4                  	   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ ddlmZ ddlmZ dd	lmZm Z m!Z!m"Z"m#Z# dd
l$m%Z% ddl&m'Z'm(Z( dZ)dZ*erd dlm+Z+ G dd de,Z-G dd de.ej/Z0dedededdfddZ1e0j2dded dede0ddfddZ3G d d! d!Z4G d"d# d#Z5G d$d deZ6G d%d& d&e6Z7G d'd( d(e7Z8G d)d* d*e8Z9G d+d, d,e6Z:G d-d. d.e:Z;G d/d0 d0e:Z<G d1d2 d2e:Z=G d3d4 d4e7Z>erd d5lm?Z?m@Z@ e@eA ZBe?eA ZCnd d5lDm?Z?m@Z@ e@ZBe?ZCG d6d7 d7e6ZEG d8d9 d9eEZFe5 ZGeGHe7eAeIeJf eGHe8e. eGHe9ejK eGHe;ejL eGHe<ejM eGHe=ejNejOf eGHe:ejP eGHeFe% eGjHeEe?e0jQd dS ):    N)ABCabstractmethod)chain)IOTYPE_CHECKINGAny
ByteStringDictIterableOptionalTextTextIOTupleTypeUnion)CIMultiDict   )hdrs)AbstractStreamWriter)PY_36content_disposition_headerguess_filenameparse_mimetypesentinel)StreamReader)JSONEncoder_CIMultiDict)PAYLOAD_REGISTRYget_payloadpayload_typePayloadBytesPayloadStringPayloadIOBasePayloadBytesIOPayloadBufferedReaderPayloadTextIOPayloadStringIOPayloadJsonPayloadAsyncIterablePayloadi   )Listc                   @   s   e Zd ZdS )LookupErrorN)__name__
__module____qualname__ r/   r/   i/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/venv/lib/python3.10/site-packages/aiohttp/payload.pyr+   >   s    r+   c                   @   s   e Zd ZdZdZdZdS )Ordernormal	try_firsttry_lastN)r,   r-   r.   r2   r3   r4   r/   r/   r/   r0   r1   B   s    r1   dataargskwargsreturnr    c                 O   s   t j| g|R i |S N)r   get)r5   r6   r7   r/   r/   r0   r   H   s   r   orderfactorytyper<   c                C   s   t j| ||d d S Nr;   )r   register)r=   r>   r<   r/   r/   r0   register_payloadL   s   rA   c                   @   sD   e Zd ZejddededdfddZded	 ded	 fd
dZdS )r   r;   r>   r<   r8   Nc                C   s   || _ || _d S r9   )r>   r<   )selfr>   r<   r/   r/   r0   __init__S   s   
zpayload_type.__init__r=   r    c                 C   s   t || j| jd |S r?   )rA   r>   r<   )rB   r=   r/   r/   r0   __call__W   s   zpayload_type.__call__)	r,   r-   r.   r1   r2   r   rC   r   rD   r/   r/   r/   r0   r   R   s    r   c                   @   sd   e Zd ZdZdddZeddeded	ed
eddf
ddZej	dde
d dededdfddZdS )PayloadRegistryzZPayload registry.

    note: we need zope.interface for more efficient adapter search
    r8   Nc                 C   s   g | _ g | _g | _d S r9   )_first_normal_lastrB   r/   r/   r0   rC   b   s   
zPayloadRegistry.__init__)_CHAINr5   r6   rJ   r7   r    c                O   sT   t |tr|S || j| j| jD ]\}}t ||r&||g|R i |  S qt r9   )
isinstancer    rF   rG   rH   r+   )rB   r5   rJ   r6   r7   r=   r>   r/   r/   r0   r:   g   s   

zPayloadRegistry.getr;   r=   r>   r<   c                C   sh   |t ju r| j||f d S |t ju r| j||f d S |t ju r-| j||f d S td|)NzUnsupported order )	r1   r3   rF   appendr2   rG   r4   rH   
ValueError)rB   r=   r>   r<   r/   r/   r0   r@   r   s   


zPayloadRegistry.register)r8   N)r,   r-   r.   __doc__rC   r   r   r:   r1   r2   r   r@   r/   r/   r/   r0   rE   \   s2    

rE   c                   @   s  e Zd ZdZdZdeddfdedeee	e
eef eeeef  f  dee dee dee ded	dfd
dZed	ee fddZed	ee fddZed	e	fddZed	efddZed	ee fddZed	efddZ	d!dededed	dfddZeded	dfdd ZdS )"r    application/octet-streamNvalueheaderscontent_typefilenameencodingr7   r8   c                 K   s   || _ || _t | _|| _|tur|d ur|| jtj< n"| jd ur7t	| jd }|d u r0| j
}|| jtj< n| j
| jtj< | j|pDi  d S Nr   )	_encoding	_filenamer   _headers_valuer   r   CONTENT_TYPE	mimetypes
guess_type_default_content_typeupdate)rB   rP   rQ   rR   rS   rT   r7   r/   r/   r0   rC      s   
zPayload.__init__c                 C      | j S )zSize of the payload.)_sizerI   r/   r/   r0   size      zPayload.sizec                 C   r_   )zFilename of the payload.)rW   rI   r/   r/   r0   rS      rb   zPayload.filenamec                 C   r_   )zCustom item headers)rX   rI   r/   r/   r0   rQ      rb   zPayload.headersc                 C   s$   d dd | j D dd S )N c                 S   s    g | ]\}}|d  | d qS )z: z
r/   ).0kvr/   r/   r0   
<listcomp>   s     z+Payload._binary_headers.<locals>.<listcomp>utf-8s   
)joinrQ   itemsencoderI   r/   r/   r0   _binary_headers   s   zPayload._binary_headersc                 C   r_   )zPayload encoding)rV   rI   r/   r/   r0   rT      rb   zPayload.encodingc                 C   s   | j tj S )zContent type)rX   r   rZ   rI   r/   r/   r0   rR      s   zPayload.content_typeTdisptypequote_fieldsparamsc                 K   s    t |fd|i|| jtj< dS )z$Sets ``Content-Disposition`` header.rn   N)r   rX   r   CONTENT_DISPOSITION)rB   rm   rn   ro   r/   r/   r0   set_content_disposition   s   zPayload.set_content_dispositionwriterc                    s   dS )zLWrite payload.

        writer is an AbstractStreamWriter instance:
        Nr/   rB   rr   r/   r/   r0   write   s    zPayload.write)T)r,   r-   r.   r]   r`   r   r   r   r   r   r	   strr
   r   rC   propertyintra   rS   rQ   bytesrl   rT   rR   boolrq   r   r   rt   r/   r/   r/   r0   r       s`     	


c                       s@   e Zd Zdedededdf fddZdeddfd	d
Z  ZS )r!   rP   r6   r7   r8   Nc                    s   t |tttfstdt|d|vrd|d< t j|g|R i | t |tr0|j	| _
nt|| _
| j
tkrOtrAd| i}ni }tjdtfi | d S d S )Nz)value argument must be byte-ish, not {!r}rR   rO   sourcez}Sending a large body directly with raw bytes might lock the event loop. You should probably pass an io.BytesIO object instead)rK   rx   	bytearray
memoryview	TypeErrorformatr>   superrC   nbytesr`   lenTOO_LARGE_BYTES_BODYr   warningswarnResourceWarningrB   rP   r6   r7   	__class__r/   r0   rC      s*   





zBytesPayload.__init__rr   c                    s   | | jI d H  d S r9   )rt   rY   rs   r/   r/   r0   rt      s   zBytesPayload.write)	r,   r-   r.   r   r   rC   r   rt   __classcell__r/   r/   r   r0   r!      s    r!   c                       sF   e Zd Zddddededee dee deddf fd	d
Z  ZS )r"   NrT   rR   rP   r6   rT   rR   r7   r8   c                   sp   |d u r|d u rd}d}nt |}|jdd}n
|d u r!d| }|}t j||g|R ||d| d S )Nrh   text/plain; charset=utf-8charsettext/plain; charset=%sr   )r   
parametersr:   r   rC   rk   )rB   rP   rT   rR   r6   r7   real_encodingmimetyper   r/   r0   rC      s&   	
zStringPayload.__init__)	r,   r-   r.   r   r   r   ru   rC   r   r/   r/   r   r0   r"      s     r"   c                       s2   e Zd Zdee dededdf fddZ  ZS )r'   rP   r6   r7   r8   Nc                    "   t  j| g|R i | d S r9   )r   rC   readr   r   r/   r0   rC        "zStringIOPayload.__init__)r,   r-   r.   r   ru   r   rC   r   r/   r/   r   r0   r'     s    *r'   c                       sL   e Zd Z	ddee dedededdf
 fdd	Zd
eddfddZ  Z	S )r#   
attachmentrP   dispositionr6   r7   r8   Nc                    sl   d|vr
t ||d< t j|g|R i | | jd ur0|d ur2tj| jvr4| j|| jd d S d S d S d S )NrS   )rS   )r   r   rC   rW   r   rp   rQ   rq   )rB   rP   r   r6   r7   r   r/   r0   rC     s   zIOBasePayload.__init__rr   c              
      s   t  }z@|d | jjdI d H }|r8||I d H  |d | jjdI d H }|sW |d | jjI d H  d S W |d | jjI d H  d S |d | jjI d H  w Ni   )asyncioget_event_looprun_in_executorrY   r   rt   closerB   rr   loopchunkr/   r/   r0   rt   #  s   2zIOBasePayload.write)r   )
r,   r-   r.   r   r   ru   rC   r   rt   r   r/   r/   r   r0   r#     s    r#   c                       sn   e Zd Zddddededee dee deddf fd	d
Zedee	 fddZ
deddfddZ  ZS )r&   Nr   rP   r6   rT   rR   r7   r8   c                   sf   |d u r|d u rd}d}nt |}|jdd}n|d u r!d| }t j|g|R ||d| d S )Nrh   r   r   r   rR   rT   )r   r   r:   r   rC   )rB   rP   rT   rR   r6   r7   r   r   r/   r0   rC   /  s$   	
zTextIOPayload.__init__c                 C   4   zt | j j| j  W S  ty   Y d S w r9   osfstatrY   filenost_sizetellOSErrorrI   r/   r/   r0   ra   K  s
   zTextIOPayload.sizerr   c              
      s   t  }zD|d | jjdI d H }|r<||| jI d H  |d | jjdI d H }|sW |d | jjI d H  d S W |d | jjI d H  d S |d | jjI d H  w r   )	r   r   r   rY   r   rt   rk   rV   r   r   r/   r/   r0   rt   R  s   2zTextIOPayload.write)r,   r-   r.   r   r   r   ru   rC   rv   rw   ra   r   rt   r   r/   r/   r   r0   r&   .  s&    r&   c                   @   s   e Zd ZedefddZdS )r$   r8   c                 C   s.   | j  }| j dtj}| j | || S rU   )rY   r   seekr   SEEK_END)rB   positionendr/   r/   r0   ra   ^  s   
zBytesIOPayload.sizeN)r,   r-   r.   rv   rw   ra   r/   r/   r/   r0   r$   ]  s    r$   c                   @   s"   e Zd Zedee fddZdS )r%   r8   c                 C   r   r9   r   rI   r/   r/   r0   ra   g  s
   zBufferedReaderPayload.sizeN)r,   r-   r.   rv   r   rw   ra   r/   r/   r/   r0   r%   f  s    r%   c                       sD   e Zd Zddejfdedededededed	d
f fddZ  Z	S )r(   rh   zapplication/jsonrP   rT   rR   dumpsr6   r7   r8   Nc                    s.   t  j|||g|R ||d| d S )Nr   )r   rC   rk   )rB   rP   rT   rR   r   r6   r7   r   r/   r0   rC   r  s   

zJsonPayload.__init__)
r,   r-   r.   jsonr   r   ru   r   rC   r   r/   r/   r   r0   r(   q  s&    r(   )AsyncIterableAsyncIteratorc                       sD   e Zd ZdZdedededdf fddZdeddfd	d
Z  Z	S )r)   NrP   r6   r7   r8   c                    sT   t |tstdt|d|vrd|d< t j|g|R i | | | _d S )NzOvalue argument must support collections.abc.AsyncIterablebe interface, got {!r}rR   rO   )	rK   r   r}   r~   r>   r   rC   	__aiter___iterr   r   r/   r0   rC     s   

zAsyncIterablePayload.__init__rr   c                    sL   | j r$z	 | j  I d H }||I d H  q ty#   d | _ Y d S w d S r9   )r   	__anext__rt   StopAsyncIteration)rB   rr   r   r/   r/   r0   rt     s   zAsyncIterablePayload.write)
r,   r-   r.   r   _AsyncIterabler   rC   r   rt   r   r/   r/   r   r0   r)     s    r)   c                       s.   e Zd Zdedededdf fddZ  ZS )StreamReaderPayloadrP   r6   r7   r8   Nc                    r   r9   )r   rC   iter_anyr   r   r/   r0   rC     r   zStreamReaderPayload.__init__)r,   r-   r.   r   r   rC   r   r/   r/   r   r0   r     s    &r   )Rr   enumior   r[   r   r   abcr   r   	itertoolsr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   	multidictr   rc   r   r   helpersr   r   r   r   r   streamsr   typedefsr   r   __all__r   r*   	Exceptionr+   ru   Enumr1   r   r2   rA   r   rE   r    r!   r"   r'   r#   r&   r$   r%   r(   r   r   rx   _AsyncIteratorr   collections.abcr)   r   r   r@   r{   r|   StringIO
TextIOBaseBytesIOBufferedReaderBufferedRandomIOBaser4   r/   r/   r/   r0   <module>   s~    8

#Q"/	
