a
    }3e@5                     @   s  U 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 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'm(Z( dZ)dZ*e&e+ e,d< erd dlm-Z- G dd de.Z/G dd de0ej1Z2eeeddddZ3e2j4ded ee2ddddZ5G dd dZ6ed Z7ee7ef Z8G dd dZ9G d d deZ:G d!d" d"e:Z;G d#d$ d$e;Z<G d%d& d&e<Z=G d'd( d(e:Z>G d)d* d*e>Z?G d+d, d,e>Z@G d-d. d.e>ZAG d/d0 d0e;ZBerPd d1lmCZCmDZD eDeE ZFeCeE ZGnd d1lHmCZCmDZD eDZFeCZGG d2d3 d3e:ZIG d4d5 d5eIZJe9 ZKeKLe;eEeMeNf eKLe<e0 eKLe=ejO eKLe?ejP eKLe@ejQ eKLeAejRejSf eKLe>ejT eKLeJe$ eKjLeIeCe2jUd dS )6    N)ABCabstractmethod)chain)IOTYPE_CHECKINGAny
ByteStringDictIterableOptionalTextIOTupleTypeUnion)CIMultiDict   )hdrs)AbstractStreamWriter)PY_36content_disposition_headerguess_filenameparse_mimetypesentinel)StreamReader)FinalJSONEncoder_CIMultiDict)PAYLOAD_REGISTRYget_payloadpayload_typePayloadBytesPayloadStringPayloadIOBasePayloadBytesIOPayloadBufferedReaderPayloadTextIOPayloadStringIOPayloadJsonPayloadAsyncIterablePayloadi   TOO_LARGE_BYTES_BODY)Listc                   @   s   e Zd ZdS )LookupErrorN)__name__
__module____qualname__ r0   r0   B/home/pi/bot/my_env/lib/python3.9/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/   r3   r4   r5   r0   r0   r0   r1   r2   @   s   r2   r    )dataargskwargsreturnc                 O   s   t j| g|R i |S N)r   get)r6   r7   r8   r0   r0   r1   r   F   s    r   orderfactorytyper=   r9   c                C   s   t j| ||d d S Nr<   )r   register)r?   r@   r=   r0   r0   r1   register_payloadJ   s    rC   c                   @   s>   e Zd ZejdeeddddZed ed ddd	ZdS )
r   r<   N)r@   r=   r9   c                C   s   || _ || _d S r:   )r@   r=   )selfr@   r=   r0   r0   r1   __init__Q   s    zpayload_type.__init__r    )r?   r9   c                 C   s   t || j| jd |S rA   )rC   r@   r=   )rD   r?   r0   r0   r1   __call__U   s    zpayload_type.__call__)	r-   r.   r/   r2   r3   r   rE   r   rF   r0   r0   r0   r1   r   P   s   r   c                   @   sV   e Zd ZdZddddZedeededd	d
dZej	de
eeddddZdS )PayloadRegistryzZPayload registry.

    note: we need zope.interface for more efficient adapter search
    Nr9   c                 C   s   g | _ g | _g | _d S r:   )_first_normal_lastrD   r0   r0   r1   rE   d   s    zPayloadRegistry.__init__)_CHAINz!Type[chain[_PayloadRegistryItem]]r    )r6   r7   rM   r8   r9   c                O   sX   t |tr|S || j| j| jD ],\}}t ||r ||g|R i |  S q t d S r:   )
isinstancer    rI   rJ   rK   r,   )rD   r6   rM   r7   r8   r?   r@   r0   r0   r1   r;   i   s    

zPayloadRegistry.getr<   r>   c                C   sf   |t ju r| j||f nF|t ju r8| j||f n*|t ju rT| j||f ntd|d S )NzUnsupported order )	r2   r4   rI   appendr3   rJ   r5   rK   
ValueError)rD   r?   r@   r=   r0   r0   r1   rB   x   s    


zPayloadRegistry.register)r-   r.   r/   __doc__rE   r   r   r;   r2   r3   PayloadTyperB   r0   r0   r0   r1   rG   ^   s   	rG   c                
   @   s   e Zd ZU dZeed< dZee ed< de	ddfe
