B `B@srddlZddlZddlZddlmZmZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZddlmZddlmZmZmZmZddlm Z ddl!m"Z"dd l#m$Z$dd l%m&Z&dd l'm(Z(dd l)m*Z*dd l+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8ddl9m:Z:m;Z;mZ>m?Z?m@Z@dZAere(e dge dfZBe(e e2e4ge dfZCe e2ge e4fZDee e2eDge e4fe deDge eDffZEe eEZFeeeeEeGfZHedZIn e(ZBe(ZCe ZDe ZEe ZFeeZHeZIGdddeeJefZKGdddeLZMerZe e eKge dfZNne ZNGdddeNZOdS)N)partialupdate_wrapper) TYPE_CHECKINGAny AsyncIterator AwaitableCallableDictIterableIteratorListMappingMutableMappingOptionalSequenceTupleTypeUnioncast)hdrs)AbstractAccessLoggerAbstractMatchInfoAbstractRouterAbstractStreamWriter) FrozenList)DEBUG)RawRequestMessage) web_logger)Signal) StreamReader) AccessLogger)_fix_request_current_app)RequestHandler)Request)StreamResponse)AbstractRouteDef)Server)AbstractResource AbstractRouteDomain MaskDomainMatchedSubAppResourcePrefixedSubAppResource UrlDispatcher) Application CleanupErrorr/cspeZdZeddddddddd d d d d dddddgZedddddddejee e e ee e efeeejeddddZedddddZere eddfdd Zeed!d"d#Ze ed$d%d&Zdd'd(d)Ze edd*d+d,Ze dd$d-d.Zed'd/d0Zee d'd1d2Z e!ejd'd3d4Z"eejdd5d6d7Z#e!ed'd8d9Z$dd'd:d;Z%e!ed'dd?Z'e!ed'd@dAZ(dddBdCdDZ)e de*dEdFdGZ+e,ge*fde*dHdIdJZ-e de*dKdLdMZ.e e/e0e1dNdOdPZ2e!e3d'dQdRZ4e!e5d'dSdTZ6e!e5d'dUdVZ7e!e5d'dWdXZ8e!dYd'dZd[Z9e!e d'd\d]Z:e!e;d'd^d_Zee?dadbdcZ@de=d`eejee>ee?dadddeZAdd'dfdgZBdd'dhdiZCdd'djdkZDeEfeFeGeHeIdleeEeEdmdndoZJeeKe efd'dpdqZLeEeMdrdsdtZNdd'dudvZOe d'dwdxZPed'dydzZQZRS){r/logger_debug_router_loop _handler_args _middlewares_middlewares_handlers_run_middlewares_state_frozen _pre_frozen_subapps_on_response_prepare _on_startup _on_shutdown _on_cleanup_client_max_size _cleanup_ctxNi.)r1router middlewares handler_argsclient_max_sizeloopdebug)r1rDrErFrGrHrIreturncCs|dkrt}ntjdtddt|ts2t||dk rJtjdtdd|dk rbtjdtdd||_||_||_ ||_ ||_ t ||_ d|_d|_i|_d|_d|_g|_t||_t||_t||_t||_t|_|j|jj|j|jj||_dS)Nzrouter argument is deprecated) stacklevelzloop argument is deprecated.zdebug argument is deprecatedF)r.warningswarnDeprecationWarning isinstancerAssertionErrorr2r3r4r5r1rr6r7r8r9r:r;r<rr=r>r?r@CleanupContextrBappendrA)selfr1rDrErFrGrHrIrCrCj/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/aiohttp/web_app.py__init__hs>         zApplication.__init__)clsrJcCstjd|jtdddS)Nz8Inheritance class {} from web.Application is discouragedrK)rL)rMrNformat__name__rO)rWrCrCrU__init_subclass__s zApplication.__init_subclass__)namevalrJcs2||jkr tjd|tddt||dS)Nz:Setting custom web.Application.{} attribute is discouragedrK)rL)ATTRSrMrNrXrOsuper __setattr__)rTr[r\) __class__rCrUr_s zApplication.__setattr__)otherrJcCs||kS)NrC)rTrarCrCrU__eq__szApplication.__eq__)keyrJcCs |j|S)N)r9)rTrcrCrCrU __getitem__szApplication.__getitem__)rJcCs|jrtjdtdddS)Nz=Changing state of started or joined application is deprecated)rL)r:rMrNrO)rTrCrCrU _check_frozens zApplication._check_frozen)rcvaluerJcCs|||j|<dS)N)rfr9)rTrcrgrCrCrU __setitem__szApplication.__setitem__cCs||j|=dS)N)rfr9)rTrcrCrCrU __delitem__szApplication.__delitem__cCs t|jS)N)lenr9)rTrCrCrU__len__szApplication.__len__cCs t|jS)N)iterr9)rTrCrCrU__iter__szApplication.__iter__cCstjdtddttj|jS)Nzloop property is deprecatedrK)rL)rMrNrOrasyncioAbstractEventLoopr4)rTrCrCrUrHszApplication.loop)rHrJcCsd|dkrt}|jdk r,|j|k r,td||_|jdkrF||_x|jD]}||qNWdS)Nz8web.Application instance initialized with different loop.)rnget_event_loopr4 RuntimeErrorr2 get_debugr< _set_loop)rTrHsubapprCrCrUrss   zApplication._set_loopcCs|jS)N)r;)rTrCrCrU pre_frozenszApplication.pre_frozencCs|jr dSd|_|j|j|j|j|j|j|jt | |_ |j rndnd|_ x$|jD]}||j p|j |_ q|WdS)NTF)r;r6freezer3r=rBr>r?r@tuple_prepare_middlewarer7rEr8r< pre_freeze)rTrtrCrCrUrys        zApplication.pre_freezecCs|jS)N)r:)rTrCrCrUfrozen szApplication.frozencCs4|jr dS|d|_x|jD] }|q WdS)NT)r:ryr<rv)rTrtrCrCrUrv s  zApplication.freezecCstjdtdd|jS)Nzdebug property is deprecatedrK)rL)rMrNrOr2)rTrCrCrUrIszApplication.debug)rtrJcs2tddfdd }|d|d|ddS)N)signamerJcs8t|dddfdd }t|}||dS)Nr/)apprJcsIdHdS)N)send)r|)rtsubsigrCrUhandlerszEApplication._reg_subapp_signals..reg_handler..handler)getattrrS)r{rZappsig)rTrt)r~rU reg_handlers  z4Application._reg_subapp_signals..reg_handler on_startup on_shutdown on_cleanup)str)rTrtrrC)rTrtrU_reg_subapp_signalss zApplication._reg_subapp_signals)prefixrtrJcCs@t|tstd|d}|s(tdtt||}|||S)NzPrefix must be str/zPrefix cannot be empty)rPr TypeErrorrstrip ValueErrorrr- _add_subapp)rTrrtfactoryrCrCrU add_subapp)s   zApplication.add_subapp)resource_factoryrtrJcCsf|jrtd|jrtd|}|j||||j|||jdk rb| |j|S)Nz0Cannot add sub application to frozen applicationzCannot add frozen application) rzrqrDZregister_resourcerr<rSryr4rs)rTrrtresourcerCrCrUr2s     zApplication._add_subapp)domainrtrJcCsFt|tstdnd|kr&t|}nt|}tt||}|||S)NzDomain must be str*)rPrrr+r*rr,r)rTrrtZrulerrCrCrU add_domainBs    zApplication.add_domain)routesrJcCs |j|S)N)rD add_routes)rTrrCrCrUrLszApplication.add_routescCs|jS)N)r=)rTrCrCrUon_response_prepareOszApplication.on_response_preparecCs|jS)N)r>)rTrCrCrUrSszApplication.on_startupcCs|jS)N)r?)rTrCrCrUrWszApplication.on_shutdowncCs|jS)N)r@)rTrCrCrUr[szApplication.on_cleanuprRcCs|jS)N)rB)rTrCrCrU cleanup_ctx_szApplication.cleanup_ctxcCs|jS)N)r3)rTrCrCrUrDcszApplication.routercCs|jS)N)r6)rTrCrCrUrEgszApplication.middlewares)rHaccess_log_class)rHrkwargsrJcKs~t|tstd|||||j|d<||d<|jrbx|jD]\}}|||<qNWt |j f|j |j d|S)NzMaccess_log_class must be subclass of aiohttp.abc.AbstractAccessLogger, got {}rIr)Zrequest_factoryrH) issubclassrrrXrsrvr2r5itemsr'_handle _make_requestr4)rTrHrrkvrCrCrU _make_handlerks     zApplication._make_handlercKs&tjdtdd|jf||d|S)NzFApplication.make_handler(...) is deprecated, use AppRunner API insteadrK)rL)rHr)rMrNrOr)rTrHrrrCrCrU make_handlers zApplication.make_handlercs|j|IdHdS)zmCauses on_startup signal Should be called in the event loop along with the request handler. N)rr})rTrCrCrUstartupszApplication.startupcs|j|IdHdS)zMCauses on_shutdown signal Should be called before cleanup() N)rr})rTrCrCrUshutdownszApplication.shutdowncs|j|IdHdS)zLCauses on_cleanup signal Should be called after shutdown() N)rr})rTrCrCrUcleanupszApplication.cleanupzasyncio.Task[None])messagepayloadprotocolwritertask_clsrJc Cs|||||||j|jdS)N)rG)r4rA)rTrrrrrrrCrCrUrs zApplication._make_requestccsbxNt|jD]@}t|dddkr,|dfVq tjd|tdd|dfVq Wt|dfVdS)NZ__middleware_version__rTz1old-style middleware "{!r}" deprecated, see #2252rK)rLF)reversedr6rrMrNrXrOr")rTmrCrCrUrxs zApplication._prepare_middleware)requestrJc s t}|}|j|IdH}|r>t|ts>td|| || d}||_ |j tj}|r||IdH}|jIdH|dkr|j}|jrxT|jdddD]@}x:|jD]0\} } | rtt| |d|}q| ||IdH}qWqW||IdH}|S)Nz9match_info should be AbstractMatchInfo instance, not {!r})r)rnrprrr3resolverPrrrXZadd_apprvZ _match_infoheadersgetrZEXPECTZexpect_handlerrZdrainrr8Zappsr7rr) rTrrHrIZ match_inforespexpectrr|rZ new_stylerCrCrUrs6   zApplication._handlecCs|S)zgunicorn compatibilityrC)rTrCrCrU__call__szApplication.__call__cCsdt|S)Nz)rXid)rTrCrCrU__repr__szApplication.__repr__cCsdS)NTrC)rTrCrCrU__bool__szApplication.__bool__)SrY __module__ __qualname__ frozensetr]rloggingLoggerrr.r _Middlewarer rrintrnrorVrrZrr_objectboolrbrdrfrhrirkr rmpropertyrHrsruryrzrvrIrr(rrrrr&r r)r_RespPrepareSignalr _AppSignalrrrrrD _MiddlewaresrEr!rr'rrrrrr$rr r#rrrrxr%rrrr __classcell__rCrC)r`rUr/Ps0-      &c@s"eZdZeeedddZdS)r0)rJcCs |jdS)Nr)args)rTrCrCrU exceptionsszCleanupError.exceptionsN)rYrrrr BaseExceptionrrCrCrCrUr0sr0csBeZdZddfdd ZeddddZedddd ZZS) rRN)rJcstg|_dS)N)r^rV_exits)rT)r`rCrUrVs zCleanupContext.__init__)r|rJcs8x2|D]*}||}|IdH|j|qWdS)N) __aiter__ __anext__rrS)rTr|cbitrCrCrUr>s  zCleanupContext._on_startupc sg}xxt|jD]j}y|IdHWn>tk r:Yqtk rd}z||Wdd}~XYqX|t|dqW|rt|dkr|dn td|dS)Nz has more than one 'yield'rrz Multiple errors on cleanup stage) rrrStopAsyncIteration ExceptionrSrqrjr0)rTr|errorsrexcrCrCrUr@s  zCleanupContext._on_cleanup)rYrrrVr/r>r@rrCrC)r`rUrRsrR)PrnrrM functoolsrrtypingrrrrrr r r r r rrrrrrrrabcrrrrZ frozenlistrZhelpersrZ http_parserrlogrZsignalsrZstreamsr Zweb_logr!Zweb_middlewaresr"Z web_protocolr#Z web_requestr$Z web_responser%Z web_routedefr&Z web_serverr'Zweb_urldispatcherr(r)r*r+r,r-r.__all__rrZ_HandlerrrrZ_MiddlewaresHandlersZ_Subappsrr/rqr0Z_CleanupContextBaserRrCrCrCrUs^L              $  5