§
    %xÅjƒ  ã                  ó  — d dl mZ d dlmZmZmZmZ d dlmZm	Z	m
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 d dlmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$  e
dd¬¦  «        Z% e	d¦  «        Z& G d„ d¦  «        Z'dS )é    )Úannotations)Ú	AwaitableÚCallableÚMappingÚSequence)ÚAnyÚ	ParamSpecÚTypeVar)ÚStateÚURLPath)Ú
MiddlewareÚ_MiddlewareFactory)ÚRequestBodyLimitMiddleware)ÚServerErrorMiddleware)ÚExceptionMiddleware)ÚRequest)ÚResponse)Ú	BaseRouteÚRouter)ÚASGIAppÚExceptionHandlerÚLifespanÚReceiveÚScopeÚSendÚAppTypeÚ	Starlette)ÚboundÚPc                  ó�   — e Zd ZdZ	 	 	 	 	 d@ddœdAd„ZdBd„ZedCd„¦   «         ZdDd„ZdEd&„Z	dFdGd*„Z
dFdHd,„ZdId3„ZdJd8„Z	 	 	 dKdLd?„ZdS )Mr   z Creates a Starlette application.FN©Úmax_body_sizeÚselfr   ÚdebugÚboolÚroutesúSequence[BaseRoute] | NoneÚ
middlewareúSequence[Middleware] | NoneÚexception_handlersú%Mapping[Any, ExceptionHandler] | NoneÚlifespanúLifespan[AppType] | Noner"   ú
int | NoneÚreturnÚNonec               óâ   — || _         t          ¦   «         | _        t          ||¬¦  «        | _        || _        |€i nt          |¦  «        | _        |€g nt          |¦  «        | _	        d| _
        dS )aå  Initializes the application.

        Parameters:
            debug: Boolean indicating if debug tracebacks should be returned on errors.
            routes: A list of routes to serve incoming HTTP and WebSocket requests.
            middleware: A list of middleware to run for every request. A starlette
                application will always automatically include two middleware classes.
                `ServerErrorMiddleware` is added as the very outermost middleware, to handle
                any uncaught errors occurring anywhere in the entire stack.
                `ExceptionMiddleware` is added as the very innermost middleware, to deal
                with handled exception cases occurring in the routing or endpoints.
            exception_handlers: A mapping of either integer status codes,
                or exception class types onto callables which handle the exceptions.
                Exception handler callables should be of the form
                `handler(request, exc) -> response` and may be either standard functions, or
                async functions.
            lifespan: A lifespan context function, which can be used to perform
                startup and shutdown tasks. This is a newer style that replaces the
                `on_startup` and `on_shutdown` handlers. Use one or the other, not both.
            max_body_size: Non-negative maximum total size in bytes of an HTTP request
                body. The default, `None`, does not limit request body size.
        )r,   N)r$   r   Ústater   Úrouterr"   Údictr*   ÚlistÚuser_middlewareÚmiddleware_stack)r#   r$   r&   r(   r*   r,   r"   s          úGC:\Projects\Historical\venv\Lib\site-packages\starlette/applications.pyÚ__init__zStarlette.__init__   st   € ð@ ˆŒ
Ý‘W”WˆŒ
Ý˜V¨hÐ7Ñ7Ô7ˆŒØ*ˆÔØ(:Ð(B " "ÍÐM_ÑH`ÔH`ˆÔØ%/Ð%7˜r˜r½TÀ*Ñ=MÔ=MˆÔØ04ˆÔÐÐó    r   c                óÔ  — | j         }d }i }| j                             ¦   «         D ]\  }}|dt          fv r|}Œ|||<   Œt	          t
          ||¬¦  «        g}| j        �.|                     t	          t          | j        ¬¦  «        ¦  «         || j	        z  }|                     t	          t          ||¬¦  «        ¦  «         | j        }t          |¦  «        D ]\  }}	}
 ||g|	¢R i |
