Ë
    Eü´jD`  ã                    ór  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZ ddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZ ddlmZmZ ddlmZ dd	lm Z m!Z! dd
l"m#Z# ddl$Z$ddl%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl
m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZG erddlHmIZI neZIej”                  dk\  rerddlmKZK ej”                  dk\  rddlmLZL neZL ede=d«      ZM ede?¬«      ZNejž                  dk(  xr ej                   dk7  ZQej¤                  fd eSd!ej¨                  d"ej                  fd#„ZUd eSd$eVd!ej¨                  d"ej                  fd%„ZWd"eVfd&„ZX G d'„ d(e«      ZY G d)„ d*eY«      ZZ G d+„ d,eY«      Z[ G d-„ d.eeNeMf   «      Z\ G d/„ d0e«      Z]d1ed2ed3ed"efd4„Z^eg ej¾                  f   Z`ejÂ                  ejÄ                  d5fd6e`d7ecd"eej¾                     fd8„«       ZdejÄ                  fd6e`d"ej¾                  fd9„ZedRd:ej¾                  d7ecd"dfd;„Zfd"ejÎ                  fd<„ZhdSd=eIdz  d"ejÒ                  fd>„Zj	 dSe3 e5dd«      d5de3e3e3e8dd?d@dAœdBeSdCeSdDedEedFe5dGecdHedIedJedKedLe9d=eIdz  dMeVd:ed"eAfdN„Zke3e3fdOedPed"efdQ„Zly)TzUtilities shared by tests.é    N)ÚABCÚabstractmethod)ÚCallableÚIterator)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚGenericÚLiteralÚTypeVarÚcastÚoverload)ÚIsolatedAsyncioTestCaseÚmock)ÚSignal)ÚCIMultiDictÚCIMultiDictProxy)ÚURL)Ú_BaseRequestContextManagerÚ_RequestContextManagerÚ_RequestOptionsÚ_WSRequestContextManageré   )ÚClientSessionÚhdrs)ÚAbstractCookieJar)ÚClientResponse)ÚClientWebSocketResponse)Úsentinel)ÚHttpVersionÚRawRequestMessage)ÚEMPTY_PAYLOADÚStreamReader)ÚStrOrURL)	ÚApplicationÚ	AppRunnerÚBaseRequestÚ
BaseRunnerÚRequestÚServerÚServerRunnerÚSockSiteÚUrlMappingMatchInfo)Ú_RequestHandler)Ú
SSLContext©é   é   )ÚUnpack)ÚSelfÚ_ApplicationNoneÚ_Request)ÚboundÚposixÚcygwinÚhostÚfamilyÚreturnc                 ó   — t        | d|«      S )Nr   )Úget_port_socket)r:   r;   s     úP/root/workspace/ytshorts/venv/lib/python3.12/site-packages/aiohttp/test_utils.pyÚget_unused_port_socketr@   F   s   € ô ˜4  FÓ+Ð+ó    Úportc                 óÞ   — t        j                   |t         j                  «      }t        r/|j                  t         j                  t         j
                  d«       |j                  | |f«       |S )Nr   )ÚsocketÚSOCK_STREAMÚREUSE_ADDRESSÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚbind)r:   rB   r;   Úss       r?   r>   r>   L   sP   € ô 	�‰�fœf×0Ñ0Ó1€AÝð 	
�‰”V×&Ñ&¬×(;Ñ(;¸QÔ?Ø‡F�FˆD�$ˆ<ÔØ€HrA   c                  óö   — t        j                   t         j                  t         j                  «      5 } | j                  d«       t	        t
        | j                  «       d   «      cddd«       S # 1 sw Y   yxY w)z1Return a port that is unused on the current host.)ú	127.0.0.1r   r   N)rD   ÚAF_INETrE   rJ   r   ÚintÚgetsockname)rK   s    r?   Úunused_portrQ   Y   sS   € ä	�‰”v—~‘~¤v×'9Ñ'9Ó	:ð -¸aØ	�‰ÐÔ Ü”C˜Ÿ™›¨Ñ+Ó,÷-÷ -ò -ús   ³2A/Á/A8c                   ó¶  — e Zd ZdZdddddedœdedej                  dz  ded	edz  d
e	de
eeej                  gej                  f   deddfd„Z	 ddej                  dz  deddfd„Zededefd„«       Zdedefd„Zede	fd„«       Zede	fd„«       Zedefd„«       Zdd„Zdd„Zdee   dz  dedz  dedz  ddfd„Z d d„Z!dee   dz  dedz  dedz  ddfd„Z"y)!ÚBaseTestServerFÚ NrM   )ÚschemeÚloopr:   rB   Úskip_url_assertsÚsocket_factoryrU   rV   r:   rB   rW   rX   Úkwargsr<   c                ó‚   — || _         d | _        d | _        || _        || _        d| _        || _        || _        || _        y )NF)	Ú_loopÚrunnerÚ_rootr:   rB   Ú_closedrU   rW   rX   )ÚselfrU   rV   r:   rB   rW   rX   rY   s           r?   Ú__init__zBaseTestServer.__init__c   sE   € ð ˆŒ
Ø)-ˆŒØ!%ˆŒ
ØˆŒ	ØˆŒ	ØˆŒØˆŒØ 0ˆÔØ,ˆÕrA   c              ‹   ó4  K  — | j                   ry || _        |j                  dd «      | _         | j                  dddi|¤Žƒ d {  –—† | _         | j                   j                  «       ƒ d {  –—†  | j                  sd| _        | j                  }	 t        j                  | j                  «      j                  }|dk(  rd| j                  › d�}|dk(  rt        j                  nt        j                  }| j                  | j                  | j                  |«      }|j!                  «       d d	 \  | _        | _        t#        | j                   || j                  ¬
«      }|j%                  «       ƒ d {  –—†  |j&                  }|€J ‚|j(                  }	|	€J ‚|	d   j!                  «       d   | _        | j*                  s| j                  rdnd| _        t-        | j*                  › d|› d| j                  › �«      | _        y 7 �Œ¹7 �Œ•# t        $ r d}Y �ŒXw xY w7 Œ¥­w)NÚsslÚhandler_cancellationTr   é   é   ú[ú]é   )ÚsockÚssl_contextr   ÚhttpsÚhttpz://ú:© )r\   r[   ÚpopÚ_sslÚ_make_runnerÚsetuprB   r:   Ú	ipaddressÚ
ip_addressÚversionÚ
ValueErrorrD   ÚAF_INET6rN   rX   rP   r,   ÚstartÚ_serverÚsocketsrU   r   r]   )
r_   rV   rY   Úabsolute_hostru   r;   Ú_sockÚsiteÚserverrz   s
             r?   Ústart_serverzBaseTestServer.start_serverz   sÈ  è ø€ ð �;Š;ØØˆŒ
