Ë
    Eü´j°2  ã            
       ó   — 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 G d„ d	e
«      Z G d
„ de
«      Z  G d„ de
«      Z!d„ Z"d„ Z#ejH                  d„ «       Z%ejH                  d„ «       Z&ejN                  d„ «       Z(ejN                  d'd„«       Z)d„ Z*d„ Z+d„ Z,ejH                  deg e jZ                  f   de.de.dee jZ                     fd„«       Z/ejH                  dee jZ                     fd„«       Z0ejH                  deg e1f   deg e1f   fd„«       ZejH                  deg e1f   fd„«       Z2ejH                  d e jZ                  dee    fd!„«       Z3ejH                  d"„ «       Z4ejH                  d e jZ                  dee!   fd#„«       Z5ejH                  d$„ «       Z6ejH                  d e jZ                  dee   fd%„«       Z7ejH                  d&„ «       Z8y# e$ r dZY �Œºw xY w)(é    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
y)	ÚAiohttpClientN©Úserver_kwargsÚ_AiohttpClient__paramr   ÚkwargsÚreturnc             ‹   ó   K  — y ­w©N© ©Úselfr   r   r   s       úS/root/workspace/ytshorts/venv/lib/python3.12/site-packages/aiohttp/pytest_plugin.pyÚ__call__zAiohttpClient.__call__   s   è ø€ ð ,/ùó   ‚c             ‹   ó   K  — y ­w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      s¬   „ Øð
 04ò	/àð/ð ˜C ˜H‘~¨Ñ,ð	/ð
 ð/ð 
�G˜[Ð(Ñ	)ò/ó ð/ð ð
 04ò	,àð,ð ˜C ˜H‘~¨Ñ,ð	,ð
 ð,ð 
�K Ð%Ñ	&ò,ó ñ,r+   r   c            
       ó6   — e Zd Zddœdededz  dedee   fd„Zy)ÚAiohttpServerN©ÚportÚappr/   r   r   c                 ó   — y r   r   )r!   r0   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   s3   „ à6:ò$Øð$Ø),¨t©ð$ØFIð$à	�:Ñ	ô$r+   r-   c            
       ó6   — e Zd Zddœdededz  dedee   fd„Zy)ÚAiohttpRawServerNr.   Úhandlerr/   r   r   c                 ó   — y r   r   )r!   r5   r/   r   s       r"   r#   zAiohttpRawServer.__call__7   s   € à#&r+   )	r&   r'   r(   r   r2   r   r   r   r#   r   r+   r"   r4   r4   6   s3   „ à>Bò'Ø&ð'Ø14°t±ð'ØNQð'à	�=Ñ	!ô'r+   r4   c                 ó‚   — | j                  dddd¬«       | j                  dddd	¬«       | j                  d
ddd¬«       y )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_addoptionrB   <   sc   € Ø
×ÑØØØØ9ð	 ô ð ×ÑØØØØBð	 ô ð ×ÑØ%ØØØ+ð	 õ r+   c                 óî   ‡‡‡— | j                   Št        j                  ‰«      rdŠnt        j                  ‰«      rdŠnydŠd| j                  vr| xj                  dz  c_        dŠˆˆˆfd„}|| _         y)zjSet up pytest fixture.

    Allow fixtures to be coroutines. Run coroutine fixtures in an event loop.
    TFNÚrequest©rD   c                  ó  •‡‡— |d   }‰r|d= d|j                   vrt        d«      ‚|j                  d«      Š‰r> ‰| i |¤ŽŠˆˆfd„}|j                  |«       ‰j	                  ‰j                  «       «      S ‰j	                   ‰| i |¤Ž«      S )NrD   Úloopz^Asynchronous fixtures must depend on the 'loop' fixture or be used in tests depending from it.c                  ób   •— 	 ‰ j                  ‰j                  «       «      S # t        $ r Y y w xY wr   )Úrun_until_completeÚ	__anext__ÚStopAsyncIteration)Ú_loopÚgens   €€r"   Ú	finalizerz8pytest_fixture_setup.<locals>.wrapper.<locals>.finalizer|   s1   ø€ ðØ ×3Ñ3°C·M±M³OÓDÐDøÜ)ò Ùðús   ƒ" ¢	.­.)ÚfixturenamesÚ	ExceptionÚgetfixturevalueÚaddfinalizerrI   rJ   )	Úargsr   rD   rN   rL   rM   ÚfuncÚis_async_genÚstrip_requests	       @@€€€r"   Úwrapperz%pytest_fixture_setup.<locals>.wrapperg   s§   ú€ Ø˜Ñ#ˆÙØ�yÐ!ð
 ˜×-Ñ-Ñ-Üð6óð ð
 ×'Ñ'¨Ó/ˆáñ ˜Ð' Ñ'ˆCõð × Ñ  Ô+Ø×+Ñ+¨C¯M©M«OÓ<Ð<à×+Ñ+©D°$Ð,A¸&Ñ,AÓBÐBr+   )rT   ÚinspectÚisasyncgenfunctionÚiscoroutinefunctionÚargnames)Ú
