
    fj2              
          d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
mZ d dlZddlmZmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZ 	 d dlZn# e$ r dZY nw xY w G d d	e
          Z G d
 de
          Z  G d de
          Z!d Z"d Z#ej$        d             Z%ej$        d             Z&ej'        d             Z(ej'        d(d            Z)d Z*d Z+d Z,ej$        deg e j-        f         de.de.dee j-                 fd            Z/ej$        dee j-                 fd            Z0ej$        deg e1f         deg e1f         fd            Zej$        deg e1f         fd             Z2ej$        d!e j-        dee          fd"            Z3ej$        d#             Z4ej$        d!e j-        dee!         fd$            Z5ej$        d%             Z6ej$        d!e j-        dee         fd&            Z7ej$        d'             Z8dS ))    N)	AwaitableCallableIterator)AnyProtocoloverload   )BaseTestServerRawTestServer
TestClient
TestServerloop_contextsetup_test_loopteardown_test_loopunused_port)ApplicationBaseRequestRequest)_RequestHandlerc                       e Zd Zedddedeeef         dz  dedee	ef         fd            Z
edddedeeef         dz  dedeedf         fd            Z
dS )	AiohttpClientNserver_kwargs_AiohttpClient__paramr   kwargsreturnc                
   K   d S N selfr   r   r   s       Y/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/aiohttp/pytest_plugin.py__call__zAiohttpClient.__call__   s       ,/3    c                
   K   d S r   r   r    s       r"   r#   zAiohttpClient.__call__&   s       ),r$   )__name__
__module____qualname__r   r   dictstrr   r   r   r#   r
   r   r   r$   r"   r   r      s        
 04	/ / // CH~,	/
 / 
G[(	)/ / / X/ 
 04	, , ,, CH~,	,
 , 
K%	&, , , X, , ,r$   r   c            
       >    e Zd Zdddededz  dedee         fdZdS )AiohttpServerNportappr.   r   r   c                    d S r   r   )r!   r/   r.   r   s       r"   r#   zAiohttpServer.__call__1   s     #r$   )	r&   r'   r(   r   intr   r   r   r#   r   r$   r"   r,   r,   0   s^        6:$ $ $$),t$FI$	:	$ $ $ $ $ $r$   r,   c            
       >    e Zd Zdddededz  dedee         fdZdS )AiohttpRawServerNr-   handlerr.   r   r   c                    d S r   r   )r!   r4   r.   r   s       r"   r#   zAiohttpRawServer.__call__7   s    #&3r$   )	r&   r'   r(   r   r1   r   r   r   r#   r   r$   r"   r3   r3   6   s^        >B' ' '&'14t'NQ'	=	!' ' ' ' ' 'r$   r3   c                     |                      dddd           |                      dddd	           |                      d
ddd           d S )N--aiohttp-fast
store_trueFz*run tests faster by disabling extra checks)actiondefaulthelpz--aiohttp-loopstorepyloopz3run tests with specific loop: pyloop, uvloop or all--aiohttp-enable-loop-debugzenable event loop debug mode)	addoption)parsers    r"   pytest_addoptionrA   <   s    
9	     B	     %+	      r$   c                     | j         t          j                  rdnt          j                  rdndS dd| j        vr| xj        dz  c_        dfd}|| _         dS )zjSet up pytest fixture.

    Allow fixtures to be coroutines. Run coroutine fixtures in an event loop.
    TFNrequestrC   c                  J   |d         }r|d= d|j         vrt          d          |                    d          rJ | i |fd}|                    |                                                                         S                      | i |          S )NrC   loopz^Asynchronous fixtures must depend on the 'loop' fixture or be used in tests depending from it.c                  v    	                                                                 S # t          $ r Y d S w xY wr   )run_until_complete	__anext__StopAsyncIteration)_loopgens   r"   	finalizerz8pytest_fixture_setup.<locals>.wrapper.<locals>.finalizer|   sF     33CMMOODDD)   DDs   &* 
88)fixturenames	ExceptiongetfixturevalueaddfinalizerrH   rI   )	argsr   rC   rM   rK   rL   funcis_async_genstrip_requests	       @@r"   wrapperz%pytest_fixture_setup.<locals>.wrapperg   s    # 	"y!
 ---6  
 ''// 	C $'''C        +++++CMMOO<<<++DD$,A&,A,ABBBr$   )rS   inspectisasyncgenfunctioniscoroutinefunctionargnames)
fixturedefrV   rS   rT   rU   s     @@@r"   pytest_fixture_setupr\   Q   s    
 ?D!$'' 		$T	*	*  	M
+++|+C C C C C C C@ JOOOr$   c                 6    | j                             d          S )z--fast config optionr7   config	getoptionrD   s    r"   fastra      s     >##$4555r$   c                 6    | j                             d          S )z!--enable-loop-debug config optionr>   r^   rD   s    r"   
loop_debugrc      s     >##$ABBBr$   c            
   #   >  K   t          j        d          5 } dV  d | D             }|rYt          d                    t	          |          t	          |          dk    rdndd	                    |                              	 ddd           dS # 1 swxY w Y   dS )