Ø—J‘J˜u dÓ+ˆŒ	Ø-˜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Ü˜Ÿ™¨%¸T¿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ÁG>Á&HÁ,HÁ-#HÂ)H Â:B6HÅ0HÅ1BHÈHÈHÈHÈHÈHc              ‹   ó   K  — y ­w©Nrn   ©r_   rY   s     r?   rq   zBaseTestServer._make_runnerš   s	   è ø€ àùó   ‚Úpathc                 óò   — | j                   €J ‚t        |«      }| j                  s)|j                  rJ ‚| j                   j	                  |«      S t        t        | j                   «      t        |«      z   «      S r�   )r]   r   rW   ÚabsoluteÚjoinÚstr)r_   r„   Úurls      r?   Úmake_urlzBaseTestServer.make_urlž   s`   € Ø�z‰zÐ%Ð%Ð%Ü�$‹iˆØ×$Ò$Ø—|’|Ð#Ð#Ø—:‘:—?‘? 3Ó'Ð'ä”s˜4Ÿ:™:“¬¨T«Ñ2Ó3Ð3rA   c                 ó   — | j                   d uS r�   )r\   ©r_   s    r?   ÚstartedzBaseTestServer.started§   s   € à�{‰{ $Ð&Ð&rA   c                 ó   — | j                   S r�   )r^   rŒ   s    r?   ÚclosedzBaseTestServer.closed«   ó   € à�|‰|ÐrA   c                 óV   — | j                   }|€J ‚|j                  €J ‚|j                  S r�   )r\   r~   )r_   r\   s     r?   ÚhandlerzBaseTestServer.handler¯   s3   € ð —‘ˆØÐ!Ð!Ð!Ø�}‰}Ð(Ð(Ð(Ø�}‰}ÐrA   c              ƒ   óÎ   K  — | j                   rS| j                  sF| j                  €J ‚| j                  j                  «       ƒ d{  –—†  d| _        d| _        d| _        yyy7 Œ­w)a`  Close all fixtures created by the test client.

        After that point, the TestClient is no longer usable.

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

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

        NT)r�   r�   r\   Úcleanupr]   rB   r^   rŒ   s    r?   ÚclosezBaseTestServer.close¸   sZ   è ø€ ð �<Š< §¢Ø—;‘;Ð*Ð*Ð*Ø—+‘+×%Ñ%Ó'×'Ð'ØˆDŒJØˆDŒIØˆD�Lð !,ˆ<à'ús   ‚AA%ÁA#ÁA%c                 ó   — t        d«      ‚©NzUse async with instead©Ú	TypeErrorrŒ   s    r?   Ú	__enter__zBaseTestServer.__enter__Ë   ó   € ÜÐ0Ó1Ð1rA   Úexc_typeÚ	exc_valueÚ	tracebackc                  ó   — y r�   rn   ©r_   rœ   r�   rž   s       r?   Ú__exit__zBaseTestServer.__exit__Î   ó   € ð 	rA   c              ƒ   óZ   K  — | j                  | j                  ¬«      ƒ d {  –—†  | S 7 Œ­w©N©rV   )r   r[   rŒ   s    r?   Ú
__aenter__zBaseTestServer.__aenter__×   s+   è ø€ Ø×Ñ T§Z¡ZÐÓ0×0Ð0Øˆð 	1ús   ‚ +¢)£+c              ƒ   ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wr�   ©r•   r    s       r?   Ú	__aexit__zBaseTestServer.__aexit__Û   ó   è ø€ ð �j‰j‹l×Òúó   ‚–—r�   ©r<   N)r<   rS   )#Ú__name__Ú
__module__Ú__qualname__Ú__test__r>   rˆ   ÚasyncioÚAbstractEventLooprO   Úboolr   rD   ÚAddressFamilyr	   r`   r   r   r(   rq   r$   r   rŠ   Úpropertyr�   r�   r*   r’   r•   rš   ÚtypeÚBaseExceptionr   r¡   r¦   r©   rn   rA   r?   rS   rS   `   sä  „ Ø€Hð
 Ø15ØØØ!&ð ò-ð ð-ð ×'Ñ'¨$Ñ.ð	-ð
 ð-ð �D‰jð-ð ð-ð !Ø�#�v×+Ñ+Ð,¨f¯m©mÐ;ñ
