
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    'â7`Zf  ã                   @   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Zd dl	Z	d dl
mZ d dlmZ d dlmZ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 d dlmZmZ ddlm Z m!Z! dd	l"m#Z# dd
l$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl!m.Z. ddl/m0Z0m1Z1 dZ2e�r<ddl3m4Z4 ee5ef Z6nej"jZ6e%�sTdej7d< G dd„ dej8ƒZ9G dd„ de6e&ƒZ:G dd„ de:ƒZ;e(fddddddej<dœeee5 ee= e>ee5 ee1 e5e0e;dœ	dd„Z?dS )é    N)ÚExecutor)Ú	parsedate)ÚMorselÚSimpleCookie)
ÚTYPE_CHECKINGÚAnyÚDictÚIteratorÚMappingÚMutableMappingÚOptionalÚTupleÚUnionÚcast)ÚCIMultiDictÚistré   )ÚhdrsÚpayload)ÚAbstractStreamWriter)ÚPY_38ÚHeadersMixinÚrfc822_formatted_timeÚsentinel)Ú	RESPONSESÚSERVER_SOFTWAREÚHttpVersion10ÚHttpVersion11)ÚPayload)ÚJSONEncoderÚLooseHeaders)ÚContentCodingÚStreamResponseÚResponseÚjson_response)ÚBaseRequestZSameSiteÚsamesitec                   @   s   e Zd ZdZdZdZdS )r!   ÚdeflateÚgzipÚidentityN)Ú__name__Ú
__module__Ú__qualname__r'   r(   r)   © r-   r-   úG/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_response.pyr!   4   s   r!   c                       sæ  e Zd ZdZddddœeee ee ddœdd„Ze	e
dœd	d
„ƒZe	ddœdd„ƒZe	edœdd„ƒZe	e
dœdd„ƒZe	e
dœdd„ƒZe	edœdd„ƒZdefeee eeeeef f ddœdd„Ze	ee
 dœdd„ƒZddœdd„Ze	edœdd„ƒZe	edœdd „ƒZdpee dd!œd"d#„Zdqeee
ef  dd$œd%d&„Ze	d'dœd(d)„ƒZe	d*dœd+d,„ƒZdddd-ddddd.œeeee ee eeeef  eee
 ee
 ee ee dd/œd0d1„Zdd-d2œeee edd3œd4d5„Z e	ee dœ‡ fd6d7„ƒZ!e!j"ee dd8œd9d7„ƒZ!e	edœ‡ fd:d;„ƒZ#e#j"edd8œd<d;„ƒZ#e	ee dœ‡ fd=d>„ƒZ$e$j"ee dd8œd?d>„ƒZ$e	ee%j% dœd@dA„ƒZ&e&j"eeee'e%j%ef  dd8œdBdA„ƒZ&e(j)fe*ddCœdDdE„Z+eddFœdGdH„Z,dIddJœdKdL„Z-dIee. dJœdMdN„Z/dIe.dJœdOdP„Z0ddœdQdR„Z1ddœdSdT„Z2e3ddUœdVdW„Z4ddœdXdY„Z5dre3ddUœd[d\„Z6edœd]d^„Z7ee8d_œd`da„Z9ee8ddbœdcdd„Z:edd_œdedf„Z;edœdgdh„Z<e=e dœdidj„Z>edœdkdl„Z?e@e
dmœdndo„ZA‡  ZBS )sr"   TéÈ   N©ÚstatusÚreasonÚheaders)r1   r2   r3   Úreturnc                C   sp   d | _ d | _d| _d| _d | _tƒ | _d | _d | _d| _	d| _
i | _|d k	rXt|ƒ| _ntƒ | _|  ||¡ d S )NFr   )Ú_bodyÚ_keep_aliveÚ_chunkedÚ_compressionÚ_compression_forcer   Ú_cookiesÚ_reqÚ_payload_writerÚ	_eof_sentÚ_body_lengthÚ_stater   Ú_headersÚ
set_status)Úselfr1   r2   r3   r-   r-   r.   Ú__init__G   s    zStreamResponse.__init__©r4   c                 C   s
   | j d k	S ©N)r<   ©rB   r-   r-   r.   Úpreparedb   s    zStreamResponse.preparedzasyncio.Task[None]c                 C   s   t | jdd ƒS )NÚtask)Úgetattrr;   rF   r-   r-   r.   rH   f   s    zStreamResponse.taskc                 C   s   | j S rE   )Ú_statusrF   r-   r-   r.   r1   j   s    zStreamResponse.statusc                 C   s   | j S rE   )r7   rF   r-   r-   r.   Úchunkedn   s    zStreamResponse.chunkedc                 C   s   | j S rE   )r8   rF   r-   r-   r.   Úcompressionr   s    zStreamResponse.compressionc                 C   s   | j S rE   )Ú_reasonrF   r-   r-   r.   r2   v   s    zStreamResponse.reason)r1   r2   Ú
