
    dftS                     2   U 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mZmZmZmZ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jV                  ejX                  ejZ                  ej\                  ej^                  edZ0ee1e2f   e3d<   ddddZ4ee&e1f   e3d<   dddddZ5ee'ee1   f   e3d<   ddddZ6ee(e1f   e3d<   dddddZ7ee)ee1   f   e3d <   g dZ8ee*   e3d!<   ejr                  Z:e2e3d"<   d#d$d%d&dd'd(d)d*d+d,d-d.d/d0d-d1d/d+d,gd2d$d3d4d2id0gd2d$d3d5d6Z;ee1ef   e3d7<    ejx                  d8      Z=d9ee1ej|                  f   d:eee1ej|                  f      d;ee1   d<e2d=e2d>eee1ej|                  f      d?ee1   d@ej~                  fdAZ@dBe
d@eAfdCZBdDee1   dEee1   d@eee1   ee
   f   fdFZCdGeee1   e1df   d@ee1   fdHZD G dI dJ      ZEy)K    N)Path)
Any	AwaitableCallableDictListLiteralOptionalTupleTypeUnion)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trace
LOG_LEVELSz,uvicorn.protocols.http.auto:AutoHTTPProtocolz+uvicorn.protocols.http.h11_impl:H11Protocolz7uvicorn.protocols.http.httptools_impl:HttpToolsProtocolHTTP_PROTOCOLSz8uvicorn.protocols.websockets.auto:AutoWebSocketsProtocolz>uvicorn.protocols.websockets.websockets_impl:WebSocketProtocolz4uvicorn.protocols.websockets.wsproto_impl:WSProtocolWS_PROTOCOLSzuvicorn.lifespan.on:LifespanOnz uvicorn.lifespan.off:LifespanOffLIFESPANz"uvicorn.loops.auto:auto_loop_setupz#uvicorn.loops.asyncio:asyncio_setupz!uvicorn.loops.uvloop:uvloop_setupLOOP_SETUPS
INTERFACES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)r1   r2   )defaultaccessr4   zlogging.StreamHandlerzext://sys.stderr)	formatterclassstreamr5   zext://sys.stdoutINFO)handlerslevel	propagater;   )uvicornuvicorn.erroruvicorn.access)versiondisable_existing_loggers
formattersr:   loggersLOGGING_CONFIGr>   certfilekeyfilepasswordssl_version	cert_reqsca_certsciphersreturnc                     t        j                  |      }rfdnd }|j                  | ||       t        j                  |      |_        |r|j                  |       |r|j                  |       |S )Nc                       S N )rG   s   G/home/api-vastappli/venv/lib/python3.12/site-packages/uvicorn/config.py<lambda>z$create_ssl_context.<locals>.<lambda>x   s    H     )ssl
SSLContextload_cert_chain
VerifyModeverify_modeload_verify_locationsset_ciphers)	rE   rF   rG   rH   rI   rJ   rK   ctxget_passwords	     `      rQ   create_ssl_contextr]   n   sd     ..
%C)1$tL'<8nnY/CO!!(+ JrS   pathc                     	 | j                         s| j                         } | j                         S # t        $ r Y yw xY w)NF)is_absoluteresolveis_dirOSError)r^   s    rQ   rb   rb      s<    !<<>D{{} s   /2 	>>patterns_listdirectories_listc           	         t        t        t        t        |j	                                           }| j	                         }t        j
                         }| D ]{  }|dk(  r	|j                  |       t        t        |            r|j                  t        |             I|j                  |      D ]  }t        |      s|j                  |       ! } t        t        |            }t        t        t        |            }t        t        d |            }t        |D ch c]  }t        |      s| c}      }g }t        t        |            D ]q  }	t        |	dz   t        |            D ]T  }
||	   ||
   j                  v r|j                  ||
          ,||
   ||	   j                  v sA|j                  ||	          V s t        t        |      j                  t        |                  }t        t        |            |fS c c}w )Nz.*c                 "    | j                         S rO   )ra   )xs    rQ   rR   z)resolve_reload_patterns.<locals>.<lambda>   s    QYY[ rS   r0   )listsetmapr   copycwdappendrb   globrangelenparents
difference)rd   re   directoriespatternscurrent_working_directorypatternmatchreload_pathchildrenjks              rQ   resolve_reload_patternsr}      s    #3s41A1F1F1H'I#JKK',,.H $
  . d? $w- tG}-277@ .%=&&u-.. s;'(Ks4-.Ks0+>?K(3Kvk7JKK H3{#$ 0q1uc+./ 	0A1~Q!7!77A/Q;q>#9#99A/		00 s;'223x=ABKH++ 	Ls   !H	2H	dirsc                 X    | g S t        | t              r| gS t        t        |             S rO   )
isinstancestrri   rj   )r~   s    rQ   _normalize_dirsr      s+    |	$vD	?rS   c            b       v   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/dedee	f   de	de
dee	   dee
   dedeeej                     ef   deeej                     ef   de
de
dee   dee   dededeee	ej,                  f      d eeee	ef   e	f      d!eee	e
f      d"ed#ee   d$ed%ed&eeee	   e	f      d'ed(eeee	   e	f      d)eeee	   e	f      d*ee
   d+ed,ed-ed.eeee	   e	f      d/e	d0ee
   d1ee
   d2e
d3e
d4e
d5ee
   d6eed7ed   f      d8ee	   d9eee	ej,                  f      d:ee	   d;e
d<e
d=ee	   d>e	d?eeee	e	f         d@edAee
   f`dBZedCedD   fdE       Z edCefdF       Z!edCefdG       Z"dMdHZ#dMdIZ$dMdJZ%dCe&jL                  fdKZ'edCefdL       Z(y)NConfig	127.0.0.1i@  Nr   i       g      4@TFg      ? i         TLSv1appr   hostportudsfdloophttpwsws_max_sizews_max_queuews_ping_intervalws_ping_timeoutws_per_message_deflatelifespanenv_file