ð-ð ð-ð 
ó-ð0 8<ñIØ×-Ñ-°Ñ4ðIØGJðIà	óIð@ ð¨3ð °:ò ó ðð4˜Xð 4¨#ó 4ð ð'˜ò 'ó ð'ð ð˜ò ó ðð ð˜ò ó ðó ó&2ðà�}Ñ%¨Ñ,ðð ! 4Ñ'ðð ! 4Ñ'ð	ð
 
óóðà�}Ñ%¨Ñ,ðð ! 4Ñ'ðð ! 4Ñ'ð	ð
 
ôrA   rS   c                   óT   ‡ — e Zd Zddddœdededededz  d	ef
ˆ fd
„Zd	edefd„Z	ˆ xZ
S )Ú
TestServerrT   rM   N©rU   r:   rB   ÚapprU   r:   rB   rY   c                ó:   •— || _         t        ‰| �  d|||dœ|¤Ž y ©Nrº   rn   )r»   Úsuperr`   )r_   r»   rU   r:   rB   rY   Ú	__class__s         €r?   r`   zTestServer.__init__å   s%   ø€ ð ˆŒÜ‰ÑÐG ¨T¸ÑGÀÓGrA   r<   c              ‹   ó6   K  — t        | j                  fi |¤ŽS ­wr�   )r&   r»   r‚   s     r?   rq   zTestServer._make_runnerñ   s   è ø€ Ü˜Ÿ™Ñ, VÑ,Ð,ùs   ‚)r­   r®   r¯   r%   rˆ   rO   r	   r`   r(   rq   Ú__classcell__©r¿   s   @r?   r¹   r¹   ä   s`   ø„ ð
 ØØò
Hàð
Hð ð	
Hð
 ð
