
     @gtS                        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j+        ej,        ej-        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j9        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j<        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          ZEdS )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 }|                    | ||           t          j        |          |_        |r|                    |           |r|                    |           |S )Nc                       S N )rG   s   B/var/www/piapp/venv/lib/python3.11/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   s     .
%
%C)1;$$$$$tL'<888nY//CO ,!!(+++ !   JrS   pathc                     	 |                                  s|                                 } |                                 S # t          $ r Y dS w xY w)NF)is_absoluteresolveis_dirOSError)r^   s    rQ   rb   rb      sX    !! 	"<<>>D{{}}   uus   ;> 
AApatterns_listdirectories_listc           	         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 rO   )ra   )xs    rQ   rR   z)resolve_reload_patterns.<locals>.<lambda>   s    QYY[[ rS   c                 0    h | ]}t          |          |S rP   )rb   ).0reload_paths     rQ   	<setcomp>z*resolve_reload_patterns.<locals>.<setcomp>   s%    KKKvk7J7JKKKKrS   r0   )listsetmapr   copycwdappendrb   globrangelenparents
difference)
rd   re   directoriespatternscurrent_working_directorypatternmatchchildrenjks
             rQ   resolve_reload_patternsr      sM    #3s41A1F1F1H1H'I'I#J#JKKK',,..H $

  . . d??   $w--   	.tG}}----277@@ . .%== .&&u---. s;''((Ks4--..Ks00+>>??KKKKKK 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++rS   dirsc                 r    | g S t          | t                    r| gS t          t          |                     S rO   )
isinstancestrrm   rn   )r   s    rQ   _normalize_dirsr      s7    |	$ vD		??rS   c            b       h   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&j&        fdKZ'edCefdL            Z(dS )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                    || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        |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 )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   rp   rv   remove
ValueErrorr   osgetcwdr&   sortedrm   ro   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_directoryr{   r   s6                                                         rQ   __init__zConfig.__init__   s   f 				&( 0.&<# $"$$"(|!**&"!2"4"4,)B&.&($8!&*(&.5m:<-J*   ')02!*,*, 	*	.=	$	 NN1  
  *	)+66K-o>>O-o>>O5L6 62D $"2 ?V? ?;D $"; #.3355O!6 	! 	!	(7 ! !$!%555$(8(@@@! ,334DEEEE) ! ! ! D!	 A!  / 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7&')z~~%{( (D$$ (;D$; 	S4<!++NNQRRRRR	S 	S++s   <I
I$#I$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
 5

 t~&&rS   c                 8    t          | j        p| j                  S rO   )boolr   r   r   s    rQ   is_sslzConfig.is_sslu  s    D$9(9:::rS   c                 @    t          | j        p
| j        dk              S )Nr0   )r   r   r   r   s    rQ   use_subprocesszConfig.use_subprocessy  s    DK34<!#3444rS   c                 `   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                   n| j        	                    d          r`t          | j                  5 }t          j        |          }t           j                            |           d d d            n# 1 swxY w Y   n| 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)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66?&$/400 ?m33  OL1)<$
  OL1(;$ ))$/::::))'22 $/** =d$(IdOOMN--m<<<= = = = = = = = = = = = = = = ))*;<<  $/** =d$(NN4$8$8MN--m<<<= = = = = = = = = = = = = = = ))Oe *    >%$.#.. +&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D5FFF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)rF   rE   rG   rH   rI   rJ   rK   c                     g | ]A\  }}|                                                     d           |                    d           fBS )latin1)lowerencode)rj   keyvalues      rQ   
<listcomp>zConfig.load.<locals>.<listcomp>  sS     
 
 
U YY[[))5<<+A+AB
 
 
rS      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)5r   r   r   r]   r   r   rH   r   r   r   rT   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          rQ   r   zConfig.load  s   ;; 	$$$$1C(*2 ,,*(2 2 2DHH DH
 
"l
 
 
 _ 5 555$:L5 %%77  	 di%% 	1"4^DI5N"O"O?RD$$'+yD$dgs## 	- 2<3H I IGXD""%)WD"0$-1HII	0::DOO$ 	 	 	LL5;<<<HQKKKKKKKK		"oo//DO < Q    	 	 	| 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 	4t/G  DO 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     rQ   setup_event_loopzConfig.setup_event_loop  s@    );K	<R)S)S
!Jd&9:::::: "!rS   c                 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  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  s   8 5	L8D=1CDDD		$!	9----   S!!! QG#%+.T:::;+, 
  8*KKW "	L=&.&:LMMDKG!N%+n48889+, 
  ++--.KK^F&Ky -SDI--,=///DOOF-v/BAFFF		49di01111   S!!! QKPPPG%+k5556+, 
 (,{>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 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  r0  r   rP   rS   rQ   r   r      sJ         ! $@F<B+,0+/'+!'6:;I/3%)#)7;";?;?!%"" ?C+/,0"# 37DH%):>.2/ ]&*"377;cnS 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bk!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 nS nS nS` 'gl3 ' ' ' X' ; ; ; ; X; 5 5 5 5 X5*B *B *B *BXS S S Sj; ; ; ;
:V] : : : :x 9t 9 9 9 X9 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   r8  r9  r;  r6  r=  CRITICALERRORWARNINGr9   DEBUGr)   r   r   __annotations__r*   r+   r,   r-   r.   PROTOCOL_TLS_SERVERr/   rD   r   r   r<  rU   r]   r   rb   r   r   r   rP   rS   rQ   <module>rO     sG           				  



 



                               * * * * * * 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] 
DcN    ;8J/ /%s*+    GRE	5 5d>8C=01    -
*-% %$|S 
!    041	3 3T-#./    #E"D"D
D D D D3 c 3 3 3  % 50
 
 4Y
 

 
 #,(
 
 ",(
 
  "+f5QQ!6*(0zFQVWW 5" "S#X   B 
	?	+	+C$%eC,-. sm 	
  uS"+-./ c] 	^   ( $    %,9%,04S	%,
49d4j !%, %, %, %,P%S	3 45 $s)    F9 F9 F9 F9 F9 F9 F9 F9 F9 F9rS   