
    9CgqQ              
         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mZmZmZmZ d dl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j-        ej.        edZ/de0d<   ddddZ1de0d<   dddddZ2de0d<   ddd dZ3d!e0d"<   dd#d$d%dZ4d&e0d'<   g dZ5d(e0d)<   e	j6        Z7d*e0d+<   d,d-d.d/dd0d1d2d3d4d5d6d7d8d9d6d:d8d4d5gd;d-d<d=d;id9gd;d-d<d>d?Z8d@e0dA<    ej9        dB          Z:d^dOZ;d_dSZ<d`dXZ=dad[Z> G d\ d]          Z?dS )b    )annotationsN)RawConfigParser)Path)IOAny	AwaitableCallableLiteral)ASGIApplication)ImportFromStringErrorimport_from_string)TRACE_LOG_LEVEL)ASGI2Middleware)MessageLoggerMiddleware)ProxyHeadersMiddleware)WSGIMiddleware)autoh11	httptools)r   none
websockets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[HTTPProtocolType, str]HTTP_PROTOCOLSz8uvicorn.protocols.websockets.auto:AutoWebSocketsProtocolz>uvicorn.protocols.websockets.websockets_impl:WebSocketProtocolz4uvicorn.protocols.websockets.wsproto_impl:WSProtocolz dict[WSProtocolType, str | None]WS_PROTOCOLSzuvicorn.lifespan.on:LifespanOnz uvicorn.lifespan.off:LifespanOffzdict[LifespanType, str]LIFESPANz"uvicorn.loops.auto:auto_loop_setupz#uvicorn.loops.asyncio:asyncio_setupz!uvicorn.loops.uvloop:uvloop_setupzdict[LoopSetupType, str | None]LOOP_SETUPSz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)r/   r0   )defaultaccessr2   zlogging.StreamHandlerzext://sys.stderr)	formatterclassstreamr3   zext://sys.stdoutINFO)handlerslevel	propagater9   )uvicornuvicorn.erroruvicorn.access)versiondisable_existing_loggers
formattersr8   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 )rG   s   @/var/www/api/venv/lib/python3.11/site-packages/uvicorn/config.py<lambda>z$create_ssl_context.<locals>.<lambda>p   s    H     )ssl
SSLContextload_cert_chain
VerifyModeverify_modeload_verify_locationsset_ciphers)	rC   rE   rG   rI   rJ   rK   rL   ctxget_passwords	     `      rS   create_ssl_contextr_   f   s     .
%
%C)1;$$$$$tL'<888nY//CO ,!!(+++ !   JrU   pathr   boolc                    	 |                                  s|                                 } |                                 S # t          $ r Y dS w xY w)NF)is_absoluteresolveis_dirOSError)r`   s    rS   re   re   z   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 rQ   )rd   )xs    rS   rT   z)resolve_reload_patterns.<locals>.<lambda>   s    QYY[[ rU   c                0    h | ]}t          |          |S rR   )re   ).0reload_paths     rS   	<setcomp>z*resolve_reload_patterns.<locals>.<setcomp>   s%    ZZZf[FYFYZZZZrU   r.   )listsetmapr   copycwdappendre   globrangelenparents
difference)
rg   ri   directoriespatternscurrent_working_directorypatternmatchchildrenjks
             rS   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++rU   dirslist[str] | str | Nonec                r    | g S t          | t                    r| gS t          t          |                     S rQ   )
