§
    Ç! hÔ(  ã                  óF  — d dl mZ d dlZd dlZd dlZej        dk    rd dlmZ nd dl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! d dl"m#Z#  ej$        dd¬¦  «        Z% ed¦  «        Z& G d„ d¦  «        Z'dS )é    )ÚannotationsN)é   é
   )Ú	ParamSpec)ÚStateÚURLPath)Ú
MiddlewareÚ_MiddlewareClass)ÚBaseHTTPMiddleware)ÚServerErrorMiddleware)ÚExceptionMiddleware)ÚRequest)ÚResponse)Ú	BaseRouteÚRouter)ÚASGIAppÚExceptionHandlerÚLifespanÚReceiveÚScopeÚSend)Ú	WebSocketÚAppTypeÚ	Starlette)ÚboundÚPc                  óÔ   — e Zd ZdZ	 	 	 	 	 	 	 dLdMd„ZdNd„ZedOd„¦   «         ZdPd„ZdQd&„Z	dRd)„Z
dSdTd-„ZdSdUd/„ZdVd6„ZdWd;„ZdXd=„Z	 	 	 dYdZdD„Z	 dSd[dF„Zd\dG„Z	 	 	 dYd]dH„ZdSd^dI„Zd_dK„ZdS )`r   aC  
    Creates an application instance.

    **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.
    * **on_startup** - A list of callables to run on application startup.
    Startup handler callables do not take any arguments, and may be either
    standard functions, or async functions.
    * **on_shutdown** - A list of callables to run on application shutdown.
    Shutdown handler callables do not take any arguments, 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.
    FNÚselfr   ÚdebugÚboolÚroutesú!typing.Sequence[BaseRoute] | NoneÚ
middlewareú"typing.Sequence[Middleware] | NoneÚexception_handlersú3typing.Mapping[typing.Any, ExceptionHandler] | NoneÚ
on_startupú7typing.Sequence[typing.Callable[[], typing.Any]] | NoneÚon_shutdownÚlifespanúLifespan[AppType] | NoneÚreturnÚNonec                óø   — |�|€|�
J d¦   «         ‚|| _         t          ¦   «         | _        t          ||||¬¦  «        | _        |€i nt          |¦  «        | _        |€g nt          |¦  «        | _        d | _	        d S )Nz>Use either 'lifespan' or 'on_startup'/'on_shutdown', not both.)r'   r)   r*   )
r   r   Ústater   ÚrouterÚdictr%   ÚlistÚuser_middlewareÚmiddleware_stack)r   r   r!   r#   r%   r'   r)   r*   s           úPc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\starlette/applications.pyÚ__init__zStarlette.__init__9   s–   € ð ÐØÐ ;Ð#6Ð#6ØKñ $7Ô#6ð
ð ˆŒ
Ý‘W”WˆŒ
Ý˜V°
ÈÐ^fÐgÑgÔgˆŒØ(:Ð(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        z   t	          t          ||¬¦  «        gz   }| j        }t          |¦  «        D ]\  }}	}
 ||	d|i|
¤Ž}Œ|S )Niô  )Úhandlerr   )Úhandlersr   Úapp)
r   r%   ÚitemsÚ	Exceptionr	   r   r3   r   r0   Úreversed)r   r   Úerror_handlerr%   ÚkeyÚvaluer#   r;   ÚclsÚargsÚkwargss              r5   Úbuild_middleware_stackz Starlette.build_middleware_stackP   sè   € Ø”
ˆØˆØ`bÐàÔ1×7Ò7Ñ9Ô9ð 	0ð 	0‰JˆC�Ø�s�IÐ&Ð&Ð&Ø %��à*/Ð" 3Ñ'Ð'õ Õ-°}ÈEÐRÑRÔRÐSØÔ"ñ#åÕ-Ð8JÐRWÐXÑXÔXÐYñZð 	ð ŒkˆÝ!)¨*Ñ!5Ô!5ð 	0ð 	0ÑˆC��vØ�# Ð/˜#Ð/¨Ð/Ð/ˆCˆCØˆ
r7   úlist[BaseRoute]c                ó   — | j         j        S ©N)r0   r!   )r   s    r5   r!   zStarlette.routesf   s   € àŒ{Ô!Ð!r7   ÚnameÚstrÚpath_paramsú
typing.Anyr   c               ó(   —  | j         j        |fi |¤ŽS rH   )r0   Úurl_path_for)r   rI   rK   s      r5   rN   zStarlette.url_path_forj   s   € Ø'ˆtŒ{Ô'¨Ð<Ð<°Ð<Ð<Ð<r7   Úscoper   Úreceiver   Úsendr   c              ƒ  óŽ   K  — | |d<   | j         €|                      ¦   «         | _         |                       |||¦  «        ƒ d {V —† d S )Nr;   )r4   rE   )r   rO   rP   rQ   s       r5   Ú__call__zStarlette.__call__m   s\   è è € Øˆˆe‰ØÔ Ð(Ø$(×$?Ò$?Ñ$AÔ$AˆDÔ!Ø×#Ò# E¨7°DÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r7   Ú
event_typeútyping.Callablec                ó6   — | j                              |¦  «        S rH   )r0   Úon_event)r   rT   s     r5   rW   zStarlette.on_events   s   € ØŒ{×#Ò# JÑ/Ô/Ð/r7   Úpathr;   ú
str | Nonec                ó@   — | j                              |||¬¦  «         d S ©N)r;   rI   )r0   Úmount)r   rX   r;   rI   s       r5   r\   zStarlette.mountv   s%   € ØŒ×Ò˜$ C¨dÐÑ3Ô3Ð3Ð3Ð3r7   Úhostc                ó@   — | j                              |||¬¦  «         d S r[   )r0   r]   )r   r]   r;   rI   s       r5   r]   zStarlette.hosty   s%   € ØŒ×Ò˜ 3¨TÐÑ2Ô2Ð2Ð2Ð2r7   Úmiddleware_classútype[_MiddlewareClass[P]]rC   úP.argsrD   úP.kwargsc                ó„   — | j         �t          d¦  «        ‚| j                             dt	          |g|¢R i |¤Ž¦  «         d S )Nz6Cannot add middleware after an application has startedr   )r4   ÚRuntimeErrorr3   Úinsertr	   )r   r_   rC   rD   s       r5   Úadd_middlewarezStarlette.add_middleware|   sT   € ð Ô Ð,ÝÐWÑXÔXÐXØÔ×#Ò# A¥zÐ2BÐ'TÀTÐ'TÐ'TÐ'TÈVÐ'TÐ'TÑUÔUÐUÐUÐUr7   Úexc_class_or_status_codeúint | type[Exception]r9   r   c                ó   — || j         |<   d S rH   )r%   )r   rg   r9   s      r5   Úadd_exception_handlerzStarlette.add_exception_handler†   s   € ð
 =DˆÔÐ 8Ñ9Ð9Ð9r7   Úfuncc                ó<   — | j                              ||¦  «         d S rH   )r0   Úadd_event_handler)r   rT   rk   s      r5   rm   zStarlette.add_event_handler�   s"   € ð
 	Œ×%Ò% j°$Ñ7Ô7Ð7Ð7Ð7r7   TÚrouteúAtyping.Callable[[Request], typing.Awaitable[Response] | Response]Úmethodsúlist[str] | NoneÚinclude_in_schemac                óD   — | j                              |||||¬¦  «         d S ©N)rp   rI   rr   ©r0   Ú	add_route)r   rX   rn   rp   rI   rr   s         r5   rv   zStarlette.add_route”   s,   € ð 	Œ×Ò˜d E°7ÀÐYjÐÑkÔkÐkÐkÐkr7   ú4typing.Callable[[WebSocket], typing.Awaitable[None]]c                ó@   — | j                              |||¬¦  «         d S ©N)rI   ©r0   Úadd_websocket_route)r   rX   rn   rI   s       r5   r{   zStarlette.add_websocket_routež   s'   € ð 	Œ×'Ò'¨¨e¸$Ð'Ñ?Ô?Ð?Ð?Ð?r7   c                óL   ‡ ‡— t          j        dt          ¦  «         dˆˆ fd„}|S )Nz¢The `exception_handler` decorator is deprecated, and will be removed in version 1.0.0. Refer to https://www.starlette.io/exceptions/ for the recommended approach.rk   rU   r,   c                ó4   •— ‰                      ‰| ¦  «         | S rH   )rj   )rk   rg   r   s    €€r5   Ú	decoratorz.Starlette.exception_handler.<locals>.decorator­   s   ø€ Ø×&Ò&Ð'?ÀÑFÔFÐFØˆKr7   ©rk   rU   r,   rU   ©ÚwarningsÚwarnÚDeprecationWarning)r   rg   r~   s   `` r5   Úexception_handlerzStarlette.exception_handler¦   sL   øø€ ÝŒðZåñ	