eeeeeef eeeef  f  ee ee ee e
ddddZeee dd	d
Zeee dddZeedddZeedddZeee dddZeedddZdeeee
ddddZeeddddZdS )r    application/octet-stream_default_content_typeN_size)valueheaderscontent_typefilenameencodingr8   r9   c                 K   s   || _ || _t | _|| _|tur8|d ur8|| jtj< nD| jd urnt	| jd }|d u r`| j
}|| jtj< n| j
| jtj< | j|pi  d S Nr   )	_encoding	_filenamer   _headers_valuer   r   CONTENT_TYPE	mimetypes
guess_typerT   update)rD   rV   rW   rX   rY   rZ   r8   r0   r0   r1   rE      s    
zPayload.__init__rH   c                 C   s   | j S )zSize of the payload.)rU   rL   r0   r0   r1   size   s    zPayload.sizec                 C   s   | j S )zFilename of the payload.)r]   rL   r0   r0   r1   rY      s    zPayload.filenamec                 C   s   | j S )zCustom item headers)r^   rL   r0   r0   r1   rW      s    zPayload.headersc                 C   s$   d dd | j D dd S )N c                 S   s    g | ]\}}|d  | d qS )z: z
r0   ).0kvr0   r0   r1   
<listcomp>       z+Payload._binary_headers.<locals>.<listcomp>utf-8s   
)joinrW   itemsencoderL   r0   r0   r1   _binary_headers   s    zPayload._binary_headersc                 C   s   | j S )zPayload encoding)r\   rL   r0   r0   r1   rZ      s    zPayload.encodingc                 C   s   | j tj S )zContent type)r^   r   r`   rL   r0   r0   r1   rX      s    zPayload.content_typeTrk   )disptypequote_fields_charsetparamsr9   c                 K   s"   t |f||d|| jtj< dS )z$Sets ``Content-Disposition`` header.)rq   rr   N)r   r^   r   CONTENT_DISPOSITION)rD   rp   rq   rr   rs   r0   r0   r1   set_content_disposition   s    zPayload.set_content_dispositionwriterr9   c                    s   dS )zLWrite payload.

        writer is an AbstractStreamWriter instance:
        Nr0   rD   rw   r0   r0   r1   write   s    zPayload.write)Trk   )r-   r.   r/   rT   str__annotations__rU   r   intr   r   r   r   r	   r
   r   rE   propertyrd   rY   rW   bytesro   rZ   rX   boolru   r   r   ry   r0   r0   r0   r1   r       sP   
   c                       s8   e Zd Zeeedd fddZeddddZ  ZS )r!   NrV   r7   r8   r9   c                    s   t |tttfs"tdt|d|vr2d|d< t j|g|R i | t |tr`|j| _	n
t
|| _	| j	tkrtrd| i}ni }tjdtfi | d S )Nz%value argument must be byte-ish, not rX   rS   sourcez}Sending a large body directly with raw bytes might lock the event loop. You should probably pass an io.BytesIO object instead)rN   r~   	bytearray
memoryview	TypeErrorr@   superrE   nbytesrU   lenr*   r   warningswarnResourceWarningrD   rV   r7   r8   	__class__r0   r1   rE      s$    




zBytesPayload.__init__rv   c                    s   | | jI d H  d S r:   )ry   r_   rx   r0   r0   r1   ry      s    zBytesPayload.write)	r-   r.   r/   r   r   rE   r   ry   __classcell__r0   r0   r   r1   r!      s   r!   c                       s<   e Zd Zdddeeee ee edd fddZ  ZS )r"   NrZ   rX   rV   r7   rZ   rX   r8   r9   c                   sp   |d u r2|d u rd}d}qFt |}|jdd}n|d u rBd| }|}t j||g|R ||d| d S )Nrk   text/plain; charset=utf-8charsettext/plain; charset=%sr   )r   
parametersr;   r   rE   rn   )rD   rV   rZ   rX   r7   r8   Zreal_encodingmimetyper   r0   r1   rE      s&    	zStringPayload.__init__)r-   r.   r/   rz   r   r   rE   r   r0   r0   r   r1   r"      s   r"   c                       s,   e Zd Zee eedd fddZ  ZS )r'   Nr   c                    s"   t  j| g|R i | d S r:   )r   rE   readr   r   r0   r1   rE     s    zStringIOPayload.__init__)r-   r.   r/   r   rz   r   rE   r   r0   r0   r   r1   r'     s   r'   c                       sN   e Zd ZU ee ed< d
ee eeedd fddZedddd	Z	  Z
S )r#   r_   
attachmentN)rV   dispositionr7   r8   r9   c                    s`   d|vrt ||d< t j|g|R i | | jd ur\|d ur\tj| jvr\| j|| jd d S )NrY   )rY   )r   r   rE   r]   r   rt   rW   ru   )rD   rV   r   r7   r8   r   r0   r1   rE   !  s    zIOBasePayload.__init__rv   c              
      s   t  }z`|d | jjdI d H }|rP||I d H  |d | jjdI d H }q"W |d | jjI d H  n|d | jjI d H  0 d S )N   )asyncioget_event_looprun_in_executorr_   r   ry   close)rD   rw   loopchunkr0   r0   r1   ry   -  s    zIOBasePayload.write)r   )r-   r.   r/   r   r   r{   rz   rE   r   ry   r   r0   r0   r   r1   r#     s   
 r#   c                       sl   e Zd ZU eed< dddeeee ee edd fddZe	ee
 ddd	Zedd
