
    fj<`                         d 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	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mZmZmZ ddlmZmZ ddlmZ dd	lm Z m!Z! dd
l"m#Z# ddl$Z$ddl%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl
m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZG erddlHmIZI neZIejJ        dk    rerddlmKZK ejJ        dk    rddlmLZL neZL ede=d          ZM ede?          ZNejO        dk    o
ejP        dk    ZQejR        fd eSd!ejT        d"ej        fd#ZUd eSd$eVd!ejT        d"ej        fd%ZWd"eVfd&ZX G d' d(e          ZY G d) d*eY          ZZ G d+ d,eY          Z[ G d- d.eeNeMf                   Z\ G d/ d0e          Z]d1ed2ed3ed"efd4Z^eg ej_        f         Z`eja        ejb        d5fd6e`d7ecd"eej_                 fd8            Zdejb        fd6e`d"ej_        fd9ZedRd:ej_        d7ecd"dfd;Zfd"ejg        fd<ZhdSd=eIdz  d"eji        fd>Zj	 dSe3 e5dd          d5de3e3e3e8dd?d@dAdBeSdCeSdDedEedFe5dGecdHedIedJedKedLe9d=eIdz  dMeVd:ed"eAfdNZke3e3fdOedPed"efdQZldS )TzUtilities shared by tests.    N)ABCabstractmethod)CallableIterator)TracebackType)TYPE_CHECKINGAnyGenericLiteralTypeVarcastoverload)IsolatedAsyncioTestCasemock)Signal)CIMultiDictCIMultiDictProxy)URL)_BaseRequestContextManager_RequestContextManager_RequestOptions_WSRequestContextManager   )ClientSessionhdrs)AbstractCookieJar)ClientResponse)ClientWebSocketResponse)sentinel)HttpVersionRawRequestMessage)EMPTY_PAYLOADStreamReader)StrOrURL)	Application	AppRunnerBaseRequest
BaseRunnerRequestServerServerRunnerSockSiteUrlMappingMatchInfo)_RequestHandler)
SSLContext      )Unpack)Self_ApplicationNone_Request)boundposixcygwinhostfamilyreturnc                 $    t          | d|          S )Nr   )get_port_socket)r:   r;   s     V/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/aiohttp/test_utils.pyget_unused_port_socketr@   F   s     4F+++    portc                     t          j         |t           j                  }t          r+|                    t           j        t           j        d           |                    | |f           |S )Nr   )socketSOCK_STREAMREUSE_ADDRESS
setsockopt
SOL_SOCKETSO_REUSEADDRbind)r:   rB   r;   ss       r?   r>   r>   L   sZ     	ff011A @ 	
V&(;Q???FFD$<HrA   c                     t          j         t           j        t           j                  5 } |                     d           t	          t
          |                                 d                   cddd           S # 1 swxY w Y   dS )z1Return a port that is unused on the current host.)	127.0.0.1r   r   N)rD   AF_INETrE   rJ   r   intgetsockname)rK   s    r?   unused_portrQ   Y   s    	v~v'9	:	: -a	   C+,,- - - - - - - - - - - - - - - - - -s   AA99A= A=c                      e Zd ZdZdddddeddedej        dz  ded	edz  d
e	de
eeej        gej        f         deddfdZ	 ddej        dz  deddfdZededefd            ZdedefdZede	fd            Zede	fd            Zedefd            ZddZddZdee         dz  dedz  dedz  ddfdZ d dZ!dee         dz  dedz  dedz  ddfdZ"dS )!BaseTestServerF NrM   )schemeloopr:   rB   skip_url_assertssocket_factoryrU   rV   r:   rB   rW   rX   kwargsr<   c                    || _         d | _        d | _        || _        || _        d| _        || _        || _        || _        d S )NF)	_looprunner_rootr:   rB   _closedrU   rW   rX   )selfrU   rV   r:   rB   rW   rX   rY   s           r?   __init__zBaseTestServer.__init__c   sK     
)-!%
		 0,rA   c                   K   | j         rd S || _        |                    dd           | _         | j        dddi| d {V | _         | j                                          d {V  | j        sd| _        | j        }	 t          j	        | j                  j
        }n# t          $ r d}Y nw xY w|dk    rd| j         d}|dk    rt          j        nt          j        }|                     | j        | j        |          }|                                d d	         \  | _        | _        t#          | j         || j        
          }|                                 d {V  |j        }|J |j        }	|	J |	d                                         d         | _        | j        s| j        rdnd| _        t-          | j         d| d| j                   | _        d S )Nsslhandler_cancellationTr         []   )sockssl_contextr   httpshttpz://: )r\   r[   pop_ssl_make_runnersetuprB   r:   	ipaddress