ô 	
ð 	
ð	ð 	ð 	ð 	ð 	ð 	ð 	ð Ðr7   c                óX   ‡ ‡‡‡‡— t          j        dt          ¦  «         dˆˆˆˆˆ fd„}|S )zø
        We no longer document this decorator style API, and its usage is discouraged.
        Instead you should use the following approach:

        >>> routes = [Route(path, endpoint=...), ...]
        >>> app = Starlette(routes=routes)
        z“The `route` decorator is deprecated, and will be removed in version 1.0.0. Refer to https://www.starlette.io/routing/ for the recommended approach.rk   rU   r,   c                óF   •— ‰j                              ‰| ‰‰‰¬¦  «         | S rt   ru   )rk   rr   rp   rI   rX   r   s    €€€€€r5   r~   z"Starlette.route.<locals>.decoratorÇ   s8   ø€ ØŒK×!Ò!ØØØØØ"3ð "ñ ô ð ð ˆKr7   r   r€   )r   rX   rp   rI   rr   r~   s   ````` r5   rn   zStarlette.route³   s`   øøøøø€ õ 	ŒðWåñ	
ô 	
ð 	
ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ðr7   c                óP   ‡ ‡‡— t          j        dt          ¦  «         dˆˆˆ fd„}|S )a  
        We no longer document this decorator style API, and its usage is discouraged.
        Instead you should use the following approach:

        >>> routes = [WebSocketRoute(path, endpoint=...), ...]
        >>> app = Starlette(routes=routes)
        z¯The `websocket_route` decorator is deprecated, and will be removed in version 1.0.0. Refer to https://www.starlette.io/routing/#websocket-routing for the recommended approach.rk   rU   r,   c                óB   •— ‰j                              ‰| ‰¬¦  «         | S ry   rz   )rk   rI   rX   r   s    €€€r5   r~   z,Starlette.websocket_route.<locals>.decoratorá   s%   ø€ ØŒK×+Ò+¨D°$¸TÐ+ÑBÔBÐBØˆKr7   r   r€   )r   rX   rI   r~   s   ``` r5   Úwebsocket_routezStarlette.websocket_routeÓ   sT   øøø€ õ 	Œðiåñ	
