
    _j|I              :      
   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	m
Z
 d dlmZ d dlmZmZmZ d dlZd dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZmZm Z m!Z! d dl"m#Z# d d	l$m%Z%m&Z&  ej'         e( ej)                                        Z* ej'         e( ej)                                        Z+ ej'        e          Z,ddZ- ej.        d          Z/ddZ0 ej1        ddi           ej2        dd           ej3        de4dd d!"           ej3        d#e5d$d%d!"           ej3        d&e4dd'(           ej3        d)e5dd*(           ej3        d+d!d,d-.           ej3        d/d0d!d1 ej6        d!2          3           ej3        d4d5d!d67           ej3        d8d9d!d:7           ej3        d;e7d<d!d=>           ej3        d?de5d@A           ej3        dBe4 e-e           dCdDd!E           ej3        dFe4 e-e          dCdGd!E           ej3        dHe4 e-e!          dCdId!E           ej3        dJe5dKdLd!"           ej3        dMe5dNdOd!"           ej3        dPe7dQdRd!"           ej3        dSe7dQdTd!"           ej3        dUe8d!dVd!"           ej3        dWe+dCdXd!"           ej3        dYe,dCdZd!"           ej3        d[ ej6        d!2          dd\d!"           ej3        d] ej6        d!2          dd^d!"           ej3        d_e*dd`d!"           ej3        dad!d!db.           ej3        dcd!ddd.           ej3        ded!d!df.           ej3        dgd!d!dh.           ej3        did!d!dj.           ej3        dke4ddl(           ej3        dme4dndo(           ej3        dpe5ddq(           ej3        dre5dsdt(           ej3        due5ddv(           ej3        dwe5d dxd!"           ej3        dye5dzd{d!"           ej3        d|e5dd}(           ej3        d~e5dzdd!"           ej3        de4ddd!"           ej3        de4ddd!"           ej3        de4ddd!"           ej3        de5 e5e          dd!"           ej3        de5 e5ej9                  dd!"           ej3        de4ddd!"           ej3        de4ddd!"           ej3        ddd!d7           ej3        dd!e0d,d!d           ej3        ddnd!d           ej3        dde5dd(           ej3        dd!d,dd!           ej3        dd!d,dd!          ddՄ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Z:dd$dddCdCdCdKdNdQdQd!dCdCd,dddd<ddedd!d!d!d!ddnddsdd dzddzdddeej9        ddddddd,dd,d֜2ddZ;ddZ<e=dk    r e:             dS dS )    )annotationsN)Callable)RawConfigParser)IOAnyget_args)ASGIApplication)
INTERFACESLIFESPAN
LOG_LEVELSLOGGING_CONFIGSSL_PROTOCOL_VERSIONSTARTUP_FAILUREConfigHTTPProtocolTypeInterfaceTypeLifespanTypeLoopFactoryTypeWSProtocolType)Server)ChangeReloadMultiprocess_typer   returnstrc                b    dd                     d t          |           D                        dS )N[|c              3  &   K   | ]}|d k    |V  dS )noneN ).0keys     @/home/drrone/.local/lib/python3.11/site-packages/uvicorn/main.py	<genexpr>z%_metavar_from_type.<locals>.<genexpr>)   s&      HH#------HH    ])joinr   )r   s    r$   _metavar_from_typer)   (   s4    KsxxHHxHHHHHKKKKr&   uvicorn.errorctxclick.Contextparamclick.ParametervalueboolNonec           	        |r| j         rd S t          j        d                    t          j        t          j                    t          j                    t          j	                                         | 
                                 d S )NzKRunning uvicorn {version} with {py_implementation} {py_version} on {system})versionpy_implementation