log_config	log_level
access_logr3   	interfacereloadreload_dirsreload_delay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.ssl_keyfilessl_certfilessl_keyfile_passwordrH   ssl_cert_reqsssl_ca_certsssl_ciphersheadersfactoryh11_max_incomplete_event_sizec1                    || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        |xs d| _        || _        || _        || _        || _        | | _        |!| _        |"| _        |#| _        |$| _        |%| _        |&| _         |'| _!        |(| _"        |)| _#        |*| _$        |+| _%        |,| _&        |-| _'        |.xs g | _(        g | _)        |/| _*        |0| _+        d| _,        | j[                          g | _.        g | _/        g | _0        g | _1        |s|s|r!| jd                  stf        ji                  d       | jd                  rwtk        |      }tk        |      }tk        |      }tm        ||      \  | _0        | _.        tm        |g       \  | _1        | _/        | j\                  jo                         }1| j^                  D ]9  }2|1D ]2  }3|2|3k(  s|2|3jp                  v s	 | j\                  js                  |3       4 ; | jb                  D ],  }4|4| j`                  v s| j`                  js                  |4       . | j\                  s;|rtf        ji                  d|       tw        ty        jz                               g| _.        tf        j}                  dt        t        t        t        | j\                                           |%ddlCmD}5 tf        j}                  d|        |5|	       |3d
tx        j                  v r!t        tx        j                  d
         | _        |  |&tx        j                  j                  dd      | _H        n|| _H        | j&                  r&| j*                  dkD  rtf        ji                  d       y y y # tt        $ r Y w xY w)Nr0   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   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   r   encoded_headersr   r   loadedconfigure_loggingr   reload_dirs_excludesr   r   should_reloadloggerr%   r   r}   rl   rr   remove
ValueErrorr   osgetcwdr&   sortedri   rk   r   dotenvr   environintgetr   )6selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   r   r   r   reload_dirs_tmp	directoryreload_directoryrw   r   s6                                                         rQ   __init__zConfig.__init__   s   f 				&( 0.&<# $"$$"(|!**&"!2"4"4,)B&.&($8!&*(&.5m:<-J* ')02!*,*, ?o$$NN1
 )+6K-o>O-o>O5L62D $"2 ?V?;D $"; #..335O!66 	!	(7 !$!%55$(8(@(@@! ,,334DE!	!  // 9d222((//89 ##NNM#
 %)$5#6 KKAtCT%5%5678
 *KK7BH-?0BJJ>rzz*;<=DL&')zz~~%{(D$ (;D$;;4<<!+NNQR ,;M  * ! !s   :O	O('O(rL   )2.03.0c                 ,    dddd}|| j                      S )Nr   r   )r!   r    r"   )r   )r   mappings     rQ   asgi_versionzConfig.asgi_versionl  s%     5

 t~~&&rS   c                 H    t        | j                  xs | j                        S rO   )boolr   r   r   s    rQ   is_sslzConfig.is_sslu  s    D$$9(9(9::rS   c                 N    t        | j                  xs | j                  dkD        S )Nr0   )r   r   r   r   s    rQ   use_subprocesszConfig.use_subprocessy  s    DKK34<<!#344rS   c                    t        j                  t        d       | j                  t	        | j                  t
              rw| j                  dv r>| j                  | j                  d   d   d<   | j                  | j                  d   d   d<   t         j                  j                  | j                         n| j                  j                  d      rSt        | j                        5 }t        j                  |      }t         j                  j                  |       d d d        n| j                  j                  d      rSd	d l}t        | j                        5 }|j                  |      }t         j                  j                  |       d d d        n+t         j                  j                  | j                  d
       | j                   t	        | j                   t"              rt$        | j                      }n| j                   }t        j&                  d      j)                  |       t        j&                  d      j)                  |       t        j&                  d      j)                  |       | j*                  d
