hyb
2026-01-30 44480e71b27aa9d4cb8441f50c873f1b110e9691
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
Ë
¸^iî\ã ón—dZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
m Z m Z ddl mZddlmZmZmZmZmZmZmZmZmZmZmZddlmZmZddlmZddl m!Z!m"Z"dd    l#m$Z$ddl%Z%dd
l&m'Z'm(Z(m)Z)d d l*m+Z+m,Z,d d l
m-Z-d dl.m/Z/d dl0m1Z1d dl2m3Z3d dl4m5Z5m6Z6d dl7m8Z8m9Z9d dl:m;Z;d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEd dlFmGZGerddlHmIZIndZIej”dk\rerddlmKZKej”dk\rddlmLZLneZLede=d«ZMede?¬«ZNejždk(xrej dk7ZQej¤fdeSd ej¨d!ejfd"„ZUdeSd#eVd ej¨d!ejfd$„ZWd!eVfd%„ZXGd&„d'e «ZYGd(„d)eY«ZZGd*„d+eY«Z[Gd,„d-eeNeMf«Z\Gd.„d/e«Z]d0ed1ed2ed!efd3„Z^egej¾fZ`ejÂejÄd4fd5e`d6ecd!eej¾fd7„«ZdejÄfd5e`d!ej¾fd8„ZedQd9ej¾d6ecd!dfd:„Zfd!ejÎfd;„ZhdRd<eeId!ejÒfd=„Zj    dRe3e5d d «d4de3e3e3e8dd>d?d@œ dAeSdBeSdCedDedEe5dFecdGedHedIedJedKe9d<eeIdLeVd9ed!eAfdM„Zke3e3fdNedOed!efdP„Zly)SzUtilities 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ó—t|d|«S)Nr)Úget_port_socket)r;r<s  õeH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\aiohttp/test_utils.pyÚget_unused_port_socketrAPs€ô ˜4  FÓ +Ð+óÚportcóޗtj|tj«}tr/|jtjtj
d«|j ||f«|S)Nr)ÚsocketÚ SOCK_STREAMÚ REUSE_ADDRESSÚ
setsockoptÚ
SOL_SOCKETÚ SO_REUSEADDRÚbind)r;rCr<Úss    r@r?r?VsP€ô     ‰ fœf×0Ñ0Ó1€AÝð    
 ‰ ”V×&Ñ&¬×(;Ñ(;¸QÔ?؇FFˆD$ˆ<ÔØ €HrBcóö—tjtjtj«5}|jd«t    t
|j «d«cddd«S#1swYyxYw)z1Return a port that is unused on the current host.)ú    127.0.0.1rrN)rEÚAF_INETrFrKrÚintÚ getsockname)rLs r@Ú unused_portrRcsS€ä    ‰”v—~‘~¤v×'9Ñ'9Ó    :ð-¸aØ    ‰ÐÔ Ü”C˜Ÿ™›¨Ñ+Ó,÷-÷-ò-ús ³2A/Á/A8có¶—eZdZdZdddddedœdedeejded    ee    d
e
d e ee    e jge jfd ed dfd„Z    ddeejd ed dfd„Zed ed efd„«Zded efd„Zed e
fd„«Zed e
fd„«Zed efd„«Zdd„Zdd„Zdeeedeedee d dfd„Z!d d„Z"deeedeedee d dfd„Z#y)!ÚBaseTestServerFÚNrN)ÚschemeÚloopr;rCÚskip_url_assertsÚsocket_factoryrVrWr;rCrXrYÚkwargsr=c ó‚—||_d|_d|_||_||_d|_||_||_||_y)NF)    Ú_loopÚrunnerÚ_rootr;rCÚ_closedrVrXrY)ÚselfrVrWr;rCrXrYrZs        r@Ú__init__zBaseTestServer.__init__msE€ðˆŒ
Ø,0ˆŒ Ø$(ˆŒ
؈Œ    ØˆŒ    ØˆŒ ؈Œ Ø 0ˆÔØ,ˆÕrBc‹ó4K—|jry||_|jdd«|_|jdddi|¤Žƒd{–—†|_|jj «ƒd{–—†|j sd|_|j}    tj|j«j}|dk(rd|j›d}|dk(rtjntj}|j|j|j |«}|j!«dd    \|_|_t#|j||j¬
«}|j%«ƒd{–—†|j&}|€J‚|j(}    |    €J‚|    dj!«d |_|j*s|jrd nd |_t-|j*›d|›d|j ›«|_y7Œ¹7Œ•#t$rd}YŒXwxYw7Œ¥­w)NÚsslÚhandler_cancellationTrééú[ú]é)ÚsockÚ ssl_contextrÚhttpsÚhttpz://ú:©)r]r\ÚpopÚ_sslÚ _make_runnerÚsetuprCr;Ú    ipaddressÚ
ip_addressÚversionÚ
ValueErrorrEÚAF_INET6rOrYrQr-ÚstartÚ_serverÚsocketsrVrr^)
r`rWrZÚ absolute_hostrvr<Ú_sockÚsiteÚserverr{s
          r@Ú start_serverzBaseTestServer.start_server„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‚AHÁG>Á&HÁ,HÁ-#HÂ)HÂ:B6HÅ0HÅ1BHÈHÈ HÈHÈHÈHc‹ó K—y­w©Nro©r`rZs  r@rrzBaseTestServer._make_runner¤s    èø€à ùs‚Úpathcóò—|j€J‚t|«}|js)|jrJ‚|jj    |«Stt |j«t |«z«Sr‚)r^rrXÚabsoluteÚjoinÚstr)r`r„Úurls   r@Úmake_urlzBaseTestServer.make_url¨s`€Øz‰zÐ%Ð%Ð%ܐ$‹iˆØ×$Ò$Ø—|’|Ð #Ð#Ø—:‘:—?‘? 3Ó'Ð 'ä”s˜4Ÿ:™:“¬¨T«Ñ2Ó3Ð 3rBcó—|jduSr‚)r]©r`s r@ÚstartedzBaseTestServer.started±s€à{‰{ $Ð&Ð&rBcó—|jSr‚)r_rŒs r@ÚclosedzBaseTestServer.closedµó €à|‰|ÐrBcóV—|j}|€J‚|j€J‚|jSr‚)r]r)r`r]s  r@ÚhandlerzBaseTestServer.handler¹s3€ð—‘ˆØÐ!Ð!Ð!؏}‰}Ð(Ð(Ð(؏}‰}ÐrBcƒóÎK—|jrS|jsF|j€J‚|jj«ƒd{–—†d|_d|_d|_yyy7Œ­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^rCr_rŒs r@ÚclosezBaseTestServer.closeÂsZèø€ð <Š< § ¢ Ø—;‘;Ð*Ð *Ð*Ø—+‘+×%Ñ%Ó'× 'Ð '؈DŒJ؈DŒI؈DLð !,ˆ<à 'ús‚AA%ÁA#ÁA%có—td«‚©NzUse async with instead©Ú    TypeErrorrŒs r@Ú    __enter__zBaseTestServer.__enter__Õó€ÜÐ0Ó1Ð1rBÚexc_typeÚ    exc_valueÚ    tracebackcó—yr‚ro©r`rœrržs    r@Ú__exit__zBaseTestServer.__exit__Øó€ð     rBcƒóZK—|j|j¬«ƒd{–—†|S7Œ­w©N©rW)r€r\rŒs r@Ú
