fZUddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)m*Z+dd l,m-Z-dd lm.Z.m/Z/m0Z0dd l1m2Z2dd l3m4Z4dd l5m6Z6m7Z7ddl8m9Z9m:Z:m;Z;mm?Z?ddl@mAZAddlBmCZCmDZDddlEmFZFdZGerddlHmIZIeeJeJfZKneLZKeMeNeOe+jdddZQee#eOdfeRd<ejdZTee eJeRd<ejdZUee eJeRd<ejdZWeeJeRd<eeAgeeeDfZXe#ede!eJfZYGd d!e%d"#ZZGd$d%e"ed&Z[Gd'd&ejZ]Gd(deKe.Z^Gd)d*e^Z_d+eAd,dfd-Z`Gd.d/e[ZaGd0d1eaZbGd2d3eaZcGd4d5e[ZdGd6d7edZeGd8d9edZfGd:d;ejZgGd<d=egZhGd>d?ehZiGd@dAefZjGdBdCe]ZkGdDdEe]ZlGdFdGe0ZmGdHdIe"ee[ee[ZnGdJdKe"ee]ee]ZoGdLdMe/eeJe[fZpdNeJd,eJfdOZqdNeJd,eJfdPZrdNeJd,eJfdQZsy)RN)contextmanager)wraps)Path)MappingProxyType) TYPE_CHECKINGAny AwaitableCallable ContainerDictFinal GeneratorIterableIteratorListMappingNoReturnOptionalPatternSetSizedTupleType TypedDictUnioncast)URL __version__)hdrs)AbstractMatchInfoAbstractRouter AbstractView)DEBUG) HttpVersion11)HandlerPathLike) HTTPExceptionHTTPExpectationFailed HTTPForbiddenHTTPMethodNotAllowed HTTPNotFound) FileResponse)Request)ResponseStreamResponse)AbstractRouteDef) UrlDispatcherUrlMappingMatchInfoAbstractResourceResource PlainResourceDynamicResource AbstractRoute ResourceRouteStaticResourceView) Application.. YARL_VERSIONz$^[0-9A-Za-z!#\$%&'\*\+\-\.\^_`\|~]+$HTTP_METHOD_REz*(\{[_a-zA-Z][^{}]*(?:\{[^{}]*\}[^{}]*)*\})ROUTE_RE/PATH_SEPr3ceZdZUeed<eed<eeed<eed<eed<eedfed<ded <eed <d ed <eed <y) _InfoDictpath formatterpattern directoryprefixr8routesr<appdomainAbstractRuleMatchingrulehttp_exceptionN) __name__ __module__ __qualname__str__annotations__rrrr(;/usr/lib/python3/dist-packages/aiohttp/web_urldispatcher.pyrErE^sG IN S\O K C( ))  K  !!rWrEF)totalcbeZdZdddeeddfdZedeefdZeejdefdZ ejdede fd Z ejd e defd Zejd eddfd ZejdefdZddZejdedefdZy)r4Nnamer\returnc||_yN_nameselfr\s rX__init__zAbstractResource.__init__rs  rWc|jSr_r`rcs rXr\zAbstractResource.nameu zzrWcy)zWExposes the resource's canonical path. For example '/foo/bar/{name}' NrVrfs rX canonicalzAbstractResource.canonicalyrWkwargsc y)z2Construct url for resource with additional params.NrV)rcrks rXurl_forzAbstractResource.url_forrjrWrequestc Kyw)zWResolve resource. Return (UrlMappingMatchInfo, allowed_methods) pair. NrVrcrns rXresolvezAbstractResource.resolverJcy)zWAdd a prefix to processed URLs. Required for subapplications support. NrVrcrJs rX add_prefixzAbstractResource.add_prefixrjrWcyz;Return a dict with additional info useful for introspectionNrVrfs rXget_infozAbstractResource.get_inforjrWcyr_rVrfs rXfreezezAbstractResource.freezes rWrFcy)z Perform a raw match against pathNrVrcrFs rX raw_matchzAbstractResource.raw_matchrjrWr]N)rQrRrSrrTrdpropertyr\abcabstractmethodrirrmr._ResolverqrvrEryr{boolr~rVrWrXr4r4qs104 hsm 3   AAAA  W         J)JJ  /c/d//rWr4r8c @eZdZddddedeeeefdee dee ddf dZ e defd Z e defd Ze ej deefd Ze dee fd Zej defd Zej dededefdZdedeefdZy)r8Nexpect_handlerresourcemethodhandlerrrr]c`|t}tj|s Jd||j}tj |st |dt|sJ|tj|rntj|rtjdtn_t|trt|t rn>tjdtt#|dt$dt&ffd }||}||_||_||_||_y)NzCoroutine is expected, got z is not allowed HTTP methodz6Bare generators are deprecated, use @coroutine wrapperz-Bare functions are deprecated, use async onesrnr]cK|}tj|r |d{}t|tsJ|S7wr_)asyncio iscoroutine isinstancer0)rnresult old_handlers rXhandler_wrapperz/AbstractRoute.__init__..handler_wrappers@$W-&&v.#)\F!&.999 *s#A?A)_default_expect_handlerriscoroutinefunctionupperr@match ValueErrorcallableinspectisgeneratorfunctionwarningswarnDeprecationWarningrtype issubclassr#rr.r0_method_handler_expect_handler _resource)rcrrrrrrs @rXrdzAbstractRoute.__init__s&  !4N**   < ((: ; < ##F+x'BCD D )')  & &w /   ( ( 1 MMK"  &:g|+L  MMBDV 7^ w >  "K%G  -!rWc|jSr_)rrfs rXrzAbstractRoute.method ||rWc|jSr_)rrfs rXrzAbstractRoute.handlers }}rWcy)z8Optional route's name, always equals to resource's name.NrVrfs rXr\zAbstractRoute.namerjrWc|jSr_)rrfs rXrzAbstractRoute.resources ~~rWcyrxrVrfs rXryzAbstractRoute.get_inforjrWargsrkcy)/Construct url for route with additional params.NrVrcrrks rXrmzAbstractRoute.url_forrjrWrnc@K|j|d{S7wr_)rrps rXhandle_expect_headerz"AbstractRoute.handle_expect_headers))'2222s )rQrRrSrTrr&rr#r_ExpectHandlerr4rdrrrrrr\rrEryrrmr.r0rrVrWrXr8r8sL 48/3 1"1"w\ 2231" !0 1" +, 1" 1"fGhsmGG(#34 J)JJ >S>C>C>>3'3h~>V3rWc eZdZdeeefdeffd ZedefdZ edefdZ ede fdZ ede efdZdefd Zeded fd ZddZeddZed d dedfdZddZdeffd ZxZS)r3 match_dictroutec\t||||_g|_d|_d|_yNF)superrd_route_apps _current_app_frozen)rcrr __class__s rXrdzUrlMappingMatchInfo.__init__s- $ (* 37 rWr]c.|jjSr_)rrrfs rXrzUrlMappingMatchInfo.handlers{{"""rWc|jSr_)rrfs rXrzUrlMappingMatchInfo.routes {{rWc.|jjSr_)rrrfs rXrz"UrlMappingMatchInfo.expect_handlers{{///rWcyr_rVrfs rXrPz"UrlMappingMatchInfo.http_exceptionrWc6|jjSr_)rryrfs rXryzUrlMappingMatchInfo.get_info s{{##%%rW)r<.c,t|jSr_)tuplerrfs rXappszUrlMappingMatchInfo.apps sTZZ  rWrLr<c|jr td|j||_|jj d|y)Nz-Cannot change apps stack after .freeze() callr)r RuntimeErrorrrinsertrcrLs rXadd_appzUrlMappingMatchInfo.add_apps= <<NO O    $ #D  !S!rWc&|j}|J|Sr_)rrs rX current_appzUrlMappingMatchInfo.current_apps rW)NNNc#Ktr3||jvr%tdj|j||j}||_ d||_y#||_wxYww)Nz1Expected one of the following apps {!r}, got {!r})r$rrformatr)rcrLprevs rXset_current_appz#UrlMappingMatchInfo.set_current_appsf $**$"GNN C    %  $D D sA A(AA( A%%A(cd|_y)NT)rrfs rXr{zUrlMappingMatchInfo.freeze-s  rWcBdt|d|jdS)Nz )r__repr__rrcrs rXrzUrlMappingMatchInfo.__repr__0s%UW-/04;;-qAArW)rLr<r]N)r]r<r)rQrRrSr rTr8rdrr&rrrrrr(rPrEryrrrrrrrr{r __classcell__rs@rXr3r3s4S>-###}000 7&)&!e./!!"  %= %Y?O5P % %B#BBrWcJeZdZdeddffd ZedefdZdefdZxZ S)MatchInfoErrorrPr]NcZ||_t| it|jyr_) _exceptionrrd SystemRoutercrPrs rXrdzMatchInfoError.__init__5s"( [9:rWc|jSr_)rrfs rXrPzMatchInfoError.http_exception9 rWcvdj|jj|jjS)Nz)rrstatusreasonrfs rXrzMatchInfoError.__repr__=s.(// OO " "DOO$:$:  rW) rQrRrSr(rdrrPrTrrrs@rXrr4s=;};;  # rWrrnr]cK|jjtjd}|jt k(rF|j dk(r$|jjdd{ytd|zy7w)zDefault handler for Expect header. Just send "100 Continue" to client. raise HTTPExpectationFailed if value of header is not "100-continue" z 100-continuesHTTP/1.1 100 Continue NzUnknown Expect: %s)text) headersgetr EXPECTversionr%lowerwriterwriter))rnexpects rXrrCsn __ b 1F-' <<>^ +..&&'GH H H'-AF-JK K ( HsA/B 1B2B c eZdZdddeeddffdZdddedeeee fd ee dd fd Z dd Z d e defdZej"dedeeeeffdZdefdZded fdZxZS)r5Nr[r\r]c4t||g|_y)Nr[)rrd_routes)rcr\rs rXrdzResource.__init__Rs d#,. rWrrrrr9c|jD]I}|j|k(s|jtjk(s0t dj |t ||||}|j||S)NzOAdded route will never be executed, method {route.method} is already registered)rr)rrr METH_ANYrrr9register_route)rcrrr route_objs rX add_routezResource.add_routeVsz I6)Y-=-=-N"!!'i!8 "&'4W  I&rWcnt|ts Jd||jj|y)Nz)Instance of Route class is required, got )rr9rappendrcrs rXrzResource.register_routejs> =  A 6ui @ A  E"rWrnc<Kt}|j|jj}|d|fS|jD]Q}|j }|j |||j k(s|tjk(sCt|||fcSd|fSwr_) set_matchrel_urlraw_pathrraddr rr3)rcrnallowed_methodsrr route_methods rXrqzResource.resolveps$'E[[!9!9:  ( ( )I$++L    -w~~-1N+J BOTT  )( (s BBBrFcyr_rVr}s rXrzResource._matchs rWc,t|jSr_lenrrfs rX__len__zResource.__len__4<<  rWc,t|jSr_)iterrrfs rX__iter__zResource.__iter__sDLL!!rW)rr9r]N)rQrRrSrrTrdrrr#r&rrrr.rrqrrr rintrrr rrs@rXr5r5Qs04/ //48 tL)723 !0   (# )W))   3 8DcN#;  !!"(?3"rWr5ceZdZdddedeeddffdZedefdZddZd eddfd Z dedee eeffd Z dede fd Z defd ZdefdZdefdZxZS)r6Nr[rFr\r]c^t|||r|jdsJ||_y)Nr[rB)rrd startswith_path)rcrFr\rs rXrdzPlainResource.__init__s. d#4??3/// rWc|jSr_rrfs rXrizPlainResource.canonicalrgrWc,|jsd|_yy)NrBrrfs rXr{zPlainResource.freezeszzDJrWrJc|jdsJ|jdrJt|dkDsJ||jz|_yNrBr)r endswithrrrus rXrvzPlainResource.add_prefixsH  %%%??3'''6{Qdjj( rWc&|j|k(riSyr_rr}s rXrzPlainResource._matchs :: IrWc |j|k(Sr_rr}s rXr~zPlainResource.raw_matchszzT!!rWcd|jiS)NrFrrfs rXryzPlainResource.get_infos ##rWcDtj|jdSNTrFencoded)rbuildrrfs rXrmzPlainResource.url_forsyydjj$77rWch|jd|jzdznd}d|d|jdS)N'' rzsTYY%B a |155rWr)rQrRrSrTrrdrrir{rvr rrr~rEryrrmrrrs@rXr6r6s;?S8C=D 3))) 38DcN#;"c"d"$)$886#6rWr6ceZdZejdZejdZdZdddede eddffd Z e defd Z d eddfd Z dede eeeffd ZdedefdZdefdZdedefdZdefdZxZS)r7z#\{(?P[_a-zA-Z][_a-zA-Z0-9]*)\}z.\{(?P[_a-zA-Z][_a-zA-Z0-9]*):(?P.+)\}z[^{}/]+Nr[rFr\r]cvt ||d}d}tj|D]}|jj |}|rI|dj |jd|jz }|d|jdzdzz }j|jj |}|r>|dj di|jz }|d|jdzdzz }d|vsd|vrtd|d |d t|}||z }|tj|z }  tj|}|j"j%t&sJ|j%d sJ||_||_y#tj $r}td |d |dd}~wwxYw)Nr[rz (?P<{}>{})var{}z(?P<{var}>{re})zInvalid path 'z'['z']z Bad pattern 'z': rBrV)rrdrAsplitDYN fullmatchrgroupGOOD DYN_WITH_RE groupdictr _requote_pathreescapecompileerrorrHr rC_pattern _formatter) rcrFr\rHrGpartrcompiledexcrs rXrdzDynamicResource.__init__s d# NN4( 'DHH&&t,E<..u{{5/A499MMS5;;u#55;; $$..t4E3,33Heoo6GHHS5;;u#55;; d{cTk >$s4&!CDD &D  I ryy &G% '( Jzz'*H**8444##C(((  # xx J}WIS>?T I Js6FF8!F33F8c|jSr_r3rfs rXrizDynamicResource.canonicalrrWrJc |jdsJ|jdrJt|dkDsJtjtj ||j jz|_||jz|_yr) r rrr.r0r/r2rHr3rus rXrvzDynamicResource.add_prefixsp  %%%??3'''6{Q 299V#4t}}7L7L#LM  4??2rWc|jj|}|y|jjDcic]\}}|t |c}}Scc}}wr_)r2r(r,items _unquote_path)rcrFrkeyvalues rXrzDynamicResource._matchs\ ''- ==BOO)r\rG)r\rr3rbs rXrzDynamicResource.__repr__s@)-)>sTYY%B5<<=  rW)rQrRrSr.r0r'r+r*rTrrdrrirvr rrr~rEryrrmrrrs@rXr7r7s "**; FF> d#$V,  s* rWc|jSr_)rLrfs rXrizPrefixResource.canonical rrWc|jdsJ|jdrJt|dkDsJ||jz|_|jdz|_yr)r rrrLrMrus rXrvzPrefixResource.add_prefixsX  %%%??3'''6{Q ,  s* rWcyrrVrus rXr~zPrefixResource.raw_matchsrW) rQrRrSrTrrdrrirvrr~rrs@rXrJrJse=A+s+Xc]+d+3+++rWrJceZdZdZddddddddededeed eed ed e d e d e ddffdZ ddded ee de fdZ e dedefdZdefdZdeddfdZdedefdZdefdZdeefdZdedefdZdedefdZdefdZxZ S) r:rFNFr\r chunk_size show_indexfollow_symlinksappend_versionrJrIr\rrTrUrVrWr]c@t ||| t|}t|j dr1tt j jt|}|j}|js td ||_ ||_ ||_||_||_||_t%d|j&||t%d|j&||d |_y#ttf$r} td|d| d} ~ wwxYw) Nr[~zNot a directoryzNo directory exists at 'rGETrHEAD)rZr[)rrdrrTr osrF expanduserrqis_dirrFileNotFoundError _directory _show_index _chunk_size_follow_symlinksr_append_versionr9_handler) rcrJrIr\rrTrUrVrWr1rs rXrdzStaticResource.__init__s d+ QYI9~((- !3!3C N!CD !))+I##% !233&$%% /--!t||T." d>   ":. Q7 {!DE5 P QsBC99DDD)rWfilenamecN| |j}t|jd}tj|j d}t dkr||jddz }n||z }|r|jj|} |jrTttjj|}|j|j|j!}n+|j!}|j|j|j'rZ|j)d5}|j+}ddd|j-} |j/|j0| i}|S|S#t"t$f$r|cYSwxYw#1swYRxYw)NrBTrr%%25rb)rdrTlstriprrrLr?replacer`joinpathrcrr\rFnormpath relative_torqrr_is_fileopenread_get_file_hash with_query VERSION_KEY) rcrfrWrGunresolved_pathnormalized_pathfilepathf file_byteshs rXrmzStaticResource.url_forDsr  !!11Nx='',iiT\\48 & ((e44C.C "oo66x@O ((&*277+;+;O+L&MO#//@.668H.668H((9 !]]4(*A!"J*'' 3nnd&6&6%:;   12   **s B F9FFFF$ byte_arrayctj}|j|tj|j }|j dS)Nascii)hashlibsha256updatebase64urlsafe_b64encodedigestdecode)r~mb64s rXruzStaticResource._get_file_hashms? NN  &&qxxz2zz'""rWcJ|j|j|jdS)N)rIrJrK)r`rLrrfs rXryzStaticResource.get_infots!llll  rWrcd|jvr tdtd|||j|jd<y)NOPTIONSzOPTIONS route was set alreadyr)rrr9r)rcrs rXset_options_routez StaticResource.set_options_route{s<  $>? ?"/ wT5I5I#  YrWrncvK|jj}|j}t|j}|j |j s||jk7r dtfS||vrd|fSdt|t|jdzdi}t||j||fSw)Nrfr) rrrrrr rMrLr<rr3)rcrnrFrrrs rXrqzStaticResource.resolves''dll+t}}-$$,,2F;   (( ( -S5F5J5L0M"NO #J V0DEWWsB7B9c,t|jSr_rrfs rXrzStaticResource.__len__rrWcHt|jjSr_)rrvaluesrfs rXr zStaticResource.__iter__sDLL'')**rWcK|jd} t|}|jr t|jj |}|j rTttjj|}|j|j|j}n+|j}|j|j|j'r3|j(r t+|j-|dSt|j1rt3||j4St#ttf$r}t|d}~wt$rt$r5}|j j"j%|t|d}~wwxYw#t.$r twxYww)Nrfz text/html)r content_type)rT) match_inforanchorr*r`rorcr\rFrprqrqrr_r, ExceptionrLlogger exceptionr^rar/_directory_as_htmlPermissionErrorrrr-rb)rcrnrrfrxryrzr1s rXrezStaticResource._handles$$Z0 ,G}H$o%"oo66x@O$$"&rww'7'7'H"I++DOO<*224*224$$T__5 ?? *#!44X>[ $o%    T5E5EF F 1-. ,.e +   , KK   ( ( /.e + ,'*'/)*sMGCE G7F18G F. E$$F.90F))F..G1GGrzcX|jsJ|j|jj}d|}d|d}g}|j }t |D]}|j|jj}|j dz|z} |jr|jd} n |j} |jdj| | djdj|} d |d| d } d |d } d | d| d}|S)Nz Index of /z

