
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    '7`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rd dlm+Z+ G dd de,Z-G dd de.ej/Z0eeeddddZ1e0j2ded ee0dd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*d+ d+e:Z<G d,d- d-e:Z=G d.d/ d/e7Z>er.d d0lm?Z?m@Z@ e@eA ZBe?eA ZCnd d0lDm?Z?m@Z@ e@ZBe?ZCG d1d2 d2e6ZEG d3d4 d4eEZFe5 ZGeGHe7eAeIeJf eGHe8e. eGHe9ejK eGHe;ejL eGHe<ejM eGHe=ejNejOf eGHe:ejP eGHeFe% eGjHeEe?e0jQd dS )5    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/   B/opt/alt/python38/lib64/python3.8/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   r    )dataargskwargsreturnc                 O   s   t j| f||S N)r   get)r5   r6   r7   r/   r/   r0   r   H   s    r   orderfactorytyper<   r8   c                C   s   t j| ||d d S Nr;   )r   register)r>   r?   r<   r/   r/   r0   register_payloadL   s    rB   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<   r8   c                C   s   || _ || _d S r9   )r?   r<   )selfr?   r<   r/   r/   r0   __init__S   s    zpayload_type.__init__r    )r>   r8   c                 C   s   t || j| jd |S r@   )rB   r?   r<   )rC   r>   r/   r/   r0   __call__W   s    zpayload_type.__call__)	r,   r-   r.   r1   r2   r   rD   r   rE   r/   r/   r/   r0   r   R   s   r   c                   @   sZ   e Zd ZdZddddZedeeeeddd	d
Zej	de
d eeddddZdS )PayloadRegistryzZPayload registry.

    note: we need zope.interface for more efficient adapter search
    Nr8   c                 C   s   g | _ g | _g | _d S r9   )_first_normal_lastrC   r/   r/   r0   rD   b   s    zPayloadRegistry.__init__)_CHAINr    )r5   r6   rL   r7   r8   c                O   sR   t |tr|S || j| j| jD ]&\}}t ||r ||f||  S q t d S r9   )
isinstancer    rH   rI   rJ   r+   )rC   r5   rL   r6   r7   r>   r?   r/   r/   r0   r:   g   s    

zPayloadRegistry.getr;   r=   c                C   sf   |t jkr| j||f nF|t jkr8| j||f n*|t jkrT| j||f ntd|d S )NzUnsupported order )	r1   r3   rH   appendr2   rI   r4   rJ   
ValueError)rC   r>   r?   r<   r/   r/   r0   rA   r   s    


zPayloadRegistry.register)r,   r-   r.   __doc__rD   r   r   r:   r1   r2   r   rA   r/   r/   r/   r0   rF   \   s"        rF   c                
   @   s  e Zd ZdZdZ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ddddZeeddddZdS )r    application/octet-streamN)valueheaderscontent_typefilenameencodingr7   r8   c                 K   s   || _ || _t | _|| _|tk	r8|d k	r8|| jtj< nD| jd k	rnt	| jd }|d kr`| j
}|| jtj< n| j
| jtj< | j|pi  d S Nr   )	_encoding	_filenamer   _headers_valuer   r   CONTENT_TYPE	mimetypesZ
guess_type_default_content_typeupdate)rC   rR   rS   rT   rU   rV   r7   r/   r/   r0   rD      s    
zPayload.__init__rG   c                 C   s   | j S )zSize of the payload.)_sizerK   r/   r/   r0   size   s    zPayload.sizec                 C   s   | j S )zFilename of the payload.)rY   rK   r/   r/   r0   rU      s    zPayload.filenamec                 C   s   | j S )zCustom item headers)rZ   rK   r/   r/   r0   rS      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
r/   ).0kvr/   r/   r0   
<listcomp>   s     z+Payload._binary_headers.<locals>.<listcomp>utf-8s   
)joinrS   itemsencoderK   r/   r/   r0   _binary_headers   s    zPayload._binary_headersc                 C   s   | j S )zPayload encoding)rX   rK   r/   r/   r0   rV      s    zPayload.encodingc                 C   s   | j tj S )zContent type)rZ   r   r\   rK   r/   r/   r0   rT      s    zPayload.content_typeT)disptypequote_fieldsparamsr8   c                 K   s    t |fd|i|| jtj< dS )z$Sets ``Content-Disposition`` header.rm   N)r   rZ   r   CONTENT_DISPOSITION)rC   rl   rm   rn   r/   r/   r0   set_content_disposition   s    zPayload.set_content_dispositionwriterr8   c                    s   dS )zLWrite payload.

        writer is an AbstractStreamWriter instance:
        Nr/   rC   rr   r/   r/   r0   write   s    zPayload.write)T)r,   r-   r.   r^   r`   r   r   r   r   r   r	   strr
   r   rD   propertyintra   rU   rS   bytesrk   rV   rT   boolrp   r   r   rt   r/   r/   r/   r0   r       sL       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rR   r6   r7   r8   c                    s   t |tttfs"tdt|d|kr2d|d< t j|f|| t |trZ|j	| _