_RESPONSESr4   c                 C   sV   | j rtdƒ‚t|ƒ| _|d krLz|| j d }W n tk
rJ   d}Y nX || _d S )NzGCannot change the response status code after the headers have been sentr   Ú )rG   ÚAssertionErrorÚintrJ   Ú	ExceptionrM   )rB   r1   r2   rN   r-   r-   r.   rA   z   s    ÿ

zStreamResponse.set_statusc                 C   s   | j S rE   ©r6   rF   r-   r-   r.   Ú
keep_alive‹   s    zStreamResponse.keep_alivec                 C   s
   d| _ d S )NFrS   rF   r-   r-   r.   Úforce_close�   s    zStreamResponse.force_closec                 C   s   | j S rE   )r>   rF   r-   r-   r.   Úbody_length’   s    zStreamResponse.body_lengthc                 C   s   t  dt¡ | jst‚| jjS )Nzoutput_length is deprecated)ÚwarningsÚwarnÚDeprecationWarningr<   rP   Úbuffer_sizerF   r-   r-   r.   Úoutput_length–   s    
zStreamResponse.output_length)Ú
chunk_sizer4   c                 C   s2   d| _ tj| jkrtdƒ‚|dk	r.t dt¡ dS )z,Enables automatic chunked transfer encoding.Tz>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615)r7   r   ÚCONTENT_LENGTHr@   ÚRuntimeErrorrW   rX   rY   )rB   r\   r-   r-   r.   Úenable_chunked_encodingœ   s    ÿz&StreamResponse.enable_chunked_encoding)Úforcer4   c                 C   sT   t |ƒtkr*|rtjntj}t dt¡ n|dk	rDt|tƒsDt	dƒ‚d| _
|| _dS )z&Enables response compression encoding.z+Using boolean for force is deprecated #3318Nz1force should one of None, bool or ContentEncodingT)ÚtypeÚboolr!   r'   r)   rW   rX   rY   Ú
isinstancerP   r8   r9   )rB   r`   r-   r-   r.   Úenable_compression§   s     ÿÿz!StreamResponse.enable_compressionzCIMultiDict[str]c                 C   s   | j S rE   )r@   rF   r-   r-   r.   r3   ¹   s    zStreamResponse.headerszSimpleCookie[str]c                 C   s   | j S rE   )r:   rF   r-   r-   r.   Úcookies½   s    zStreamResponse.cookiesú/)ÚexpiresÚdomainÚmax_ageÚpathÚsecureÚhttponlyÚversionr&   )ÚnameÚvaluerg   rh   ri   rj   rk   rl   rm   r&   r4   c                C   sæ   | j  |¡}|dk	r,|jdkr,| j  |d¡ || j |< | j | }|dk	rR||d< n| d¡dkrf|d= |dk	rv||d< |dk	rŒt|ƒ|d< nd|krš|d= ||d< |dk	r²||d< |dk	rÂ||d	< |	dk	rÒ|	|d
< |
dk	râ|
|d< dS )zŸSet or update response cookie.

        Sets new cookie or updates existent with new value.
        Also updates only those params which are not None.
        NrO   rg   úThu, 01 Jan 1970 00:00:00 GMTrh   zmax-agerj   rk   rl   rm   r&   )r:   ÚgetZcoded_valueÚpopÚstr)rB   rn   ro   rg   rh   ri   rj   rk   rl   rm   r&   ÚoldÚcr-   r-   r.   Ú
set_cookieÁ   s0    


zStreamResponse.set_cookie)rh   rj   )rn   rh   rj   r4   c                C   s(   | j  |d¡ | j|ddd||d� dS )zBDelete cookie.

        Creates new empty expired cookie.
        NrO   r   rp   )ri   rg   rh   rj   )r:   rr   rv   )rB   rn   rh   rj   r-   r-   r.   Ú
del_cookieõ   s    úzStreamResponse.del_cookiec                    s   t ƒ jS rE   )ÚsuperÚcontent_lengthrF   ©Ú	__class__r-   r.   ry     s    zStreamResponse.content_length©ro   r4   c                 C   sD   |d k	r0t |ƒ}| jrtdƒ‚t|ƒ| jtj< n| j tjd ¡ d S )Nz<You can't set content length when chunked encoding is enable)rQ   r7   r^   rs   r@   r   r]   rr   ©rB   ro   r-   r-   r.   ry     s    ÿc                    s   t ƒ jS rE   )rx   Úcontent_typerF   rz   r-   r.   r~     s    zStreamResponse.content_typec                 C   s   | j  t|ƒ| _|  ¡  d S rE   )r~   rs   Ú_content_typeÚ_generate_content_type_headerr}   r-   r-   r.   r~     s    
c                    s   t ƒ jS rE   )rx   ÚcharsetrF   rz   r-   r.   r�   #  s    zStreamResponse.charsetc                 C   sZ   | j }|dkrtdƒ‚| jd k	s$t‚|d kr<| j dd ¡ nt|ƒ ¡ | jd< |  ¡  d S )Núapplication/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstr�   )r~   r^   Ú_content_dictrP   rr   rs   Úlowerr€   )rB   ro   Úctyper-   r-   r.   r�   (  s    ÿc                 C   sF   | j  tj¡}|dk	rBt|ƒ}|dk	rBtj|dd… dtjjiŽS dS )zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        Né   Útzinfo)r@   rq   r   ÚLAST_MODIFIEDr   ÚdatetimeÚtimezoneÚutc)rB   ZhttpdateÚ	timetupler-   r-   r.   Úlast_modified7  s    zStreamResponse.last_modifiedc                 C   sŠ   |d kr| j  tjd ¡ nlt|ttfƒrJt dt 	t
 |¡¡¡| j tj< n<t|tjƒrpt d| ¡ ¡| j tj< nt|tƒr†|| j tj< d S )Nz%a, %d %b %Y %H:%M:%S GMT)r@   rr   r   rˆ   rc   rQ   ÚfloatÚtimeÚstrftimeÚgmtimeÚmathÚceilr‰   Úutctimetuplers   r}   r-   r-   r.   r�   D  s     ÿ ÿ
)ÚCONTENT_TYPEr4   c                 C   s^   | j d k	st‚| jd k	st‚d dd„ | j  ¡ D ƒ¡}|rJ| jd | }n| j}|| j|< d S )Nz; c                 s   s    | ]\}}|› d |› �V  qdS )ú=Nr-   )Ú.0ÚkÚvr-   r-   r.   Ú	<genexpr>Z  s     z?StreamResponse._generate_content_type_header.<locals>.<genexpr>)rƒ   rP   r   ÚjoinÚitemsr@   )rB   r•   Úparamsr…   r-   r-   r.   r€   U  s    z,StreamResponse._generate_content_type_header©Úcodingr4   c                 Ã   sH   |t jkrD| jd k	st‚|j| jtj< | j |j¡ | j 	tj
d ¡ d S rE   )r!   r)   r<   rP   ro   r@   r   ÚCONTENT_ENCODINGrd   Zpopallr]   )rB   rŸ   r-   r-   r.   Ú_do_start_compressiona  s
    
z$StreamResponse._do_start_compressionr%   ©Úrequestr4   c                 Ã   s\   | j r|  | j ¡I d H  n>|j tjd¡ ¡ }tD ]$}|j|kr2|  |¡I d H   d S q2d S )NrO   )	r9   r¡   r3   rq   r   ZACCEPT_ENCODINGr„   r!   ro   )rB   r£   Zaccept_encodingrŸ   r-   r-   r.   Ú_start_compressionj  s    
z!StreamResponse._start_compressionc                 Ã   s*   | j r
d S | jd k	r| jS |  |¡I d H S rE   )r=   r<   Ú_start©rB   r£   r-   r-   r.   Úpreparet  s
    
zStreamResponse.preparec                 Ã   sB   || _ |j }| _|  ¡ I d H  | | ¡I d H  |  ¡ I d H  |S rE   )r;   r<   Ú_prepare_headersZ_prepare_hookÚ_write_headers)rB   r£   Úwriterr-   r-   r.   r¥   |  s    zStreamResponse._startc                 Ã   s´  | j }|d k	st‚| j}|d k	s$t‚| j}|d kr8|j}|| _|j}| j}| j ¡ D ]&}|j	dd�dd … }| 
tj|¡ qT| jr’|  |¡I d H  | jrÖ|tkr°td |j¡ƒ‚| ¡  d|tj< tj|krÔ|tj= nr| j�rH| j|_|jd k�r*|tk�r$| ¡  d|tj< tj|k�r(|tj= nd}n|tk�rH| jdk�rH|tj= | tjd¡ | tjtƒ ¡ | tjt¡ tj |k�r°|�rœ|t!k�r°d	|tj < n|tk�r°d
|tj < d S )NrO   )Úheaderr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}rK   F)éd   ée   éf   ég   éÌ   r‚   z
keep-aliveÚclose)"r;   rP   r<   r6   rT   rm   r@   r:   ÚvaluesÚoutputÚaddr   Z
SET_COOKIEr8   r¤   r7   r   r^   ÚformatZenable_chunkingZTRANSFER_ENCODINGr]   Ú_length_checkry   Úlengthr1   Ú
setdefaultr•   ZDATEr   ZSERVERr   Z
CONNECTIONr   )rB   r£   rª   rT   rm   r3   Zcookiero   r-   r-   r.   r¨   †  s\    ÿÿ







zStreamResponse._prepare_headersc                 Ã   s^   | j }|d k	st‚| j}|d k	s$t‚|j}d |d |d | j| j¡}| || j¡I d H  d S )NzHTTP/{}.{} {} {}r   r   )	r;   rP   r<   rm   rµ   rJ   rM   Zwrite_headersr@   )rB   r£   rª   rm   Zstatus_liner-   r-   r.   r©   À  s       ÿzStreamResponse._write_headers©Údatar4   c                 Ã   sV   t |tttfƒs tdt|ƒ ƒ‚| jr.tdƒ‚| jd kr@tdƒ‚| j 	|¡I d H  d S )Nú#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()z$Cannot call write() before prepare())
rc   ÚbytesÚ	bytearrayÚ
memoryviewrP   ra   r=   r^   r<   Úwrite©rB   rº   r-   r-   r.   r¿   Ì  s     ÿ
þ
zStreamResponse.writec                 Ã   sD   | j rtdƒ‚| jd k	s tdƒ‚tjdtdd� | j ¡ I d H  d S )NzEOF has already been sentúResponse has not been startedz2drain method is deprecated, use await resp.write()é   )Ú
stacklevel)r=   rP   r<   rW   rX   rY   ÚdrainrF   r-   r-   r.   rÄ   Ø  s    ýzStreamResponse.drainó    c                 Ã   sn   t |tttfƒs tdt|ƒ ƒ‚| jr*d S | jd k	s<tdƒ‚| j |¡I d H  d| _d | _	| jj
| _d | _d S )Nr»   rÁ   T)rc   r¼   r½   r¾   rP   ra   r=   r<   Ú	write_eofr;   Zoutput_sizer>   rÀ   r-   r-   r.   rÆ   â  s     ÿ
þ
zStreamResponse.write_eofc                 C   s\   | j rd}n2| jr:| jd k	s t‚| jj› d| jj› d�}nd}d| jj› d| j› d|› d�S )NÚeofú znot preparedú<ú>)	r=   rG   r;   rP   Úmethodrj   r{   r*   r2   )rB   Úinfor-   r-   r.   Ú__repr__ò  s    zStreamResponse.__repr__)Úkeyr4   c                 C   s
   | j | S rE   ©r?   ©rB   rÎ   r-   r-   r.   Ú__getitem__ü  s    zStreamResponse.__getitem__)rÎ   ro   r4   c                 C   s   || j |< d S rE   rÏ   )rB   rÎ   ro   r-   r-   r.   Ú__setitem__ÿ  s    zStreamResponse.__setitem__c                 C   s   | j |= d S rE   rÏ   rÐ   r-   r-   r.   Ú__delitem__  s    zStreamResponse.__delitem__c                 C   s
   t | jƒS rE   )Úlenr?   rF   r-   r-   r.   Ú__len__  s    zStreamResponse.__len__c                 C   s
   t | jƒS rE   )Úiterr?   rF   r-   r-   r.   Ú__iter__  s    zStreamResponse.__iter__c                 C   s   t t| ƒƒS rE   )ÚhashÚidrF   r-   r-   r.   Ú__hash__  s    zStreamResponse.__hash__)Úotherr4   c                 C   s   | |kS rE   r-   )rB   rÛ   r-   r-   r.   Ú__eq__  s    zStreamResponse.__eq__)N)N)rÅ   )Cr*   r+   r,   r¶   rQ   r   rs   r    rC   Úpropertyrb   rG   rH   r1   rK   rL   r2   r   r
   r   rA   rT   rU   rV   r[   r_   r   r!   rd   r3   re   rv   rw   ry   Úsetterr~   r�   r‰   r�   rŽ   r   r•   r   r€   r¡   r¤   r   r§   r¥   r¨   r©   r¼   r¿   rÄ   rÆ   rÍ   r   rÑ   rÒ   rÓ   rÕ   r	   r×   rÚ   ÚobjectrÜ   Ú__classcell__r-   r-   rz   r.   r"   C   sè   ûúüû ÿþôó5 ÿ  þþÿþ	

:

r"   c                       sV  e Zd Zddddddddddœ	eeee ee ee ee ee ee ee ddœ
‡ fdd„Z	e
eeeef  dœdd	„ƒZejejejfeeedd
œdd	„ƒZe
ee dœdd„ƒZejeddœdd„ƒZe
ee dœ‡ fdd„ƒZejee ddœdd„ƒZd"eddœ‡ fdd„Zdedœ‡ fdd„Zeddœdd„Zeddœ‡ fd d!„Z‡  ZS )#r#   Nr/   )	Úbodyr1   r2   Útextr3   r~   r�   Úzlib_executor_sizeÚzlib_executor)
rá   r1   r2   râ   r3   r~   r�   rã   rä   r4   c       	            s^  |d k	r|d k	rt dƒ‚|d kr(tƒ }
nt|tƒs<t|ƒ}
n|}
|d k	rXd|krXt dƒ‚|d k	rÐtj|
kr||sr|rÎt dƒ‚nRt|tƒs–tdt|ƒ ƒ‚|d kr¢d}|d kr®d}|d | |
tj< | |¡}d }nNtj|
krô|d k	sê|d k	ròt dƒ‚n*|d k	�r|d k	�r|d| 7 }||
tj< t	ƒ j
|||
d	� |d k	�rB|| _n|| _d | _|| _|	| _d S )
Nz&body and text are not allowed togetherr�   z,charset must not be in content_type argumentzPpassing both Content-Type header and content_type or charset params is forbiddenútext argument must be str (%r)ú
text/plainúutf-8z
; charset=r0   )Ú
ValueErrorr   rc   r   r•   rs   Ú	TypeErrorra   Úencoderx   rC   râ   rá   Ú_compressed_bodyÚ_zlib_executor_sizeÚ_zlib_executor)rB   rá   r1   r2   râ   r3   r~   r�   rã   rä   Zreal_headersrz   r-   r.   rC     sP    


ÿ


ÿ



zResponse.__init__rD   c                 C   s   | j S rE   )r5   rF   r-   r-   r.   rá   Y  s    zResponse.body)rá   r•   r]   r4   c                 C   sê   |d krd | _ d| _nÊt|ttfƒr2|| _ d| _n®ztj |¡ | _ }W n& tjk
rn   t	dt
|ƒ ƒ‚Y nX d| _| j}| js¤||kr¤|j}|d k	r¤t|ƒ||< ||kr¶|j||< |jrà|j ¡ D ]\}}||krÆ|||< qÆd | _d S )NFzUnsupported body type %rT)r5   Ú_body_payloadrc   r¼   r½   r   ZPAYLOAD_REGISTRYrq   ÚLookupErrorrè   ra   r@   r7   Úsizers   r~   r3   rœ   rë   )rB   rá   r•   r]   r3   rð   rÎ   ro   r-   r-   r.   rá   ]  s.    

c                 C   s    | j d krd S | j  | jpd¡S )Nrç   )r5   Údecoder�   rF   r-   r-   r.   râ   †  s    
zResponse.text)râ   r4   c                 C   s`   |d ks"t |tƒs"tdt|ƒ ƒ‚| jdkr2d| _| jd krBd| _| | j¡| _d| _d | _	d S )Nrå   r‚   ræ   rç   F)
rc   rs   rP   ra   r~   r�   rê   r5   rî   rë   )rB   râ   r-   r-   r.   râ   Œ  s    
 ÿ