Hð �D‰jð
Hð õ
Hð-¨3ð -°:÷ -rA   r¹   c                   ó^   ‡ — e Zd Zddddœdededededz  d	ed
dfˆ fd„Zdded	ed
e	fd„Z
ˆ xZS )ÚRawTestServerrT   rM   Nrº   r’   rU   r:   rB   rY   r<   c                ó:   •— || _         t        ‰| �  d|||dœ|¤Ž y r½   )Ú_handlerr¾   r`   )r_   r’   rU   r:   rB   rY   r¿   s         €r?   r`   zRawTestServer.__init__ö   s%   ø€ ð  ˆŒÜ‰ÑÐG ¨T¸ÑGÀÓGrA   Údebugc              ‹   ól   K  — t        | j                  f| j                  |dœ|¤Ž}t        |fd|i|¤ŽS ­w)N)rV   rÇ   rÇ   )r*   rÆ   r[   r+   )r_   rÇ   rY   Úsrvs       r?   rq   zRawTestServer._make_runner  s9   è ø€ Ü�T—]‘]ÐK¨¯©¸5ÑKÀFÑKˆÜ˜CÑ7 uÐ7°Ñ7Ð7ùs   ‚24)T)r­   r®   r¯   r.   rˆ   rO   r	   r`   r³   r+   rq   rÁ   rÂ   s   @r?   rÄ   rÄ   õ   sr   ø„ ð
 ØØò
Hà ð
Hð ð	
Hð
 ð
Hð �D‰jð
Hð ð
Hð 
õ
Hñ8¨ð 8¸sð 8À|÷ 8rA   rÄ   c                   ó°  — e Zd ZdZdZeddœdddededz  d	ed
df
d„«       Z	eddœddde
dedz  d	ed
df
d„«       Z	dddœde
dedz  dej                  dz  d	ed
df
d„Z	dFd„Zed
efd„«       Zed
edz  fd„«       Zed
e
fd„«       Zed
efd„«       Zed
efd„«       Zded
efd„Zdeded	ed
efd„Zej<                  dk\  rmerkdeded	e e!   d
e"fd„Z#ded	e e!   d
e"fd„Z$ded	e e!   d
e"fd„Z%ded	e e!   d
e"fd„Z&ded	e e!   d
e"fd „Z'ded	e e!   d
e"fd!„Z(ded	e e!   d
e"fd"„Z)ded	e e!   d
e"fd#„Z*nRdeded	ed
e"fd$„Z#ded	ed
e"fd%„Z$ded	ed
e"fd&„Z'ded	ed
e"fd'„Z%ded	ed
e"fd(„Z&ded	ed
e"fd)„Z(ded	ed
e"fd*„Z)ded	ed
e"fd+„Z*ed,d-œded.e+d/   d	ed
d0fd1„«       Z,eded.e+d   d	ed
d2fd3„«       Z,ed,d-œded.e-d	ed
d4fd5„«       Z,d/d-œded.e-d	ed
d4fd6„Z,ed,d-œded.e+d/   d	ed
d7fd8„«       Z.eded.e+d   d	ed
d9fd:„«       Z.ed,d-œded.e-d	ed
d;fd<„«       Z.d/d-œded.e-d	ed
d;fd=„Z.dFd>„Z/dFd?„Z0d@e1e2   dz  dAe2dz  dBe3dz  d
dfdC„Z4d
e5fdD„Z6d@e1e2   dz  dAe2dz  dBe3dz  d
dfdE„Z7y)GÚ
TestClientzb
    A test client implementation.

    To write functional tests for aiohttp based servers.

    FN)Ú
cookie_jarr_   z TestClient[Request, Application]r~   rÌ   rY   r<   c                 ó   — y r�   rn   ©r_   r~   rÌ   rY   s       r?   r`   zTestClient.__init__  ó   € ð rA   zTestClient[_Request, None]c                 ó   — y r�   rn   rÎ   s       r?   r`   zTestClient.__init__  rÏ   rA   )rÌ   rV   rV   c                ó  — t        |t        «      st        dt        |«      z  «      ‚|| _        || _        |€t        j                  d|¬«      }t        d||dœ|¤Ž| _	        d| j                  _
        d| _        g | _        g | _        y )Nz2server must be TestServer instance, found type: %rT)ÚunsaferV   )rV   rÌ   Frn   )Ú
isinstancerS   r™   r¶   ry   r[   ÚaiohttpÚ	CookieJarr   Ú_sessionÚ_retry_connectionr^   Ú
_responsesÚ_websockets)r_   r~   rÌ   rV   rY   s        r?   r`   zTestClient.__init__!  s‡   € ô ˜&¤.Ô1ÜØDÄtÈFÃ|ÑSóð ð ˆŒØˆŒ
ØÐÜ ×*Ñ*°$¸TÔBˆJÜ%ÐQ¨4¸JÑQÈ&ÑQˆŒØ*/ˆ�‰Ô'ØˆŒØ02ˆŒØ@BˆÕrA   c              ƒ   ól   K  — | j                   j                  | j                  ¬«      ƒ d {  –—†  y 7 Œ­wr¤   )ry   r   r[   rŒ   s    r?   r   zTestClient.start_server7  s%   è ø€ Ø�l‰l×'Ñ'¨T¯Z©ZÐ'Ó8×8Ò8ús   ‚*4¬2­4c                 ó.   — | j                   j                  S r�   )ry   r:   rŒ   s    r?   r:   zTestClient.host:  ó   € à�|‰|× Ñ Ð rA   c                 ó.   — | j                   j                  S r�   )ry   rB   rŒ   s    r?   rB   zTestClient.port>  rÜ   rA   c                 ó   — | j                   S r�   )ry   rŒ   s    r?   r~   zTestClient.serverB  r�   rA   c                 ó0   — t        | j                  dd «      S )Nr»   )Úgetattrry   rŒ   s    r?   r»   zTestClient.appF  s   € ä�t—|‘| U¨DÓ1Ð1rA   c                 ó   — | j                   S )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?   ÚsessionzTestClient.sessionJ  s   € ð �}‰}ÐrA   r„   c                 ó8   — | j                   j                  |«      S r�   )ry   rŠ   )r_   r„   s     r?   rŠ   zTestClient.make_urlU  s   € Ø�|‰|×$Ñ$ TÓ*Ð*rA   Úmethodc              ‹   ó²   K  —  | j                   j                  || j                  |«      fi |¤Žƒ d {  –—† }| j                  j	                  |«       |S 7 Œ!­wr�   )rÖ   ÚrequestrŠ   rØ   Úappend)r_   rä   r„   rY   Úresps        r?   Ú_requestzTestClient._requestX  sN   è ø€ ð +�T—]‘]×*Ñ*¨6°4·=±=ÀÓ3FÑQÈ&ÑQ×Qˆà�‰×Ñ˜tÔ$Øˆð Rús   ‚1A³A´"Ar0   c                  ó   — y r�   rn   ©r_   rä   r„   rY   s       r?   ræ   zTestClient.requestb  s   € à%(rA   c                  ó   — y r�   rn   ©r_   r„   rY   s      r?   ÚgetzTestClient.getf  ó   € ð &)rA   c                  ó   — y r�   rn   rí   s      r?   ÚoptionszTestClient.optionsl  rï   rA   c                  ó   — y r�   rn   rí   s      r?   ÚheadzTestClient.headr  rï   rA   c                  ó   — y r�   rn   rí   s      r?   ÚpostzTestClient.postx  rï   rA   c                  ó   — y r�   rn   rí   s      r?   ÚputzTestClient.put~  rï   rA   c                  ó   — y r�   rn   rí   s      r?   ÚpatchzTestClient.patch„  rï   rA   c                  ó   — y r�   rn   rí   s      r?   ÚdeletezTestClient.deleteŠ  rï   rA   c                 ó<   — t         | j                  ||fi |¤Ž«      S )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æ   zTestClient.request’  s!   € ô *¨-¨$¯-©-¸ÀÑ*OÈÑ*OÓPÐPrA   c                 óX   — t         | j                  t        j                  |fi |¤Ž«      S )zPerform an HTTP GET request.)r   ré   r   ÚMETH_GETrí   s      r?   rî   zTestClient.getž  ó#   € ä)¨-¨$¯-©-¼¿¹ÀtÑ*VÈvÑ*VÓWÐWrA   c                 óX   — t         | j                  t        j                  |fi |¤Ž«      S )zPerform an HTTP POST request.)r   ré   r   Ú	METH_POSTrí   s      r?   rõ   zTestClient.post¢  ó$   € ä)¨-¨$¯-©-¼¿¹ÈÑ*WÐPVÑ*WÓXÐXrA   c                 óX   — t         | j                  t        j                  |fi |¤Ž«      S )z Perform an HTTP OPTIONS request.)r   ré   r   ÚMETH_OPTIONSrí   s      r?   rñ   zTestClient.options¦  s*   € ä)Ø�—‘œd×/Ñ/°Ñ@¸Ñ@óð rA   c                 óX   — t         | j                  t        j                  |fi |¤Ž«      S )zPerform an HTTP HEAD request.)r   ré   r   Ú	METH_HEADrí   s      r?   ró   zTestClient.head¬  r  rA   c                 óX   — t         | j                  t        j                  |fi |¤Ž«      S )zPerform an HTTP PUT request.)r   ré   r   ÚMETH_PUTrí   s      r?   r÷   zTestClient.put°  rÿ   rA   c                 óX   — t         | j                  t        j                  |fi |¤Ž«      S ©zPerform an HTTP PATCH request.)r   ré   r   Ú
METH_PATCHrí   s      r?   rù   zTestClient.patch´  s(   € ä)Ø�—‘œdŸo™o¨tÑ>°vÑ>óð rA   c                 óX   — t         | j                  t        j                  |fi |¤Ž«      S r
  )r   ré   r   ÚMETH_DELETErí   s      r?   rû   zTestClient.deleteº  s*   € ä)Ø�—‘œd×.Ñ.°Ñ?¸Ñ?óð rA   .)Údecode_textr  TzB_BaseRequestContextManager[ClientWebSocketResponse[Literal[True]]]c                 ó   — y r�   rn   ©r_   r„   r  rY   s       r?   Ú