__aenter__zBaseTestServer.__aenter__ás+èø€Ø×Ñ T§Z¡ZÐÓ0×0Ð0؈ ð    1ús ‚ +¢)£+cƒó@K—|j«ƒd{–—†y7Œ­wr‚©r•r s    r@Ú    __aexit__zBaseTestServer.__aexit__åóèø€ð j‰j‹l×Òúó ‚–—r‚©r=N)r=rT)$Ú__name__Ú
__module__Ú __qualname__Ú__test__r?rˆr ÚasyncioÚAbstractEventLooprPÚboolrrEÚ AddressFamilyrrar€rr)rrr%rrŠÚpropertyrrr+r’r•ršr Ú BaseExceptionrr¡r¦r©rorBr@rTrTjs䄨€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Ñ*ð    ð
 
ô rBrTc óT‡—eZdZddddœdedededeed    ef
ˆfd
„Zd    ed e    fd „Z
ˆxZ S) Ú
TestServerrUrNN©rVr;rCÚapprVr;rCrZc ó:•—||_t‰|d|||dœ|¤Žy©Nr¹ro)rºÚsuperra)r`rºrVr;rCrZÚ    __class__s      €r@razTestServer.__init__ïs%ø€ðˆŒÜ ‰ÑÐG ¨T¸ÑGÀÓGrBr=c‹ó6K—t|jfi|¤ŽS­wr‚)r'rºrƒs  r@rrzTestServer._make_runnerûsèø€Ü˜Ÿ™Ñ, VÑ,Ð,ùs‚) r­r®r¯r&rˆr rPrrar)rrÚ __classcell__©r¾s@r@r¸r¸îs`ø„ð
ØØ"ò
Hà ð
Hðð    
Hð
ð
Hð s‰mð
Hðõ
Hð-¨3ð-°:÷-rBr¸c ó^‡—eZdZddddœdedededeed    ed
df ˆfd „Zdd e    d    ed
e
fd „Z ˆxZ S)Ú RawTestServerrUrNNr¹r’rVr;rCrZr=c ó:•—||_t‰|d|||dœ|¤Žyr¼)Ú_handlerr½ra)r`r’rVr;rCrZr¾s      €r@razRawTestServer.__init__s%ø€ð ˆŒ Ü ‰ÑÐG ¨T¸ÑGÀÓGrBÚdebugc‹ólK—t|jf|j|dœ|¤Ž}t|fd|i|¤ŽS­w)N)rWrÆrÆ)r+rÅr\r,)r`rÆrZÚsrvs    r@rrzRawTestServer._make_runner s9èø€ÜT—]‘]ÐK¨¯©¸5ÑKÀFÑKˆÜ˜CÑ7 uÐ7°Ñ7Ð7ùs‚24)T) r­r®r¯r/rˆr rPrrar³r,rrrÀrÁs@r@rÃrÃÿsrø„ð
ØØ"ò
Hà ð
Hðð    
Hð
ð
Hð s‰mð
Hðð
Hð
õ
Hñ8¨ð8¸sð8À|÷8rBrÃc ó —eZdZdZdZeddœdddedeed    e    d
df
d „«Z
eddœdd de deed    e    d
df
d „«Z
dddœde deedee jd    e    d
df
d„Z
d6d„Zed
efd„«Zed
eefd„«Zed
e fd„«Zed
efd„«Zed
efd„«Zded
efd„Zdeded    e    d
efd„Zej>dk\rme rkdeded    e!e"d
e#fd„Z$ded    e!e"d
e#fd„Z%ded    e!e"d
e#fd„Z&ded    e!e"d
e#fd„Z'ded    e!e"d
e#fd „Z(ded    e!e"d
e#fd!„Z)ded    e!e"d
e#fd"„Z*ded    e!e"d
e#fd#„Z+nRdeded    e    d
e#fd$„Z$ded    e    d
e#fd%„Z%ded    e    d
e#fd&„Z(ded    e    d
e#fd'„Z&ded    e    d
e#fd(„Z'ded    e    d
e#fd)„Z)ded    e    d
e#fd*„Z*ded    e    d
e#fd+„Z+ded    e    d
e,fd,„Z-ded    e    d
e.fd-„Z/d6d.„Z0d6d/„Z1d0ee2e3d1ee3d2ee4d
dfd3„Z5d
e6fd4„Z7d0ee2e3d1ee3d2ee4d
dfd5„Z8y)7Ú
TestClientzb
    A test client implementation.
 
    To write functional tests for aiohttp based servers.
 
    FN)Ú
