
    hY                         S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
JrJr  SSKJr  SSKJrJrJrJrJrJrJrJrJrJrJr  SSKJrJr  SSKJr  SSK J!r!J"r"  SS	K#J$r$  SSK%r%SS
K&J'r'J(r(J)r)  SSK*J+r+J,r,  SSK
J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  SSK4J5r5J6r6  SSK7J8r8J9r9  SSK:J;r;  SSK<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErE  SSKFJGrG  \(       a  SSKHJIrI  OSrI\R                  S:  a  \(       a  SSKJKrK  \R                  S:  a  SSKJLrL  O\rL\" S\=S5      rM\" S\?S9rN\R                  S:H  =(       a    \R                  S:g  rQ\R                  4S\SS \R                  S!\R                  4S" jjrUS\SS#\VS \R                  S!\R                  4S$ jrWS!\V4S% jrX " S& S'\5      rY " S( S)\Y5      rZ " S* S+\Y5      r[ " S, S-\\N\M4   5      r\ " S. S/\5      r]S0\S1\S2\S!\4S3 jr^\/ \R                  4   r`\R                  \R                  S44S5\`S6\cS!\\R                     4S7 jj5       rd\R                  4S5\`S!\R                  4S8 jjreSQS9\R                  S6\cS!S4S: jjrfS!\R                  4S; jrhSRS<\\I   S!\R                  4S= jjrj SR\3\5" SS5      S4S\3\3\3\8SS>S?S@.SA\SSB\SSC\SD\SE\5SF\cSG\SH\SI\SJ\SK\9S<\\I   SL\VS9\S!\A4SM jjjrk\3\34SN\SO\S!\4SP jjrlg)SzUtilities shared by tests.    N)ABCabstractmethod)TracebackType)TYPE_CHECKINGAnyCallableGenericIteratorListOptionalTypeTypeVarcastoverload)IsolatedAsyncioTestCasemock)Signal)CIMultiDictCIMultiDictProxy)URL)_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                     [        U SU5      $ )Nr   )get_port_socket)r;   r<   s     D/var/www/html/env/lib/python3.13/site-packages/aiohttp/test_utils.pyget_unused_port_socketrA   P   s     4F++    portc                     [         R                   " U[         R                  5      n[        (       a/  UR                  [         R                  [         R
                  S5        UR                  X45        U$ )Nr   )socketSOCK_STREAMREUSE_ADDRESS
setsockopt
SOL_SOCKETSO_REUSEADDRbind)r;   rC   r<   ss       r@   r?   r?   V   sP     	ff001A} 	
V&&(;(;Q?FFD<HrB   c                     [         R                   " [         R                  [         R                  5       n U R                  S5        [	        [
        U R                  5       S   5      sSSS5        $ ! , (       d  f       g= f)z1Return a port that is unused on the current host.)	127.0.0.1r   r   N)rE   AF_INETrF   rK   r   intgetsockname)rL   s    r@   unused_portrR   c   sJ    	v~~v'9'9	:a	 C+, 
;	:	:s   2A00
A>c                      \ rS rSrSrSSSSS\S.S\S\\R                     S	\S
\\
   S\S\\\