ô 	
ð 	
ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ðr7   Úmiddleware_typec                óh   ‡ — t          j        dt          ¦  «         |dk    s
J d¦   «         ‚dˆ fd„}|S )	zú
        We no longer document this decorator style API, and its usage is discouraged.
        Instead you should use the following approach:

        >>> middleware = [Middleware(...), ...]
        >>> app = Starlette(middleware=middleware)
        z¨The `middleware` decorator is deprecated, and will be removed in version 1.0.0. Refer to https://www.starlette.io/middleware/#using-middleware for recommended approach.Úhttpz/Currently only middleware("http") is supported.rk   rU   r,   c                ó@   •— ‰                      t          | ¬¦  «         | S )N)Údispatch)rf   r   )rk   r   s    €r5   r~   z'Starlette.middleware.<locals>.decoratorö   s"   ø€ Ø×ÒÕ 2¸TÐÑBÔBÐBØˆKr7   r   r€   )r   rŠ   r~   s   `  r5   r#   zStarlette.middlewareç   sd   ø€ õ 	Œðgåñ	
ô 	
ð 	
ð
  &Ò(Ð(Ð(Ð*[Ñ(Ô(Ð(ð	ð 	ð 	ð 	ð 	ð 	ð Ðr7   )FNNNNNN)r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r(   r*   r+   r,   r-   )r,   r   )r,   rF   )rI   rJ   rK   rL   r,   r   )rO   r   rP   r   rQ   r   r,   r-   )rT   rJ   r,   rU   rH   )rX   rJ   r;   r   rI   rY   r,   r-   )r]   rJ   r;   r   rI   rY   r,   r-   )r_   r`   rC   ra   rD   rb   r,   r-   )rg   rh   r9   r   r,   r-   )rT   rJ   rk   rU   r,   r-   )NNT)rX   rJ   rn   ro   rp   rq   rI   rY   rr   r    r,   r-   )rX   rJ   rn   rw   rI   rY   r,   r-   )rg   rh   r,   rU   )
rX   rJ   rp   rq   rI   rY   rr   r    r,   rU   )rX   rJ   rI   rY   r,   rU   )rŠ   rJ   r,   rU   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   rE   Úpropertyr!   rN   rS   rW   r\   r]   rf   rj   rm   rv   r{   r„   rn   r‰   r#   © r7   r5   r   r      sæ  € € € € € ðð ð> Ø48Ø9=ØRVØNRØOSØ-1ð5ð 5ð 5ð 5ð 5ð.ð ð ð ð, ð"ð "ð "ñ „Xð"ð=ð =ð =ð =ð:ð :ð :ð :ð0ð 0ð 0ð 0ð4ð 4ð 4ð 4ð 4ð3ð 3ð 3ð 3ð 3ðVð Vð Vð VðDð Dð Dð Dð8ð 8ð 8ð 8ð %)ØØ"&ðlð lð lð lð lð  ð	@ð @ð @ð @ð @ðð ð ð ð  %)ØØ"&ðð ð ð ð ð@ð ð ð ð ð(ð ð ð ð ð r7   )(Ú
__future__r   ÚsysÚtypingr�   Úversion_infor   Útyping_extensionsÚstarlette.datastructuresr   r   Ústarlette.middlewarer	   r
   Ústarlette.middleware.baser   Ústarlette.middleware.errorsr   Ústarlette.middleware.exceptionsr   Ústarlette.requestsr   Ústarlette.responsesr   Ústarlette.routingr   r   Ústarlette.typesr   r   r   r   r   r   Ústarlette.websocketsr   ÚTypeVarr   r   r   r”   r7   r5   ú<module>r¥      sª  ðØ "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€Ø €€€àÔ�wÒÐØ Ð Ð Ð Ð Ð Ð à+Ð+Ð+Ð+Ð+Ð+à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø =Ð =Ð =Ð =Ð =Ð =Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø &Ð &Ð &Ð &Ð &Ð &Ø (Ð (Ð (Ð (Ð (Ð (Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ *Ð *Ð *Ð *Ð *Ð *à
ˆ&Œ.˜¨+Ð
6Ñ
6Ô
6€Ø€Iˆc�N„N€ð_ð _ð _ð _ð _ñ _ô _ð _ð _ð _r7   