fixturedefrW   rT   rU   rV   s     @@@r"   Úpytest_fixture_setupr]   Q   sr   ú€ ð
 �?‰?€Dä×!Ñ! $Ô'à‰Ü	×	$Ñ	$ TÔ	*à‰ð 	à€MØ˜
×+Ñ+Ñ+Ø×Ò˜|Ñ+ÕØˆöCð@ €J…Or+   c                 ó8   — | j                   j                  d«      S )z--fast config optionr8   ©ÚconfigÚ	getoptionrE   s    r"   Úfastrb   Š   s   € ð �>‰>×#Ñ#Ð$4Ó5Ð5r+   c                 ó8   — | j                   j                  d«      S )z!--enable-loop-debug config optionr?   r_   rE   s    r"   Ú
loop_debugrd   �   s   € ð �>‰>×#Ñ#Ð$AÓBÐBr+   c            
   #   ó’  K  — t        j                  d¬«      5 } d–— | D �cg c]=  }|j                  t        k(  r(|j                  › d|j
                  › d|j                  › �‘Œ? }}|rDt        dj                  t        |«      t        |«      dk(  rdndd	j                  |«      «      «      ‚	 ddd«       yc c}w # 1 sw Y   yxY w­w)
záContext 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)ÚrecordNú:z{} Runtime Warning{},
{}r	   Ú Úsú
)ÚwarningsÚcatch_warningsÚcategoryÚRuntimeWarningÚfilenameÚlinenoÚmessageÚRuntimeErrorÚformatÚlenÚjoin)Ú	_warningsÚwÚrws      r"   Ú_runtime_warning_contextry   –   sÅ   è ø€ ô 
×	 Ñ	 ¨Ô	-ð °Ûð ö
àØ�z‰zœ^Ò+ð �z‰zˆl˜!˜AŸH™H˜: Q q§y¡y kÒ2ð
ˆð 
ñ
 ÜØ+×2Ñ2Ü˜“G¤3 r£7¨a¢<™R°S¸$¿)¹)ÀB»-óóð ð ÷ð ùò
÷ð üs/   ‚C™	B;¢AB6Á$AB;Â-	CÂ6B;Â;CÃ Cc              #   óP   K  — | r| –— yt        «       } | –— t        | |¬«       y­w)z–Passthrough loop context.

    Sets up and tears down a loop unless one is passed in via the loop
    argument when it's passed straight through.
    ©rb   N)r   r   )rG   rb   s     r"   Ú_passthrough_loop_contextr|   ®   s)   è ø€ ñ à‹
