ó
    øÞ j!  ã                  óÒ   • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S SKJr  \R&                  " S	\5         " S
 S\5      r " S S\5      rg)é    )ÚannotationsN)ÚAny)ÚArbiter)ÚWorker)Úasyncio_run)ÚConfig)ÚServerz˜The `uvicorn.workers` module is deprecated. Please use `uvicorn-worker` package instead.
For more details, see https://github.com/Kludex/uvicorn-worker.c                  óx   ^ • \ rS rSr% SrSSS.rS\S'   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Úhttpzdict[str, Any]ÚCONFIG_KWARGSc           	     óÔ  >• [         T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 R.                  5        [1        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© )ÚsuperÚ__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)ÚselfÚargsÚkwargsÚloggerÚconfig_kwargsÚ
ssl_kwargsÚ	__class__s         €ÚI/var/www/html/gaurav/venv/lib/python3.13/site-packages/uvicorn/workers.pyr*   ÚUvicornWorker.__init__    s  ø€ Ü‰Ò˜$Ð) &Ò)ä×"Ò" ?Ó3ˆØŸ(™(×,Ñ,×5Ñ5ˆŒØ�‰˜Ÿ™×*Ñ*×0Ñ0Ô1Ø ˆÔä×"Ò"Ð#3Ó4ˆØŸ(™(×-Ñ-×6Ñ6ˆŒØ�‰˜Ÿ™×+Ñ+×1Ñ1Ô2Ø ˆÔð ØØ"&§(¡(×"4Ñ"4Ø"Ÿl™lØ#×3Ñ3Ø"&×"3Ñ"3Ø#'§8¡8×#?Ñ#?ñ
ˆð �8‰8�?�?ˆ?à#Ÿx™x×3Ñ3×7Ñ7¸	ÓBØ $§¡× 4Ñ 4× 8Ñ 8¸Ó DØ(,¯©×(<Ñ(<×(@Ñ(@ÀÓ(LØ#Ÿx™x×3Ñ3×7Ñ7¸ÓFØ!%§¡×!5Ñ!5×!9Ñ!9¸+Ó!FØ $§¡× 4Ñ 4× 8Ñ 8¸Ó DØ#Ÿx™x×3Ñ3×7Ñ7¸	ÓBñˆJð × Ñ  Ô,à�8‰8×Ñ˜YÑ'×-×-Ø'+§x¡x×'8Ñ'8¸Ñ'C×'IÑ'IˆM˜)Ñ$à×Ñ˜T×/Ñ/Ô0äÑ-˜}Ñ-ˆ�ó    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)r?   Úss     rF   Úinit_signalsÚUvicornWorker.init_signalsJ   sR   € ð —”ˆAÜ�MŠM˜!œVŸ^™^Ö,ñ ô 	�Š”f—n‘n d×&6Ñ&6Ô7ä×ÒœFŸN™N¨EÕ2rH   c                ó¢   • [         R                  " 5       nUR                  [        R                  U R
                  [        R                  S5        g)z‰Install a SIGQUIT handler on workers.

- https://github.com/Kludex/uvicorn/issues/1116
- https://github.com/benoitc/gunicorn/issues/2604
N)ÚasyncioÚget_running_loopÚadd_signal_handlerrK   ÚSIGQUITÚhandle_exit)r?   r   s     rF   Ú_install_sigquit_handlerÚ&UvicornWorker._install_sigquit_handlerU   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	   rY   Úserver]   ÚstartedÚsysÚexitr   ÚWORKER_BOOT_ERROR)r?   Úservers     rF   Ú_serveÚUvicornWorker._serve_   si   é € ØŸ)™)ˆ�‰ŒÜ˜tŸ{™{Ñ+ˆØ×%Ñ%Ô'Ø�l‰l 4§<¡<ˆlÐ0×0Ð0Ø�~�~Ü�HŠH”W×.Ñ.Õ/ð ñ 	1ùs   ‚ABÁBÁ<Bc                ób   • [        U R                  5       U R                  R                  5       S9$ )N)Úloop_factory)r   re   r>   Úget_loop_factory©r?   s    rF   ÚrunÚUvicornWorker.rung   s"   € Ü˜4Ÿ;™;›=°t·{±{×7SÑ7SÓ7UÑVÐVrH   c              ƒ  ó,   #   • U R                  5         g 7f)N)Únotifyrj   s    rF   r   ÚUvicornWorker.callback_notifyj   s   é € Ø�‰�ùs   ‚r\   )r@   r   rA   r   ÚreturnÚNone)rp   rq   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__annotations__r*   rQ   rY   re   rk   r   Ú__static_attributes__Ú__classcell__)rE   s   @rF   r   r      s?   ø‡ ñð
 .4¸VÑ$D€M�>ÓD÷(.ôT	3ôXô0ôW÷ò rH   r   c                  ó   • \ rS rSrSSS.rSrg)ÚUvicornH11Workerén   rT   Úh11r   r(   N)rr   rs   rt   ru   r   rx   r(   rH   rF   r{   r{   n   s   † Ø&°Ñ6ƒMrH   r{   )Ú
__future__r   rT   r+   rK   ra   ÚwarningsÚtypingr   Úgunicorn.arbiterr   Úgunicorn.workers.baser   Úuvicorn._compatr   Úuvicorn.configr   Úuvicorn.serverr	   ÚwarnÚDeprecationWarningr   r{   r(   rH   rF   Ú<module>rˆ      sY   ðÝ "ã Û Û Û 
Û Ý å $Ý (å 'Ý !Ý !à ‡‚ðFàôôS�Fô Sôl7�}õ 7rH   