
    l iU              
         U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d dlZd dlmZ d dl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' ed         Z(ed         Z)ed         Z*ed         Z+ed         Z,ej-        ej.        ej/        ej0        ej1        edZ2de3d<   ddddZ4de3d<   ddddddZ5d e3d!<   d"d"d#dZ6de3d$<   dd%d&d'dZ7d e3d(<   g dZ8d)e3d*<   e	j9        Z:d+e3d,<   d-d.d/d0dd1d2d3d4d5d6d7d8d9d:d7d;d9d5d6gd<d.d=d>d<id:gd<d.d=d?d@Z;dAe3dB<    ej<        dC          Z=d_dPZ>d`dTZ?dadYZ@dbd\ZA G d] d^          ZBdS )c    )annotationsN)	Awaitable)RawConfigParser)Path)IOAnyCallableLiteral)iscoroutinefunction)ASGIApplication)ImportFromStringErrorimport_from_string)TRACE_LOG_LEVEL)ASGI2Middleware)MessageLoggerMiddleware)ProxyHeadersMiddleware)WSGIMiddleware)autoh11	httptools)r   none
websocketszwebsockets-sansiowsproto)r   onoff)r   r   asynciouvloop)r   asgi3asgi2wsgi)criticalerrorwarninginfodebugtracezdict[str, int]
LOG_LEVELSz,uvicorn.protocols.http.auto:AutoHTTPProtocolz+uvicorn.protocols.http.h11_impl:H11Protocolz7uvicorn.protocols.http.httptools_impl:HttpToolsProtocolzdict[str, str]HTTP_PROTOCOLSz8uvicorn.protocols.websockets.auto:AutoWebSocketsProtocolz>uvicorn.protocols.websockets.websockets_impl:WebSocketProtocolzLuvicorn.protocols.websockets.websockets_sansio_impl:WebSocketsSansIOProtocolz4uvicorn.protocols.websockets.wsproto_impl:WSProtocolzdict[str, str | None]WS_PROTOCOLSzuvicorn.lifespan.on:LifespanOnz uvicorn.lifespan.off:LifespanOffLIFESPANz$uvicorn.loops.auto:auto_loop_factoryz*uvicorn.loops.asyncio:asyncio_loop_factoryz(uvicorn.loops.uvloop:uvloop_loop_factoryLOOP_FACTORIESzlist[InterfaceType]
INTERFACESintSSL_PROTOCOL_VERSION   Fz uvicorn.logging.DefaultFormatterz%(levelprefix)s %(message)s)()fmt
use_colorszuvicorn.logging.AccessFormatterzD%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s)r0   r1   )defaultaccessr3   zlogging.StreamHandlerzext://sys.stderr)	formatterclassstreamr4   zext://sys.stdoutINFO)handlerslevel	propagater:   )uvicornuvicorn.erroruvicorn.access)versiondisable_existing_loggers
formattersr9   loggerszdict[str, Any]LOGGING_CONFIGr=   certfilestr | os.PathLike[str]keyfilestr | os.PathLike[str] | Nonepassword
str | Nonessl_version	cert_reqsca_certsciphersreturnssl.SSLContextc                    t          j        |          }rfdnd }|                    | ||           t          j        |          |_        |r|                    |           |r|                    |           |S )Nc                      S N )rH   s   E/var/www/findabus/venv/lib/python3.11/site-packages/uvicorn/config.py<lambda>z$create_ssl_context.<locals>.<lambda>s   s    H     )ssl
SSLContextload_cert_chain
VerifyModeverify_modeload_verify_locationsset_ciphers)	rD   rF   rH   rJ   rK   rL   rM   ctxget_passwords	     `      rT   create_ssl_contextr`   i   s     .
%
%C)1;$$$$$tL'<888nY//CO ,!!(+++ !   JrV   pathr   boolc                    	 |                                  s|                                 } |                                 S # t          $ r Y dS w xY w)NF)is_absoluteresolveis_dirOSError)ra   s    rT   rf   rf   }   sX    !! 	"<<>>D{{}}   uus   ;> 
AApatterns_list	list[str]directories_listtuple[list[str], list[Path]]c           	        t          t          t          t          |                                                              }|                                 }t          j                    }| D ]}|dk    r	|                    |           t          t          |                    r#|                    t          |                     ]|                    |          D ]&}t          |          r|                    |           't          t          |                    }t          t          t          |                    }t          t          d |                    }t          d |D                       }g }t          t          |                    D ]}t          |dz   t          |                    D ]c}	||         ||	         j        v r|                    ||	                    3||	         ||         j        v r|                    ||                    dt          t          |                              t          |                              }t          t          |                    |fS )Nz.*c                *    |                                  S rR   )re   )xs    rT   rU   z)resolve_reload_patterns.<locals>.<lambda>   s    QYY[[ rV   c                0    h | ]}t          |          |S rS   )rf   ).0reload_paths     rT   	<setcomp>z*resolve_reload_patterns.<locals>.<setcomp>   s%    ZZZf[FYFYZZZZrV   r/   )listsetmapr   copycwdappendrf   globrangelenparents
difference)
rh   rj   directoriespatternscurrent_working_directorypatternmatchchildrenjks
             rT   resolve_reload_patternsr      sE   "3s41A1F1F1H1H'I'I#J#JKKK',,..H $

  . . d??   $w--   	.tG}}----277@@ . .%== .&&u---. s;''((Ks4--..Ks00+>>??KZZ{ZZZ[[KH3{##$$ 0 0q1uc+..// 	0 	0A1~Q!777A////Q;q>#999A///		0 s;''223x==AABBKH++rV   dirslist[str] | str | Nonec                r    | g S t          | t                    r| gS t          t          |                     S rR   )
isinstancestrrs   rt   )r   s    rT   _normalize_dirsr      s7    |	$ vD		??rV   c            0      
   e Zd Zddddddddddddddeddddd	dd
dddddddddddddddddddeej        dddd	df0dddUZededX            Z	edfdY            Z
edfdZ            Zdgd\Zdgd]Zdgd^Zdhd`ZdidbZedfdc            ZdS )jConfig	127.0.0.1i@  Nr   i       g      4@TFg      ? i         TLSv1app*ASGIApplication | Callable[..., Any] | strhostr   portr-   udsrI   fd
int | NoneloopLoopFactoryType | strhttp/type[asyncio.Protocol] | HTTPProtocolType | strws-type[asyncio.Protocol] | WSProtocolType | strws_max_sizews_max_queuews_ping_intervalfloat | Nonews_ping_timeoutws_per_message_deflaterb   lifespanLifespanTypeenv_filerG   
log_config7dict[str, Any] | str | RawConfigParser | IO[Any] | None	log_levelstr | int | None
access_logr2   bool | None	interfaceInterfaceTypereloadreload_dirsr   reload_delayfloatreload_includesreload_excludesworkersproxy_headersserver_headerdate_headerforwarded_allow_ips	root_pathlimit_concurrencylimit_max_requestsbacklogtimeout_keep_alivetimeout_notifytimeout_graceful_shutdowntimeout_worker_healthcheckcallback_notify%Callable[..., Awaitable[None]] | Nonessl_keyfilessl_certfilessl_keyfile_passwordrJ   ssl_cert_reqsssl_ca_certsssl_ciphersheaderslist[tuple[str, str]] | Nonefactoryh11_max_incomplete_event_sizec2                   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        |pd| _        || _        || _        || _        || _        | | _        |!| _        |"| _        |#| _        |$| _        |%| _        |&| _         |'| _!        |(| _"        |)| _#        |*| _$        |+| _%        |,| _&        |-| _'        |.| _(        |/pg | _)        g | _*        |0| _+        |1| _,        d| _-        | .                                 g | _/        g | _0        g | _1        g | _2        |s|s|r!| j3        sth          5                    d           | j3        rtm          |          }tm          |          }tm          |          }to          ||          \  | _1        | _/        to          |g           \  | _2        | _0        | j/        8                                }2| j0        D ]B}3|2D ]=}4|3|4k    s	|3|4j9        v r,	 | j/        :                    |4           -# tv          $ r Y 9w xY w>C| j2        D ]%}5|5| j1        v r| j1        :                    |5           &| j/        s6|rth          5                    d|           ty          j=                    g| _/        th          >                    dt          t          t          t          | j/                                                 |-ddlCmD}6 th          >                    d|            |6|	           |2d
t          jF        v r$t          t          jF        d
                   | _        |  |&t          jF        H                    dd          | _I        n|| _I        | j        r'| j        dk    rth          5                    d           d S d S d S )Nr/   FzcCurrent configuration will not reload as not all conditions are met, please refer to documentation.zeProvided reload directories %s did not contain valid directories, watching current working directory.z/Will watch for changes in these directories: %sr   )load_dotenvzLoading environment from '%s')dotenv_pathWEB_CONCURRENCYFORWARDED_ALLOW_IPSr   z4"workers" flag is ignored when reloading is enabled.)Jr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   r   r   r   r   encoded_headersr   r   loadedconfigure_loggingr   reload_dirs_excludesr   r   should_reloadloggerr#   r   r   rv   r|   remove
