
    i[                         S SK r S SKrS SKrS SKrS SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJr   " S S\
5      r " S	 S
\5      rg)    N)AnyDict)Arbiter)Worker)Config)Serverc                      ^  \ rS rSr% SrSSS.r\\\4   \	S'   S\S\SS	4U 4S
 jjr
SU 4S jjrSS jrSS jrSS jrSS jrSS jrSrU =r$ )UvicornWorker   zj
A worker class for Gunicorn that interfaces with an ASGI consumer callable,
rather than a WSGI callable.
autoloophttpCONFIG_KWARGSargskwargsreturnNc           	        > [         [        U ]
  " U0 UD6  [        R                  " S5      nU R
                  R                  R                  Ul        UR                  U R
                  R                  R                  5        SUl
        [        R                  " S5      nU R
                  R                  R                  Ul        UR                  U R
                  R                  R                  5        SUl
        S S U R                  R                  U R                  U R                  U R                   U R                  R"                  S.nU R                  R$                  (       Ga  U R                  R&                  R)                  S5      U R                  R&                  R)                  S5      U R                  R&                  R)                  S5      U R                  R&                  R)                  S5      U R                  R&                  R)                  S	5      U R                  R&                  R)                  S
5      U R                  R&                  R)                  S5      S.nUR+                  U5        U R                  R,                  S   R.                  (       a&  U R                  R,                  S   R.                  US'   UR+                  U R0                  5        [3        S0 UD6U l        g )Nzuvicorn.errorFzuvicorn.access)app
log_configtimeout_keep_alivetimeout_notifycallback_notifylimit_max_requestsforwarded_allow_ipskeyfilecertfilepasswordssl_version	cert_reqsca_certsciphers)ssl_keyfilessl_certfilessl_keyfile_passwordr   ssl_cert_reqsssl_ca_certsssl_ciphersbacklog )superr
   __init__logging	getLoggerlog	error_loghandlerssetLevellevel	propagate
access_logcfg	keepalivetimeoutr   max_requestsr   is_sslssl_optionsgetupdatesettingsvaluer   r   config)selfr   r   loggerconfig_kwargs
ssl_kwargs	__class__s         Z/home/maestro/MAESTRO/maestro-backend/venv/lib/python3.13/site-packages/uvicorn/workers.pyr,   UvicornWorker.__init__   s   mT+T<V<""?3((,,55**001 ""#34((--66++112  "&(("4"4"ll#33"&"3"3#'88#?#?
 88???#xx3377	B $ 4 4 8 8 D(,(<(<(@(@(L#xx3377F!%!5!5!9!9+!F $ 4 4 8 8 D#xx3377	BJ   ,88Y'--'+xx'8'8'C'I'IM)$T//0-}-    c                 ^   > U R                   R                  5         [        [        U ]  5         g N)r@   setup_event_loopr+   r
   init_process)rA   rE   s    rF   rL   UvicornWorker.init_process@   s     $$&mT/1rH   c                    U R                    H(  n[        R                  " U[        R                  5        M*     [        R                  " [        R                  U R                  5        [        R
                  " [        R                  S5        g )NF)SIGNALSsignalSIG_DFLSIGUSR1handle_usr1siginterrupt)rA   ss     rF   init_signalsUvicornWorker.init_signalsD   sR     AMM!V^^,  	fnnd&6&67FNNE2rH   c                     [         R                  " 5       nUR                  [        R                  U R
                  [        R                  S5        g)zInstall a SIGQUIT handler on workers.

- https://github.com/encode/uvicorn/issues/1116
- https://github.com/benoitc/gunicorn/issues/2604
N)asyncioget_running_loopadd_signal_handlerrP   SIGQUIThandle_exit)rA   r   s     rF   _install_sigquit_handler&UvicornWorker._install_sigquit_handlerO   s5     '')0@0@&..RVWrH   c                 :  #    U R                   U R                  l        [        U R                  S9nU R	                  5         UR                  U R                  S9I S h  vN   UR                  (       d%  [        R                  " [        R                  5        g g  N;7f)Nr@   )sockets)wsgir@   r   r   r^   serverb   startedsysexitr   WORKER_BOOT_ERROR)rA   servers     rF   _serveUvicornWorker._serveY   si     ))t{{+%%'ll4<<l000~~HHW../  	1s   ABB<Bc                 J    [         R                  " U R                  5       5      $ rJ   )rY   runrj   rA   s    rF   rm   UvicornWorker.runa   s    {{4;;=))rH   c                 ,   #    U R                  5         g 7frJ   )notifyrn   s    rF   r   UvicornWorker.callback_notifyd   s     s   ra   )r   N)__name__
__module____qualname____firstlineno____doc__r   r   strr   __annotations__r,   rL   rV   r^   rj   rm   r   __static_attributes____classcell__)rE   s   @rF   r
   r
      s`    
 .4V$DM4S>D(.c (.S (.T (.T2	3X0* rH   r
   c                       \ rS rSrSSS.rSrg)UvicornH11Workerh   rY   h11r   r*   N)rs   rt   ru   rv   r   rz   r*   rH   rF   r}   r}   h   s    &6MrH   r}   )rY   r-   rP   rf   typingr   r   gunicorn.arbiterr   gunicorn.workers.baser   uvicorn.configr   uvicorn.mainr   r
   r}   r*   rH   rF   <module>r      s;       
  $ ( ! WF Wt7} 7rH   