þ

c                    sX   | j r
d S tj| jkrtƒ jS | jd k	r2t| jƒS | jr<d S | j	d k	rPt| j	ƒS dS d S )Nr   )
r7   r   r]   r@   rx   ry   rë   rÔ   rî   r5   rF   rz   r-   r.   ry   ›  s    



zResponse.content_lengthr|   c                 C   s   t dƒ‚d S )Nz#Content length is set automatically)r^   r}   r-   r-   r.   ry   ®  s    rÅ   r¹   c                 ƒ   sä   | j r
d S | jd kr| j}n| j}|r4td|›�ƒ‚| jd k	sBt‚| jd k	sPt‚|d k	rÐ| jjtjksp| j	dkr‚t
ƒ  ¡ I d H  qà| jr¶tt|ƒ}| | j¡I d H  t
ƒ  ¡ I d H  qàt
ƒ  tt|ƒ¡I d H  nt
ƒ  ¡ I d H  d S )Nzdata arg is not supported, got )r°   i0  )r=   rë   r5   rP   r;   r<   Ú_methodr   Z	METH_HEADrJ   rx   rÆ   rî   r   r   r¿   r¼   )rB   rº   rá   r   rz   r-   r.   rÆ   ²  s"    

zResponse.write_eofr%   r¢   c                 ƒ   sX   | j sFtj| jkrF| jsF| jd k	r:tt| jƒƒ| jtj< nd| jtj< tƒ  	|¡I d H S )NÚ0)
r7   r   r]   r@   rî   r5   rs   rÔ   rx   r¥   r¦   rz   r-   r.   r¥   È  s    
zResponse._start)Ú	zlib_moder4   c                 C   sB   |dkst ‚tj|d�}| j}|d k	s*t ‚| |¡| ¡  | _d S )Nr   )Zwbits)rP   ÚzlibÚcompressobjr5   ÚcompressÚflushrë   )rB   rô   rö   Úbody_inr-   r-   r.   Ú_compress_bodyÒ  s
    zResponse._compress_bodyrž   c                 ƒ   sÌ   | j s| jrtƒ  |¡I d H S |tjkrÈ|tjkr<dtj ntj}| j	}|d k	sTt