zContext manager which checks for RuntimeWarnings.

    This exists specifically to
    avoid "coroutine 'X' was never awaited" warnings being missed.

    If RuntimeWarnings occur in the context a RuntimeError is raised.
    T)recordNc                 `    g | ]+}|j         t          k    |j         d |j         d |j         ,S ):)categoryRuntimeWarningfilenamelinenomessage).0ws     r"   
<listcomp>z,_runtime_warning_context.<locals>.<listcomp>   sK     
 
 
z^++ z22AH22qy22+++r$   z{} Runtime Warning{},
{}r	    s
)warningscatch_warningsRuntimeErrorformatlenjoin)	_warningsrws     r"   _runtime_warning_contextr{      s      
	 	-	-	- 
 

 
 

  	+22GG3r77a<<RRS$))B--   	                 s   A,BBBFc              #   `   K   | r| V  dS t                      } | V  t          | |           dS )zPassthrough loop context.

    Sets up and tears down a loop unless one is passed in via the loop
    argument when it's passed straight through.
    ra   N)r   r   )rF   ra   s     r"   _passthrough_loop_contextr~      sL        ,




   


4d++++++r$   c                     |                      |          r7t          j        |          r%t          |                     ||                    S dS dS )z%Fix pytest collecting for coroutines.N)funcnamefilterrW   rY   list_genfunctions)	collectornameobjs      r"   pytest_pycollect_makeitemr      s\    %% 8'*Ec*J*J 8I++D#667778 8 8 8r$   c           	           j                             d          }t          j         j                  rt          j        dt                      j        	                    d          pN j        	                    d          p4 j        	                    d          p j        	                    dd          }t                      5  t          ||          5 } fd	 j        j        D             }|                      j        di |           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   d
S dS )zBRun coroutines in an event loop instead of a normal function call.r7   zKaiohttp.pytest_plugin will be removed in v4. Please install pytest-aiohttp.proactor_loopselector_loopuvloop_looprF   Nr}   c                 ,    i | ]}|j         |         S r   )funcargs)rm   arg
pyfuncitems     r"   
<dictcomp>z&pytest_pyfunc_call.<locals>.<dictcomp>   s3        ,S1  r$   Tr   )r_   r`   rW   rY   functionrs   warnDeprecationWarningr   getr{   r~   _fixtureinforZ   rH   r   )r   ra   existing_looprK   testargss   `    r"   pytest_pyfunc_callr      s   &&'788D":#677 Y	
 	
 	

 ##O44 5"&&775"&&}555 "&&vt44	 	 &'' 	E 	E*=tDDD E   )6?   (()C)C()C)CDDDE E E E E E E E E E E E E E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E t) s6   D59DD5D"	"D5%D"	&D55D9<D9c           
      X   d| j         vrd S | j        j        j        }dt          j        i}t          t          j        |d<   |dk    rd}i }|                    d          D ]s}|                    d           }|	                    d          }||vr7|r4t          d	|d
t          |                                                    h||         ||<   t|                     dt          |                                          t          |                                                     d S )Nloop_factoryr=   uvloopallzpyloop,uvloop?,?z ?zUnknown loop 'z', available loops: )ids)rN   r_   optionaiohttp_loopasyncionew_event_loopr   splitendswithstrip
ValueErrorr   keysparametrizevalues)metafuncloopsavail_factories	factoriesr   requireds         r"   pytest_generate_testsr      sH   X222O"/E!78O$*$9!~~ IC   0 0}}S)))zz$&&  jttT).."2"23335  
 )$/	$Y--//00d9>>;K;K6L6L      r$   r   ra   rc   r   c              #      K   t          | |          5 }|r|                    d           t          j        |           |V  ddd           dS # 1 swxY w Y   dS )z%Return an instance of the event loop.r}   TN)r   	set_debugr   set_event_loop)r   ra   rc   rK   s       r"   rF   rF      s       
l	.	.	. % 	"OOD!!!u%%%	                 s   0AAAc               #      K   t           j        } t          |           5 }t          j        |           |V  d d d            d S # 1 swxY w Y   d S r   )r   ProactorEventLoopr   r   )factoryrK   s     r"   r   r     s      'G	g		 %u%%%                 s   AAAaiohttp_unused_portc                 >    t          j        dt          d           | S )Nz3Deprecated, use aiohttp_unused_port fixture instead   
stacklevelrs   r   r   )r   s    r"   r   r     s,    M=   
 r$   c                      t           S )z1Return a port that is unused on the current host.)_unused_portr   r$   r"   r   r      s
     r$   rF   c              #       K   g ddddt           dt          dt          dz  dt          dt          f
 fd	}|V  dfd
}                      |                       dS )z^Factory to create a TestServer instance, given an app.

    aiohttp_server(app, **kwargs)
    z	127.0.0.1Nhostr.   r/   r   r.   r   r   c                   K   t          | ||          } |j        ddi| d {V                      |           |S )Nr   rF   r   )r   start_serverappend)r/   r   r.   r   serverrF   serverss        r"   gozaiohttp_server.<locals>.go.  sd       Cd666!f!66t6v666666666vr$   c                  p   K    r0                                                                   d {V   .d S d S r   popcloser   s   r"   finalizez aiohttp_server.<locals>.finalize<  Y       	(++--%%'''''''''  	( 	( 	( 	( 	(r$   r   N)r   r*   r1   r   r   rH   rF   r   r   r   s   `  @r"   aiohttp_serverr   &  s       G
  	
 
 

 
 Dj	

 
 

 
 
 
 
 
 
 HHH( ( ( ( ( ( 	HHJJ'''''r$   c                 >    t          j        dt          d           | S )Nz.Deprecated, use aiohttp_server fixture insteadr   r   r   )r   s    r"   test_serverr   C  ,    M8   
 r$   c           	   #       K   g dddt           dt          dz  dt          dt          f fd}|V  d	fd}                      |                       dS )