ip_addressversion
ValueErrorrD   AF_INET6rN   rX   rP   r,   start_serversocketsrU   r   r]   )
r_   rV   rY   absolute_hostru   r;   _socksiteserverrz   s
             r?   start_serverzBaseTestServer.start_serverz   s      ; 	F
JJud++	-D-RR4R6RRRRRRRRk!!!!!!!!!y 	DI		*4955=GG 	 	 	GGG	a<<,	,,,M$+qLLfn##DIty&AA$00222A26	49%TYGGGjjll!!!."""AJ**,,Q/	{ 	;%)Y:''FDKDKGGMGGDIGGHH


s   =B B+*B+c                 
   K   d S Nrn   r_   rY   s     r?   rq   zBaseTestServer._make_runner   s      rA   pathc                     | j         J t          |          }| j        s#|j        rJ | j                             |          S t          t          | j                   t          |          z             S r   )r]   r   rW   absolutejoinstr)r_   r   urls      r?   make_urlzBaseTestServer.make_url   si    z%%%$ii$ 	4|###:??3'''s4:T2333rA   c                     | j         d uS r   )r\   r_   s    r?   startedzBaseTestServer.started   s    {$&&rA   c                     | j         S r   )r^   r   s    r?   closedzBaseTestServer.closed   
    |rA   c                 8    | j         }|J |j        J |j        S r   )r\   r~   )r_   r\   s     r?   handlerzBaseTestServer.handler   s-     !!!}(((}rA   c                    K   | j         rF| j        sA| j        J | j                                         d{V  d| _        d| _        d| _        dS dS dS )a`  Close all fixtures created by the test client.

        After that point, the TestClient is no longer usable.

        This is an idempotent function: running close multiple times
        will not have any additional effects.

        close is also run when the object is garbage collected, and on
        exit when used as a context manager.

        NT)r   r   r\   cleanupr]   rB   r^   r   s    r?   closezBaseTestServer.close   s|       < 	  	 ;***+%%'''''''''DJDIDLLL	  	  	  	 rA   c                      t          d          NzUse async with instead	TypeErrorr   s    r?   	__enter__zBaseTestServer.__enter__       0111rA   exc_type	exc_value	tracebackc                     d S r   rn   r_   r   r   r   s       r?   __exit__zBaseTestServer.__exit__   	     	rA   c                 L   K   |                      | j                   d {V  | S NrV   )r   r[   r   s    r?   
__aenter__zBaseTestServer.__aenter__   s6      TZ000000000rA   c                 >   K   |                                   d {V  d S r   r   r   s       r?   	__aexit__zBaseTestServer.__aexit__   .       jjllrA   r   r<   N)r<   rS   )#__name__
__module____qualname____test__r>   r   asyncioAbstractEventLooprO   boolr   rD   AddressFamilyr	   r`   r   r   r(   rq   r$   r   r   propertyr   r   r*   r   r   r   typeBaseExceptionr   r   r   r   rn   rA   r?   rS   rS   `   s       H
 15!& - - - - '$.	-
 - Dj- - !#v+,fm;
- - 
- - - -0 8<I I-4IGJI	I I I I@ 3 :    ^4X 4# 4 4 4 4 ' ' ' ' X'     X     X       &2 2 2 2}%, !4' !4'	
 
      }%, !4' !4'	
 
     rA   rS   c                   T     e Zd Zdddddededededz  d	ef
 fd
Zd	edefdZ	 xZ
S )
TestServerrT   rM   NrU   r:   rB   apprU   r:   rB   rY   c                P    || _          t                      j        d|||d| d S Nr   rn   )r   superr`   )r_   r   rU   r:   rB   rY   	__class__s         r?   r`   zTestServer.__init__   s8     GTGGGGGGGrA   r<   c                 *   K   t          | j        fi |S r   )r&   r   r   s     r?   rq   zTestServer._make_runner   s      ,,V,,,rA   )r   r   r   r%   r   rO   r	   r`   r(   rq   __classcell__r   s   @r?   r   r      s        
 
H 
H 
H
H 	
H
 
H Dj
H 
H 
H 
H 
H 
H 
H-3 -: - - - - - - - -rA   r   c                   ^     e Zd Zdddddededededz  d	ed
df fdZdded	ed
e	fdZ
 xZS )RawTestServerrT   rM   Nr   r   rU   r:   rB   rY   r<   c                P    || _          t                      j        d|||d| d S r   )_handlerr   r`   )r_   r   rU   r:   rB   rY   r   s         r?   r`   zRawTestServer.__init__   s8      GTGGGGGGGrA   Tdebugc                 X   K   t          | j        f| j        |d|}t          |fd|i|S )N)rV   r   r   )r*   r   r[   r+   )r_   r   rY   srvs       r?   rq   zRawTestServer._make_runner  sA      T]K5KKFKKC77u7777rA   )T)r   r   r   r.   r   rO   r	   r`   r   r+   rq   r   r   s   @r?   r   r      s        
 
H 
H 
H 
H 	
H
 
H Dj
H 
H 

H 
H 
H 
H 
H 
H8 8 8s 8| 8 8 8 8 8 8 8 8rA   r   c                   B   e Zd ZdZdZedddddededz  d	ed
df
d            Z	eddddde
dedz  d	ed
df
d            Z	dddde
dedz  dej        dz  d	ed
df
dZ	dFdZed
efd            Zed
edz  fd            Zed
e
fd            Zed
efd            Zed
efd            Zded
efdZdeded	ed
efdZej        dk    rerdeded	e e!         d
e"fdZ#ded	e e!         d
e"fdZ$ded	e e!         d
e"fdZ%ded	e e!         d
e"fdZ&ded	e e!         d
e"fd Z'ded	e e!         d
e"fd!Z(ded	e e!         d
e"fd"Z)ded	e e!         d
e"fd#Z*nRdeded	ed
e"fd$Z#ded	ed
e"fd%Z$ded	ed
e"fd&Z'ded	ed
e"fd'Z%ded	ed
e"fd(Z&ded	ed
e"fd)Z(ded	ed
e"fd*Z)ded	ed
e"fd+Z*ed,d-ded.e+d/         d	ed
d0fd1            Z,eded.e+d         d	ed
d2fd3            Z,ed,d-ded.e-d	ed
d4fd5            Z,d/d-ded.e-d	ed
d4fd6Z,ed,d-ded.e+d/         d	ed
d7fd8            Z.eded.e+d         d	ed
d9fd:            Z.ed,d-ded.e-d	ed
d;fd<            Z.d/d-ded.e-d	ed
d;fd=Z.dFd>Z/dFd?Z0d@e1e2         dz  dAe2dz  dBe3dz  d
dfdCZ4d
e5fdDZ6d@e1e2         dz  dAe2dz  dBe3dz  d
dfdEZ7dS )G
TestClientzb
    A test client implementation.

    To write functional tests for aiohttp based servers.

    FN)
cookie_jarr_   z TestClient[Request, Application]r~   r   rY   r<   c                    d S r   rn   r_   r~   r   rY   s       r?   r`   zTestClient.__init__  	     srA   zTestClient[_Request, None]c                    d S r   rn   r   s       r?   r`   zTestClient.__init__  r   rA   )r   rV   rV   c                $   t          |t                    st          dt          |          z            || _        || _        |t          j        d|          }t          d||d|| _	        d| j	        _
        d| _        g | _        g | _        d S )Nz2server must be TestServer instance, found type: %rT)unsaferV   )rV   r   Frn   )
isinstancerS   r   r   ry   r[   aiohttp	CookieJarr   _session_retry_connectionr^   
_responses_websockets)r_   r~   r   rV   rY   s        r?   r`   zTestClient.__init__!  s     &.11 	DtF||S   
 *$TBBBJ%Q4JQQ&QQ*/'02@BrA   c                 V   K   | j                             | j                   d {V  d S r   )ry   r   r[   r   s    r?   r   zTestClient.start_server7  s9      l''TZ'88888888888rA   c                     | j         j        S r   )ry   r:   r   s    r?   r:   zTestClient.host:      |  rA   c                     | j         j        S r   )ry   rB   r   s    r?   rB   zTestClient.port>  r   rA   c                     | j         S r   )ry   r   s    r?   r~   zTestClient.serverB  r   rA   c                 .    t          | j        dd           S )Nr   )getattrry   r   s    r?   r   zTestClient.appF  s    t|UD111rA   c                     | j         S )zAn internal aiohttp.ClientSession.

        Unlike the methods on the TestClient, client session requests
        do not automatically include the host in the url queried, and
        will require an absolute path to the resource.

        )r   r   s    r?   sessionzTestClient.sessionJ  s     }rA   r   c                 6    | j                             |          S r   )ry   r   )r_   r   s     r?   r   zTestClient.make_urlU  s    |$$T***rA   methodc                    K    | j         j        ||                     |          fi | d {V }| j                            |           |S r   )r   requestr   r   append)r_   r   r   rY   resps        r?   _requestzTestClient._requestX  s_       +T]*64==3F3FQQ&QQQQQQQQt$$$rA   r0   c                     d S r   rn   r_   r   r   rY   s       r?   r   zTestClient.requestb  s    %(SrA   c                     d S r   rn   r_   r   rY   s      r?   getzTestClient.getf  	     &)SrA   c                     d S r   rn   r   s      r?   optionszTestClient.optionsl  r   rA   c                     d S r   rn   r   s      r?   headzTestClient.headr  r   rA   c                     d S r   rn   r   s      r?   postzTestClient.postx  r   rA   c                     d S r   rn   r   s      r?   putzTestClient.put~  r   rA   c                     d S r   rn   r   s      r?   patchzTestClient.patch  r   rA   c                     d S r   rn   r   s      r?   deletezTestClient.delete  r   rA   c                 :    t           | j        ||fi |          S )zRoutes a request to tested http server.

            The interface is identical to aiohttp.ClientSession.request,
            except the loop kwarg is overridden by the instance used by the
            test server.

            )r   r   r   s       r?   r   zTestClient.request  s(     *-$-*O*O*O*OPPPrA   c                 N    t           | j        t          j        |fi |          S )zPerform an HTTP GET request.)r   r   r   METH_GETr   s      r?   r   zTestClient.get  (    )-$-t*V*Vv*V*VWWWrA   c                 N    t           | j        t          j        |fi |          S )zPerform an HTTP POST request.)r   r   r   	METH_POSTr   s      r?   r   zTestClient.post  )    )-$-*W*WPV*W*WXXXrA   c                 N    t           | j        t          j        |fi |          S )z Perform an HTTP OPTIONS request.)r   r   r   METH_OPTIONSr   s      r?   r   zTestClient.options  s0    )d/@@@@  rA   c                 N    t           | j        t          j        |fi |          S )zPerform an HTTP HEAD request.)r   r   r   	METH_HEADr   s      r?   r   zTestClient.head  r   rA   c                 N    t           | j        t          j        |fi |          S )zPerform an HTTP PUT request.)r   r   r   METH_PUTr   s      r?   r   zTestClient.put  r   rA   c                 N    t           | j        t          j        |fi |          S zPerform an HTTP PATCH request.)r   r   r   