ddZ  ZS )r&   r_   Nr   r   c                   sf   |d u r2|d u rd}d}qBt |}|jdd}n|d u rBd| }t j|g|R ||d| d S )Nrk   r   r   r   rX   rZ   )r   r   r;   r   rE   )rD   rV   rZ   rX   r7   r8   r   r   r0   r1   rE   ;  s$    	zTextIOPayload.__init__rH   c                 C   s8   zt | j j| j  W S  ty2   Y d S 0 d S r:   osfstatr_   filenost_sizetellOSErrorrL   r0   r0   r1   rd   W  s    zTextIOPayload.sizerv   c              
      s   t  }z||d | jjdI d H }|rl| jr:|j| jdn| }||I d H  |d | jjdI d H }q"W |d | jjI d H  n|d | jjI d H  0 d S )Nr   )rZ   )	r   r   r   r_   r   r\   rn   ry   r   )rD   rw   r   r   r6   r0   r0   r1   ry   ^  s    zTextIOPayload.write)r-   r.   r/   r   r{   r   r   rz   rE   r}   r|   rd   r   ry   r   r0   r0   r   r1   r&   8  s   
r&   c                   @   s   e Zd ZeedddZdS )r$   rH   c                 C   s.   | j  }| j dtj}| j | || S r[   )r_   r   seekr   SEEK_END)rD   positionendr0   r0   r1   rd   o  s    
zBytesIOPayload.sizeN)r-   r.   r/   r}   r|   rd   r0   r0   r0   r1   r$   n  s   r$   c                   @   s"   e Zd Zeee dddZdS )r%   rH   c                 C   s8   zt | j j| j  W S  ty2   Y d S 0 d S r:   r   rL   r0   r0   r1   rd   x  s    zBufferedReaderPayload.sizeN)r-   r.   r/   r}   r   r|   rd   r0   r0   r0   r1   r%   w  s   r%   c                	       s8   e Zd Zddejfeeeeeedd fddZ  Z	S )r(   rk   zapplication/jsonN)rV   rZ   rX   dumpsr7   r8   r9   c                    s.   t  j|||g|R ||d| d S )Nr   )r   rE   rn   )rD   rV   rZ   rX   r   r7   r8   r   r0   r1   rE     s    
zJsonPayload.__init__)
r-   r.   r/   jsonr   r   rz   r   rE   r   r0   r0   r   r1   r(     s   r(   )AsyncIterableAsyncIteratorc                       sJ   e Zd ZU dZee ed< eeedd fddZ	e
ddddZ  ZS )	r)   N_iterr   c                    sT   t |tstdt|d|vr,d|d< t j|g|R i | | | _d S )NzMvalue argument must support collections.abc.AsyncIterable interface, got {!r}rX   rS   )	rN   r   r   formatr@   r   rE   	__aiter__r   r   r   r0   r1   rE     s    
zAsyncIterablePayload.__init__rv   c                    sJ   | j rFz&| j  I d H }||I d H  qW n tyD   d | _ Y n0 d S r:   )r   	__anext__ry   StopAsyncIteration)rD   rw   r   r0   r0   r1   ry     s    zAsyncIterablePayload.write)r-   r.   r/   r   r   _AsyncIteratorr{   _AsyncIterabler   rE   r   ry   r   r0   r0   r   r1   r)     s   
r)   c                       s(   e Zd Zeeedd fddZ  ZS )StreamReaderPayloadNr   c                    s"   t  j| g|R i | d S r:   )r   rE   Ziter_anyr   r   r0   r1   rE     s    zStreamReaderPayload.__init__)r-   r.   r/   r   r   rE   r   r0   r0   r   r1   r     s   r   )Vr   enumior   ra   r   r   abcr   r   	itertoolsr   typingr   r   r   r   r	   r
   r   r   r   r   r   Z	multidictr   re   r   r   Zhelpersr   r   r   r   r   Zstreamsr   Ztypedefsr   r   r   __all__r*   r|   r{   r+   	Exceptionr,   rz   Enumr2   r   r3   rC   r   rR   Z_PayloadRegistryItemrG   r    r!   r"   r'   r#   r&   r$   r%   r(   r   r   r~   r   r   collections.abcr)   r   r   rB   r   r   StringIO
TextIOBaseBytesIOBufferedReaderBufferedRandomIOBaser5   r0   r0   r0   r1   <module>   sv   
4

'U 6	