cookie_jarr`z TestClient[Request, Application]rrËrZr=c ó—yr‚ro©r`rrËrZs    r@razTestClient.__init__ó€ðrBzTestClient[_Request, None]c ó—yr‚rorÍs    r@razTestClient.__init__#rÎrB)rËrWrWc ó—t|t«stdt|«z«‚||_||_|€t jd|¬«}td||dœ|¤Ž|_    d|j_
d|_ g|_ g|_ y)Nz2server must be TestServer instance, found type: %rT)ÚunsaferW)rWrËFro)Ú
isinstancerTr™Útyperzr\ÚaiohttpÚ    CookieJarrÚ_sessionÚ_retry_connectionr_Ú
_responsesÚ _websockets)r`rrËrWrZs     r@razTestClient.__init__+s‡€ô˜&¤.Ô1ÜØDÄtÈFÃ|ÑSóð ðˆŒ ØˆŒ
Ø Ð Ü ×*Ñ*°$¸TÔBˆJÜ%ÐQ¨4¸JÑQÈ&ÑQˆŒ Ø*/ˆ ‰ Ô'؈Œ Ø02ˆŒØ:<ˆÕrBcƒólK—|jj|j¬«ƒd{–—†y7Œ­wr¤)rzr€r\rŒs r@r€zTestClient.start_serverAs%èø€Øl‰l×'Ñ'¨T¯Z©ZÐ'Ó8×8Ò8ús ‚*4¬2­4có.—|jjSr‚)rzr;rŒs r@r;zTestClient.hostDó€à|‰|נѠРrBcó.—|jjSr‚)rzrCrŒs r@rCzTestClient.portHrÜrBcó—|jSr‚)rzrŒs r@rzTestClient.serverLrrBcó0—t|jdd«S)Nrº)ÚgetattrrzrŒs r@rºzTestClient.appPs€ät—|‘| U¨DÓ1Ð1rBcó—|jS)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@ÚsessionzTestClient.sessionTs€ð}‰}ÐrBr„có8—|jj|«Sr‚)rzrŠ)r`r„s  r@rŠzTestClient.make_url_s€Ø|‰|×$Ñ$ TÓ*Ð*rBÚmethodc‹ó²K—|jj||j|«fi|¤Žƒd{–—†}|jj    |«|S7Œ!­wr‚)rÖÚrequestrŠrØÚappend)r`rär„rZÚresps     r@Ú_requestzTestClient._requestbsNèø€ð+T—]‘]×*Ñ*¨6°4·=±=ÀÓ3FÑQÈ&ÑQ×Qˆà ‰×јtÔ$؈ ðRús‚1A³A´"Ar1c ó—yr‚ro©r`rär„rZs    r@ræzTestClient.requestls€à%(rBc ó—yr‚ro©r`r„rZs   r@ÚgetzTestClient.getpó€ð&)rBc ó—yr‚rorís   r@ÚoptionszTestClient.optionsvrïrBc ó—yr‚rorís   r@ÚheadzTestClient.head|rïrBc ó—yr‚rorís   r@ÚpostzTestClient.post‚rïrBc ó—yr‚rorís   r@ÚputzTestClient.putˆrïrBc ó—yr‚rorís   r@ÚpatchzTestClient.patchŽrïrBc ó—yr‚rorís   r@ÚdeletezTestClient.delete”rïrBc ó<—t|j||fi|¤Ž«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.
 
            )rrérës    r@ræzTestClient.requestœs!€ô*¨-¨$¯-©-¸ÀÑ*OÈÑ*OÓPÐ PrBc óX—t|jtj|fi|¤Ž«S)zPerform an HTTP GET request.)rrérÚMETH_GETrís   r@rîzTestClient.get¨ó#€ä)¨-¨$¯-©-¼¿ ¹ ÀtÑ*VÈvÑ*VÓWÐ WrBc óX—t|jtj|fi|¤Ž«S)zPerform an HTTP POST request.)rrérÚ    METH_POSTrís   r@rõzTestClient.post¬ó$€ä)¨-¨$¯-©-¼¿¹ÈÑ*WÐPVÑ*WÓXÐ XrBc óX—t|jtj|fi|¤Ž«S)z Perform an HTTP OPTIONS request.)rrérÚ METH_OPTIONSrís   r@rñzTestClient.options°s*€ä)ؐ— ‘ œd×/Ñ/°Ñ@¸Ñ@óð rBc óX—t|jtj|fi|¤Ž«S)zPerform an HTTP HEAD request.)rrérÚ    METH_HEADrís   r@rózTestClient.head¶rrBc óX—t|jtj|fi|¤Ž«S)zPerform an HTTP PUT request.)rrérÚMETH_PUTrís   r@r÷zTestClient.putºrÿrBc óX—t|jtj|fi|¤Ž«S©zPerform an HTTP PATCH request.)rrérÚ
METH_PATCHrís   r@rùzTestClient.patch¾s(€ä)ؐ— ‘ œdŸo™o¨tÑ>°vÑ>óð rBc óX—t|jtj|fi|¤Ž«Sr
)rrérÚ METH_DELETErís   r@rûzTestClient.deleteÄs*€ä)ؐ— ‘ œd×.Ñ.°Ñ?¸Ñ?óð rBc ó:—t|j|fi|¤Ž«S)zjInitiate websocket connection.
 
        The api corresponds to aiohttp.ClientSession.ws_connect.
 
        )rÚ _ws_connectrís   r@Ú
ws_connectzTestClient.ws_connectÊs"€ô (Ð(8¨×(8Ñ(8¸Ñ(HÀÑ(HÓIÐIrBc‹ó°K—|jj|j|«fi|¤Žƒd{–—†}|jj    |«|S7Œ!­wr‚)rÖrrŠrÙrç)r`r„rZÚwss    r@rzTestClient._ws_connectÒsNèø€ð,4—=‘=×+Ñ+¨D¯M©M¸$Ó,?ÑJÀ6ÑJ× JˆØ ×Ñ×Ñ Ô#؈    ðKús‚0A²A³"Acƒó\K—|js–|jD]}|j«Œ|jD]}|j«ƒd{–—†Œ|jj«ƒd{–—†|j
j«ƒd{–—†d|_yy7ŒS7Œ17Œ­w)aHClose 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Örz)r`rèrs   r@r•zTestClient.closeÙs”èø€ð|Š|ØŸ™ò Ø—
‘
• ð à×&Ñ&ò !Ø—h‘h“j× Ñ ð !à—-‘-×%Ñ%Ó'× 'Ð 'Ø—,‘,×$Ñ$Ó&× &Ð &؈DLðð!øØ 'øØ &ús6‚AB,ÁB&Á#B,Á6B(Á7!B,ÂB*ÂB,Â(B,Â*B,có—td«‚r—r˜rŒs r@ršzTestClient.__enter__îr›rBrœÚexcÚtbcó—yr‚ro©r`rœrrs    r@r¡zTestClient.__exit__ñr¢rBcƒóBK—|j«ƒd{–—†|S7Œ­wr‚)r€rŒs r@r¦zTestClient.__aenter__ús"èø€Ø×ÑÓ!×!Ð!؈ ð    "ús ‚–—cƒó@K—|j«ƒd{–—†y7Œ­wr‚r¨rs    r@r©zTestClient.__aexit__þrªr«r¬)9r­r®r¯Ú__doc__r°rr¸r rrrarTr±r²r€rµrˆr;rPrCrr6rºrrâr%rrŠrréÚsysÚ version_inforr4rrrærîrñrórõr÷rùrûrrrrr•ršr r¶rr¡r5r¦r©rorBr@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Ñ $ðð ]Ñ #ð    ð
 