ws_connectzTestClient.ws_connectÀ  s	   € ð PSrA   zC_BaseRequestContextManager[ClientWebSocketResponse[Literal[False]]]c                 ó   — y r�   rn   r  s       r?   r  zTestClient.ws_connectÅ  s	   € ð QTrA   z9_BaseRequestContextManager[ClientWebSocketResponse[bool]]c                 ó   — y r�   rn   r  s       r?   r  zTestClient.ws_connectÊ  s	   € ð GJrA   c                ó>   — t         | j                  |fd|i|¤Ž«      S )zjInitiate websocket connection.

        The api corresponds to aiohttp.ClientSession.ws_connect.

        r  )r   Ú_ws_connectr  s       r?   r  zTestClient.ws_connectÏ  s+   € ô (ØˆD×Ñ˜TÑE¨{ÐE¸fÑEó
ð 	
rA   z&ClientWebSocketResponse[Literal[True]]c             ‹   ó   K  — y ­wr�   rn   r  s       r?   r  zTestClient._ws_connectÛ  s   è ø€ ð 47ùrƒ   z'ClientWebSocketResponse[Literal[False]]c             ‹   ó   K  — y ­wr�   rn   r  s       r?   r  zTestClient._ws_connectà  s   è ø€ ð 58ùrƒ   zClientWebSocketResponse[bool]c             ‹   ó   K  — y ­wr�   rn   r  s       r?   r  zTestClient._ws_connectå  s   è ø€ ð +.ùrƒ   c             ‹   ó´   K  —  | j                   j                  | j                  |«      fd|i|¤Žƒ d {  –—† }| j                  j	                  |«       |S 7 Œ!­w)Nr  )rÖ   r  rŠ   rÙ   rç   )r_   r„   r  rY   Úwss        r?   r  zTestClient._ws_connectê  s_   è ø€ ð ,�4—=‘=×+Ñ+Ø�M‰M˜$Óñ
Ø-8ð
Ø<Bñ
÷ 
ˆð 	×Ñ×Ñ Ô#Øˆ	ð	
ús   ‚2A´Aµ"Ac              ƒ   ó\  K  — | j                   s–| j                  D ]  }|j                  «        Œ | j                  D ]  }|j                  «       ƒ d{  –—†  Œ | j                  j                  «       ƒ d{  –—†  | j
                  j                  «       ƒ d{  –—†  d| _         yy7 ŒS7 Œ17 Œ­w)aH  Close all fixtures created by the test client.

        After that point, the TestClient is no longer usable.

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

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

        NT)r^   rØ   r•   rÙ   rÖ   ry   )r_   rè   r  s      r?   r•   zTestClient.closeó  s”   è ø€ ð �|Š|ØŸ™ò �Ø—
‘
•ðà×&Ñ&ò !�Ø—h‘h“j× Ñ ð!à—-‘-×%Ñ%Ó'×'Ð'Ø—,‘,×$Ñ$Ó&×&Ð&ØˆD�Lð ð !øØ'øØ&ús6   ‚AB,ÁB&Á#B,Á6B(Á7!B,ÂB*ÂB,Â(B,Â*B,c                 ó   — t        d«      ‚r—   r˜   rŒ   s    r?   rš   zTestClient.__enter__  r›   rA   rœ   ÚexcÚtbc                  ó   — y r�   rn   ©r_   rœ   r  r  s       r?   r¡   zTestClient.__exit__  r¢   rA   c              ƒ   óB   K  — | j                  «       ƒ d {  –—†  | S 7 Œ­wr�   )r   rŒ   s    r?   r¦   zTestClient.__aenter__  s"   è ø€ Ø×ÑÓ!×!Ð!Øˆð 	"ús   ‚–—c              ƒ   ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wr�   r¨   r   s       r?   r©   zTestClient.__aexit__  rª   r«   r¬   )8r­   r®   r¯   Ú__doc__r°   r   r¹   r   r	   r`   rS   r±   r²   r   rµ   rˆ   r:   rO   rB   r~   r5   r»   r   râ   r$   r   rŠ   r   ré   ÚsysÚversion_infor   r3   r   r   ræ   rî   rñ   ró   rõ   r÷   rù   rû   r   r  r³   r  r•   rš   r¶   r·   r   r¡   r4   r¦   r©   rn   rA   r?   rË   rË     sK  „ ñð €Hàð
 04ò	Ø0ðàðð &¨Ñ,ð	ð
 ðð 
