o
    #`^h4                  	   @   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' dZ(dZ)ee* e+d< erd dlm,Z, G dd de-Z.G dd de/ej0Z1dedededdfddZ2e1j3dded dede1ddfdd Z4G d!d" d"Z5ed Z6ee6ef Z7G d#d$ d$Z8G d%d deZ9G d&d' d'e9Z:G d(d) d)e:Z;G d*d+ d+e;Z<G d,d- d-e9Z=G d.d/ d/e=Z>G d0d1 d1e=Z?G d2d3 d3e=Z@G d4d5 d5e:ZAer+d d6lmBZBmCZC eCeD ZEeBeD ZFnd d6lGmBZBmCZC eCZEeBZFG d7d8 d8e9ZHG d9d: d:eHZIe8 ZJeJKe:eDeLeMf eJKe;e/ eJKe<ejN eJKe>ejO eJKe?ejP eJKe@ejQejRf eJKe=ejS eJKeIe$ eJjKeHeBe1jTd dS );    N)ABCabstractmethod)chain)IOTYPE_CHECKINGAnyDictFinalIterableOptionalTextIOTupleTypeUnion)CIMultiDict   )hdrs)AbstractStreamWriter)	_SENTINEL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   TOO_LARGE_BYTES_BODY)Listc                   @   s   e Zd ZdS )LookupErrorN)__name__