ô Ó ˆØŠ
Ü˜4 dÖ+ùs   ‚$&c                 óˆ   — | j                  |«      r1t        j                  |«      rt        | j	                  ||«      «      S yy)z%Fix pytest collecting for coroutines.N)ÚfuncnamefilterrX   rZ   ÚlistÚ_genfunctions)Ú	collectorÚnameÚobjs      r"   Úpytest_pycollect_makeitemr„   ¿   s>   € à×Ñ Ô%¬'×*EÑ*EÀcÔ*JÜ�I×+Ñ+¨D°#Ó6Ó7Ð7ð +KÐ%r+   c           	      óÆ  — | j                   j                  d«      }t        j                  | j                  «      �r	t        j                  dt        «       | j                  j                  d«      xsV | j                  j                  d«      xs9 | j                  j                  d«      xs | j                  j                  dd«      }t        «       5  t        ||¬«      5 }| j                  j                  D �ci c]  }|| j                  |   “Œ }}|j                   | j                  d
i |¤Ž«       ddd«       ddd«       y	yc c}w # 1 sw Y   ŒxY w# 1 sw Y   y	xY w)zBRun coroutines in an event loop instead of a normal function call.r8   zKaiohttp.pytest_plugin will be removed in v4. Please install pytest-aiohttp.Úproactor_loopÚselector_loopÚuvloop_looprG   Nr{   Tr   )r`   ra   rX   rZ   Úfunctionrk   ÚwarnÚDeprecationWarningÚfuncargsÚgetry   r|   Ú_fixtureinfor[   rI   rƒ   )Ú
pyfuncitemrb   Úexisting_looprL   ÚargÚtestargss         r"   Úpytest_pyfunc_callr“   Å   sV  € à×Ñ×&Ñ&Ð'7Ó8€DÜ×"Ñ" :×#6Ñ#6Õ7Ü�‰ØYÜô	
ð
 ×Ñ×#Ñ# OÓ4ò 5Ø×"Ñ"×&Ñ& Ó7ò5à×"Ñ"×&Ñ& }Ó5ò5ð ×"Ñ"×&Ñ& v¨tÓ4ð	 	ô &Ó'ñ 	EÜ*¨=¸tÔDð EÈð  *×6Ñ6×?Ñ?öàð ˜×,Ñ,¨SÑ1Ñ1ð�ð ð ×(Ñ(¨¨¯©Ñ)C¸(Ñ)CÔD÷E÷	Eð ð) 8ùò÷Eð Eú÷	Eð ús6   ÃEÃ!EÃ:EÄ#EÄ4EÅEÅE	ÅEÅE c           
      ó.  — d| j                   vry | j                  j                  j                  }dt        j
                  i}t        �t        j
                  |d<   |dk(  rd}i }|j                  d«      D ]\  }|j                  d«       }|j                  d«      }||vr+|r(t        d	|›d
t        |j                  «       «      ›�«      ‚ŒU||   ||<   Œ^ | j                  dt        |j                  «       «      t        |j                  «       «      ¬«       y )NÚloop_factoryr>   ÚuvloopÚallzpyloop,uvloop?ú,ú?z ?zUnknown loop 'z', available loops: )Úids)rO   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«   ß   s  € Ø˜X×2Ñ2Ñ2Øà�O‰O×"Ñ"×/Ñ/€Eà¤×!7Ñ!7Ð8€OäÐÜ$*×$9Ñ$9ˆ˜Ñ!à�‚~Ø ˆà€IØ—‘˜CÓ ò 0ˆØ—}‘} SÓ)Ð)ˆØ�z‰z˜$ÓˆØ�Ñ&ÙÝ âœT )§.¡.Ó"2Ô3ð5óð ð
 Ø)¨$Ñ/ˆ	�$Šð0ð ×ÑØœ˜Y×-Ñ-Ó/Ó0´d¸9¿>¹>Ó;KÓ6Lð õ r+   r•   rb   rd   r   c              #   ó¨   K  — t        | |¬«      5 }|r|j                  d«       t        j                  |«       |–— ddd«       y# 1 sw Y   yxY w­w)z%Return an instance of the event loop.r{   TN)r   Ú	set_debugr�   Úset_event_loop)r•   rb   rd   rL   s       r"   rG   rG   ÿ   sJ   è ø€ ô 
�l¨Ô	.ð °%ÙØ�O‰O˜DÔ!Ü×Ñ˜uÔ%ØŠ÷	÷ ñ üs   ‚A�-A½	AÁAÁAc               #   óž   K  — t         j                  } t        | «      5 }t        j                  |«       |–— d d d «       y # 1 sw Y   y xY w­wr   )r�   ÚProactorEventLoopr   r®   )ÚfactoryrL   s     r"   r†   r†     sB   è ø€ ä×'Ñ'€Gä	�gÓ	ð  %Ü×Ñ˜uÔ%ØŠ÷÷ ñ üs   ‚AžA¸	AÁA
ÁAÚaiohttp_unused_portc                 ó>   — t        j                  dt        d¬«       | S )Nz3Deprecated, use aiohttp_unused_port fixture insteadé   ©Ú
stacklevel©rk   rŠ   r‹   )r²   s    r"   r   r     s   € ä‡M�MØ=ÜØõð
 Ðr+   c                  ó   — t         S )z1Return a port that is unused on the current host.)Ú_unused_portr   r+   r"   r²   r²      s
   € ô Ðr+   rG   c              #   ó¬   ‡ ‡K  — g Šdddœdt         dt        dt        dz  dt        dt        f