‚| jd k	rŠt|ƒ| jkrŠt ¡  | j| j|¡I d H  n
|  |¡ | j}|d k	s¦t
‚|j| jtj< tt|ƒƒ| jtj< d S )Né   )rî   r7   rx   r¡   r!   r)   r(   rõ   Ú	MAX_WBITSr5   rP   rì   rÔ   ÚasyncioZget_event_loopZrun_in_executorrí   rú   rë   ro   r@   r   r    rs   r]   )rB   rŸ   rô   rù   Zbody_outrz   r-   r.   r¡   Ù  s*    
ÿÿþ  ÿ
zResponse._do_start_compression)rÅ   )r*   r+   r,   r   rQ   r   rs   r    r   rC   rÝ   r   r¼   r   rá   rÞ   r   r•   r]   r   râ   ry   rÆ   r   r¥   rú   r!   r¡   rà   r-   r-   rz   r.   r#     sX   õôFüû(
r#   r/   zapplication/json)râ   rá   r1   r2   r3   r~   Údumps)	rº   râ   rá   r1   r2   r3   r~   rþ   r4   c                C   s6   | t k	r"|s|rtdƒ‚n|| ƒ}t||||||d�S )Nz3only one of data, text, or body should be specified)râ   rá   r1   r2   r3   r~   )r   rè   r#   )rº   râ   rá   r1   r2   r3   r~   rþ   r-   r-   r.   r$   ö  s    
úr$   )@rý   Úcollections.abcÚcollectionsr‰   ÚenumÚjsonr’   r�   rW   rõ   Úconcurrent.futuresr   Úemail.utilsr   Zhttp.cookiesr   r   Útypingr   r   r   r	   r
   r   r   r   r   r   Z	multidictr   r   rO   r   r   Úabcr   Zhelpersr   r   r   r   Úhttpr   r   r   r   r   Ztypedefsr   r    Ú__all__Zweb_requestr%   rs   Z	BaseClassZ	_reservedÚEnumr!   r"   r#   rþ   r¼   rQ   r$   r-   r-   r-   r.   Ú<module>   sj   0
   R fÿ÷ö