ó
    	[hèY  ã                    ó°  • 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     Úa/home/gothic/public_html/Fooocus/fooocus_env/lib64/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   € ô 	�Š�fœf×0Ñ0Ó1€Aß‚}ð 	
�‰”V×&Ñ&¬×(;Ñ(;¸QÔ?Ø‡F�FˆDˆ<ÔØ€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)#ÚBaseTestServeréj   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 N²7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À  é € ð �;�;ØØŒ
Ø—J‘J˜u dÓ+ˆŒ	Ø ×-Ò-ÑRÀ4ÐRÈ6ÑR×RˆŒØ�k‰k×ÑÓ!×!Ð!Ø�y�yØˆDŒIØŸ	™	ˆð	Ü×*Ò*¨4¯9©9Ó5×=Ñ=ˆGð �a‹<Ø §	¡	˜{¨!Ð,ˆMØ$+¨q£L”—’´f·n±nˆØ×#Ñ# D§I¡I¨t¯y©y¸&ÓAˆØ$×0Ñ0Ó2°2°AÐ6ÑˆŒ	�4”9Ü˜Ÿ™¨%¿Y¹YÑGˆØ�j‰j‹l×ÐØ—‘ˆØÑ!Ð!Ð!Ø—.‘.ˆØÑ"Ð"Ð"Ø˜A‘J×*Ñ*Ó,¨QÑ/ˆŒ	Ø�{�{Ø%)§Y§Y™'°FˆDŒKÜ˜DŸK™K˜=¨¨M¨?¸!¸D¿I¹I¸;Ð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`   € Ø�z‰zÑ%Ð%Ð%Ü�$‹iˆØ×$×$Ø—|—|Ð#Ð#Ø—:‘:—?‘? 3Ó'Ð'ä”s˜4Ÿ:™:“¬¨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   é € ð �<�< §§Ø—;‘;Ñ*Ð*Ð*Ø—+‘+×%Ñ%Ó'×'Ð'ØˆDŒJØˆDŒIØˆD�Lð !,ˆ<á'ù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*   é € Ø×Ñ T§Z¡ZÐÐ0×0Ð0Øˆñ 	1ùs   ‚(Ÿ& (c              ƒ   ó@   #   • U R                  5       I S h  v•N   g  N7fr…   ©r�   rª   s       r@   Ú	__aexit__ÚBaseTestServer.__aexit__å   ó   é € ð �j‰j‹l×Óùó   ‚–—)
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ð	-ð
 ð-ð �s‰mð-ð ð-ð !Ø�#�v×+Ñ+Ð,¨f¯m©mÐ;ñ
ð-ð ð-ð 
õ-ð0 ;?ñIØ˜W×6Ñ6Ñ7ðIØJMðIà	õIð@ ð¨3ð °:ó ó ðð4˜Xð 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ð �s‰mð
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ÑKÀFÑKˆÜ˜CÑ7 uÐ7°Ñ7Ð7ùs   ‚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ð �s‰mð
Hð ð
Hð 
÷
Hð 
Hñ8¨ð 8¸sð 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ÜØDÄtÈFÃ|ÑSóð ð ŒØŒ
ØÑÜ ×*Ò*°$¸TÑBˆJÜ%ÐQ¨4Ñ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$   é € Ø�l‰l×'Ñ'¨T¯Z©ZÐ'Ð8×8Ó8ùs   ‚'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—|‘| U¨DÓ1Ð1rB   c                 ó   • U R                   $ )zÐAn 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      $ )z´Routes 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Ñ*VÈvÑ*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  ¬  ó"   € ä)¨$¯-ª-¼¿¹ÈÑ*WÐPVÑ*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&   € ä)Ø—’œdŸo™o¨tÑ>°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   é € ð —=‘=×+Ò+¨D¯M©M¸$Ó,?ÑJÀ6Ñ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‡   é € ð �|�|ØŸœ�Ø—
‘
–ñ (à×&Ô&�Ø—h‘h“j× Ò ñ 'à—-‘-×%Ñ%Ó'×'Ð'Ø—,‘,×$Ñ$Ó&×&Ð&ØˆD�Lð ñ !Ù'Ù&ù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ò	Ø*ðàðð Ð.Ñ/ð	ð
 ðð 
ôó ðð 37Ø48ò=àð=ð Ð.Ñ/ð	=ð
 �w×0Ñ0Ñ1ð=ð ð=ð 
õ=ô,9ð ð!�có !ó ð!ð ð!�h˜s‘mó !ó ð!ð ð˜ó ó ðð ð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   é € Ø×-Ñ-Ó/×/ˆŒØ ŸO™O¨D¯H©HÓ5×5ˆŒØ ŸO™O¨D¯K©KÓ8×8ˆŒà�k‰k×&Ñ&Ó(×(Ñ(ñ	 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   é € Ø�k‰k×ÑÓ!×!Ó!ù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   é € ä˜#§I¡IÑ.Ð.ùó   ‚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   é € ä˜&§y¡yÑ1Ð1ùrg  )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ô /ð2 zð 2°jÀÈ+ÐAUÑ6V÷ 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    € ô ‡M‚MØ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$ )zˆCreate 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ÞØ�‰�t—y‘yÔ!Ø×ÑÔØ�
‰
ŒæÜ
�
Š
Œä×Ò˜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Ø€C„NØ„OØ„Oà€C„JÜ$ S›k€CÔØ×Ñ×"Ñ"Ô$Ø€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ð ¤H¬ZÑ$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X˜l        [         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        X—l        X˜l        Xxl         [C        UX¨X~XÜS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)z¥Creates 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,   é € ð 
Ú?N±t°qˆQ�X‰X�gÓ §¡¨Ó 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  € ô, �9Š9‹;€DØˆs‚{ð
	1Ü×+Ò+Ó-ˆDð
 ”˜Q Ó"Ó"ØˆæÜ"¤;¨wÓ#7Ó8ˆÜñ 
Ø?F¿}¹}¼ó
ó 
‰ô #¤;£=Ó1ˆØˆà˜7Ÿ;™;¤t×'=Ñ'=¸rÓB×HÑHÓJÑJ€GäØØØØØØØØØÜˆD‹	ó€Gð �{ÜÓ ˆà”HÒÜ% jÓ1ˆ	à”8ÒÜ—9’9“;ˆØ&ÔÜ"&×"3Ò"3Ø"×1Ñ1°*Ó=ñ#
ŒˆX‹Ôô &*×%6Ò%6ÀJÑ%OŒˆX‹Ô"à”ÒÜ—’“ˆÜ/°Ó5ˆÔÜ'¨Ó-ˆŒÜ+¨DÓ1ˆÔÜ'¨Ó-ˆŒØ$Ôà"ÔØ„Oä
Ø� F°$ñ€Cô %ØœHÒ$‰¨*´d·i²i³kó€Jð ×Ñ�sÔØ €C„Oà€JøôC ó 	1Ü—9’9“;ˆDØ.0ˆD×Ñ×+ð	1ús   œ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÷ ð ô �9Š9˜9Ñ%Ð%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Ñ'?€ð /5¯n©nñ,Ø
ð,Ø×+Ñ+ð,à‡]�]õ,ð
Ø
ð
Øð
Ø"(×"6Ñ"6ð
à‡]�]ô
ð-�Sô -ôA�Sô AôH-�ô -ô"8�Nô 8ô$s�˜Ð#3Ð3Ñ4ô sôl62Ð-ô 62ðr˜Cð ¨ð °sð ¸sô ð ˜˜W×6Ñ6Ð6Ñ7€ð ×Ñà")×"8Ñ"8Àuñ	(Øð	(Ø@Dð	(àˆg×'Ñ'Ñ(ô	(ó ð	(ð #*×"8Ñ"8ñ
Øð
à×Ñõ
ñ!˜W×6Ñ6ð !¸dð !Ètõ !ð˜$Ÿ.™.ô ñ$
 (¨:Ñ"6ð 
À$Ç)Á)õ 
ð  ð_ð
 Ù& q¨!Ó,ØØØØØØ)Ø'+Ø"Øò_Øð_à
ð_ð ð_ð
 ð_ð ð_ð ð_ð 
ð_ð ð_ð ð_ð ð_ð ð_ð ˜Ñ$ð_ð ð_ð ð_ð  ö!_ðF !¸ñ&Øð&Ø36ð&àö&rB   