o
    ~#i<                  	   @   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/   V/var/www/GraceOrthoHospital/venv_grace/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 | _i | _d S r9   )_first_normal_last_normal_lookuprB   r/   r/   r0   rC   d   s   
zPayloadRegistry.__init__)_CHAINr5   r6   rK   z!Type[chain[_PayloadRegistryItem]]r7   r   c                O   s   | j r| j D ]\}}t||r||g|R i |  S q| jt| }r2||g|R i |S t|tr9|S || j| jD ]\}}t||rV||g|R i |  S q@t r9   )	rF   
isinstancerI   r:   r>   r   rG   rH   r+   )rB   r5   rK   r6   r7   r=   type_lookup_factoryr/   r/   r0   r:   j   s   


zPayloadRegistry.getr;   r=   r>   r<   c                C   s   |t ju r| j||f d S |t ju r4| j||f t|tr-|D ]}|| j|< q#d S || j|< d S |t j	u rC| j
||f d S td|)NzUnsupported order )r1   r3   rF   appendr2   rG   rL   r
   rI   r4   rH   
ValueError)rB   r=   r>   r<   tr/   r/   r0   r@      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*d	ed#ede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< |rH| j| d S d S Nr   )	_encoding	_filenamer   _headers_valuer   r   CONTENT_TYPE	mimetypes
guess_typerU   update)rB   rW   rX   rY   rZ   r[   r7   r/   r/   r0   rC      s   
zPayload.__init__c                 C      | j S )zSize of the payload.)rV   rJ   r/   r/   r0   size      zPayload.sizec                 C   re   )zFilename of the payload.)r^   rJ   r/   r/   r0   rZ      rg   zPayload.filenamec                 C   re   )zCustom item headers)r_   rJ   r/   r/   r0   rX      rg   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   
)joinrX   itemsencoderJ   r/   r/   r0   _binary_headers   s   zPayload._binary_headersc                 C   re   )zPayload encoding)r]   rJ   r/   r/   r0   r[      rg   zPayload.encodingc                 C   s   | j tj S )zContent type)r_   r   ra   rJ   r/   r/   r0   rY      s   zPayload.content_typeTrm   disptypequote_fields_charsetparamsc                 K   s"   t |f||d|| jtj< dS )z$Sets ``Content-Disposition`` header.)rs   rt   N)r   r_   r   CONTENT_DISPOSITION)rB   rr   rs   rt   ru   r/   r/   r0   set_content_disposition   s   zPayload.set_content_dispositionstricterrorsc                 C   s   dS )z~Return string representation of the value.

        This is named decode() to allow compatibility with bytes objects.
        Nr/   rB   r[   ry   r/   r/   r0   decode   s    zPayload.decodewriterc                    s   dS )zLWrite payload.

        writer is an AbstractStreamWriter instance:
        Nr/   rB   r|   r/   r/   r0   write   s    zPayload.write)Trm   rm   rx   ) r,   r-   r.   rU   str__annotations__rV   r   intr   r   r   r   r   r
   r   r   rC   propertyrf   rZ   rX   bytesrq   r[   rY   boolrw   r   r{   r   r~   r/   r/   r/   r0   r      sj   
  	


c                       sl   e Zd ZU eed< deeeef dededdf fddZ	dde
de
de
fddZdeddfddZ  ZS )r    r`   rW   r6   r7   r8   Nc                    s   d|vrd|d< t  j|g|R i | t|tr|j| _nt|ttfr,t|| _n	t	dt
|| jtkrJd| i}tjdtfi | d S d S )NrY   rT   z%value argument must be byte-ish, not sourcez}Sending a large body directly with raw bytes might lock the event loop. You should probably pass an io.BytesIO object instead)superrC   rL   
memoryviewnbytesrV   r   	bytearraylen	TypeErrorr>   r)   warningswarnResourceWarningrB   rW   r6   r7   	__class__r/   r0   rC      s"   



zBytesPayload.__init__rm   rx   r[   ry   c                 C   s   | j ||S r9   )r`   r{   rz   r/   r/   r0   r{     s   zBytesPayload.decoder|   c                    s   | | jI d H  d S r9   )r~   r`   r}   r/   r/   r0   r~     s   zBytesPayload.writer   )r,   r-   r.   r   r   r   r   r   r   rC   r   r{   r   r~   __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r[   rY   rW   r6   r[   rY   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 )Nrm   text/plain; charset=utf-8charsettext/plain; charset=%sr   )r   
parametersr:   r   rC   rp   )rB   rW   r[   rY   r6   r7   real_encodingmimetyper   r/   r0   rC     s&   	
zStringPayload.__init__)r,   r-   r.   r   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&   rW   r6   r7   r8   Nc                    "   t  j| g|R i | d S r9   )r   rC   readr   r   r/   r0   rC   3     "zStringIOPayload.__init__)r,   r-   r.   r   r   r   rC   r   r/   r/   r   r0   r&   2  s    *r&   c                       sp   e Zd ZU ej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ddededefddZ  ZS )r"   r`   
attachmentrW   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 )NrZ   )rZ   )r   r   rC   r^   r   rv   rX   rw   )rB   rW   r   r6   r7   r   r/   r0   rC   :  s   zIOBasePayload.__init__r|   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   r~   close)rB   r|   loopchunkr/   r/   r0   r~   F  s   2zIOBasePayload.writerm   rx   r[   ry   c                    s    d  fdd| j D S )Nrh   c                 3   s    | ]	}|  V  qd S r9   )r{   )ri   rr[   ry   r/   r0   	<genexpr>Q  s    z'IOBasePayload.decode.<locals>.<genexpr>)rn   r`   	readlinesrz   r/   r   r0   r{   P  s    zIOBasePayload.decode)r   r   )r,   r-   r.   ioIOBaser   r   r   r   rC   r   r~   r{   r   r/   r/   r   r0   r"   7  s    
 
 
r"   c                       s   e Zd ZU ej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de	de	d	e	fddZded	dfddZ  ZS )r%   r`   Nr   rW   r6   r[   rY   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 )Nrm   r   r   r   rY   r[   )r   r   r:   r   rC   )rB   rW   r[   rY   r6   r7   r   r   r/   r0   rC   W  s$   	
zTextIOPayload.__init__c                 C   s4   zt | j j| j  W S  ty   Y d S w r9   )osfstatr`   filenost_sizetellOSErrorrJ   r/   r/   r0   rf   s  s
   zTextIOPayload.sizerm   rx   ry   c                 C   s
   | j  S r9   )r`   r   rz   r/   r/   r0   r{   z  s   
zTextIOPayload.decoder|   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   )r[   )	r   r   r   r`   r   r]   rp   r~   r   )rB   r|   r   r   r5   r/   r/   r0   r~   }  s   	2	zTextIOPayload.writer   )r,   r-   r.   r   
TextIOBaser   r   r   r   r   rC   r   r   rf   r{   r   r~   r   r/   r/   r   r0   r%   T  s*   
 
r%   c                   @   sB   e Zd ZU ejed< edefddZdde	de	de	fd	d
Z
dS )r#   r`   r8   c                 C   s.   | j  }| j dtj}| j | || S r\   )r`   r   seekr   SEEK_END)rB   positionendr/   r/   r0   rf     s   
zBytesIOPayload.sizerm   rx   r[   ry   c                 C      | j  ||S r9   r`   r   r{   rz   r/   r/   r0   r{        zBytesIOPayload.decodeNr   )r,   r-   r.   r   BytesIOr   r   r   rf   r   r{   r/   r/   r/   r0   r#     s
   
 
r#   c                   @   sF   e Zd ZU ejed< edee fddZ	dde
de
de
fd	d
ZdS )r$   r`   r8   c              	   C   s8   zt | j j| j  W S  ttfy   Y d S w r9   )r   r   r`   r   r   r   r   AttributeErrorrJ   r/   r/   r0   rf     s
   zBufferedReaderPayload.sizerm   rx   r[   ry   c                 C   r   r9   r   rz   r/   r/   r0   r{     r   zBufferedReaderPayload.decodeNr   )r,   r-   r.   r   BufferedIOBaser   r   r   r   rf   r   r{   r/   r/   r/   r0   r$     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'   rm   zapplication/jsonrW   r[   rY   dumpsr6   r7   r8   Nc                    s.   t  j|||g|R ||d| d S )Nr   )r   rC   rp   )rB   rW   r[   rY   r   r6   r7   r   r/   r0   rC     s   

zJsonPayload.__init__)
r,   r-   r.   jsonr   r   r   r   rC   r   r/   r/   r   r0   r'     s&    r'   )AsyncIterableAsyncIteratorc                       sr   e Zd ZU dZee ed< eed< dedededdf fdd	Z	d
e
ddfddZddededefddZ  ZS )r(   N_iterr`   rW   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}rY   rT   )	rL   r   r   formatr>   r   rC   	__aiter__r   r   r   r/   r0   rC     s   

zAsyncIterablePayload.__init__r|   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__r~   StopAsyncIteration)rB   r|   r   r/   r/   r0   r~     s   zAsyncIterablePayload.writerm   rx   r[   ry   c                 C   s   t d)NzUnable to decode.)r   rz   r/   r/   r0   r{     s   zAsyncIterablePayload.decoder   )r,   r-   r.   r   r   _AsyncIteratorr   _AsyncIterabler   rC   r   r~   r   r{   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 )StreamReaderPayloadrW   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   enumr   r   rb   r   r   abcr   r   	itertoolsr   typingr   r   r   r   r	   r
   r   r   r   r   r   	multidictr   rh   r   r   helpersr   r   r   r   r   streamsr   typedefsr   r   __all__r)   r   r   r*   	Exceptionr+   r   Enumr1   r   r2   rA   r   rS   _PayloadRegistryItemrE   r   r    r!   r&   r"   r%   r#   r$   r'   r   r   r   r   r   collections.abcr(   r   r   r@   r   r   StringIOr   r   BufferedReaderBufferedRandomr   r4   r/   r/   r/   r0   <module>   s   
 4

5]#9
#