òó ðð ð
 04ò	Ø*ðàðð &¨Ñ,ð	ð
 ðð 
òó ðð 04Ø15òCàðCð &¨Ñ,ð	Cð
 ×'Ñ'¨$Ñ.ðCð ðCð 
óCó,9ð ð!�cò !ó ð!ð ð!�c˜D‘jò !ó ð!ð ð˜ò ó ðð ð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ó 	ð à>AòSØðSØ.5°d©mðSØMPðSà	MòSó ðSð ðTØðTØ.5°e©nðTØHKðTà	NòTó ðTð à58òJØðJØ.2ðJØDGðJà	DòJó ðJð
 6:ò

Øð

Ø.2ð

ØEHð

à	Dó

ð à>Aò7Øð7Ø.5°d©mð7ØMPð7à	1ò7ó ð7ð ð8Øð8Ø.5°e©nð8ØHKð8à	2ò8ó ð8ð à58ò.Øð.Ø.2ð.ØDGð.à	(ò.ó ð.ð
 6:òØðØ.2ðØEHðà	(óó ó*2ðà�}Ñ%¨Ñ,ðð ˜TÑ!ðð ˜DÑ ð	ð
 
óð $ó ðà�}Ñ%¨Ñ,ðð ˜TÑ!ðð ˜DÑ ð	ð
 
ôrA   rË   c                   ór   — e Zd ZdZdefd„Zdefd„Zdd„Zdd„Zdd„Z	dd	„Z
d
edefd„Zdedeeef   fd„Zy)ÚAioHTTPTestCasea  A base class to allow for unittest web applications using aiohttp.

    Provides the following:

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

    Note that the TestClient's methods are asynchronous: you have to
    execute function on the test client using asynchronous methods.
    r<   c              ƒ   ó*   K  — | j                  «       S ­w)z‰Get application.

        This method should be overridden
        to return the aiohttp.web.Application
        object to test.
        )Úget_apprŒ   s    r?   Úget_applicationzAioHTTPTestCase.get_application0  s   è ø€ ð �|‰|‹~Ðùs   ‚c                 ó   — t        d«      ‚)zqObsolete method used to constructing web application.

        Use .get_application() coroutine instead.
        z+Did you forget to define get_application()?)ÚRuntimeErrorrŒ   s    r?   r)  zAioHTTPTestCase.get_app9  s   € ô
 ÐHÓIÐIrA   Nc              ƒ   óp   K  — t        j                  «       | _        | j                  «       ƒ d {  –—† S 7 Œ­wr�   )r±   Úget_running_looprV   Ú
