Ë
    #V.j5  ã                  óÆ   — 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mZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ  ej"                  de«        G d	„ d
e«      Z G d„ de«      Zy)é    )ÚannotationsN)ÚAny)ÚArbiter)ÚWorker)Ú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                  ón   ‡ — e Zd ZU dZdddœZded<   dˆ fd„Zdˆ fd„Zdd„Zdd	„Z	dd
„Z
dd„Zdd„Zˆ xZS )ÚUvicornWorkerzv
    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        ‰| �  |i |¤Ž t        j                  d«      }| j                  j
                  j                  |_        |j                  | j                  j
                  j                  «       d|_	        t        j                  d«      }| j                  j                  j                  |_        |j                  | j                  j                  j                  «       d|_	        d d | j                  j                  | j                  | j                  | j                  | j                  j                   dœ}| j                  j"                  �r| j                  j$                  j'                  d«      | j                  j$                  j'                  d«      | j                  j$                  j'                  d«      | j                  j$                  j'                  d«      | j                  j$                  j'                  d	«      | j                  j$                  j'                  d
«      | j                  j$                  j'                  d«      dœ}|j)                  |«       | j                  j*                  d   j,                  r&| j                  j*                  d   j,                  |d<   |j)                  | j.                  «       t1        di |¤Ž| _        y )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         €úQC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\uvicorn/workers.pyr(   z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                óV   •— | j                   j                  «        t        ‰| �  «        y ©N)r<   Úsetup_event_loopr'   Úinit_process)r=   rC   s    €rD   rI   zUvicornWorker.init_processI   s   ø€ Ø�‰×$Ñ$Ô&Ü‰ÑÕrE   c                ó  — | j                   D ]&  }t        j                  |t        j                  «       Œ( t        j                  t        j                  | j                  «       t        j
                  t        j                  d«       y )NF)ÚSIGNALSÚsignalÚSIG_DFLÚSIGUSR1Úhandle_usr1Úsiginterrupt)r=   Úss     rD   Úinit_signalszUvicornWorker.init_signalsM   sR   € ð —”ˆAÜ�M‰M˜!œVŸ^™^Õ,ð ô 	�‰”f—n‘n d×&6Ñ&6Ô7ä×ÑœFŸN™N¨EÕ2rE   c                ó    — t        j                  «       }|j                  t        j                  | j
                  t        j                  d«       y)z¡Install 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_handlerrL   ÚSIGQUITÚhandle_exit)r=   r   s     rD   Ú_install_sigquit_handlerz&UvicornWorker._install_sigquit_handlerX   s5   € ô ×'Ñ'Ó)ˆØ×Ñ¤§¡°×0@Ñ0@Ä&Ç.Á.ÐRVÕWrE   c              ƒ  ó:  K  — | j                   | j                  _        t        | j                  ¬«      }| j	                  «        |j                  | j                  ¬«      ƒ d {  –—†  |j                  s$t        j                  t        j                  «       y y 7 Œ5­w)N)r<   )Úsockets)Úwsgir<   r   r   rY   Úserver[   ÚstartedÚsysÚexitr   ÚWORKER_BOOT_ERROR)r=   Úservers     rD   Ú_servezUvicornWorker._serveb   sj   è ø€ ØŸ)™)ˆ�‰ŒÜ˜tŸ{™{Ô+ˆØ×%Ñ%Ô'Ø�l‰l 4§<¡<ˆlÓ0×0Ð0Ø�~Š~Ü�H‰H”W×.Ñ.Õ/ð ð 	1ús   ‚A!BÁ#BÁ$6Bc                óH   — t        j                  | j                  «       «      S rG   )rT   Úrunrc   ©r=   s    rD   re   zUvicornWorker.runj   s   € Ü�{‰{˜4Ÿ;™;›=Ó)Ð)rE   c              ƒ  ó,   K  — | j                  «        y ­wrG   )Únotifyrf   s    rD   r   zUvicornWorker.callback_notifym   s   è ø€ Ø�‰�ùs   ‚)r>   r   r?   r   ÚreturnÚNone)ri   rj   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r(   rI   rR   rY   rc   re   r   Ú__classcell__)rC   s   @rD   r
   r
      s>   ø… ñð
 .4¸VÑ$D€M�>ÓDõ(.õTó	3óXó0ó*÷rE   r
   c                  ó   — e Zd ZdddœZy)ÚUvicornH11WorkerrT   Úh11r   N)rk   rl   rm   r   r&   rE   rD   rr   rr   q   s   „ Ø&°Ñ6�MrE   rr   )Ú
__future__r   rT   r)   rL   r_   ÚwarningsÚtypingr   Úgunicorn.arbiterr   Úgunicorn.workers.baser   Úuvicorn.configr   Úuvicorn.mainr   ÚwarnÚDeprecationWarningr
   rr   r&   rE   rD   Ú<module>r}      sX   ðÝ "ã Û Û Û 
Û Ý å $Ý (å !Ý à €‡�ðFàôôW�Fô Wôt7�}õ 7rE   