ˆ ˆfd	„}|–— dˆfd
„}‰ j                   |«       «       y­w)z^Factory to create a TestServer instance, given an app.

    aiohttp_server(app, **kwargs)
    z	127.0.0.1N©Úhostr/   r0   r¼   r/   r   r   c             ›   óŠ   •K  — t        | ||¬«      } |j                  dd‰i|¤Žƒ d {  –—†  ‰j                  |«       |S 7 Œ­w)Nr»   rG   r   )r   Ústart_serverÚappend)r0   r¼   r/   r   ÚserverrG   Úserverss        €€r"   Úgozaiohttp_server.<locals>.go.  sK   øè ø€ ô ˜C d°Ô6ˆØ!ˆf×!Ñ!Ñ6 tÐ6¨vÑ6×6Ð6Ø�‰�vÔØˆð 	7ús   ƒ&A©AªAc               “   ój   •K  — ‰ r*‰ j                  «       j                  «       ƒ d {  –—†  ‰ rŒ)y y 7 Œ	­wr   ©ÚpopÚclose©rÁ   s   €r"   Úfinalizez aiohttp_server.<locals>.finalize<  ó*   øè ø€ ÙØ—+‘+“-×%Ñ%Ó'×'Ð'ô Ø'úó   ƒ$3§1¨3¯3©r   N)r   r*   r2   r   r   rI   ©rG   rÂ   rÈ   rÁ   s   `  @r"   Úaiohttp_serverrÍ   &  sm   ùè ø€ ð €Gð
  Øò	
Üð
ô ð
ô �D‰jð	
ô
 ð
ô 
ö
ð ‚Hõ(ð 	×Ñ™H›JÕ'ùs   „AAc                 ó>   — t        j                  dt        d¬«       | S )Nz.Deprecated, use aiohttp_server fixture insteadr´   rµ   r·   )rÍ   s    r"   Útest_serverrÏ   C  ó   € ä‡M�MØ8ÜØõð
 Ðr+   c           	   #   óž   ‡ ‡K  — g Šddœdt         dt        dz  dt        dt        fˆ ˆfd„}|–— d	ˆfd„}‰ j	                   |«       «       y­w)
zpFactory to create a RawTestServer instance, given a web handler.

    aiohttp_raw_server(handler, **kwargs)
    Nr.   r5   r/   r   r   c             ›   óˆ   •K  — t        | |¬«      } |j                  dd‰i|¤Žƒ d {  –—†  ‰j                  |«       |S 7 Œ­w)Nr.   rG   r   )r   r¾   r¿   )r5   r/   r   rÀ   rG   rÁ   s       €€r"   rÂ   zaiohttp_raw_server.<locals>.goU  sI   øè ø€ ô ˜w¨TÔ2ˆØ!ˆf×!Ñ!Ñ6 tÐ6¨vÑ6×6Ð6Ø�‰�vÔØˆð 	7ús   ƒ%A¨A ©Ac               “   ój   •K  — ‰ r*‰ j                  «       j                  «       ƒ d {  –—†  ‰ rŒ)y y 7 Œ	­wr   rÄ   rÇ   s   €r"   rÈ   z$aiohttp_raw_server.<locals>.finalize_  rÉ   rÊ   rË   )r   r2   r   r   rI   rÌ   s   `  @r"   Úaiohttp_raw_serverrÔ   M  sZ   ùè ø€ ð €Gð 9=òÜ ðÜ+.°©:ðÜHKðä	öð ‚Hõ(ð 	×Ñ™H›JÕ'ùs   „A	A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�MØ<ÜØõð
 Ðr+   c              #   óø  ‡ ‡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