isinstancestrrr   rs   )r   s    rS   _normalize_dirsr      s7    |	$ vD		??rU   c            /          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eej        dddd	df/dadTZedbdW            Z	edcdX            Z
edcdY            Zddd[Zddd\Zddd]Zded_Zedcd`            ZdS )fConfig	127.0.0.1i@  Nr   i       g      4@TFg      ? i         TLSv1app*ASGIApplication | Callable[..., Any] | strhostr   portr,   udsrH   fd
int | NoneloopLoopSetupTypehttp)type[asyncio.Protocol] | HTTPProtocolTypews'type[asyncio.Protocol] | WSProtocolTypews_max_sizews_max_queuews_ping_intervalfloat | Nonews_ping_timeoutws_per_message_deflatera   lifespanLifespanTypeenv_filerF   
log_config7dict[str, Any] | str | RawConfigParser | IO[Any] | None	log_levelstr | int | None
access_logr1   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callback_notify%Callable[..., Awaitable[None]] | Nonessl_keyfilessl_certfilessl_keyfile_passwordrI   ssl_cert_reqsssl_ca_certsssl_ciphersheaderslist[tuple[str, str]] | Nonefactoryh11_max_incomplete_event_sizec1                   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        |pd| _        || _        || _        || _        || _        | | _        |!| _        |"| _        |#| _        |$| _        |%| _        |&| _         |'| _!        |(| _"        |)| _#        |*| _$        |+| _%        |,| _&        |-| _'        |.pg | _(        g | _)        |/| _*        |0| _+        d| _,        | -                                 g | _.        g | _/        g | _0        g | _1        |s|s|r!| j2        stf          4                    d           | j2        rtk          |          }tk          |          }tk          |          }tm          ||          \  | _0        | _.        tm          |g           \  | _1        | _/        | j.        7                                }1| j/        D ]B}2|1D ]=}3|2|3k    s	|2|3j8        v r,	 | j.        9                    |3           -# tt          $ r Y 9w xY w>C| j1        D ]%}4|4| j0        v r| j0        9                    |4           &| j.        sC|rtf          4                    d|           tw          ty          j=                              g| _.        tf          >                    dt          t          t          t          | j.                                                 |-ddlCmD}5 tf          >                    d|            |5|	           |2d
tx          jE        v r$t          tx          jE        d
                   | _        |  |&tx          jE        G                    dd          | _H        n|| _H        | j        r'| j        dk    rtf          4                    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.)Ir   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   r   r   r   r   encoded_headersr   r   loadedconfigure_loggingr   reload_dirs_excludesr   r   should_reloadloggerr"   r   r   ru   r{   remove
ValueErrorr   osgetcwdr#   sortedrr   rt   r   dotenvr   environr,   getr   )6selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   r   r   r   r   r   r   reload_dirs_tmp	directoryreload_directoryr   r   s6                                                         rS   __init__zConfig.__init__   sn   f 				&( 0.&<# $"$$"(|!**&"!2"4"4,)B&.&($8!&*(&.5m:<-J*   ')02!*,*, 	? 	o 	tGY 	NNx    #	)+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# 7 NNM#  
 %)$5$5#6 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$rM   Literal['2.0', '3.0']c                (    dddd}|| j                  S )Nz2.0z3.0)r   r   r   )r   )r   mappings     rS   asgi_versionzConfig.asgi_versionT  s(     5
 5

 t~&&rU   c                8    t          | j        p| j                  S rQ   )ra   r   r   r   s    rS   is_sslzConfig.is_ssl]  s    D$9(9:::rU   c                @    t          | j        p
| j        dk              S )Nr.   )ra   r   r   r   s    rS   use_subprocesszConfig.use_subprocessa  s    DK34<!#3444rU   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)TFr@   r2   r1   r3   z.json)z.yamlz.ymlr   F)r?   r<   r=   zuvicorn.asgi)loggingaddLevelNamer   r   r   dictr1   config
dictConfigr   endswithopenjsonloadyaml	safe_load
fileConfigr   r&   	getLoggersetLevelr   r8   r:   )r   fileloaded_configr   r   s        rS   r   zConfig.configure_logginge  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           	     :   | 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                           }|| _        n| j        | _        t          | j        t"                    r't%          t,          | j                           }|| _        n| j        | _        t%          t0          | j                           | _        	 t%          | j                  | _        nH# t:          $ r;}t<                              d|z             tA          j!        d           Y d }~nd }~ww xY w	 |                                 | _        | j"        st<          #                    d           nM# tH          $ r@}| j"        r/t<                              d|           tA          j!        d           Y d }~nd }~ww xY w| j%        d	k    rtM          j'        | j                  rtQ          | j        d
          }n]tM          j)        | j                  rtU          j+        | j                  }n*tY          | j        dd           }tU          j+        |          }|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)rE   rC   rG   rI   rJ   rK   rL   c                    g | ]A\  }}|                                                     d           |                    d           fBS )latin1)lowerencode)ro   keyvalues      rS   
<listcomp>zConfig.load.<locals>.<listcomp>  sF    qqqV`VY[`CIIKK..x88%,,x:P:PQqqqrU      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   rI   r   r   r   rV   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   iscoroutinefunctiongetattrr   r   getEffectiveLevelr   r   r   r   r   )r   r   r  r  exc
use_asgi_3calls          rS   r   zConfig.load  s~   ;; 	$$$$.@(*2 ,,*(/ / /DHH DHqqdhdpqqq _ 5 555$:L5 %%77  	 di%% 	1"4^DI5N"O"O?RD$$'+yD$dgs## 	- 2<3H I IDUD""%)WD"0$-1HII	0::DOO$ 	 	 	LL5;<<<HQKKKKKKKK	
	"oo//DO < x    	 	 	| A3GGG	 >V##t// ?$T_kBB

#DO44 ?$8II

t
DAA$8>>
(2?WWDN>V##,T_==DO%)D""^w&&-do>>DO##%%885doFFDO 	n4T_TXTlmmmDOs0   E/ /
F491F//F48G3 3
H==6H88H=c                n    t          t          | j                           }| || j                   d S d S )N)r   )r   r*   r   r   )r   
loop_setups     rS   setup_event_loopzConfig.setup_event_loop  s@    &8TY9O&P&P
!Jd&9:::::: "!rU   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   chmodrf   r   r!   r  r  clickstyler   fromfdgetsocknameAF_INETr   AF_INET6
setsockopt
SOL_SOCKETSO_REUSEADDRr   r   r#   set_inheritable)r   r`   sock	uds_permsr  messagesock_name_formatr+  logger_argsfd_name_formatr(  addr_formatprotocol_names                rS   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 rQ   )r   r   r   r   r   s    rS   r   zConfig.should_reload  s    $(C((8T[8rU   )`r   r   r   r   r   r,   r   rH   r   r   r   r   r   r   r   r   r   r,   r   r,   r   r   r   r   r   ra   r   r   r   rF   r   r   r   r   r   ra   r1   r   r   r   r   ra   r   r   r   r   r   r   r   r   r   r   r   ra   r   ra   r   ra   r   r   r   r   r   r   r   r   r   r,   r   r,   r   r,   r   r   r   r   r   rF   r   rF   r   rH   rI   r,   r   r,   r   rH   r   r   r   r   r   ra   r   r   )rM   r   )rM   ra   )rM   r   )rM   r$  )__name__
__module____qualname__rB   r-   rV   	CERT_NONEr   propertyr   r   r   r   r   r#  rC  r   rR   rU   rS   r   r      s         $:@6<+)-(,'+!'26N\&*"&#).2"2626""" 6:(,)-"# 04AE596:+// ]#'"0448cbS bS bS bS bSH ' ' ' X' ; ; ; X; 5 5 5 X5$B $B $B $BLM M M M^; ; ; ;
. . . .` 9 9 9 X9 9 9rU   r   )rC   rD   rE   rF   rG   rH   rI   r,   rJ   r,   rK   rF   rL   rH   rM   rN   )r`   r   rM   ra   )rg   rh   ri   rh   rM   rj   )r   r   rM   rh   )@
__future__r   r   r  r   r   logging.configr   r,  rV   r  configparserr   pathlibr   typingr   r   r   r	   r
   r1  uvicorn._typesr   uvicorn.importerr   r   uvicorn.loggingr   uvicorn.middleware.asgi2r   !uvicorn.middleware.message_loggerr    uvicorn.middleware.proxy_headersr   uvicorn.middleware.wsgir   HTTPProtocolTypeWSProtocolTyper   r   r   CRITICALERRORWARNINGr7   DEBUGr&   __annotations__r'   r(   r)   r*   r+   PROTOCOL_TLS_SERVERr-   rB   r   r   r_   re   r   r   r   rR   rU   rS   <module>r^     s   " " " " " " "         				  



 



 ( ( ( ( ( (       8 8 8 8 8 8 8 8 8 8 8 8 8 8  * * * * * * 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 @A*+;<89  ]L] 
     ;8J/ /     GRE	2 2     -
*-% %     041	0 0     #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   b9 b9 b9 b9 b9 b9 b9 b9 b9 b9rU   