n
t|| _
| j
tkrtr|d| i}ni }tjdtf| d S )Nz)value argument must be byte-ish, not {!r}rT   rQ   sourcez}Sending a large body directly with raw bytes might lock the event loop. You should probably pass an io.BytesIO object instead)rM   rx   	bytearray
memoryview	TypeErrorformatr?   superrD   nbytesr`   lenTOO_LARGE_BYTES_BODYr   warningswarnResourceWarningrC   rR   r6   r7   	__class__r/   r0   rD      s(    




zBytesPayload.__init__rq   c                    s   | | jI d H  d S r9   )rt   r[   rs   r/   r/   r0   rt      s    zBytesPayload.write)	r,   r-   r.   r   r   rD   r   rt   __classcell__r/   r/   r   r0   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rV   rT   rR   r6   rV   rT   r7   r8   c                   sn   |d kr2|d krd}d}qFt |}|jdd}n|d krBd| }|}t j||f|||d| d S )Nrg   text/plain; charset=utf-8charsettext/plain; charset=%sr   )r   
parametersr:   r   rD   rj   )rC   rR   rV   rT   r6   r7   Zreal_encodingmimetyper   r/   r0   rD      s&    	zStringPayload.__init__)	r,   r-   r.   r   r   r   ru   rD   r   r/   r/   r   r0   r"      s   r"   c                       s,   e Zd Zee eedd fddZ  ZS )r'   Nrz   c                    s   t  j| f|| d S r9   )r   rD   readr   r   r/   r0   rD     s    zStringIOPayload.__init__)r,   r-   r.   r   ru   r   rD   r   r/   r/   r   r0   r'     s   r'   c                       s@   e Zd Zd	ee eeedd fddZeddddZ  Z	S )
r#   
attachmentN)rR   dispositionr6   r7   r8   c                    sZ   d|krt ||d< t j|f|| | jd k	rV|d k	rVtj| jkrV| j|| jd d S )NrU   )rU   )r   r   rD   rY   r   ro   rS   rp   )rC   rR   r   r6   r7   r   r/   r0   rD     s    zIOBasePayload.__init__rq   c              
      sp   t  }zJ|d | jjdI d H }|rP||I d H  |d | jjdI d H }q"W 5 |d | jjI d H  X d S Ni   )asyncioget_event_looprun_in_executorr[   closer   rt   rC   rr   Zloopchunkr/   r/   r0   rt   #  s    zIOBasePayload.write)r   )
r,   r-   r.   r   r   ru   rD   r   rt   r   r/   r/   r   r0   r#     s       r#   c                       sb   e Zd Z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&   Nr   r   c                   sd   |d kr2|d krd}d}qBt |}|jdd}n|d krBd| }t j|f|||d| d S )Nrg   r   r   r   rT   rV   )r   r   r:   r   rD   )rC   rR   rV   rT   r6   r7   r   r   r/   r0   rD   /  s$    	zTextIOPayload.__init__rG   c                 C   s:   zt | j j| j  W S  tk
r4   Y d S X d S r9   osfstatr[   filenost_sizetellOSErrorrK   r/   r/   r0   ra   K  s    zTextIOPayload.sizerq   c              
      sx   t  }zR|d | jjdI d H }|rX||| jI d H  |d | jjdI d H }q"W 5 |d | jjI d H  X d S r   )	r   r   r   r[   r   r   rt   rj   rX   r   r/   r/   r0   rt   R  s    zTextIOPayload.write)r,   r-   r.   r   r   r   ru   rD   rv   rw   ra   r   rt   r   r/   r/   r   r0   r&   .  s   r&   c                   @   s   e Zd ZeedddZdS )r$   rG   c                 C   s.   | j  }| j dtj}| j | || S rW   )r[   r   seekr   SEEK_END)rC   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ee dddZdS )r%   rG   c                 C   s:   zt | j j| j  W S  tk
r4   Y d S X d S r9   r   rK   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                	       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(   rg   zapplication/jsonN)rR   rV   rT   dumpsr6   r7   r8   c                    s,   t  j|||f|||d| d S )Nr   )r   rD   rj   )rC   rR   rV   rT   r   r6   r7   r   r/   r0   rD   r  s    
zJsonPayload.__init__)
r,   r-   r.   jsonr   r   ru   r   rD   r   r/   r/   r   r0   r(   q  s   r(   )AsyncIterableAsyncIteratorc                       s<   e Zd ZdZeeedd fddZeddddZ  Z	S )r)   Nrz   c                    sN   t |tstdt|d|kr,d|d< t j|f|| | | _d S )NzOvalue argument must support collections.abc.AsyncIterablebe interface, got {!r}rT   rQ   )	rM   r   r~   r   r?   r   rD   	__aiter___iterr   r   r/   r0   rD     s    
zAsyncIterablePayload.__init__rq   c                    sL   | j rHz&| j  I d H }||I d H  qW n tk
rF   d | _ Y nX d S r9   )r   	__anext__rt   StopAsyncIteration)rC   rr   r   r/   r/   r0   rt     s    zAsyncIterablePayload.write)
r,   r-   r.   r   _AsyncIterabler   rD   r   rt   r   r/   r/   r   r0   r)     s   r)   c                       s(   e Zd Zeeedd fddZ  ZS )StreamReaderPayloadNrz   c                    s   t  j| f|| d S r9   )r   rD   Ziter_anyr   r   r/   r0   rD     s    zStreamReaderPayload.__init__)r,   r-   r.   r   r   rD   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   Z	multidictr   rb   r   r   Zhelpersr   r   r   r   r   Zstreamsr   Ztypedefsr   r   __all__r   r*   	Exceptionr+   ru   Enumr1   r   r2   rB   r   rF   r    r!   r"   r'   r#   r&   r$   r%   r(   r   r   rx   Z_AsyncIteratorr   collections.abcr)   r   r   rA   r|   r}   StringIO
TextIOBaseBytesIOBufferedReaderBufferedRandomIOBaser4   r/   r/   r/   r0   <module>   sv   8  
#Q"/	