„}|–— dˆfd„}‰ j                   |«       «       y­w)zžFactory to create a TestClient instance.

    aiohttp_client(app, **kwargs)
    aiohttp_client(server, **kwargs)
    aiohttp_client(raw_server, **kwargs)
    Nr   Ú__paramr   r   r   c             ›   ó   K  — y ­wr   r   ©rØ   r   r   s      r"   rÂ   zaiohttp_client.<locals>.go|  s   è ø€ ð ,/ùr$   c             ›   ó   K  — y ­wr   r   rÚ   s      r"   rÂ   zaiohttp_client.<locals>.go„  s   è ø€ ð ),ùr$   rS   c             Ÿ   ó´  •K  — t        | t        «      r%t        | t        t        f«      s | ‰g|¢­i |¤Ž} i }n	|rJ d«       ‚t        | t        «      r#|xs i }t	        | fd‰i|¤Ž}t        |fd‰i|¤Ž}n6t        | t        «      rt        | fd‰i|¤Ž}nt        dt        | «      z  «      ‚|j                  «       ƒ d {  –—†  ‰j                  |«       |S 7 Œ­w)Nzargs should be emptyrG   zUnknown argument type: %r)
Ú
isinstancer   r   r
   r   r   r¢   Útyper¾   r¿   )rØ   r   rS   r   rÀ   ÚclientÚclientsrG   s         €€r"   rÂ   zaiohttp_client.<locals>.goŒ  sä   øè ø€ ô �gœxÔ(´Ø”k¤>Ð2ô2
ñ ˜dÐ4 TÒ4¨VÑ4ˆGØ‰FáÐ3Ð3Ó3�8ä�gœ{Ô+Ø)Ò/¨RˆMÜ ÑD¨dÐD°mÑDˆFÜ Ñ<¨TÐ<°VÑ<‰FÜ˜¤Ô0Ü Ñ=¨dÐ=°fÑ=‰FäÐ8¼4À»=ÑHÓIÐIà×!Ñ!Ó#×#Ð#Ø�‰�vÔØˆð 	$ús   ƒB;CÂ>CÂ?Cc               “   ój   •K  — ‰ r*‰ j                  «       j                  «       ƒ d {  –—†  ‰ rŒ)y y 7 Œ	­wr   rÄ   )rà   s   €r"   rÈ   z aiohttp_client.<locals>.finalize©  rÉ   rÊ   rË   )
r   r   r)   r*   r   r   r   r
   r   rI   )rG   rÂ   rÈ   rà   s   `  @r"   Úaiohttp_clientrâ   r  s)  ùè ø€ ð €Gäð 04ò/Üð/ô œC¤˜H‘~¨Ñ,ð/ô ð	/ô
 
”Gœ[Ð(Ñ	)ò/ó ð/ô ð 04ò,Üð,ô œC¤˜H‘~¨Ñ,ð,ô ð	,ô
 
”K Ð%Ñ	&ò,ó ð,ð 04òÜœ~Ñ-ðäðô œC¤˜H‘~¨Ñ,ðô ð	ô
 
”Cœ�HÑ	öð6 ‚Hõ(ð 	×Ñ™H›JÕ'ùs   „C6C: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�   Ú
contextlibrX   rk   Ú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-   r4   rB   r]   Úfixturerb   rd   Úcontextmanagerry   r|   r„   r“   r«   ÚAbstractEventLoopÚboolrG   r†   r2   r²   rÍ   rÏ   rÔ   rÖ   râ   rä   r   r+   r"   ú<module>rñ      s¼  ðÛ Û Û Û ß 9Ñ 9ß *Ñ *ã ÷	÷ 	ó 	÷ 3Ñ 2Ý )ðÛô
,�Hô ,ô&$�Hô $ô'�xô 'òò*6ðr ‡�ñ6ó ð6ð
 ‡�ñCó ðCð
 ×Ññó ðð. ×Ñò,ó ð,ò 8òò4ð@ ‡�ð
Ø˜2˜w×8Ñ8Ð8Ñ9ð
à
ð
ð ð
ð ˆg×'Ñ'Ñ(ò	
ó ð
ð ‡�ð�x × 9Ñ 9Ñ:ò ó ðð ‡�ð X¨b°#¨gÑ%6ð ¸8ÀBÈÀGÑ;Lò ó ðð ‡�ð˜X b¨# gÑ.ò ó ðð
 ‡�ð(˜×2Ñ2ð (°xÀÑ7Nò (ó ð(ð8 ‡�ñó ðð ‡�ð(˜W×6Ñ6ð (¸8ÐDTÑ;Uò (ó ð(ð0 ‡�ñó ðð ‡�ð:(˜×2Ñ2ð :(°xÀÑ7Nò :(ó ð:(ðz ‡�ñó ñøðq ò ØƒFðús   ÁH ÈHÈH