z

rBz#
  • {name}
  • )rGr\z
      {}
     z z z z z z ) r^rqr`as_posixiterdirsortedrLr\rrjoin)rcrzrelative_path_to_dirindex_ofh1 index_list dir_index_filerel_pathfile_url file_nameulbodyhead_strhtmls rXrz!StaticResource._directory_as_htmlsF   '33DOODMMO 456H:U # $$& I& E((9BBDH||c)H4H||~$zzl!, !JJ   5<< y=    % %dii &; <"Rt9-$XJ.?@(2dV95 rWc|jd|jzdznd}dj||j|jS)Nrrz/ {directory!r}>)r\rFrI)r\rrLr`rbs rXrzStaticResource.__repr__sG(, (=sTYY$2@GGDLLDOOH  rW)!rQrRrSrwrTr'rrr rrdrrm staticmethodbytesrurEryr&rr.rrqrrr8r r0rerrrrrs@rXr:r:sXK#37$ %$$ $ $ sm $ !0 $ $ $ $ $  $ T*. ''! ' 'R#5#S##  )   T  XW X X!!+(=1+)W))V"4"C"H # rWr:ceZdZdeddddffd Zdeddffd Zded edefd Zdefd Z d e de fd Z de fdZdeefdZdefdZxZS)PrefixedSubAppResourcerJrLr<r]Nct||||_|jj D]}|j |yr_)rrd_approuter resourcesrv)rcrJrLrrs rXrdzPrefixedSubAppResource.__init__sA    ,,. (H    ' (rWct|||jjj D]}|j|yr_)rrvrrr)rcrJrrs rXrvz!PrefixedSubAppResource.add_prefixs@ 6" ((224 (H    ' (rWrrkctd)Nz3.url_for() is not supported by sub-application rootrrs rXrmzPrefixedSubAppResource.url_forsSTTrWc4|j|jdS)N)rLrJ)rrLrfs rXryzPrefixedSubAppResource.get_infosyyDLL99rWrncK|jjj|js/|jj|jk7r dt fS|j jj|d{}|j|j t|jtr|jj}||fSt }||fS7awr_)rGrr rMrLrrrrqrrrPr+rrcrnrmethodss rXrqzPrefixedSubAppResource.resolves $$// > $$ 4; 99++33G<< 499% j//1E F //??G7""eG7"" =sBC- C+ A"C-c\t|jjjSr_)rrrrKrfs rXrzPrefixedSubAppResource.__len__ s 499##**,--rWc\t|jjjSr_)rrrrKrfs rXr zPrefixedSubAppResource.__iter__s DII$$++-..rWcPdj|j|jS)Nz, {app!r}>)rJrL)rrLrrfs rXrzPrefixedSubAppResource.__repr__s(=DD<z$Domain.validation..;s N4<<))!,Ns%(zDomain not validP:) rrT TypeErrorrstriprrrraw_hostallr&port)rcrMrGs` rXrzDomain.validation1s&#&01 1s#))+56 6 f_34 4)f$%||'''Ncll6H6H6MNN/0 0 88r><< ,,q ++rWrncK|jjtj}|sy|j |Swr)rrr HOST match_domain)rcrnhosts rXrz Domain.matchAs5""499-  &&s>Arc<|j|jk(Sr_)rrrcrs rXrzDomain.match_domainGszz|t||++rWcd|jiS)NrMrrfs rXryzDomain.get_infoJs$,,''rW)rQrRrSr.r0rrTrdrrirr.rrrrEryrrs@rXrr&sbjj56G/s/t/3,,, '7't' ,,,()(rWrcreZdZejdZdeddffd ZedefdZ dede fdZ xZ S) MaskDomainz(?!-)[a-z\d\*-]{1,63}(?A"C>Cc:dj|jS)Nz" {app!r}>)rL)rrrfs rXrzMatchedSubAppResource.__repr__ws6==$))=LLrW)rQrRrSrNrdrrTrirEryr.rrqrrVrWrXrr^se1 $ $3$$6)6 #W # #M#MrWrc eZdZdZdddedeeeefde de e ddf fd Z defd Z ede efd Zd ed edefdZdefdZxZS)r9zA route with resourceNrrrrrr]c,t|||||y)Nr)rrd)rcrrrrrs rXrdzResourceRoute.__init__~s   GNX  rWcfdj|j|j|jS)Nz3 {handler!r})rrr)rrrrrfs rXrzResourceRoute.__repr__s.DKK;;L  rWcH|jy|jjSr_)rr\rfs rXr\zResourceRoute.names >> !~~"""rWrrkcV|jJ|jj|i|S)r)rrmrs rXrmzResourceRoute.url_fors.~~)))%t~~%%t6v66rWcR|jJ|jjSr_)rryrfs rXryzResourceRoute.get_infos%~~)))~~&&((rW)rQrRrS__doc__rTrr&rr#r4rrrdrrr\rrmrEryrrs@rXr9r9{s48    w\ 223  #  !0      # #hsm## 7S7C7C7 )))rWr9ceZdZdeddffd ZdededefdZede efdZ de fd Z d e defd Zedefd Zedefd ZdefdZxZS)rrPr]Ncdt|tj|j||_yr_)rrdr rre_http_exceptionrs rXrdzSystemRoute.__init__s"  5-rWrrkctd)Nz).url_for() is not allowed for SystemRouterrs rXrmzSystemRoute.url_forsFGGrWcyr_rVrfs rXr\zSystemRoute.namerrWcd|jiS)NrPrrfs rXryzSystemRoute.get_infos $"6"677rWrnc"K|jwr_rrps rXrezSystemRoute._handles"""s c.|jjSr_)rrrfs rXrzSystemRoute.status##***rWc.|jjSr_)rrrfs rXrzSystemRoute.reasonrrWc&dj|S)Nz*rf)rrfs rXrzSystemRoute.__repr__s;BBBMMrW)rQrRrSr(rdrTrrmrrr\rEryr.r0rer rrrrrs@rXrrs.}..HSHCHCHhsm8)8#W##++++++N#NrWrc<eZdZdefdZdeedeffdZdefdZ y)r;r]cBK|jjtjvr|j t ||jjj d}||j |d{}t|tsJ|S7wr_) rnrr METH_ALL_raise_allowed_methodsgetattrrrr0)rcrrets rX_iterz View._iters} <<  dmm 3  ' ' )t||2288:DA >  ' ' )Hn#~... sBBBBNc>|jjSr_)r  __await__rfs rXr zView.__await__szz|%%''rWctjDchc]}t||js|!}}t |j j |cc}wr_)r rhasattrrr+rnr)rcrrs rXrzView._raise_allowed_methodssE&*mmPwtQWWY7O1PP"4<<#6#6HHQs AA) rQrRrSr0r rrr rrrVrWrXr;r;s4 ^ (9S$%>?(IIrWr;cPeZdZdeeddfdZdefdZdeefdZ de de fdZ y) ResourcesViewrr]Nc||_yr_ _resources)rcrs rXrdzResourcesView.__init__s #rWc,t|jSr_)rrrfs rXrzResourcesView.__len__s4??##rWc#8K|jEd{y7wr_rrfs rXr zResourcesView.__iter__s??"" rc||jvSr_rrcrs rX __contains__zResourcesView.__contains__s4??**rW) rQrRrSrr4rdr rrr objectrrrVrWrXrrsL$$'7"8$T$$$#(#34#+V++rWrcLeZdZdeefdZdefdZdee fdZ de de fdZ y) RoutesViewrcdg|_|D]$}|D]}|jj|&yr_)rr)rcrrrs rXrdzRoutesView.__init__s9,. ! +H! + ##E* + +rWr]c,t|jSr_rrfs rXrzRoutesView.__len__rrWc#8K|jEd{y7wr_rrfs rXr zRoutesView.__iter__s<<rrc||jvSr_rrs rXrzRoutesView.__contains__s $$rWN)rQrRrSrr4rdr rrr8r rrrrVrWrXrrsD+$'7"8+ !! (=1 %&%T%rWrceZdZejdZd1fd ZdedefdZ de e fdZ de fdZd edefd Zd e defd Zdefd ZdefdZdee effdZd eddfdZddde d ee defdZdddde de deee e!fd ee dee"de#f dZ$dddddddde de%d ee dee"de deded edefd!Z&de ded"e'de#fd#Z(de ded"e'de#fd$Z)dd%d&de ded ee d'ed"e'de#f d(Z*de ded"e'de#fd)Z+de ded"e'de#fd*Z,de ded"e'de#fd+Z-de ded"e'de#fd,Z.de de e!d"e'de#fd-Z/d1fd. Z0d/e1e2de3e#fd0Z4xZ5S)2r2z[.:-]r]Nc>t|g|_i|_yr_)rrdr_named_resourcesrs rXrdzUrlDispatcher.__init__s 24=?rWrncK|j}t}|jD])}|j|d{\}}||cS||z}+|rt t ||St t S7>wr_)rrrrqrr+r,)rcrnrrrralloweds rXrqzUrlDispatcher.resolves$'E +H(0(8(8(A"A J%!!7*  + !"6v"OP P!,.1 1#Bs:A=A;?A=c,t|jSr_)rr#rfs rXr zUrlDispatcher.__iter__ sD))**rWc,t|jSr_)rr#rfs rXrzUrlDispatcher.__len__ s4(())rWrc||jvSr_r#rs rXrzUrlDispatcher.__contains__s40000rWr\c |j|Sr_r)rbs rX __getitem__zUrlDispatcher.__getitem__s$$T**rWc,t|jSr_)rrrfs rXrzUrlDispatcher.resourcessT__--rWc,t|jSr_)rrrfs rXrKzUrlDispatcher.routess$//**rWc,t|jSr_)rr#rfs rXnamed_resourceszUrlDispatcher.named_resourcess 5 566rWc"t|ts Jd||jr td|j}||j j |}|D]P}tj|rtd|d|jr8tdj|||jvr(tdj||j|||j|<|jj|y)Nz4Instance of AbstractResource class is required, got z.Cannot register a resource into frozen router.zIncorrect route name z/, python keywords cannot be used for route namezoIncorrect route name {!r}, the name should be a sequence of python identifiers separated by dash, dot or columnz'Duplicate {!r}, already handled by {!r})rr4frozenrr\ NAME_SPLIT_REr&keyword iskeywordr isidentifierrr#rr)rcrr\rAr4s rXregister_resourcezUrlDispatcher.register_resources) &  O A( N O  ;;OP P}}  &&,,T2E $$T*$/x8)) ((*$128  t,,, ..4fT4;P;PQU;V.W+3D ! !$ ' x(rWr[rFc|r|jds td|jr?|jd}|j|k(r!|j |rt t |Sd|vsBd|vs>tj|s)tt||}|j||St||}|j||S)NrBz)path should be started with / or be emptyr$r%r[) r rrr\r~rr5rAsearchr6r-r6r7)rcrFr\rs rX add_resourcezUrlDispatcher.add_resource?s ,HI I ??r*H}}$););D)AHh//t sd{hood.C$]4%8tDH  " "8 ,O"4d3 x(rW)r\rrrrcP|j||}|j|||S)Nr[r)r:r)rcrrFrr\rrs rXrzUrlDispatcher.add_routeOs1$$T$5!!&'.!QQrWrRFrSrJrTrUrVrWc |jdsJ|jdr|dd}t||||||||} |j| | S)z^Add static files view. prefix - url prefix path - folder with files rBNr8rS)r rr:r6) rcrJrFr\rrTrUrVrWrs rX add_staticzUrlDispatcher.add_static[sf$  %%% ??3 CR[F!  )!!+)   x(rWrkc H|jtj||fi|S)z(Shortcut for add_route with method HEAD.)rr METH_HEADrcrFrrks rXadd_headzUrlDispatcher.add_head} t~~dnndGFvFFrWc H|jtj||fi|S)z+Shortcut for add_route with method OPTIONS.)rr METH_OPTIONSr@s rX add_optionszUrlDispatcher.add_optionss"t~~d//wI&IIrWT)r\ allow_headrFc |j||}|r"|jtj|fi||jtj|fi|S)zShortcut for add_route with method GET. If allow_head is true, another route is added allowing head requests to the same endpoint. r[)r:rr r?METH_GET)rcrFrr\rFrkrs rXadd_getzUrlDispatcher.add_getsU$$T$5  H  t~~w A& A!x!!$--CFCCrWc H|jtj||fi|S)z(Shortcut for add_route with method POST.)rr METH_POSTr@s rXadd_postzUrlDispatcher.add_postrBrWc H|jtj||fi|S)z'Shortcut for add_route with method PUT.)rr METH_PUTr@s rXadd_putzUrlDispatcher.add_puts t~~dmmT7EfEErWc H|jtj||fi|S)z)Shortcut for add_route with method PATCH.)rr METH_PATCHr@s rX add_patchzUrlDispatcher.add_patchs t~~dootWGGGrWc H|jtj||fi|S)z*Shortcut for add_route with method DELETE.)rr METH_DELETEr@s rX add_deletezUrlDispatcher.add_deletes"t~~d..gHHHrWc H|jtj||fi|S)z?Shortcut for add_route with ANY methods for a class-based view.)rr rr@s rXadd_viewzUrlDispatcher.add_views"t~~dmmT7EfEErWcdt||jD]}|jyr_)rr{r)rcrrs rXr{zUrlDispatcher.freezes*  H OO  rWrKcXg}|D]"}|j|j|$|S)zAppend routes to route table. Parameter should be a sequence of RouteDef objects. Returns a list of registered AbstractRoute instances. )extendregister)rcrKregistered_routes route_defs rX add_routeszUrlDispatcher.add_routess8 ?I  $ $Y%7%7%= > ?  rWr)6rQrRrSr.r0r2rdr.r3rqrrTr r rrrrr4r+rrrrKrr/r6rr5r:rr&rr#rr8rr'r=rrArErIrLrOrRrUrWr{rr1rr^rrs@rXr2r2sBBJJx(M@ 2W21D2 +(3-+**1V11++(8+.=.+ +7.>)>!?7)*:)t)B@Dx},#37 R R Rw\ 223 R sm R!0 R  R"#37$ %$    sm  !0       DGSG7GcGmGJJgJJJ# DDD sm D  DD D&GSG7GcGmGFCF'FSF]FHcHGHsH}HIsIWII IFF"&|"4F@CF F  !*:!; !]@S !rWr2r>cztdkr|jdd}tj|djS)NrhrjrkFr)r?rnrrrr>s rXrDrDs1f c5) 99% / 8 88rWcDtj|djSr)rrrFr`s rXr<r<s 99% . 3 33rWcHt|}d|vr|jdd}|S)Nrjrk)rDrn)r>rs rXr-r-s* F e|s+ MrW)trrrrrr3r\r.r contextlibr functoolsrpathlibrtypesrtypingrrr r r r r rrrrrrrrrrrrrrryarlrr yarl_versionrr r!r"r#helpersr$httpr%typedefsr&r'web_exceptionsr(r)r*r+r,web_fileresponser- web_requestr. web_responser/r0 web_routedefr1__all__web_appr<rTBaseDictdictrmapr r&r?rUr0r@rAr/rCrrrEr4ABCr8r3rrr5r6r7rJr:rrNrrrr9rr;rrr2rDr<r-rVrWrXrxs   %"22@@'+ 2* $CH~HH',S6Hl6H6H6Mbq6Q-R'S eE#s(O$S&0bjj+'gcl#!+ 1!% !ryy~%*%7)Yx/G%HHI /0#c(: ;" "&,/uh7,/^N3CGGN3b@B($5@BF  (   L7 Lt L7"7"x&6H&6RI hI X%2M ^M `) ^) X 377 %( !%(P 6 6 M2M:!)M!)HN-N<I<I( +E8$45yAQ7R +%/=1I%"M!NGC1A,A$BM!`9s9s9 444rW