METH_PATCHr   s      r?   r   zTestClient.patch  s/    )dot>>v>>  rA   c                 N    t           | j        t          j        |fi |          S r  )r   r   r   METH_DELETEr   s      r?   r   zTestClient.delete  s0    )d.????  rA   .)decode_textr  TzB_BaseRequestContextManager[ClientWebSocketResponse[Literal[True]]]c                    d S r   rn   r_   r   r  rY   s       r?   
ws_connectzTestClient.ws_connect  s     PSsrA   zC_BaseRequestContextManager[ClientWebSocketResponse[Literal[False]]]c                    d S r   rn   r  s       r?   r  zTestClient.ws_connect  s     QTPSrA   z9_BaseRequestContextManager[ClientWebSocketResponse[bool]]c                    d S r   rn   r  s       r?   r  zTestClient.ws_connect  s     GJcrA   c                <    t           | j        |fd|i|          S )zjInitiate websocket connection.

        The api corresponds to aiohttp.ClientSession.ws_connect.

        r  )r   _ws_connectr  s       r?   r  zTestClient.ws_connect  s3     (DTEE{EfEE
 
 	
rA   z&ClientWebSocketResponse[Literal[True]]c                
   K   d S r   rn   r  s       r?   r  zTestClient._ws_connect  s       473rA   z'ClientWebSocketResponse[Literal[False]]c                
   K   d S r   rn   r  s       r?   r  zTestClient._ws_connect  s       58CrA   zClientWebSocketResponse[bool]c                
   K   d S r   rn   r  s       r?   r  zTestClient._ws_connect  s       +.#rA   c                   K    | j         j        |                     |          fd|i| d {V }| j                            |           |S )Nr  )r   r  r   r   r   )r_   r   r  rY   wss        r?   r  zTestClient._ws_connect  s~       ,4=+MM$
 
-8
<B
 
 
 
 
 
 
 
 	###	rA   c                 *  K   | j         s| j        D ]}|                                 | j        D ]}|                                 d{V  | j                                         d{V  | j                                         d{V  d| _         dS dS )aH  Close all fixtures created by the test client.

        After that point, the TestClient is no longer usable.

        This is an idempotent function: running close multiple times
        will not have any additional effects.

        close is also run on exit when used as a(n) (asynchronous)
        context manager.

        NT)r^   r   r   r   r   ry   )r_   r   r  s      r?   r   zTestClient.close  s       | 	   