\R                  /\R                  4   S\SS4S jjr S S\\R                     S\SS4S jjr\S\S\4S j5       rS\S\4S jr\S\4S j5       r\S\4S j5       r\S\4S j5       rS!S jrS!S jrS\\\       S\\    S\\!   SS4S jr"S"S jr#S\\\       S\\    S\\!   SS4S jr$Sr%g)#BaseTestServerj   F NrN   )schemeloopr;   rC   skip_url_assertssocket_factoryrW   rX   r;   rC   rY   rZ   kwargsr=   c                v    X l         S U l        S U l        X0l        X@l        SU l        Xl        XPl        X`l        g )NF)	_looprunner_rootr;   rC   _closedrW   rY   rZ   )selfrW   rX   r;   rC   rY   rZ   r[   s           r@   __init__BaseTestServer.__init__m   s9     
,0$(
		 0,rB   c                 ^  #    U R                   (       a  g Xl        UR                  SS 5      U l        U R                  " SSS0UD6I S h  vN U l         U R                   R                  5       I S h  vN   U R                  (       d  SU l        U R                  n [        R                  " U R                  5      R                  nUS:X  a  SU R                   S3nUS:X  a  [        R                  O[        R                  nU R                  U R                  U R                  U5      nUR!                  5       S S	 u  U l        U l        [#        U R                   X`R                  S
9nUR%                  5       I S h  vN   UR&                  nUc   eUR(                  n	U	c   eU	S   R!                  5       S   U l        U R*                  (       d  U R                  (       a  SOSU l        [-        U R*                   SU SU R                   35      U l        g  GN GN! [         a    Sn GNcf = f N7f)Nsslhandler_cancellationTr         []   )sockssl_contextr   httpshttpz://: )r^   r]   pop_ssl_make_runnersetuprC   r;   	ipaddress
ip_addressversion
ValueErrorrE   AF_INET6rO   rZ   rQ   r-   start_serversocketsrW   r   r_   )
ra   rX   r[   absolute_hostrx   r<   _socksiteserverr}   s
             r@   start_serverBaseTestServer.start_server   s     ;;
JJud+	 --R4R6RRkk!!!yyDI			**4995==G a<		{!,M$+qLfnn##DIItyy&A$0022A6	49%YYGjjl!!!.."""AJ**,Q/	{{%)YY'FDKDKK=M?!DII;GH
/ S!  	G	 	sV   AH-	H
&H-0H1(H-*H B4H-8H+9BH-H-H($H-'H((H-c                    #    g 7fNrq   ra   r[   s     r@   rt   BaseTestServer._make_runner   s     s   pathc                    U R                   c   e[        U5      nU R                  (       d.  UR                  (       a   eU R                   R	                  U5      $ [        [        U R                   5      [        U5      -   5      $ r   )r_   r   rY   absolutejoinstr)ra   r   urls      r@   make_urlBaseTestServer.make_url   s`    zz%%%$i$$||##::??3''s4::T233rB   c                     U R                   S L$ r   )r^   ra   s    r@   startedBaseTestServer.started   s    {{$&&rB   c                     U R                   $ r   )r`   r   s    r@   closedBaseTestServer.closed       ||rB   c                 Z    U R                   nUc   eUR                  c   eUR                  $ r   )r^   r   )ra   r^   s     r@   handlerBaseTestServer.handler   s3     !!!}}(((}}rB   c                    #    U R                   (       aY  U R                  (       dG  U R                  c   eU R                  R                  5       I Sh  vN   SU l        SU l        SU l        ggg N7f)a0  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_   rC   r`   r   s    r@   closeBaseTestServer.close   sY      <<;;***++%%'''DJDIDL !,<'s   AA0A.A0c                     [        S5      eNzUse async with instead	TypeErrorr   s    r@   	__enter__BaseTestServer.__enter__       011rB   exc_type	exc_value	tracebackc                     g r   rq   ra   r   r   r   s       r@   __exit__BaseTestServer.__exit__        	rB   c                 T   #    U R                  U R                  S9I S h  vN   U $  N7fNrX   )r   r]   r   s    r@   
__aenter__BaseTestServer.__aenter__   s*     TZZ000 	1s   (&(c                 @   #    U R                  5       I S h  vN   g  N7fr   r   r   s       r@   	__aexit__BaseTestServer.__aexit__         jjl   )
r`   r]   r_   rs   r;   rC   r^   rW   rY   rZ   r   r=   N)r=   rT   )&__name__
__module____qualname____firstlineno____test__r?   r   r   asyncioAbstractEventLooprP   boolr   rE   AddressFamilyr   rb   r   r   r)   rt   r%   r   r   propertyr   r   r+   r   r   r   r   BaseExceptionr   r   r   r   __static_attributes__rq   rB   r@   rT   rT   j   s   H
 48"!& - - w001	-
 - sm- - !#v++,fmm;
- - 
-0 ;?IW667IJMI	I@ 3 :  4X 4# 4 ' ' '       &24./ M* M*	
 
4./ M* M*	
 
rB   rT   c                   d   ^  \ rS rSrSSSS.S\S\S\S	\\   S
\4
U 4S jjjr	S
\S\
4S jrSrU =r$ )
TestServer   rV   rN   NrW   r;   rC   apprW   r;   rC   r[   c                8   > Xl         [        TU ]  " SX#US.UD6  g Nr   rq   )r   superrb   )ra   r   rW   r;   rC   r[   	__class__s         r@   rb   TestServer.__init__   s!     GGGrB   r=   c                 6   #    [        U R                  40 UD6$ 7fr   )r'   r   r   s     r@   rt   TestServer._make_runner   s     ,V,,s   )r   )r   r   r   r   r&   r   r   rP   r   rb   r)   rt   r   __classcell__r   s   @r@   r   r      sk    
 "
H
H 	
H
 
H sm
H 
H 
H-3 -: - -rB   r   c                   p   ^  \ rS rSrSSSS.S\S\S\S	\\   S
\SS4U 4S jjjr	SS\
S
\S\4S jjrSrU =r$ )RawTestServer   rV   rN   Nr   r   rW   r;   rC   r[   r=   c                8   > Xl         [        TU ]  " SX#US.UD6  g r   )_handlerr   rb   )ra   r   rW   r;   rC   r[   r   s         r@   rb   RawTestServer.__init__   s!      GGGrB   debugc                 l   #    [        U R                  4U R                  US.UD6n[        U4SU0UD6$ 7f)N)rX   r   r   )r+   r   r]   r,   )ra   r   r[   srvs       r@   rt   RawTestServer._make_runner  s8     T]]K5KFKC7u777s   24)r   )T)r   r   r   r   r/   r   r   rP   r   rb   r   r,   rt   r   r   r   s   @r@   r   r      s}    
 "
H 
H 	
H
 
H sm
H 
H 

H 
H8 8s 8| 8 8rB   r   c                      \ rS rSrSrSr\SS.SSS\S	\\	   S
\
SS4
S jj5       r\SS.SSS\S	\\	   S
\
SS4
S jj5       rSSS.S\S	\\	   S\\R                     S
\
SS4
S jjrS8S jr\S\4S j5       r\S\\   4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       rS\S\4S jrS\S\S
\
S\4S jr\R@                  S:  az  \!(       as  S\S\S
\"\#   S\$4S jr%S\S
\"\#   S\$4S jr&S\S
\"\#   S\$4S jr'S\S
\"\#   S\$4S  jr(S\S
\"\#   S\$4S! jr)S\S
\"\#   S\$4S" jr*S\S
\"\#   S\$4S# jr+S\S
\"\#   S\$4S$ jr,OZS\S\S
\
S\$4S% jr%S\S
\
S\$4S& jr&S\S
\
S\$4S' jr)S\S
\
S\$4S( jr'S\S
\
S\$4S) jr(S\S
\
S\$4S* jr*S\S
\
S\$4S+ jr+S\S
\
S\$4S, jr,S\S
\
S\-4S- jr.S\S
\
S\/4S. jr0S8S/ jr1S8S0 jr2S1\\3\4      S2\\4   S3\\5   SS4S4 jr6S\74S5 jr8S1\\3\4      S2\\4   S3\\5   SS4S6 jr9S7r:g)9
TestClienti  zV
A test client implementation.

To write functional tests for aiohttp based servers.

FN)
cookie_jarra   z TestClient[Request, Application]r   r   r[   r=   c                    g r   rq   ra   r   r   r[   s       r@   rb   TestClient.__init__       rB   zTestClient[_Request, None]c                    g r   rq   r   s       r@   rb   r   #  r   rB   )r   rX   rX   c                   [        U[        5      (       d  [        S[        U5      -  5      eXl        X0l        Uc  [        R                  " SUS9n[        SX2S.UD6U l	        SU R                  l
        SU l        / U l        / U l        g )Nz2server must be TestServer instance, found type: %rT)unsaferX   )rX   r   Frq   )
isinstancerT   r   typer|   r]   aiohttp	CookieJarr   _session_retry_connectionr`   
_responses_websockets)ra   r   r   rX   r[   s        r@   rb   r   +  s     &.11DtF|S  
 **$TBJ%Q4Q&Q*/'02:<rB   c                 f   #    U R                   R                  U R                  S9I S h  vN   g  N7fr   )r|   r   r]   r   s    r@   r   TestClient.start_serverA  s$     ll''TZZ'888s   '1/1c                 .    U R                   R                  $ r   )r|   r;   r   s    r@   r;   TestClient.hostD      ||   rB   c                 .    U R                   R                  $ r   )r|   rC   r   s    r@   rC   TestClient.portH  r   rB   c                     U R                   $ r   )r|   r   s    r@   r   TestClient.serverL  r   rB   c                 0    [        U R                  SS 5      $ )Nr   )getattrr|   r   s    r@   r   TestClient.appP  s    t||UD11rB   c                     U R                   $ )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@   sessionTestClient.sessionT  s     }}rB   r   c                 8    U R                   R                  U5      $ r   )r|   r   )ra   r   s     r@   r   TestClient.make_url_  s    ||$$T**rB   methodc                    #    U R                   R                  " XR                  U5      40 UD6I S h  vN nU R                  R	                  U5        U$  N!7fr   )r   requestr   r   append)ra   r  r   r[   resps        r@   _requestTestClient._requestb  sI      ]]**6==3FQ&QQt$ R   0AA"Ar1   c                     g r   rq   ra   r  r   r[   s       r@   r  TestClient.requestl  s    %(rB   c                     g r   rq   ra   r   r[   s      r@   getTestClient.getp       &)rB   c                     g r   rq   r  s      r@   optionsTestClient.optionsv  r  rB   c                     g r   rq   r  s      r@   headTestClient.head|  r  rB   c                     g r   rq   r  s      r@   postTestClient.post  r  rB   c                     g r   rq   r  s      r@   putTestClient.put  r  rB   c                     g r   rq   r  s      r@   patchTestClient.patch  r  rB   c                     g r   rq   r  s      r@   deleteTestClient.delete  r  rB   c                 :    [        U R                  " X40 UD65      $ )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  r    s     *$--*O*OPPrB   c                 X    [        U R                  " [        R                  U40 UD65      $ )zPerform an HTTP GET request.)r   r  r   METH_GETr  s      r@   r  r    !    )$--t*Vv*VWWrB   c                 X    [        U R                  " [        R                  U40 UD65      $ )zPerform an HTTP POST request.)r   r  r   	METH_POSTr  s      r@   r  r    "    )$--*WPV*WXXrB   c                 X    [        U R                  " [        R                  U40 UD65      $ )z Perform an HTTP OPTIONS request.)r   r  r   METH_OPTIONSr  s      r@   r  r    s(    )d//@@ rB   c                 X    [        U R                  " [        R                  U40 UD65      $ )zPerform an HTTP HEAD request.)r   r  r   	METH_HEADr  s      r@   r  r    r)  rB   c                 X    [        U R                  " [        R                  U40 UD65      $ )zPerform an HTTP PUT request.)r   r  r   METH_PUTr  s      r@   r  r    r&  rB   c                 X    [        U R                  " [        R                  U40 UD65      $ zPerform an HTTP PATCH request.)r   r  r   
METH_PATCHr  s      r@   r  r    s&    )doot>v> rB   c                 X    [        U R                  " [        R                  U40 UD65      $ r1  )r   r  r   METH_DELETEr  s      r@   r!  r"    s(    )d..?? rB   c                 :    [        U R                  " U40 UD65      $ )zZInitiate websocket connection.

The api corresponds to aiohttp.ClientSession.ws_connect.

)r   _ws_connectr  s      r@   
ws_connectTestClient.ws_connect  s     ((8(8(H(HIIrB   c                    #    U R                   R                  " U R                  U5      40 UD6I S h  vN nU R                  R	                  U5        U$  N!7fr   )r   r7  r   r   r  )ra   r   r[   wss       r@   r6  TestClient._ws_connect  sK      ==++DMM$,?J6JJ#	 Kr  c                 n  #    U R                   (       d  U R                   H  nUR                  5         M     U R                   H  nUR                  5       I Sh  vN   M     U R                  R                  5       I Sh  vN   U R
                  R                  5       I Sh  vN   SU l         gg NU N1 N7f)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 on exit when used as a(n) (asynchronous)
context manager.

NT)r`   r   r   r   r   r|   )ra   r  r:  s      r@   r   TestClient.close  s      ||

 (&&hhj   '--%%''',,$$&&&DL  !'&s6   AB5B/%B5?B1 !B5!B3"B51B53B5c                     [        S5      er   r   r   s    r@   r   TestClient.__enter__  r   rB   r   exctbc                     g r   rq   ra   r   r@  rA  s       r@   r   TestClient.__exit__  r   rB   c                 B   #    U R                  5       I S h  vN   U $  N7fr   )r   r   s    r@   r   TestClient.__aenter__  s!     !!! 	"s   c                 @   #    U R                  5       I S h  vN   g  N7fr   r   rC  s       r@   r   TestClient.__aexit__  r   r   )r`   r]   r   r|   r   r   r   );r   r   r   r   __doc__r   r   r   r   r   r   rb   rT   r   r   r   r   r   r;   rP   rC   r   r6   r   r   r   r%   r   r   r   r  sysversion_infor   r4   r   r   r  r  r  r  r  r  r  r!  r   r7  r   r6  r   r   r   r   r   r   r5   r   r   r   rq   rB   r@   r   r     s    H
 37	0 ./	
  
  
 37	* ./	
  
  3748== ./	=
 w001= = 
=,9 !c ! ! !hsm ! !    2% 2 2   +X +# +!)58	 7"}	)	)%-	)9?9P	)#	)	)	) _-	) $		)	)	) _-	) $		)	)	) _-	) $		)	)	) _-	) $		)	)	) _-	) $		)	)	) _-	) $		)	)	) _-	) $		)
	Q
	Q%-
	Q9<
	Q#
	Q	XH 	X 	X8N 	X	YX 	Y 	Y9O 	Y	 	C 	<R 		YX 	Y 	Y9O 	Y	XH 	X 	X8N 	X	h 	# 	:P 		x 	3 	;Q 	Jx J3 J;S J(+	  *24./ m$ ]#	
 
$ 4./ m$ ]#	
 
rB   r   c                       \ rS rSrSrS\4S jrS\4S jrSS jrSS jr	SS	 jr
SS
 jrS\S\4S jrS\S\\\4   4S jrSrg)AioHTTPTestCasei  a  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                 *   #    U R                  5       $ 7f)ziGet application.

This method should be overridden
to return the aiohttp.web.Application
object to test.
)get_appr   s    r@   get_applicationAioHTTPTestCase.get_application  s      ||~s   c                     [        S5      e)zaObsolete method used to constructing web application.

Use .get_application() coroutine instead.
z+Did you forget to define get_application()?)RuntimeErrorr   s    r@   rO  AioHTTPTestCase.get_app  s    
 HIIrB   Nc                 r   #    [         R                  " 5       U l        U R                  5       I S h  vN $  N7fr   )r   get_running_looprX   
setUpAsyncr   s    r@   
asyncSetUpAioHTTPTestCase.asyncSetUp&  s(     ,,.	__&&&&s   .757c                 :  #    U R                  5       I S h  vN U l        U R                  U R                  5      I S h  vN U l        U R	                  U R                  5      I S h  vN U l        U R
                  R                  5       I S h  vN   g  N| NV N0 N7fr   )rP  r   
get_serverr   
get_clientclientr   r   s    r@   rW  AioHTTPTestCase.setUpAsync*  sj     --// OODHH55 OODKK88kk&&(((	 058(sC   BB'BB'B&B'&BBBBBBc                 >   #    U R                  5       I S h  vN $  N7fr   )tearDownAsyncr   s    r@   asyncTearDownAioHTTPTestCase.asyncTearDown1  s     ''))))s   c                 T   #    U R                   R                  5       I S h  vN   g  N7fr   )r]  r   r   s    r@   r`  AioHTTPTestCase.tearDownAsync4  s     kk!!!s   (&(r   c                 0   #    [        XR                  S9$ 7f)zReturn a TestServer instance.r   )r   rX   )ra   r   s     r@   r[  AioHTTPTestCase.get_server7  s     #II..   r   c                 0   #    [        XR                  S9$ 7f)zReturn a TestClient instance.r   )r   rX   )ra   r   s     r@   r\  AioHTTPTestCase.get_client;  s     &yy11rg  )r   r]  rX   r   r   )r   r   r   r   rI  r&   rP  rO  rX  rW  ra  r`  r   r[  r   r*   r\  r   rq   rB   r@   rM  rM    se    { J J')*"/K /J /2z 2j+AU6V 2rB   rM  funcargsr[   c                 :    [         R                  " S[        SS9  U $ )zk
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+rk   )
stacklevel)warningswarnDeprecationWarning)rj  rk  r[   s      r@   unittest_run_looprq  @  s      MML
 KrB   Floop_factoryfastc              #   <   #    [        U 5      nUv   [        X!S9  g7f)zrA contextmanager that creates an event_loop, for test purposes.

Handles the creation and cleanup of a test loop.
)rs  N)setup_test_loopteardown_test_loop)rr  rs  rX   s      r@   loop_contextrw  Q  s      <(D
Jt's   c                 @    U " 5       n[         R                  " U5        U$ )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)rr  rX   s     r@   ru  ru  ^  s     >D4 KrB   rX   c                    U R                  5       nU(       d;  U R                  U R                  5        U R                  5         U R	                  5         U(       d  [
        R                  " 5         [        R                  " S5        g)z>Teardown and cleanup an event_loop created by setup_test_loop.N)		is_closed	call_soonstoprun_foreverr   gccollectr   ry  )rX   rs  r   s      r@   rv  rv  k  sP    ^^Ftyy!