setUpAsyncrŒ   s    r?   Ú
asyncSetUpzAioHTTPTestCase.asyncSetUp@  s)   è ø€ Ü×,Ñ,Ó.ˆŒ	Ø—_‘_Ó&×&Ð&Ð&ús   ‚-6¯4°6c              ƒ   ó:  K  — | j                  «       ƒ d {  –—† | _        | j                  | j                  «      ƒ d {  –—† | _        | j	                  | j                  «      ƒ d {  –—† | _        | j
                  j                  «       ƒ d {  –—†  y 7 Œ|7 ŒV7 Œ07 Œ­wr�   )r*  r»   Ú
get_serverr~   Ú
get_clientÚclientr   rŒ   s    r?   r/  zAioHTTPTestCase.setUpAsyncD  sn   è ø€ Ø×-Ñ-Ó/×/ˆŒØ Ÿ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              ƒ   ó>   K  — | j                  «       ƒ d {  –—† S 7 Œ­wr�   )ÚtearDownAsyncrŒ   s    r?   ÚasyncTearDownzAioHTTPTestCase.asyncTearDownK  s   è ø€ Ø×'Ñ'Ó)×)Ð)Ð)ús   ‚–—c              ƒ   óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wr�   )r4  r•   rŒ   s    r?   r6  zAioHTTPTestCase.tearDownAsyncN  s   è ø€ Ø�k‰k×ÑÓ!×!Ò!ús   ‚( &¡(r»   c              ƒ   ó8   K  — t        || j                  ¬«      S ­w)zReturn a TestServer instance.r¥   )r¹   rV   )r_   r»   s     r?   r2  zAioHTTPTestCase.get_serverQ  s   è ø€ ä˜# D§I¡IÔ.Ð.ùó   ‚r~   c              ƒ   ó8   K  — t        || j                  ¬«      S ­w)zReturn a TestClient instance.r¥   )rË   rV   )r_   r~   s     r?   r3  zAioHTTPTestCase.get_clientU  s   è ø€ ä˜& t§y¡yÔ1Ð1ùr:  r¬   )r­   r®   r¯   r#  r%   r*  r)  r0  r/  r7  r6  r¹   r2  rË   r)   r3  rn   rA   r?   r'  r'  !  se   „ ñð {ó ðJ˜ó Jó'ó)ó*ó"ð/ Kð /°Jó /ð2 zð 2°jÀÈ+ÐAUÑ6Vô 2rA   r'  ÚfuncÚargsrY   c                 ó>   — t        j                  dt        d¬«       | S )zw
    A decorator dedicated to use with asynchronous AioHTTPTestCase test methods.

    In 3.8+, this does nothing.
    zBDecorator `@unittest_run_loop` is no longer needed in aiohttp 3.8+rh   )Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarning)r<  r=  rY   s      r?   Úunittest_run_looprC  Z  s    € ô ‡M�MØLÜØõð
 €KrA   FÚloop_factoryÚfastc              #   óD   K  — t        | «      }|–— t        ||¬«       y­w)zzA contextmanager that creates an event_loop, for test purposes.

    Handles the creation and cleanup of a test loop.
    )rE  N)Úsetup_test_loopÚteardown_test_loop)rD  rE  rV   s      r?   Úloop_contextrI  k  s!   è ø€ ô ˜<Ó(€DØ
‚JÜ�t $Ö'ùs   ‚ c                 ó>   —  | «       }t        j                  |«       |S )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)rD  rV   s     r?   rG  rG  x  s   € ñ ‹>€DÜ×Ñ˜4Ô Ø€KrA   rV   c                 óô   — | j                  «       }|s;| j                  | j                  «       | j                  «        | j	                  «        |st        j                  «        t        j                  d«       y)z>Teardown and cleanup an event_loop created by setup_test_loop.N)	Ú	is_closedÚ	call_soonÚstopÚrun_foreverr•   ÚgcÚcollectr±   rK  )rV   rE  r�   s      r?   rH  rH  …  sP   € à�^‰^Ó€FÙØ�‰�t—y‘yÔ!Ø×ÑÔØ�
‰
ŒáÜ
�
‰
Œä×Ñ˜4Õ rA   c                  ó"  — dt         dt        dt         fd„} dt         dt        dt         dd fd„}t        j                  t        ¬«      }i |_        | |_        ||_        d|_        t        |«      |_
        |j                  j                  «        |S )	Nr»   Úkeyr<   c                 ó    — | j                   |   S r�   ©Ú
__app_dict)r»   rT  s     r?   Úget_dictz"_create_app_mock.<locals>.get_dict”  s   € Ø�~‰~˜cÑ"Ð"rA   Úvaluec                 ó"   — || j                   |<   y r�   rV  )r»   rT  rY  s      r?   Úset_dictz"_create_app_mock.<locals>.set_dict—  s   € Ø#ˆ�‰�sÒrA   )ÚspecF)r	   rˆ   r   Ú	MagicMockr%   rW  Ú__getitem__Ú__setitem__Ú_debugr   Úon_response_prepareÚfreeze)rX  r[  r»   s      r?   Ú_create_app_mockrc  “  sŒ   € ð#”cð #¤ð #¬ó #ð$”cð $¤ð $¬Cð $°Dó $ô �.‰.œkÔ
*€CØ€C„NØ€C„OØ€C„Oà€C„JÜ$ S›k€CÔØ×Ñ×"Ñ"Ô$Ø€JrA   Ú
sslcontextc                 ó¤   ‡ — t        j                  «       }dt        dt        t        t        t
        f   z  d z  fˆ fd„}||j                  _        |S )NrT  r<   c                 ó$   •— | dk(  r‰S | dk(  rdS d S )Nrd  Úsockname)rM   éP   rn   )rT  rd  s    €r?   Úget_extra_infoz)_create_transport.<locals>.get_extra_info¨  s$   ø€ Ø�,ÒØÐØ$'¨:Ò$5Ð Ð?¸4Ð?rA   )r   ÚMockrˆ   r/   ÚtuplerO   ri  Úside_effect)rd  Ú	transportri  s   `  r?   Ú_create_transportrn  ¥  sL   ø€ Ü—	‘	“€Ið@œCð @¤J´´s¼C°x±Ñ$@À4Ñ$Gõ @ð
 ,:€I×ÑÔ(ØÐrA   i   .)Ú
match_inforu   Úclosingr»   ÚwriterÚprotocolrm  Úpayloadrd  Úclient_max_sizerV   rä   r„   Úheadersro  ru   rp  r»   rq  rr  rm  rs  rt  c                ó8  — t        j                  «       }|du r	 t        j                  «       }|t        dd«      k  rd}|r5t        t        |«      «      }t        d„ |j                  «       D «       «      }nt        t        «       «      }d}d|j                  t        j                  d«      j                  «       v }|j                  t        j                   d«      j                  «       dk(  xr( t#        |j                  t        j$                  «      «      }t'        | j)                  «       |||||d	||t+        |«      «
      }|€
t-        «       }|	t.        u rt1        |«      }	|t.        u rºt        j                  «       }d
|_        d
|_        d|_        |	|_        t        j:                  |	j=                  d«      ¬«      t?        |«      _         t        j:                  |	j=                  d«      ¬«      t?        |«      _!        t        j:                  |¬«      t?        |«      _"        |t.        u r[t        j                  «       }tG        d	«      |_$        tG        d	«      |_%        tG        d	«      |_&        tG        d	«      |_'        |	|_        |	|_        ||_(        tS        ||
|||||¬«      }tU        |t.        u ri n|t        j                  «       «      }|jW                  |«       ||_,        |S # t        $ r) t        j                  «       }d|j
                  _        Y �Œêw xY w)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.
    .rn   r   Tc              3   óf   K  — | ])  \  }}|j                  d «      |j                  d «      f–— Œ+ y­w)zutf-8N)Úencode)Ú.0ÚkÚvs      r?   ú	<genexpr>z&make_mocked_request.<locals>.<genexpr>Ø  s0   è ø€ ò 