u r5g t        j&                  d      _        d
t        j&                  d      _        y y # 1 sw Y   xY w# 1 sw Y   xY w)NTRACE)TFrB   r4   r3   r5   z.json)z.yamlz.ymlr   F)rA   r>   r?   zuvicorn.asgi)loggingaddLevelNamer   r   r   dictr3   config
dictConfigendswithopenjsonloadyaml	safe_load
fileConfigr   r   r)   	getLoggersetLevelr   r:   r<   )r   fileloaded_configr   r   s        rQ   r   zConfig.configure_logging}  s)   _g6??&$//40??m3  OOL1)<$
  OOL1(;$ ))$//:))'2$//* =d$(IIdOMNN--m<= = ))*;< $//* =d$(NN4$8MNN--m<= = ))OOe *  >>%$..#.&t~~6	 NN	o.77	B./88Cn-66yA??e#;=G./8<AG./9 $5= == =s   )5J61K6J?Kc           	      \   | j                   rJ | j                  rl| j                  sJ t        | j                  | j                  | j
                  | j                  | j                  | j                  | j                        | _
        nd | _
        | j                  D cg c]5  \  }}|j                         j                  d      |j                  d      f7 }}}dt        |      vr| j                  rdg|z   n|| _        t#        | j$                  t&              r$t)        t*        | j$                           }|| _        n| j$                  | _        t#        | j.                  t&              r$t)        t0        | j.                           }|| _        n| j.                  | _        t)        t4        | j6                           | _        	 t)        | j:                        | _        	 | j=                         | _        | jH                  st@        jK                  d       	 | jN                  d	k(  rtQ        jR                  | j<                        rtU        | j<                  d
      }nktQ        jV                  | j<                        r tY        jZ                  | j<                        }n,t]        | j<                  dd       }tY        jZ                  |      }|rdnd| _'        | jN                  dk(  r"t_        | j<                        | _        d | _        n)| jN                  dk(  rta        | j<                        | _        t@        jc                         td        k  rtg        | j<                        | _        | jh                  r&tk        | j<                  | jl                        | _        d| _         y c c}}w # t>        $ r8}t@        jC                  d|z         tE        jF                  d       Y d }~d }~ww xY w# tL        $ rB}| jH                  r+t@        jC                  d|       tE        jF                  d       Y d }~d }~ww xY w)N)rF   rE   rG   rH   rI   rJ   rK   latin1   server)r   s   uvicornzError loading ASGI app. %sr0   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)7r   r   r   r]   r   r   rH   r   r   r   rT   r   lowerencoder   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   keyvaluer   r   r   exc