py_versionsystem)resilient_parsingclickechoformatuvicorn__version__platformpython_implementationpython_versionr6   exit)r+   r-   r/   s      r$   print_versionrA   /   s     C) 	JU\\'&<>>.00?$$	 	] 	
 	
   HHJJJJJr&   auto_envvar_prefixUVICORN)context_settingsappUVICORN_APP)envvarz--hostz	127.0.0.1zBind socket to this host.T)typedefaulthelpshow_defaultz--porti@  zABind socket to this port. If 0, an available port will be picked.z--udszBind to a UNIX domain socket.)rH   rI   rJ   z--fdz)Bind to socket from this file descriptor.z--reloadFzEnable auto-reload.)is_flagrI   rJ   z--reload-dirreload_dirszRSet reload directories explicitly, instead of using the current working directory.)exists)multiplerJ   rH   z--reload-includereload_includeszSet glob patterns to include while watching for files. Includes '*.py' by default; these defaults can be overridden with `--reload-exclude`. This option has no effect unless watchfiles is installed.)rO   rJ   z--reload-excludereload_excludeszSet glob patterns to exclude while watching for files. Includes '.*, .py[cod], .sw.*, ~*' by default; these defaults can be overridden with `--reload-include`. This option has no effect unless watchfiles is installed.z--reload-delayg      ?zTDelay between previous and next check if application needs to be. Defaults to 0.25s.)rH   rI   rK   rJ   z	--workersz~Number of worker processes. Defaults to the $WEB_CONCURRENCY environment variable if available, or 1. Not valid with --reload.)rI   rH   rJ   z--loopautoz"Event loop factory implementation.)rH   metavarrI   rJ   rK   z--httpzHTTP protocol implementation.z--wsz"WebSocket protocol implementation.z--ws-max-sizei   z#WebSocket max size message in bytesz--ws-max-queue    z2The maximum length of the WebSocket message queue.z--ws-ping-intervalg      4@z#WebSocket ping interval in seconds.z--ws-ping-timeoutz"WebSocket ping timeout in seconds.z--ws-per-message-deflatez)WebSocket per-message-deflate compressionz