zpFactory to create a RawTestServer instance, given a web handler.

    aiohttp_raw_server(handler, **kwargs)
    Nr-   r4   r.   r   r   c                   K   t          | |          } |j        ddi| d {V                      |           |S )Nr-   rF   r   )r   r   r   )r4   r.   r   r   rF   r   s       r"   r   zaiohttp_raw_server.<locals>.goU  sb       wT222!f!66t6v666666666vr$   c                  p   K    r0                                                                   d {V   .d S d S r   r   r   s   r"   r   z$aiohttp_raw_server.<locals>.finalize_  r   r$   r   )r   r1   r   r   rH   r   s   `  @r"   aiohttp_raw_serverr   M  s       G 9=   +.:HK	       HHH( ( ( ( ( ( 	HHJJ'''''r$   c                 >    t          j        dt          d           | S )Nz2Deprecated, use aiohttp_raw_server fixture insteadr   r   r   )r   s    r"   raw_test_serverr   f  s.     M<   
 r$   c              #   j   K   g t           dddt          dt          t          t          f         dz  dt          dt
          t          t          f         fd            }t           dddt          dt          t          t          f         dz  dt          dt
          t          df         fd            }dddt          t          z  d	t          dt          t          t          f         dz  dt          dt
          t          t          f         f
 fd
}|V  dfd} 	                     |                       dS )zFactory to create a TestClient instance.

    aiohttp_client(app, **kwargs)
    aiohttp_client(server, **kwargs)
    aiohttp_client(raw_server, **kwargs)
    Nr   __paramr   r   r   c                
   K   d S r   r   r   r   r   s      r"   r   zaiohttp_client.<locals>.go|  s       ,/3r$   c                
   K   d S r   r   r   s      r"   r   zaiohttp_client.<locals>.go  s       ),r$   rR   c                  K   t          | t                    r+t          | t          t          f          s | g|R i |} i }n|r
J d            t          | t                    r#|pi }t	          | fdi|}t          |fdi|}nDt          | t                    rt          | fdi|}nt          dt          |           z            |                                 d {V  	                    |           |S )Nzargs should be emptyrF   zUnknown argument type: %r)

isinstancer   r   r
   r   r   r   typer   r   )r   r   rR   r   r   clientclientsrF   s         r"   r   zaiohttp_client.<locals>.go  sJ      gx(( 	4k>22
 2
 	4 gd4T444V44GFF333333g{++ 	J)/RMDDdDmDDF<<T<V<<FF00 	J==d=f==FF84==HIII!!#########vr$   c                  p   K    r0                                                                   d {V   .d S d S r   r   )r   s   r"   r   z aiohttp_client.<locals>.finalize  r   r$   r   )
r   r   r)   r*   r   r   r   r
   r   rH   )rF   r   r   r   s   `  @r"   aiohttp_clientr   r  s      G 04/ / // CH~,/ 	/
 
G[(	)/ / / X/  04, , ,, CH~,, 	,
 
K%	&, , , X, 04  ~- CH~, 	
 
CH	      6 HHH( ( ( ( ( ( 	HHJJ'''''r$   c                 >    t          j        dt          d           | S )Nz.Deprecated, use aiohttp_client fixture insteadr   r   r   )r   s    r"   test_clientr     r   r$   )F)9r   
contextlibrW   rs   collections.abcr   r   r   typingr   r   r   pytest
test_utilsr
   r   r   r   r   r   r   r   r   webr   r   r   web_protocolr   r   ImportErrorr   r,   r3   rA   r\   fixturera   rc   contextmanagerr{   r~   r   r   r   AbstractEventLoopboolrF   r   r1   r   r   r   r   r   r   r   r   r$   r"   <module>r      s          9 9 9 9 9 9 9 9 9 9 * * * * * * * * * * 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 3 2 2 2 2 2 2 2 2 2 ) ) ) ) ) )MMMM   FFF, , , , ,H , , ,&$ $ $ $ $H $ $ $' ' ' ' 'x ' ' '  *6 6 6r 6 6 6
 C C C
   . , , , , 8 8 8  4  @ 
2w889


 
 g'(	
 
 
 
 x 9:     Xb#g%6 8BG;L     Xb#g.    
 (2 (x7N ( ( ( (8    (W6 (8DT;U ( ( ( (0    :(2 :(x7N :( :( :( :(z     s   A AA