& ! !hhjj        -%%''''''''',$$&&&&&&&&&DLLL	  	 rA   c                      t          d          r   r   r   s    r?   r   zTestClient.__enter__  r   rA   r   exctbc                     d S r   rn   r_   r   r  r  s       r?   r   zTestClient.__exit__  r   rA   c                 >   K   |                                   d {V  | S r   )r   r   s    r?   r   zTestClient.__aenter__  s/      !!!!!!!!!rA   c                 >   K   |                                   d {V  d S r   r   r  s       r?   r   zTestClient.__aexit__  r   rA   r   )8r   r   r   __doc__r   r   r   r   r	   r`   rS   r   r   r   r   r   r:   rO   rB   r~   r5   r   r   r   r$   r   r   r   r   sysversion_infor   r3   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r   r   r   r4   r   r   rn   rA   r?   r   r     s	         H
 04	  0 &,	
  
   X 
 04	  * &,	
  
   X 0415C C CC &,	C
 '$.C C 
C C C C,9 9 9 9 !c ! ! ! X! !cDj ! ! ! X!     X 2% 2 2 2 X2     X+X +# + + + +!)58	    7""}"	)	)%-	)9?9P	)#	) 	) 	) 	)	)	) _-	) $		) 	) 	) 	)	)	) _-	) $		) 	) 	) 	)	)	) _-	) $		) 	) 	) 	)	)	) _-	) $		) 	) 	) 	)	)	) _-	) $		) 	) 	) 	)	)	) _-	) $		) 	) 	) 	)	)	) _-	) $		) 	) 	) 	) 	)
	Q
	Q%-
	Q9<
	Q#
	Q 
	Q 
	Q 
	Q	XH 	X 	X8N 	X 	X 	X 	X	YX 	Y 	Y9O 	Y 	Y 	Y 	Y	 	C 	<R 	 	 	 		YX 	Y 	Y9O 	Y 	Y 	Y 	Y	XH 	X 	X8N 	X 	X 	X 	X	h 	# 	:P 	 	 	 		x 	3 	;Q 	 	 	 	 >AS S SS.5dmSMPS	MS S S XS TT.5enTHKT	NT T T XT 58J J JJ.2JDGJ	DJ J J XJ
 6:

 

 



.2

EH

	D

 

 

 

 >A7 7 77.5dm7MP7	17 7 7 X7 88.5en8HK8	28 8 8 X8 58. . ...2.DG.	(. . . X.
 6:  .2EH	(          *2 2 2 2}%, T! D 	
 
   $    }%, T! D 	
 
     rA   r   c                   z    e Zd ZdZdefdZdefdZddZddZddZ	dd	Z
d
edefdZdedeeef         fdZdS )AioHTTPTestCasea  A base class to allow for unittest web applications using aiohttp.

    Provides the following:

    * self.client (aiohttp.test_utils.TestClient): an aiohttp test client.
    * self.loop (asyncio.BaseEventLoop): the event loop in which the
        application and server are running.
    * self.app (aiohttp.web.Application): the application returned by
        self.get_application()

    Note that the TestClient's methods are asynchronous: you have to
    execute function on the test client using asynchronous methods.
    r<   c                 .   K   |                                  S )zGet application.

        This method should be overridden
        to return the aiohttp.web.Application
        object to test.
        )get_appr   s    r?   get_applicationzAioHTTPTestCase.get_application0  s       ||~~rA   c                      t          d          )zqObsolete method used to constructing web application.

        Use .get_application() coroutine instead.
        z+Did you forget to define get_application()?)RuntimeErrorr   s    r?   r'  zAioHTTPTestCase.get_app9  s    
 HIIIrA   Nc                 j   K   t          j                    | _        |                                  d {V S r   )r   get_running_looprV   
setUpAsyncr   s    r?   
asyncSetUpzAioHTTPTestCase.asyncSetUp@  s8      ,..	__&&&&&&&&&rA   c                   K   |                                   d {V | _        |                     | j                   d {V | _        |                     | j                   d {V | _        | j                                         d {V  d S r   )r(  r   
get_serverr~   
get_clientclientr   r   s    r?   r-  zAioHTTPTestCase.setUpAsyncD  s      --//////// OODH55555555 OODK88888888k&&(((((((((((rA   c                 :   K   |                                   d {V S r   )tearDownAsyncr   s    r?   asyncTearDownzAioHTTPTestCase.asyncTearDownK  s*      '')))))))))rA   c                 H   K   | j                                          d {V  d S r   )r2  r   r   s    r?   r4  zAioHTTPTestCase.tearDownAsyncN  s2      k!!!!!!!!!!!rA   r   c                 2   K   t          || j                  S )zReturn a TestServer instance.r   )r   rV   )r_   r   s     r?   r0  zAioHTTPTestCase.get_serverQ  s      #DI....rA   r~   c                 2   K   t          || j                  S )zReturn a TestClient instance.r   )r   rV   )r_   r~   s     r?   r1  zAioHTTPTestCase.get_clientU  s      &ty1111rA   r   )r   r   r   r!  r%   r(  r'  r.  r-  r5  r4  r   r0  r   r)   r1  rn   rA   r?   r%  r%  !  s         {    J J J J J' ' ' ') ) ) )* * * *" " " "/K /J / / / /2z 2j+AU6V 2 2 2 2 2 2rA   r%  funcargsrY   c                 >    t          j        dt          d           | S )zw
    A decorator dedicated to use with asynchronous AioHTTPTestCase test methods.

    In 3.8+, this does nothing.
    zBDecorator `@unittest_run_loop` is no longer needed in aiohttp 3.8+rh   )
stacklevel)warningswarnDeprecationWarning)r9  r:  rY   s      r?   unittest_run_loopr@  Z  s-     ML   
 KrA   Floop_factoryfastc              #   R   K   t          |           }|V  t          ||           dS )zzA contextmanager that creates an event_loop, for test purposes.

    Handles the creation and cleanup of a test loop.
    )rB  N)setup_test_loopteardown_test_loop)rA  rB  rV   s      r?   loop_contextrF  k  s7       <((D
JJJt$''''''rA   c                 B     |             }t          j        |           |S )zCreate and return an asyncio.BaseEventLoop instance.

    The caller should also call teardown_test_loop,
    once they are done with the loop.
    )r   set_event_loop)rA  rV   s     r?   rD  rD  x  s%     <>>D4   KrA   rV   c                    |                                  }|sB|                     | j                   |                                  |                                  |st          j                     t          j        d           dS )z>Teardown and cleanup an event_loop created by setup_test_loop.N)		is_closed	call_soonstoprun_foreverr   gccollectr   rH  )rV   rB  r   s      r?   rE  rE    sv    ^^F ty!!!

 

4     rA   c                  4   dt           dt          dt           fd} dt           dt          dt           dd fd}t          j        t                    }i |_        | |_        ||_        d|_        t          |          |_
        |j
                                         |S )	Nr   keyr<   c                     | j         |         S r   
__app_dict)r   rQ  s     r?   get_dictz"_create_app_mock.<locals>.get_dict  s    ~c""rA   valuec                     || j         |<   d S r   rS  )r   rQ  rV  s      r?   set_dictz"_create_app_mock.<locals>.set_dict  s    #srA   )specF)r	   r   r   	MagicMockr%   rT  __getitem____setitem___debugr   on_response_preparefreeze)rU  rX  r   s      r?   _create_app_mockr`    s    #c # # # # # #$c $ $C $D $ $ $ $ .k
*
*
*CCNCOCOCJ$SkkC""$$$JrA   
sslcontextc                      t          j                    }dt          dt          t          t          t
          f         z  d z  f fd}||j        _        |S )NrQ  r<   c                 (    | dk    rS | dk    rdnd S )Nra  sockname)rM   P   rn   )rQ  ra  s    r?   get_extra_infoz)_create_transport.<locals>.get_extra_info  s*    ,$':$5$5  4?rA   )r   Mockr   r/   tuplerO   rf  side_effect)ra  	transportrf  s   `  r?   _create_transportrk    sg    	I@C @JsCx$@4$G @ @ @ @ @ @
 ,:I(rA   i   .)
match_inforu   closingr   writerprotocolrj  payloadra  client_max_sizerV   r   r   headersrl  ru   rm  r   rn  ro  rj  rp  rq  c                   t          j                    }|du rD	 t          j                    }n/# t          $ r" t          j                    }d|j        _        Y nw xY w|t          dd          k     rd}|rHt          t          |                    }t          d |                                D                       }nt          t                                }d}d|                    t          j        d                                          v }|                    t          j        d                                          dk    o+t#          |                    t          j                            }t'          | |||||d	||t)          |          
  
        }|t+                      }|	t,          u rt/          |          }	|t,          u rt          j                    }d
|_        d
|_        d|_        |	|_        t          j        |	                    d                    t=          |          _        t          j        |	                    d                    t=          |          _         t          j        |          t=          |          _!        |t,          u rjt          j                    }tE          d	          |_#        tE          d	          |_$        tE          d	          |_%        tE          d	          |_&        |	|_        |	|_        ||_'        tQ          ||
|||||          }tS          |t,          u ri n|t          j                              }|*                    |           ||_+        |S )zCreates mocked web.Request testing purposes.

    Useful in unit tests, when spinning full web server is overkill or
    specific conditions and errors are hard to trigger.
    .rn   r   Tc              3   p   K   | ]1\  }}|                     d           |                     d           fV  2dS )zutf-8N)encode).0kvs      r?   	<genexpr>z&make_mocked_request.<locals>.<genexpr>  sT       
 
7;q!QXXg 1 12
 
 
 
 
 
rA   chunkedrT   upgradeNi     peername)return_valuerd  )rq  ),r   rg  r   r,  r*  create_futurer~  r    r   r   rh  itemsr   r   TRANSFER_ENCODINGlower
CONNECTIONr   UPGRADEr!   r   r`  r   rk  max_field_sizemax_line_lengthmax_headersrj  PropertyMockrf  r   r}  rd  rj   make_mocked_corowrite_headerswrite	write_eofdrainrn  r)   r-   add_app_match_info)r   r   rr  rl  ru   rm  r   rn  ro  rj  rp  ra  rq  rV   taskraw_hdrsrz  r{  messagereqs                       r?   make_mocked_requestr    sL   , 9;;Ds{{
	1+--DD 	1 	1 	19;;D.0D+++	1 Q"""" ";w#7#788 
 
?F}}
 
 
 
 
 #;==117;;t'=rBBHHJJJGkk$/2..4466)C DL!!I IG  D		 G {  H%j11	89;;"&#' "&"&"3"11*==#
 #
 #
X #'"3"11*==#
 #
 #
X &*%6J%O%O%OX"/55'--+D11'--$"HHO
(FD$  C %H$$*dikk J s COJs   - )AAr~  raise_exceptionc                 h     dt           dt           dt           f fd}t          j        |          S )zCreates a coroutine mock.r:  rY   r<   c                  ^   K   t           urt          j                  sS  d {V  d S r   )r   inspectisawaitable)r:  rY   r  r~  s     r?   	mock_coroz#make_mocked_coro.<locals>.mock_coro!  sO      (**!!"<00 	 rA   )wraps)r	   r   rg  )r~  r  r  s   `` r?   r  r    sQ    
s c c        99%%%%rA   )Fr   )mr!  r   
contextlibrN  r  rs   osrD   r"  r=  abcr   r   collections.abcr   r   typesr   typingr   r	   r
   r   r   r   r   unittestr   r   	aiosignalr   	multidictr   r   yarlr   r   aiohttp.clientr   r   r   r   rT   r   r   r   client_reqrepr   	client_wsr   helpersr   rl   r    r!   streamsr"   r#   typedefsr$   webr%   r&   r'   r(   r)   r*   r+   r,   r-   web_protocolr.   rb   r/   r#  r3   r4   r5   r6   nameplatformrF   rN   r   r   r@   rO   r>   rQ   rS   r   r   r   r%  r@  r   _LOOP_FACTORYcontextmanagernew_event_loopr   rF  rD  rE  rZ  r`  rg  rk  r  r  rn   rA   r?   <module>r     sW            				      				  



  # # # # # # # # . . . . . . . .       P P P P P P P P P P P P P P P P P P 2 2 2 2 2 2 2 2       3 3 3 3 3 3 3 3                   " ! ! ! ! ! ! ! " " " " " " ) ) ) ) ) ) . . . . . .       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 * ) ) ) ) ) Jw=wD7-{DAA 7:[1117"?s|x'? /5n, ,
,+,], , , ,



"("6
]
 
 
 
-S - - - -A A A A AS A A AH- - - - - - - -"8 8 8 8 8N 8 8 8$W W W W W#334 W W Wt62 62 62 62 62- 62 62 62rC  s s     W667 ")"8u	( 	(	(@D	(g'(	( 	( 	( 	( #*"8
 


 
 
 
! !W6 !d !t ! ! ! !$.    $	 	*t"3 	ty 	 	 	 	 h
 &;q!,,)$("h h hh
h h
 h h h 
h h h h h T!h h h  !h h h hX !& &&36&& & & & & &rA   