__module____qualname__ r/   r/   M/home/air/shanriGPT/back/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   @   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   F   s   r   orderfactorytyper<   c                C   s   t j| ||d d S Nr;   )r   register)r=   r>   r<   r/   r/   r0   register_payloadJ   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__Q   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__U   s   zpayload_type.__call__)	r,   r-   r.   r1   r2   r   rC   r   rD   r/   r/   r/   r0   r   P   s    r   c                   @   s`   e Zd ZdZdddZeddeded	d
deddf
ddZej	dde
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   d   s   
zPayloadRegistry.__init__)_CHAINr5   r6   rJ   z!Type[chain[_PayloadRegistryItem]]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:   i   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@   x   s   


zPayloadRegistry.register)r8   N)r,   r-   r.   __doc__rC   r   r   r:   r1   r2   PayloadTyper@   r/   r/   r/   r0   rE   ^   s2    
	
rE   c                   @   s@  e Zd ZU dZeed< dZee ed< 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f 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e
ddf
d d!Zed"eddfd#d$ZdS )&r   application/octet-stream_default_content_typeN_size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_typerQ   update)rB   rS   rT   rU   rV   rW   r7   r/   r/   r0   rC      s   
zPayload.__init__c                 C      | j S )zSize of the payload.)rR   rI   r/   r/   r0   size      zPayload.sizec                 C   ra   )zFilename of the payload.)rZ   rI   r/   r/   r0   rV      rc   zPayload.filenamec                 C   ra   )zCustom item headers)r[   rI   r/   r/   r0   rT      rc   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   
)joinrT   itemsencoderI   r/   r/   r0   _binary_headers   s   zPayload._binary_headersc                 C   ra   )zPayload encoding)rY   rI   r/   r/   r0   rW      rc   zPayload.encodingc                 C   s   | j tj S )zContent type)r[   r   r]   rI   r/   r/   r0   rU      s   zPayload.content_typeTri   disptypequote_fields_charsetparamsc                 K   s"   t |f||d|| jtj< dS )z$Sets ``Content-Disposition`` header.)ro   rp   N)r   r[   r   CONTENT_DISPOSITION)rB   rn   ro   rp   rq   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   rt   r/   r/   r0   write   s    zPayload.write)Tri   )r,   r-   r.   rQ   str__annotations__rR   r   intr   r   r   r   r   r
   r   r   rC   propertyrb   rV   rT   bytesrm   rW   rU   boolrs   r   r   rv   r/   r/   r/   r0   r      sf   
  	


c                       sJ   e Zd Zdeeeef dededdf fddZde	ddfd	d
Z
  ZS )r    rS   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rJd| i}tjdtfi | d S d S )Nz%value argument must be byte-ish, not rU   rP   sourcez}Sending a large body directly with raw bytes might lock the event loop. You should probably pass an io.BytesIO object instead)rK   r{   	bytearray
memoryview	TypeErrorr>   superrC   nbytesrR   lenr)   warningswarnResourceWarningrB   rS   r6   r7   	__class__r/   r0   rC      s"   




zBytesPayload.__init__rt   c                    s   | | jI d H  d S r9   )rv   r\   ru   r/   r/   r0   rv      s   zBytesPayload.write)r,   r-   r.   r   r{   r~   r   r   rC   r   rv   __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rW   rU   rS   r6   rW   rU   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 )Nri   text/plain; charset=utf-8charsettext/plain; charset=%sr   )r   
parametersr:   r   rC   rl   )rB   rS   rW   rU   r6   r7   real_encodingmimetyper   r/   r0   rC      s&   	
zStringPayload.__init__)r,   r-   r.   rw   r   r   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&   rS   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   rw   r   rC   r   r/   r/   r   r0   r&     s    *r&   c                       sZ   e Zd ZU ee ed< 	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"   r\   
attachmentrS   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 )NrV   )rV   )r   r   rC   rZ   r   rr   rT   rs   )rB   rS   r   r6   r7   r   r/   r0   rC      s   zIOBasePayload.__init__rt   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 )N   )asyncioget_event_looprun_in_executorr\   r   rv   close)rB   rt   loopchunkr/   r/   r0   rv   ,  s   2zIOBasePayload.write)r   )r,   r-   r.   r   r   rx   rw   rC   r   rv   r   r/   r/   r   r0   r"     s   
 r"   c                       sx   e Zd ZU eed< 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%   r\   Nr   rS   r6   rW   rU   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 )Nri   r   r   r   rU   rW   )r   r   r:   r   rC   )rB   rS   rW   rU   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fstatr\   filenost_sizetellOSErrorrI   r/   r/   r0   rb   V  s
   zTextIOPayload.sizert   c              
      s   t  }zN|d | jjdI d H }|rF| jr|j| jdn| }||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 )Nr   )rW   )	r   r   r   r\   r   rY   rl   rv   r   )rB   rt   r   r   r5   r/   r/   r0   rv   ]  s   	2	zTextIOPayload.write)r,   r-   r.   r   rx   r   r   rw   rC   rz   ry   rb   r   rv   r   r/   r/   r   r0   r%   7  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 rX   )r\   r   seekr   SEEK_END)rB   positionendr/   r/   r0   rb   n  s   
zBytesIOPayload.sizeN)r,   r-   r.   rz   ry   rb   r/   r/   r/   r0   r#   m  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   rb   w  s
   zBufferedReaderPayload.sizeN)r,   r-   r.   rz   r   ry   rb   r/   r/   r/   r0   r$   v  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'   ri   zapplication/jsonrS   rW   rU   dumpsr6   r7   r8   Nc                    s.   t  j|||g|R ||d| d S )Nr   )r   rC   rl   )rB   rS   rW   rU   r   r6   r7   r   r/   r0   rC     s   

zJsonPayload.__init__)
r,   r-   r.   jsonr   r   rw   r   rC   r   r/   r/   r   r0   r'     s&    r'   )AsyncIterableAsyncIteratorc                       sR   e Zd ZU dZee ed< dedededdf fddZ	d	e
ddfd
dZ  ZS )r(   N_iterrS   r6   r7   r8   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}rU   rP   )	rK   r   r   formatr>   r   rC   	__aiter__r   r   r   r/   r0   rC     s   

zAsyncIterablePayload.__init__rt   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__rv   StopAsyncIteration)rB   rt   r   r/   r/   r0   rv     s   zAsyncIterablePayload.write)r,   r-   r.   r   r   _AsyncIteratorrx   _AsyncIterabler   rC   r   rv   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 )StreamReaderPayloadrS   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   )Ur   enumior   r^   r   r   abcr   r   	itertoolsr   typingr   r   r   r   r	   r
   r   r   r   r   r   	multidictr   rd   r   r   helpersr   r   r   r   r   streamsr   typedefsr   r   __all__r)   ry   rx   r*   	Exceptionr+   rw   Enumr1   r   r2   rA   r   rO   _PayloadRegistryItemrE   r   r    r!   r&   r"   r%   r#   r$   r'   r   r   r{   r   r   collections.abcr(   r   r   r@   r~   r   StringIO
TextIOBaseBytesIOBufferedReaderBufferedRandomIOBaser4   r/   r/   r/   r0   <module>   s   
 4

'U6	