use_asgi_3calls	            rQ   r   zConfig.load  s(   ;;;;$$$1C((**22 ,,,,**((2DH DH #ll
U YY[)5<<+AB
 
 _ 55$:L:L %%7  	 dii%"4^DII5N"O?RD$'+yyD$dggs# 2<3H IGXD"%)WWD"0$--1HI	0:DO
	"oo/DO <<Q
 >>V#t/$T__kB
##DOO4$88I
t
DA$88>
(2WDN>>V#,T__=DO%)D"^^w&-doo>DO##%85dooFDO4t/G/GDO E
4 % 	LL5;<HHQKK	  	||A3G	s6   :N N O  	O%-OO 	P+)7P&&P+c                 h    t        t        | j                           }| || j                         y y )N)r   )r   r-   r   r   )r   
loop_setups     rQ   setup_event_loopzConfig.setup_event_loop  s.    );K		<R)S
!d&9&9: "rS   c                    | j                   r| j                   }t        j                  t        j                  t        j                        }	 |j	                  |       d}t        j                  | j                   |       d}d}dt        j                  |d      z   dz   }| j                   g}nz| j                  rpt        j                  | j                  t        j                  t        j                        }d	}d}	dt        j                  |	d      z   dz   }|j!                         g}nt        j"                  }
d
}| j$                  r d| j$                  v rt        j&                  }
d}t        j                  |
      }|j)                  t        j*                  t        j,                  d       	 |j	                  | j$                  | j.                  f       d| d}dt        j                  |d      z   dz   }| j0                  rdnd}|| j$                  |j!                         d   g}t        j2                  |g|dd|ii |j5                  d       |S # t        $ r5}t        j                  |       t        j                  d       Y d }~d }~ww xY w# t        $ r4}t        j                  |       t        j                  d       Y d }~d }~ww xY w)Ni  r0   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   chmodrc   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                rQ   bind_socketzConfig.bind_socket  sU   8888D==1C1CDD		$!	9-
 QG#%++.T:;+, 
  88*KWW==&..&:L:LMDKG!N%++n489+, 
  ++-.K^^F&KyySDII-,==/DOOF--v/B/BAF		499dii01
 ,K=8OPG%++k56+, 
 (,{{GM($))T5E5E5G5JKKGRkR/=1QRT"c  S!F  S!s0   3I /'J 	J *JJ	K!*KKc                 R    t        | j                  t              xr | j                  S rO   )r   r   r   r   r   s    rQ   r   zConfig.should_reload?  s    $((C(8T[[8rS   )rL   N))__name__
__module____qualname__rD   r/   rT   	CERT_NONEr   r   r   r   r
   LoopSetupTyper   r   ProtocolHTTPProtocolTypeWSProtocolTypefloatr   LifespanTyper   PathLiker   r   InterfaceTyper   r   r   r   propertyr	   r   r   r   r   r   r  r  r+  r   rP   rS   rQ   r   r      s     ! $@F<B+,0+/'+!'6:;I/3%)#)7;";?;?!%"" ?C+/,0"# 37DH%):>.2/ ]]&*"377;cnS$h34nS nS 	nS
 c]nS SMnS nS D))*,<<=nS $w''(.89nS nS nS #5/nS "%nS !%nS nS  5bkk!123!nS" U4S>3#678#nS$ E#s(O,%nS& 'nS( TN)nS* !+nS, -nS. eDIsN34/nS0 1nS2 "%S	3"783nS4 "%S	3"785nS6 #7nS8 9nS: ;nS< =nS> &eDIsN&;<?nS@ AnSB $C=CnSD %SMEnSF GnSH  InSJ KnSL $,C=MnSN "(3	$+?"@AOnSP c]QnSR uS"++%567SnST 'smUnSV WnSX YnSZ sm[nS\ ]nS^ $uS#X/0_nS` anSb (0}cnS` 'gl3 ' ' ; ; ; 5 5 5*BXSj;
:V]] :x 9t 9 9rS   r   )Fr   r   r   r   logging.configr   r  rT   r   pathlibr   typingr   r   r   r   r   r	   r
   r   r   r   r  uvicorn._typesr   uvicorn.importerr   r   uvicorn.loggingr   uvicorn.middleware.asgi2r   !uvicorn.middleware.message_loggerr    uvicorn.middleware.proxy_headersr   uvicorn.middleware.wsgir   r3  r4  r6  r1  r8  CRITICALERRORWARNINGr9   DEBUGr)   r   r   __annotations__r*   r+   r,   r-   r.   PROTOCOL_TLS_SERVERr/   rD   r   r   r7  rU   r]   r   rb   r}   r   r   rP   rS   rQ   <module>rJ     s4        	  
 
     * F + 4 E C 256 @A*+;<89   ]]LL]]
DcN  ;8J/%s*+  GRE	5d>8C=01  -
*-%$|S 
!  041	3T-#./  #E
D D33 c 3  % 50
 4Y

 #,(
 ",(
 "+f5Q!6*(0zFQVW5"S#X B 
		?	+C$%eC,-. sm 	
  uS"++-./ c] 	^^( $ %,9%,04S	%,
49d4j !%,P%S	3 45 $s) F9 F9rS   