¤Ž}Œ|S )Niô  )Úhandlerr$   r!   )Úhandlersr$   )r$   r*   ÚitemsÚ	Exceptionr   r   r"   Úappendr   r6   r   r3   Úreversed)r#   r$   Úerror_handlerr*   ÚkeyÚvaluer(   ÚappÚclsÚargsÚkwargss              r8   Úbuild_middleware_stackz Starlette.build_middleware_stack?   s!  € Ø”
ˆØˆØ:<ÐàÔ1×7Ò7Ñ9Ô9ð 	0ð 	0‰JˆC�Ø�s�IÐ&Ð&Ð&Ø %��à*/Ð" 3Ñ'Ð'å Õ!6ÀÐUZÐ[Ñ[Ô[Ð\ˆ
ØÔÐ)Ø×Ò�jÕ)CÐSWÔSeÐfÑfÔfÑgÔgÐgØ�dÔ*Ñ*ˆ
Ø×Ò�*Õ%8ÐCUÐ]bÐcÑcÔcÑdÔdÐdàŒkˆÝ!)¨*Ñ!5Ô!5ð 	,ð 	,ÑˆC��vØ�#�cÐ+˜DÐ+Ð+Ð+ FÐ+Ð+ˆCˆCØˆ
r:   úlist[BaseRoute]c                ó   — | j         j        S ©N)r3   r&   )r#   s    r8   r&   zStarlette.routesU   s   € àŒ{Ô!Ð!r:   ÚnameÚstrÚpath_paramsr   r   c               ó(   —  | j         j        |fi |¤ŽS rL   )r3   Úurl_path_for)r#   rM   rO   s      r8   rQ   zStarlette.url_path_forY   s   € Ø'ˆtŒ{Ô'¨Ð<Ð<°Ð<Ð<Ð<r:   Úscoper   Úreceiver   Úsendr   c              ƒ  óŽ   K  — | |d<   | j         €|                      ¦   «         | _         |                       |||¦  «        ƒ d {V —† d S )NrE   )r7   rI   )r#   rR   rS   rT   s       r8   Ú__call__zStarlette.__call__\   s\   è è € Øˆˆe‰ØÔ Ð(Ø$(×$?Ò$?Ñ$AÔ$AˆDÔ!Ø×#Ò# E¨7°DÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r:   ÚpathrE   ú
str | Nonec                ó@   — | j                              |||¬¦  «         d S ©N)rE   rM   )r3   Úmount)r#   rW   rE   rM   s       r8   r[   zStarlette.mountb   s%   € ØŒ×Ò˜$ C¨dÐÑ3Ô3Ð3Ð3Ð3r:   Úhostc                ó@   — | j                              |||¬¦  «         d S rZ   )r3   r\   )r#   r\   rE   rM   s       r8   r\   zStarlette.hoste   s%   € ØŒ×Ò˜ 3¨TÐÑ2Ô2Ð2Ð2Ð2r:   Úmiddleware_classú_MiddlewareFactory[P]rG   úP.argsrH   úP.kwargsc                ó„   — | j         �t          d¦  «        ‚| j                             dt	          |g|¢R i |¤Ž¦  «         d S )Nz6Cannot add middleware after an application has startedr   )r7   ÚRuntimeErrorr6   Úinsertr   )r#   r^   rG   rH   s       r8   Úadd_middlewarezStarlette.add_middlewareh   sR   € ØÔ Ð,ÝÐWÑXÔXÐXØÔ×#Ò# A¥zÐ2BÐ'TÀTÐ'TÐ'TÐ'TÈVÐ'TÐ'TÑUÔUÐUÐUÐUr:   Úexc_class_or_status_codeúint | type[Exception]r<   r   c                ó   — || j         |<   d S rL   )r*   )r#   rf   r<   s      r8   Úadd_exception_handlerzStarlette.add_exception_handlerm   s   € ð
 =DˆÔÐ 8Ñ9Ð9Ð9r:   TÚrouteú3Callable[[Request], Awaitable[Response] | Response]Úmethodsúlist[str] | NoneÚinclude_in_schemac                óD   — | j                              |||||¬¦  «         d S )N)rl   rM   rn   )r3   Ú	add_route)r#   rW   rj   rl   rM   rn   s         r8   rp   zStarlette.add_routet   s,   € ð 	Œ×Ò˜d E°7ÀÐYjÐÑkÔkÐkÐkÐkr:   )FNNNN)r#   r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r"   r.   r/   r0   )r/   r   )r/   rJ   )rM   rN   rO   r   r/   r   )rR   r   rS   r   rT   r   r/   r0   rL   )rW   rN   rE   r   rM   rX   r/   r0   )r\   rN   rE   r   rM   rX   r/   r0   )r^   r_   rG   r`   rH   ra   r/   r0   )rf   rg   r<   r   r/   r0   )NNT)rW   rN   rj   rk   rl   rm   rM   rX   rn   r%   r/   r0   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r9   rI   Úpropertyr&   rQ   rV   r[   r\   re   ri   rp   © r:   r8   r   r      s=  € € € € € Ø*Ð*ð Ø-1Ø26ØDHØ-1ð&5ð %)ð&5ð &5ð &5ð &5ð &5ð &5ðPð ð ð ð, ð"ð "ð "ñ „Xð"ð=ð =ð =ð =ð:ð :ð :ð :ð4ð 4ð 4ð 4ð 4ð3ð 3ð 3ð 3ð 3ðVð Vð Vð Vð
Dð Dð Dð Dð %)ØØ"&ðlð lð lð lð lð lð lr:   N)(Ú
__future__r   Úcollections.abcr   r   r   r   Útypingr   r	   r
   Ústarlette.datastructuresr   r   Ústarlette.middlewarer   r   Ústarlette.middleware.body_limitr   Ústarlette.middleware.errorsr   Ústarlette.middleware.exceptionsr   Ústarlette.requestsr   Ústarlette.responsesr   Ústarlette.routingr   r   Ústarlette.typesr   r   r   r   r   r   r   r   r   rv   r:   r8   ú<module>rƒ      s’  ðØ "Ð "Ð "Ð "Ð "Ð "à BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø FÐ FÐ FÐ FÐ FÐ FØ =Ð =Ð =Ð =Ð =Ð =Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø &Ð &Ð &Ð &Ð &Ð &Ø (Ð (Ð (Ð (Ð (Ð (Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ Uà
ˆ'�) ;Ð
/Ñ
/Ô
/€Ø€Iˆc�N„N€ðhlð hlð hlð hlð hlñ hlô hlð hlð hlð hlr:   