ValueErrorr   rw   r$   sortedrs   ru   r   dotenvr   osenvironr-   getr   )7selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   r   r   r   r   r   r   reload_dirs_tmp	directoryreload_directoryr   r   s7                                                          rT   __init__zConfig.__init__   sm   h 				&( 0.&<# $"$$"(|!**&"!2"4"4,)B&*D'.&($8!&*(&.5m:<-J*   ')02!*,*, 	? 	o 	tGY 	NNu    #	)+66K-o>>O-o>>O5L_^i5j5j2D $"2>UVegi>j>j;D $";".3355O!6 ! !	(7 ! !$ $444	EUE]8]8]! ,334DEEEE) ! ! ! D! 9^!  / 9 9d222(//888# 0 NNM#  
 %)HJJ< KKAtCT%5667788  
 ******KK7BBBKH----?0BJ>>rz*;<==DL1&')z~~6K['Y'YD$$':D$; 	S4<!++NNQRRRRR	S 	S++s   I
I+*I+rN   Literal['2.0', '3.0']c                (    dddd}|| j                  S )Nz2.0z3.0)r   r   r    )r   )r   mappings     rT   asgi_versionzConfig.asgi_versionY  s(     5
 5

 t~&&rV   c                8    t          | j        p| j                  S rR   )rb   r   r   r   s    rT   is_sslzConfig.is_sslb  s    D$9(9:::rV   c                @    t          | j        p
| j        dk              S )Nr/   )rb   r   r   r   s    rT   use_subprocesszConfig.use_subprocessf  s    DK34<!#3444rV   Nonec                   t          j        t          d           | j        t	          | j        t
                    re| j        dv r6| j        | j        d         d         d<   | j        | j        d         d         d<   t           j                            | j                   nSt	          | j        t                    rz| j        
                    d          r`t          | j                  5 }t          j        |          }t           j                            |           d d d            n# 1 swxY w Y   nt	          | j        t                    r| j        
                    d          red	d l}t          | j                  5 }|                    |          }t           j                            |           d d d            n# 1 swxY w Y   n&t           j                            | j        d
           | j        t	          | j        t                    rt$          | j                 }n| j        }t          j        d                              |           t          j        d                              |           t          j        d                              |           | j        d
u r4g t          j        d          _        d
t          j        d          _        d S d S )NTRACE)TFrA   r3   r2   r4   z.json)z.yamlz.ymlr   F)r@   r=   r>   zuvicorn.asgi)loggingaddLevelNamer   r   r   dictr2   config
dictConfigr   endswithopenjsonloadyaml	safe_load
fileConfigr   r'   	getLoggersetLevelr   r9   r;   )r   fileloaded_configr   r   s        rT   r   zConfig.configure_loggingj  s   _g666?&$/400 [?m33MQ_DOL1)<\JLPODOL1(;LI))$/::::DOS11 [do6N6Nw6W6W [$/** =d$(IdOOMN--m<<<= = = = = = = = = = = = = = = DOS11 [do6N6NO`6a6a [ $/** =d$(NN4$8$8MN--m<<<= = = = = = = = = = = = = = = ))$/TY)ZZZ>%$.#.. +&t~6		 N	o..77	BBB.//88CCCn--66yAAA?e##;=G.//8<AG.//999 $#s$   *4D**D.1D.5GG
Gc           	     r   | j         rJ | j        rH| j        sJ t          | j        | j        | j        | j        | j        | j        | j	                  | _
        nd | _
        d | j        D             }dt          |          vr| j        rdg|z   n|| _        t          | j        t"                    r:t%          t&                              | j        | j                            }|| _        n| j        | _        t          | j        t"                    r:t%          t.                              | j        | j                            }|| _        n| j        | _        t%          t2          | j                           | _        	 t%          | j                  | _        nH# t<          $ r;}t>                               d|z             tC          j"        d           Y d }~nd }~ww xY w	 |                                 | _        | j#        st>          $                    d           nM# tJ          $ r@}| j#        r/t>                               d|           tC          j"        d           Y d }~nd }~ww xY w| j&        d	k    rtO          j(        | j                  rtS          | j        d
          }nStO          j*        | j                  rtW          | j                  }n%tY          | j        dd           }tW          |          }|rdnd| _&        | j&        dk    r!t[          | j                  | _        d | _        n$| j&        dk    rt]          | j                  | _        t>          /                                t`          k    rtc          | j                  | _        | j2        r tg          | j        | j4                  | _        d| _         d S )N)rF   rD   rH   rJ   rK   rL   rM   c                    g | ]A\  }}|                                                     d           |                    d           fBS )latin1)lowerencode)rp   keyvalues      rT   
<listcomp>zConfig.load.<locals>.<listcomp>  sF    qqqV`VY[`CIIKK..x88%,,x:P:PQqqqrV      server)r  s   uvicornzError loading ASGI app. %sr/   z_ASGI app factory detected. Using it, but please consider setting the --factory flag explicitly.z"Error loading ASGI app factory: %sr   	__await____call__r   r   r    )trusted_hostsT)5r   r   r   r`   r   r   rJ   r   r   r   rW   r   r   r   r   r   r   r   r   r(   r   http_protocol_classr   r)   ws_protocol_classr*   r   lifespan_classr   
loaded_appr   r   r"   sysexitr   r#   	TypeErrorr   inspectisclasshasattr
isfunctionr   getattrr   r   getEffectiveLevelr   r   r   r   r   )r   r   r  r  exc
use_asgi_3calls          rT   r   zConfig.load  s   ;; 	$$$$.@(*2 ,,*(/ / /DHH DHqqdhdpqqq _ 5 555$:L5 %%77  	 di%% 	1"4^5G5G	SWS\5]5]"^"^?RD$$'+yD$dgs## 	- 2<3C3CDGTW3U3U V VDUD""%)WD"0$-1HII	0::DOO$ 	 	 	LL5;<<<HQKKKKKKKK	
	"oo//DO < u    	 	 	| A3GGG	 >V##t// 7$T_kBB

#DO44 70AA

t
DAA066
(2?WWDN>V##,T_==DO%)D""^w&&-do>>DO##%%885doFFDO 	n4T_TXTlmmmDOs0   ;F 
G1GGH 
I##6II#c                     t          d          )Na  The `setup_event_loop` method was replaced by `get_loop_factory` in uvicorn 0.36.0.
None of those methods are supposed to be used directly. If you are doing it, please let me know here: https://github.com/Kludex/uvicorn/discussions/2706. Thank you, and sorry for the inconvenience.)AttributeErrorr   s    rT   setup_event_loopzConfig.setup_event_loop  s    n
 
 	
rV   .Callable[[], asyncio.AbstractEventLoop] | Nonec                B   | j         t          v r t          t          | j                            }n]	 t          | j                   S # t          $ r;}t                              d|z             t          j        d           Y d }~nd }~ww xY w|d S  || j                  S )Nz,Error loading custom loop setup function. %sr/   )r   )	r   r+   r   r   r   r"   r  r  r   )r   loop_factoryr  s      rT   get_loop_factoryzConfig.get_loop_factory  s    9&&6HX\XaIb6c6cLL)$)444(   KcQRRR 4|4+>????s   A 
B	1BB	socket.socketc                0   | j         r| j         }t          j        t          j        t          j                  }	 |                    |           d}t          j        | j         |           nE# t          $ r8}t          	                    |           t          j        d           Y d }~nd }~ww xY wd}d}dt          j        |d          z   dz   }| j         g}n| j        rft          j        | j        t          j        t          j                  }d	}d}	dt          j        |	d          z   dz   }|                                g}n#t          j        }
d
}| j        rd| j        v rt          j        }
d}t          j        |
          }|                    t          j        t          j        d           	 |                    | j        | j        f           nE# t          $ r8}t          	                    |           t          j        d           Y d }~nd }~ww xY wd| d}dt          j        |d          z   dz   }| j        rdnd}|| j        |                                d         g}t          j        |g|R dd|ii |                    d           |S )Ni  r/   z8Uvicorn running on unix socket %s (Press CTRL+C to quit)z%szUvicorn running on T)boldz (Press CTRL+C to quit)z3Uvicorn running on socket %s (Press CTRL+C to quit)z
%s://%s:%d:z%s://[%s]:%d)familyhttpsr   extracolor_message)r   socketAF_UNIXSOCK_STREAMbindr   chmodrg   r   r"   r  r  clickstyler   fromfdgetsocknameAF_INETr   AF_INET6
setsockopt
SOL_SOCKETSO_REUSEADDRr   r   r$   set_inheritable)r   ra   sock	uds_permsr  messagesock_name_formatr/  logger_argsfd_name_formatr,  addr_formatprotocol_names                rT   bind_socketzConfig.bind_socket  s   8 )	L8D=1CDDD		$!	9----   S!!! QG#1EK@PW[4\4\4\\_xxM8*KKW 	L=&.&:LMMDKG!N1EKUY4Z4Z4ZZ]vvM++--.KK^F&Ky -SDI--,=///DOOF-v/BAFFF		49di01111   S!!! QKPPPG1EKRV4W4W4WWZssM'+{>GGM($)T5E5E5G5G5JKKGRkRRR/=1QRRRT"""s/   1A+ +
B-5.B((B-4!G 
H .HHc                D    t          | j        t                    o| j        S rR   )r   r   r   r   r   s    rT   r   zConfig.should_reload#  s    $(C((8T[8rV   )br   r   r   r   r   r-   r   rI   r   r   r   r   r   r   r   r   r   r-   r   r-   r   r   r   r   r   rb   r   r   r   rG   r   r   r   r   r   rb   r2   r   r   r   r   rb   r   r   r   r   r   r   r   r   r   r   r   rb   r   rb   r   rb   r   r   r   r   r   r   r   r   r   r-   r   r-   r   r-   r   r   r   r-   r   r   r   rG   r   rG   r   rI   rJ   r-   r   r-   r   rG   r   r   r   r   r   rb   r   r   )rN   r   )rN   rb   )rN   r   )rN   r$  )rN   r(  )__name__
__module____qualname__rC   r.   rW   	CERT_NONEr   propertyr   r   r   r   r   r#  r'  rG  r   rS   rV   rT   r   r      s         &,@F<B+)-(,'+!'26N\&*"&#).2"2626""" 6:(,)-"# 04*+AE596:+// ]6:"0448edS dS dS dS dSL ' ' ' X' ; ; ; X; 5 5 5 X5$B $B $B $BLM M M M^
 
 
 
@ @ @ @. . . .` 9 9 9 X9 9 9rV   r   )rD   rE   rF   rG   rH   rI   rJ   r-   rK   r-   rL   rG   rM   rI   rN   rO   )ra   r   rN   rb   )rh   ri   rj   ri   rN   rk   )r   r   rN   ri   )C
__future__r   r   r  r   r   logging.configr   r0  rW   r  collections.abcr   configparserr   pathlibr   typingr   r   r	   r
   r5  uvicorn._compatr   uvicorn._typesr   uvicorn.importerr   r   uvicorn.loggingr   uvicorn.middleware.asgi2r   !uvicorn.middleware.message_loggerr    uvicorn.middleware.proxy_headersr   uvicorn.middleware.wsgir   HTTPProtocolTypeWSProtocolTyper   LoopFactoryTyper   CRITICALERRORWARNINGr8   DEBUGr'   __annotations__r(   r)   r*   r+   r,   PROTOCOL_TLS_SERVERr.   rC   r  r   r`   rf   r   r   r   rS   rV   rT   <module>re     s%   " " " " " " "         				  



 



 % % % % % % ( ( ( ( ( (       - - - - - - - - - - - -  / / / / / / * * * * * * F F F F F F F F + + + + + + 4 4 4 4 4 4 E E E E E E C C C C C C 2 2 2 2 2 256 UV*+=>89  ]L] 
     ;8J" "     GRgE' '     -
*-      2;8	) )     #E"D"D
 D D D D3  3 3 3 3  % 50
 
 4Y
 

 
 #,(
 
 ",(
 
  "+f5QQ!6*(0zFQVWW 5" "    B 
	?	+	+   (   !, !, !, !,H   s9 s9 s9 s9 s9 s9 s9 s9 s9 s9rV   