--lifespanzLifespan implementation.z--interfacez:Select ASGI3, ASGI2, or WSGI as the application interface.z
--env-filezEnvironment configuration file.z--log-configzBLogging configuration file. Supported formats: .ini, .json, .yaml.z--log-levelzLog level. [default: info]z--access-log/--no-access-logzEnable/Disable access log.z--use-colors/--no-use-colorsz!Enable/Disable colorized logging.z"--proxy-headers/--no-proxy-headerszaEnable/Disable X-Forwarded-Proto, X-Forwarded-For to populate url scheme and remote address info.z"--server-header/--no-server-headerz%Enable/Disable default Server header.z--date-header/--no-date-headerz#Enable/Disable default Date header.z--forwarded-allow-ipszComma separated list of IP Addresses, IP Networks, or literals (e.g. UNIX Socket path) to trust with proxy headers. Defaults to the $FORWARDED_ALLOW_IPS environment variable if available, or '127.0.0.1'. The literal '*' means trust everything.z--root-path zLSet the ASGI 'root_path' for applications submounted below a given URL path.z--limit-concurrencyz^Maximum number of concurrent connections or tasks to allow, before issuing HTTP 503 responses.z	--backlogi   z0Maximum number of connections to hold in backlogz--limit-max-requestszEMaximum number of requests to service before terminating the process.z--limit-max-requests-jitterzuMaximum jitter to add to limit_max_requests. Staggers worker restarts to avoid all workers restarting simultaneously.z--timeout-keep-alive   zYClose Keep-Alive connections if no new data is received within this timeout (in seconds).z--timeout-graceful-shutdownz8Maximum number of seconds to wait for graceful shutdown.z--timeout-worker-healthcheckzKMaximum number of seconds to wait for a worker to respond to a healthcheck.z--ssl-keyfilezSSL key filez--ssl-certfilezSSL certificate filez--ssl-keyfile-passwordzSSL keyfile passwordz--ssl-versionz,SSL version to use (see stdlib ssl module's)z--ssl-cert-reqsz@Whether client certificate is required (see stdlib ssl module's)z--ssl-ca-certszCA certificates filez--ssl-cipherszNCiphers to use (see stdlib ssl module's). Defaults to OpenSSL's safe defaults.z--headerheaderszASpecify custom default HTTP response headers as a Name:Value pairz	--versionz%Display the uvicorn version and exit.)rL   callbackexpose_valueis_eagerrJ   z	--app-dirzuLook for APP in the specified directory, by adding this to the PYTHONPATH. Defaults to the current working directory.)rI   rK   rJ   z--h11-max-incomplete-event-sizeh11_max_incomplete_event_sizezFFor h11, the maximum number of bytes to buffer of an incomplete event.z--reset-contextvarszXRun each ASGI request in a fresh contextvars.Context. Hides context set in the lifespan.)rL   rI   rJ   rK   z	--factoryzFTreat APP as an application factory, i.e. a () -> <ASGI app> callable.hostportintudsfdloopLoopFactoryType | strhttpHTTPProtocolType | strwsWSProtocolType | strws_max_sizews_max_queuews_ping_intervalfloatws_ping_timeoutws_per_message_deflatelifespanr   	interfacer   reload	list[str]reload_delayworkersenv_file
log_config	log_level
access_logproxy_headersserver_headerdate_headerforwarded_allow_ips	root_pathlimit_concurrencybackloglimit_max_requestslimit_max_requests_jittertimeout_keep_alivetimeout_graceful_shutdown
int | Nonetimeout_worker_healthcheckssl_keyfilessl_certfilessl_keyfile_passwordssl_versionssl_cert_reqsssl_ca_certsssl_ciphers
str | None
use_colorsapp_dirreset_contextvarsfactoryc2                t   t          | fi d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|t          n|d|d|d|d|d|pd d|pd d|p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.|-d/|1d0|.d1|/d2|0 d S )3Nr\   r]   r_   r`   ra   rc   re   rg   rh   ri   rk   rl   rm   rs   rt   ru   rv   rn   ro   rM   rP   rQ   rq   rr   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   rW   c                :    g | ]}|                     d d          S ):   )split)r"   headers     r$   
<listcomp>zmain.<locals>.<listcomp>  s&    <<<&c1%%<<<r&   r   r   r   r[   r   )runr   )2rE   r\   r]   r_   r`   ra   rc   re   rg   rh   ri   rk   rl   rm   rn   ro   rM   rP   rQ   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   rW   r   r   r[   r   r   s2                                                     r$   mainr   =   s   v 3 3 3T3 T3 C	3
 23 T3 T3 23  K3 "\3 *)3 (3  653 3 3  &0%7>>Z!3" )#3$ :%3& )'3( v)3*  '4+3, (/4-3. (/4/30 "\132 334 $m536 $m738  K93: 0/;3< )=3> ,+?3@ A3B .-C3D #<";E3F .-G3H #<";I3J $>#=K3L  KM3N "\O3P 21Q3R  KS3T $mU3V "\W3X  KY3Z =<G<<<<[3\ :]3^ _3` a3b 'D&Cc3d ,+e3 3 3 3r&   )2r\   r]   r_   r`   ra   rc   re   rg   rh   ri   rk   rl   rm   rn   ro   rM   rP   rQ   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   ssl_context_factoryrW   r   r   r   r[   r   *ASGIApplication | Callable[..., Any] | str/type[asyncio.Protocol] | HTTPProtocolType | str-type[asyncio.Protocol] | WSProtocolType | strfloat | Nonelist[str] | str | Nonestr | os.PathLike[str] | NoneJdict[str, Any] | str | os.PathLike[str] | RawConfigParser | IO[Any] | Nonestr | int | Noner   GCallable[[Config, Callable[[], ssl.SSLContext]], ssl.SSLContext] | Nonelist[tuple[str, str]] | Nonebool | Nonec       2           |/ t           j                            d|/           t          | fi 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|d|d|d|d|d |d!| d"|!d#|"d$|#d%|$d&|%d'|&d(|'d)|(d*|)d+|*d,|+d-|,d.|-d/|.d0|0d1|1d2|2}3|3j        s|3j        d3k    rXt          | t                    sBt          j	        d4          }4|4
                    d5           t          j        t                     n|3                                 t          |36          }5	 |3j        r?|3                                }6t#          |3|5j        |6g7                                           nX|3j        d3k    r9|3                                }6t'          |3|6g8                                           n|5                                 n# t(          $ r Y nw xY w|3j        r=t,          j                            |3j                  rt-          j        |3j                   nK# |3j        r>t,          j                            |3j                  rt-          j        |3j                   w w w xY w|5j        s-|3j        s(|3j        d3k    rt          j        t                     d S d S d S d S )9Nr   r\   r]   r_   r`   ra   rc   re   rg   rh   ri   rk   rl   rm   rn   ro   rM   rP   rQ   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   rW   r   r   r[   r   r   r*   zRYou must pass the application as an import string to enable 'reload' or 'workers'.)config)targetsockets)r   )syspathinsertr   ro   rr   
isinstancer   logging	getLoggerwarningr@   r   load_appr   should_reloadbind_socketr   r   r   KeyboardInterruptr_   osrN   removestarted)7rE   r\   r]   r_   r`   ra   rc   re   rg   rh   ri   rk   rl   rm   rn   ro   rM   rP   rQ   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   rW   r   r   r   r[   r   r   loggerserversocks7                                                          r$   r   r     s   l 7###3 3 3T3 T3 C	3
 23 T3 T3 23  K3 "\3 *)3 (3  653 3 )3  v!3"  K#3$ (%3& ('3( "\)3* +3, -3. :/30 )132 :334 $m536 $m738  K93: 0/;3< )=3> ,+?3@ A3B .-C3D #<";E3F .-G3H #<";I3J $>#=K3L  KM3N "\O3P 21Q3R  KS3T $mU3V "\W3X  KY3Z 0/[3\ ]3^ :_3` a3b 'D&Cc3d ,+e3Fh } **#s## 	&&77FNNopppH_%%%6"""F" 	%%''D