Ù7;°q¸!ˆQ�X‰X�gÓ §¡¨Ó 1Ô2ñ
ùs   ‚/1ÚchunkedrT   ÚupgradeNiþ  é€   Úpeername)Úreturn_valuerg  )rt  )-r   rj  r±   r.  r,  Úcreate_futurer�  r    r   r   rk  Úitemsrî   r   ÚTRANSFER_ENCODINGÚlowerÚ
CONNECTIONr³   ÚUPGRADEr!   Úupperr   rc  r   rn  Úmax_field_sizeÚmax_line_lengthÚmax_headersrm  ÚPropertyMockri  r¶   r€  rg  rj   Úmake_mocked_coroÚwrite_headersÚwriteÚ	write_eofÚdrainrq  r)   r-   Úadd_appÚ_match_info)rä   r„   ru  ro  ru   rp  r»   rq  rr  rm  rs  rd  rt  rV   ÚtaskÚraw_hdrsr}  r~  Ú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Ø�k‰kœ$Ÿ/™/¨2Ó.×4Ñ4Ó6¸)ÑCò ÌØ�‰”D—L‘LÓ!óI€Gô  Ø�‰‹ØØØØØØØØÜˆD‹	ó€Gð €{ÜÓ ˆà”HÑÜ% jÓ1ˆ	à”8ÑÜ—9‘9“;ˆØ"&ˆÔØ#'ˆÔ Ø"ˆÔØ&ˆÔÜ"&×"3Ñ"3Ø"×1Ñ1°*Ó=ô#
ŒˆX‹Ôô #'×"3Ñ"3Ø"×1Ñ1°*Ó=ô#
ŒˆX‹Ôô &*×%6Ñ%6ÀJÔ%OŒˆX‹Ô"à”ÑÜ—‘“ˆÜ/°Ó5ˆÔÜ'¨Ó-ˆŒÜ+¨DÓ1ˆÔÜ'¨Ó-ˆŒØ$ˆÔà"€HÔØ€H„Oä
Ø�˜( F¨D°$Èô€Cô %ØœHÑ$‰¨*´d·i±i³kó€Jð ×Ñ�sÔØ €C„Oà€JøôU ò 	1Ü—9‘9“;ˆDØ.0ˆD×Ñ×+ð	1ús   šK' Ë'.LÌLr�  Úraise_exceptionc                 ód   ‡ ‡— dt         dt         dt         fˆˆ fd„}t        j                  |¬«      S )zCreates a coroutine mock.r=  rY   r<   c               Ÿ   óh   •K  — ‰t         ur‰‚t        j                  ‰«      s‰S ‰ƒ d {  –—†  y 7 Œ­wr�   )r   ÚinspectÚisawaitable)r=  rY   r™  r�  s     €€r?   Ú	mock_coroz#make_mocked_coro.<locals>.mock_coro!  s2   øè ø€ Ø¤(Ñ*Ø!Ð!Ü×"Ñ" <Ô0ØÐØ×Òús   ƒ'2ª0«2)Úwraps)r	   r   rj  )r�  r™  rž  s   `` r?   r�  r�    s.   ù€ ð
œsð ¬cð ´cö ô �9‰9˜9Ô%Ð%rA   )Fr�   )mr#  r±   Ú
contextlibrQ  rœ  rs   ÚosrD   r$  r@  Úabcr   r   Úcollections.abcr   r   Útypesr   Útypingr   r	   r
   r   r   r   r   Úunittestr   r   Ú	aiosignalr   Ú	multidictr   r   Úyarlr   rÔ   Úaiohttp.clientr   r   r   r   rT   r   r   r   Úclient_reqrepr   Ú	client_wsr   Úhelpersr   rl   r    r!   Ústreamsr"   r#   Útypedefsr$   Úwebr%   r&   r'   r(   r)   r*   r+   r,   r-   Úweb_protocolr.   rb   r/   r%  r3   r4   r5   r6   ÚnameÚplatformrF   rN   rˆ   r´   r@   rO   r>   rQ   rS   r¹   rÄ   rË   r'  rC  r²   Ú_LOOP_FACTORYÚcontextmanagerÚnew_event_loopr³   rI  rG  rH  r]  rc  rj  rn  r˜  r�  rn   rA   r?   ú<module>r·     sš  ðÙ  ã Û Û 	Û Û Û 	Û Û 
Û ß #ß .Ý ß P× PÑ Pß 2å ß 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ô$W�˜Ð#3Ð3Ñ4ô Wôt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ó !ð˜$Ÿ.™.ó ñ$	 *¨tÑ"3ð 	¸t¿y¹yó 	ð ðhð
 Ù& q¨!Ó,ØØØØØØ)Ø$(Ø"ØòhØðhà
ðhð ðhð
 ðhð ðhð ðhð 
ðhð ðhð ðhð ðhð ðhð ˜TÑ!ðhð ðhð ðhð  ó!hðX !¸ñ&Øð&Ø36ð&àô&rA   