4 rB   c                     S[         S[        S[         4S jn S[         S[        S[         SS 4S jn[        R                  " [        S9n0 Ul        Xl        Xl        SUl        [        U5      Ul
        UR                  R                  5         U$ )	Nr   keyr=   c                      U R                   U   $ r   
__app_dict)r   r  s     r@   get_dict"_create_app_mock.<locals>.get_dictz  s    ~~c""rB   valuec                      X R                   U'   g r   r  )r   r  r  s      r@   set_dict"_create_app_mock.<locals>.set_dict}  s    #srB   )specF)r   r   r   	MagicMockr&   r  __getitem____setitem___debugr   on_response_preparefreeze)r  r  r   s      r@   _create_app_mockr  y  s    #c # # #$c $ $C $D $ ..k
*CCNOOCJ$SkC""$JrB   
sslcontextc                    ^  [         R                  " 5       nS[        S[        [           4U 4S jjnX!R
                  l        U$ )Nr  r=   c                    > U S:X  a  T$ g )Nr  rq   )r  r  s    r@   get_extra_info)_create_transport.<locals>.get_extra_info  s    ,rB   )r   Mockr   r   r0   r  side_effect)r  	transportr  s   `  r@   _create_transportr    s:    		IC HZ$8  ,:(rB   i   .)
match_inforx   closingr   writerprotocolr  payloadr  client_max_sizerX   r  r   headersr  rx   r  r   r  r  r  r  r  c                   [         R                  " 5       nUSL a   [        R                  " 5       nU[        SS5      :  a  SnU(       a5  [        [        U5      5      n[        S UR                  5        5       5      nO[        [        5       5      nSnSUR                  [        R                  S5      R                  5       ;   n[!        U UUUUUSS	U[#        U5      5
      nUc
  [%        5       nU	[&        L a  [)        U5      n	U[&        L an  [         R                  " 5       nXl        [         R,                  " U	R/                  S
5      S9[1        U5      l        [         R,                  " US9[1        U5      l        U[&        L a[  [         R                  " 5       n[7        S5      Ul        [7        S5      Ul        [7        S5      Ul        [7        S5      Ul        Xl        Xl        Xxl         [C        UXX~XS9n[E        U[&        L a  0 OU[         R                  " 5       5      nURG                  U5        UUl$        U$ ! [         a*    [         R                  " 5       nSUR
                  l         GN<f = f)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.
.rq   r   Tc              3   j   #    U  H)  u  pUR                  S 5      UR                  S 5      4v   M+     g7f)zutf-8N)encode).0kvs      r@   	<genexpr>&make_mocked_request.<locals>.<genexpr>  s,      
?NtqQXXg 12s   13chunkedrV   NFpeername)return_value)r  )%r   r  r   rV  rS  create_futurer  r!   r   r   tupleitemsr  r   TRANSFER_ENCODINGlowerr"   r   r  r    r  r  PropertyMockr  r   r  rm   make_mocked_corowrite_headerswrite	write_eofdrainr  r*   r.   add_app_match_info)r  r   r  r  rx   r  r   r  r  r  r  r  r  rX   taskraw_hdrsr  messagereqs                      r@   make_mocked_requestr    s   , 99;Ds{
	1++-D
 Q""";w#78 
?F}}
 
 #;=17;;t'='=rBHHJJGD	G { H%j1	899;&"&"3"3"11*=#
X &*%6%6J%OX"/5'-+D1'-$"O
F$C %H$*diikJ s COJC  	199;D.0D+	1s   H: :0I.-I.r  raise_exceptionc                 d   ^ ^ S[         S[         S[         4UU 4S jjn[        R                  " US9$ )zCreates a coroutine mock.rk  r[   r=   c                  v   >#    T[         La  Te[        R                  " T5      (       d  T$ TI S h  vN   g  N7fr   )r    inspectisawaitable)rk  r[   r  r  s     r@   	mock_coro#make_mocked_coro.<locals>.mock_coro  s4     (*!!""<00s   .979)wraps)r   r   r  )r  r  r  s   `` r@   r  r    s3    
s c c   999%%rB   )Fr   )mrI  r   
contextlibr  r  rv   osrE   rJ  rn  abcr   r   typesr   typingr   r   r   r	   r
   r   r   r   r   r   r   unittestr   r   	aiosignalr   	multidictr   r   yarlr   r   aiohttp.clientr   r   r   rV   r   r   r   client_reqrepr   	client_wsr   helpersr    ro   r!   r"   streamsr#   r$   typedefsr%   webr&   r'   r(   r)   r*   r+   r,   r-   r.   web_protocolr/   re   r0   rK  r4   r5   r6   r7   nameplatformrG   rO   r   r   rA   rP   r?   rR   rT   r   r   r   rM  rq  r   _LOOP_FACTORYcontextmanagernew_event_loopr   rw  ru  rv  r  r  r  r  r  r  rq   rB   r@   <module>r     s       	   	  
  #     3  3    " " ) .  0 0 
 
 
 *Jw=wD-{DA :[17"?s||x'? /5nn,
,++,]],



"("6"6
]]
-S -AS AH- -"8N 8$s#334 sl62- 62rC  s s  W6667 ")"8"8u	(	(@D	(g''(	( 	( #*"8"8


!W66 !d !t !$.. $
(:"6 
$)) 
  _
 &q!,)'+"__
_ _
 _ _ _ 
_ _ _ _ _ $_ _ _  !_F !&&36&&rB   