TFCCCGGIIII^a%%''D$000446666JJLLL    : 	""'..44 	"Ifj!!! : 	""'..44 	"Ifj!!!!	" 	" > "&"6 "6>Q;N;N!!!!!" " " ";N;Ns,   BG/ .I /
G<9I ;G<<I AJnamec                    | dk    r"t          j        dt                     ddlm} |S t          dt           d|            )NServerStatezOuvicorn.main.ServerState is deprecated, use uvicorn.server.ServerState instead.r   )r   zmodule z has no attribute )warningswarnDeprecationWarninguvicorn.serverr   AttributeError__name__)r   r   s     r$   __getattr__r   x  s`    }]	
 	
 	
 	/.....
E8EEtEE
F
FFr&   __main__)r   r   r   r   )r+   r,   r-   r.   r/   r0   r   r1   )frE   r   r\   r   r]   r^   r_   r   r`   r^   ra   rb   rc   rd   re   rf   rg   r^   rh   r^   ri   rj   rk   rj   rl   r0   rm   r   rn   r   ro   r0   rM   rp   rP   rp   rQ   rp   rq   rj   rr   r^   rs   r   rt   r   ru   r   rv   r0   rw   r0   rx   r0   ry   r0   rz   r   r{   r   r|   r^   r}   r^   r~   r^   r   r^   r   r^   r   r   r   r^   r   r   r   r   r   r   r   r^   r   r^   r   r   r   r   rW   rp   r   r0   r   r   r[   r   r   r0   r   r0   r   r1   )hrE   r   r\   r   r]   r^   r_   r   r`   r   ra   rb   rc   r   re   r   rg   r^   rh   r^   ri   r   rk   r   rl   r0   rm   r   rn   r   ro   r0   rM   r   rP   r   rQ   r   rq   rj   rr   r   rs   r   rt   r   ru   r   rv   r0   rw   r0   rx   r0   ry   r0   rz   r   r{   r   r|   r   r}   r^   r~   r   r   r^   r   r^   r   r   r   r^   r   r   r   r   r   r   r   r^   r   r^   r   r   r   r   r   r   rW   r   r   r   r   r   r   r0   r[   r   r   r0   r   r1   )r   r   r   r   )>
__future__r   asyncior   r   r=   sslr   r   collections.abcr   configparserr   typingr   r   r   r8   r;   uvicorn._typesr	   uvicorn.configr
   r   r   r   r   r   r   r   r   r   r   r   r   r   uvicorn.supervisorsr   r   ChoicelistkeysLEVEL_CHOICESLIFESPAN_CHOICESINTERFACE_CHOICESr)   r   r   rA   commandargumentoptionr   r^   Pathrj   r0   	CERT_NONEr   r   r   r   r!   r&   r$   <module>r      s
   " " " " " "   				  



 



  $ $ $ $ $ $ ( ( ( ( ( ( $ $ $ $ $ $ $ $ $ $   * * * * * *                            " ! ! ! ! ! : : : : : : : :TT/*/"3"344555<]X]__ 5 566  EL,, L L L L 
	?	+	+    !5y ABBBm,,,		$   		L   gC4STTTf33^___j$<QRRR	]	4	 	 	    
@	   
	   		_   	
=	   	//	-   	/00	(   
	~..	-   		.   		=   		.   		-   		4   		#   		E   	4	 	 	 	*   	4	 	 	 	M   		%   "	%	   "	,	   (	l	   (	0	   $	.	   	
.	   		W	   		i	   		;	   		P	   !	
P   		d   !		C	   "		V   oCNY]^^^		   		   	C$%%	7   	C	K   		   		Y   	L	   	0   
2	   %#		Q   	c   	Q  g g g             _^                                 SR `_ UT   -, CBN
gZ "(<B8>%)$(#'#%*..2.2.2]k"&26$(%)%&,0&'1526'++26"cg,0"04#iG" G" G" G" G" G"T	G 	G 	G 	G zDFFFFF r&   