ô rBrÊcór—eZdZdZdefd„Zdefd„Zdd„Zdd„Zdd„Z    dd    „Z
d
ede fd „Z d e de eeffd „Zy)ÚAioHTTPTestCaseaA 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_applicationzAioHTTPTestCase.get_applicationsèø€ð|‰|‹~Ðùs‚có—td«‚)zqObsolete method used to constructing web application.
 
        Use .get_application() coroutine instead.
        z+Did you forget to define get_application()?)Ú RuntimeErrorrŒs r@r!zAioHTTPTestCase.get_apps€ô
ÐHÓIÐIrBNcƒópK—tj«|_|j«ƒd{–—†S7Œ­wr‚)r±Úget_running_looprWÚ
setUpAsyncrŒs r@Ú
asyncSetUpzAioHTTPTestCase.asyncSetUp&s)èø€Ü×,Ñ,Ó.ˆŒ    Ø—_‘_Ó&×&Ð&Ð&ús ‚-6¯4°6cƒó:K—|j«ƒd{–—†|_|j|j«ƒd{–—†|_|j    |j«ƒd{–—†|_|j
j «ƒd{–—†y7Œ|7ŒV7Œ07Œ ­wr‚)r"rºÚ
get_serverrÚ
get_clientÚclientr€rŒs r@r'zAioHTTPTestCase.setUpAsync*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ÂBcƒó>K—|j«ƒd{–—†S7Œ­wr‚)Ú tearDownAsyncrŒs r@Ú asyncTearDownzAioHTTPTestCase.asyncTearDown1sèø€Ø×'Ñ'Ó)×)Ð)Ð)ús ‚–—cƒóTK—|jj«ƒd{–—†y7Œ­wr‚)r,r•rŒs r@r.zAioHTTPTestCase.tearDownAsync4sèø€Øk‰k×ÑÓ!×!Ò!ús ‚( &¡(rºcƒó8K—t||j¬«S­w)zReturn a TestServer instance.r¥)r¸rW)r`rºs  r@r*zAioHTTPTestCase.get_server7sèø€ä˜# D§I¡IÔ.Ð.ùó‚rcƒó8K—t||j¬«S­w)zReturn a TestClient instance.r¥)rÊrW)r`rs  r@r+zAioHTTPTestCase.get_client;sèø€ä˜& t§y¡yÔ1Ð1ùr2r¬)r­r®r¯rr&r"r!r(r'r/r.r¸r*rÊr*r+rorBr@rrse„ñ ð {óðJ˜óJó'ó)ó*ó"ð/ Kð/°Jó/ð2 zð2°jÀÈ+ÐAUÑ6Vô2rBrÚfuncÚargsrZcó>—tjdtd¬«|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+ri)Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarning)r4r5rZs   r@Úunittest_run_loopr;@s €ô  ‡MMØLÜØõð
€KrBFÚ loop_factoryÚfastc#óDK—t|«}|–—t||¬«y­w)zzA contextmanager that creates an event_loop, for test purposes.
 
    Handles the creation and cleanup of a test loop.
    )r=N)Úsetup_test_loopÚteardown_test_loop)r<r=rWs   r@Ú loop_contextrAQs!èø€ô ˜<Ó (€DØ
‚Jܐt $Ö'ùs‚ có>—|«}tj|«|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)r<rWs  r@r?r?^s€ñ ‹>€DÜ ×ј4Ô Ø €KrBrWcóô—|j«}|s;|j|j«|j«|j    «|st j «tjd«y)z>Teardown and cleanup an event_loop created by setup_test_loop.N)    Ú    is_closedÚ    call_soonÚstopÚ run_foreverr•ÚgcÚcollectr±rC)rWr=rs   r@r@r@ksP€à ^‰^Ó €FÙ Ø ‰t—y‘yÔ!Ø ×ÑÔØ 
‰
Œ á Ü

‰
Œ ä ×ј4Õ rBcó"—dtdtdtfd„}dtdtdtddfd„}tjt¬«}i|_||_||_d|_t|«|_
|jj«|S)    NrºÚkeyr=có —|j|Sr‚©Ú
__app_dict)rºrLs  r@Úget_dictz"_create_app_mock.<locals>.get_dictzs€Ø~‰~˜cÑ"Ð"rBÚvaluecó"—||j|<yr‚rN)rºrLrQs   r@Úset_dictz"_create_app_mock.<locals>.set_dict}s€Ø#ˆ‰sÒrB)ÚspecF) rrˆrÚ    MagicMockr&rOÚ __getitem__Ú __setitem__Ú_debugrÚon_response_prepareÚfreeze)rPrSrºs   r@Ú_create_app_mockr[ysŒ€ð#”cð#¤ð#¬ó#ð$”cð$¤ð$¬Cð$°Dó$ô .‰.œkÔ
*€CØ€C„NØ€C„OØ€C„Oà€C„JÜ$ S›k€CÔØ×Ñ×"Ñ"Ô$Ø €JrBÚ
sslcontextc󄇗tj«}dtdttfˆfd„ }||j
_|S)NrLr=có•—|dk(r‰Sy)Nr\ro)rLr\s €r@Úget_extra_infoz)_create_transport.<locals>.get_extra_infoŽsø€Ø ,Ò ØÐ àrB)rÚMockrˆr r0r_Ú side_effect)r\Ú    transportr_s`  r@Ú_create_transportrc‹s<ø€Ü—    ‘    “ €IðœCð¤H¬ZÑ$8õð ,:€I×ÑÔ(Ø ÐrBi.) Ú
match_inforvÚclosingrºÚwriterÚprotocolrbÚpayloadr\Úclient_max_sizerWrär„Úheadersrdrvrerºrfrgrbrhric óÖ—tj«}| dur    tj«} |tdd«krd}|r5tt|««}td„|j«D««}ntt««}d}d|jtjd«j«v}t!||||||dd    |t#|««
}|€
t%«}|    t&ur t)| «}    |t&urrtj«}|    |_tj,|    j/d
«¬ «t1|«_tj,| ¬ «t1|«_|t&ur[tj«}t7d«|_t7d«|_t7d«|_t7d«|_|    |_|    |_||_ tC||
|||| | ¬ «}tE|t&urin|tj««}|jG|«||_$|S#t$r)tj«} d| j
_YŒ9wxYw) 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.
    .rorTc3ófK—|])\}}|jd«|jd«f–—Œ+y­w)zutf-8N)Úencode)Ú.0ÚkÚvs   r@ú    <genexpr>z&make_mocked_request.<locals>.<genexpr>¿s0èø€ò
Ù7;°q¸!ˆQX‰XgÓ  §¡¨Ó 1Ô 2ñ
ùs‚/1ÚchunkedrUNFÚpeername)Ú return_value)ri)%rr`r±r&r$Ú create_futurertr!rrÚtupleÚitemsrîrÚTRANSFER_ENCODINGÚlowerr"rr[r rcrbÚ PropertyMockr_rÓrsrkÚmake_mocked_coroÚ write_headersÚwriteÚ    write_eofÚdrainrfr*r.Úadd_appÚ _match_info)rär„rjrdrvrerºrfrgrbrhr\rirWÚtaskÚraw_hdrsrrÚ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ˆÔÜ'¨Ó-ˆŒ Ø$ˆÔà"€HÔØ€H„Oä
ؐ˜( F¨D°$Èô €Cô%ØœHÑ$‰¨*´d·i±i³kó€Jð×ѐsÔØ €C„Oà €JøôCò    1Ü—9‘9“;ˆDØ.0ˆD× Ñ × +ð    1úsšH6È6.I(É'I(rtÚraise_exceptioncód‡‡—dtdtdtfˆˆfd„ }tj|¬«S)zCreates a coroutine mock.r5rZr=cŸóh•K—‰tur‰‚tj‰«s‰S‰ƒd{–—†y7Œ­wr‚)r ÚinspectÚ isawaitable)r5rZr‡rts  €€r@Ú    mock_coroz#make_mocked_coro.<locals>.mock_coroÿs2øèø€Ø ¤(Ñ *Ø!Ð !Ü×"Ñ" <Ô0ØÐ Ø×Òús ƒ'2ª0«2)Úwraps)rrr`)rtr‡rŒs`` r@r{r{ús.ù€ð
œsð¬cð´cöô 9‰9˜9Ô %Ð%rB)Fr‚)mrr±Ú
contextlibrIrŠrtÚosrErr8ÚabcrrÚtypesrÚtypingrrrr    r
r r r rrrÚunittestrrÚ    aiosignalrÚ    multidictrrÚyarlrrÔÚaiohttp.clientrrrrUrrrÚ client_reqreprÚ    client_wsrÚhelpersr rmr!r"Ústreamsr#r$Útypedefsr%Úwebr&r'r(r)r*r+r,r-r.Ú web_protocolr/rcr0rr4r5r6r7ÚnameÚplatformrGrOrˆr´rArPr?rRrTr¸rÃrÊrr;r²Ú _LOOP_FACTORYÚcontextmanagerÚnew_event_loopr³rAr?r@rUr[r`rcr†r{rorBr@ú<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ôl62Ð-ô62ð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