Ë
    #V.jÒ2  ã                  ó¤  — 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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mZmZmZ d dlZd dlmZ er!d dlmZ d dlmZ d d	lmZ d d
lmZ eeeeef   Z ejB                  ejD                  fZ#e	j                  dk(  re#ejH                  fz  Z# ejJ                  d«      Z& G d„ d«      Z' G d„ d«      Z(y)é    )ÚannotationsN)Ú
formatdate)Ú	FrameType)ÚTYPE_CHECKINGÚ	GeneratorÚSequenceÚUnion)ÚConfig)ÚH11Protocol)ÚHttpToolsProtocol)ÚWebSocketProtocol)Ú
WSProtocolÚwin32zuvicorn.errorc                  ó   — e Zd ZdZdd„Zy)ÚServerStatezP
    Shared servers state that is available between all protocol instances.
    c                ó\   — d| _         t        «       | _        t        «       | _        g | _        y )Nr   )Útotal_requestsÚsetÚconnectionsÚtasksÚdefault_headers)Úselfs    úPC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\uvicorn/server.pyÚ__init__zServerState.__init__,   s%   € ØˆÔÜ+.«5ˆÔÜ.1«eˆŒ
Ø:<ˆÕó    N©ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r   '   s   „ ñô=r   r   c                  ó”   — e Zd Zdd„Zddd„Zddd„Zddd„Zddd„Zdd„Zdd„Z	dd	„Z
ddd
„Zdd„Zej                  dd„«       Zdd„Zy)ÚServerc                óv   — || _         t        «       | _        d| _        d| _        d| _        d| _        g | _        y )NFg        )Úconfigr   Úserver_stateÚstartedÚshould_exitÚ
force_exitÚlast_notifiedÚ_captured_signals)r   r'   s     r   r   zServer.__init__4   s9   € ØˆŒÜ'›MˆÔàˆŒØ ˆÔØˆŒØ ˆÔà,.ˆÕr   Nc                ó€   — | j                   j                  «        t        j                  | j	                  |¬«      «      S )N©Úsockets)r'   Úsetup_event_loopÚasyncioÚrunÚserve©r   r0   s     r   r3   z
Server.run?   s,   € Ø�‰×$Ñ$Ô&Ü�{‰{˜4Ÿ:™:¨g˜:Ó6Ó7Ð7r   c              ƒ  óŒ   K  — | j                  «       5  | j                  |«      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w©N)Úcapture_signalsÚ_server5   s     r   r4   zServer.serveC   s8   è ø€ Ø×!Ñ!Õ#Ø—+‘+˜gÓ&×&Ð&÷ $Ð#Ø&ø÷ $Ð#üs$   ‚A“8¨6©8­	A¶8¸A½Ac              ƒ  óR  K  — t        j                  «       }| j                  }|j                  s|j	                  «        |j                  |«      | _        d}dt        j                  dd¬«      z   dz   }t        j                  ||d|i¬«       | j                  |¬	«      ƒ d {  –—†  | j                  ry | j                  «       ƒ d {  –—†  | j                  |¬	«      ƒ d {  –—†  d
}dt        j                  dd¬«      z   dz   }t        j                  ||d|i¬«       y 7 Œ}7 ŒZ7 ŒB­w)NzStarted server process [%d]zStarted server process [z%dÚcyan)ÚfgÚ]Úcolor_message©Úextrar/   zFinished server process [%d]zFinished server process [)ÚosÚgetpidr'   ÚloadedÚloadÚlifespan_classÚlifespanÚclickÚstyleÚloggerÚinfoÚstartupr*   Ú	main_loopÚshutdown)r   r0   Ú
process_idr'   Úmessager>   s         r   r9   zServer._serveG   sý   è ø€ Ü—Y‘Y“[ˆ
à—‘ˆØ�}Š}Ø�K‰KŒMà×-Ñ-¨fÓ5ˆŒà/ˆØ2´U·[±[ÀÈ&Ô5QÑQÐTWÑWˆÜ�‰�G˜Z°ÀÐ/OˆÔPà�l‰l 7ˆlÓ+×+Ð+Ø×ÒØØ�n‰nÓ×ÐØ�m‰m GˆmÓ,×,Ð,à0ˆØ3´e·k±kÀ$È6Ô6RÑRÐUXÑXˆÜ�‰�G˜Z°ÀÐ/OˆÕPð 	,øð 	øØ,ús6   ‚B!D'Â#D!Â$$D'ÃD#Ã	D'Ã"D%Ã#?D'Ä#D'Ä%D'c              ƒ  ó  ‡ ‡K  — ‰ j                   j                  «       ƒ d {  –—†  ‰ j                   j                  rd‰ _        y ‰ j                  Š	 d
	 	 	 dˆˆ fd„}t	        j
                  «       }|�–	 	 	 	 dd„}g ‰ _        |D ]~  }t        j                  «       dk(  }‰j                  dkD  r
|r ||«      }|j                  ||‰j                  ‰j                  ¬«      ƒ d {  –—† }‰ j                  j                  |«       Œ€ |}�nå‰j                  �’t        j                   ‰j                  t        j"                  t        j$                  «      }|j                  ||‰j                  ‰j                  ¬«      ƒ d {  –—† }|j&                  €J ‚|j&                  }|g‰ _        �nG‰j(                  �Òd}	t*        j,                  j/                  ‰j(                  «      r)t+        j0                  ‰j(                  «      j2                  }	|j5                  |‰j(                  ‰j                  ‰j                  ¬«      ƒ d {  –—† }t+        j6                  ‰j(                  |	«       |j&                  €J ‚|j&                  }|g‰ _        ni	 |j                  |‰j8                  ‰j:                  ‰j                  ‰j                  ¬	«      ƒ d {  –—† }j&                  €J ‚|j&                  }|g‰ _        |€‰ jI                  |«       d‰ _%        y 	 d‰ _%        y 7 �Œð7 �Œ27 �Œš7 ŒÝ7 ŒU# t<        $ rW}
t>        jA                  |
«       ‰ j                   jC                  «       ƒ d {  –—†7   tE        jF                  d«       Y d }
~
Œ®d }
~
ww xY w­w)NTc                ój   •— ‰j                  ‰‰j                  ‰j                  j                  | ¬«      S )N)r'   r(   Ú	app_stateÚ_loop)Úhttp_protocol_classr(   rF   Ústate)rS   r'   r   s    €€r   Úcreate_protocolz'Server.startup.<locals>.create_protocolf   s9   ø€ ð ×-Ñ-ØØ!×.Ñ.ØŸ-™-×-Ñ-Øð	 .ó ð r   c                ód   — ddl m} | j                  t        j                  «       «      } ||«      S )Nr   )Ú	fromshare)ÚsocketrX   ÚsharerA   rB   )ÚsockrX   Ú	sock_datas      r   Ú_share_socketz%Server.startup.<locals>._share_socketw   s&   € õ
 -à ŸJ™J¤r§y¡y£{Ó3�	Ù  Ó+Ð+r   ÚWindowsé   )r[   ÚsslÚbacklogi¶  )Úpathr`   ra   )ÚhostÚportr`   ra   r7   )rS   z asyncio.AbstractEventLoop | Noner   zasyncio.Protocol)r[   úsocket.SocketTyper   re   )&rF   rK   r*   r'   r2   Úget_running_loopÚserversÚplatformÚsystemÚworkersÚcreate_serverr`   ra   ÚappendÚfdrY   ÚfromfdÚAF_UNIXÚSOCK_STREAMr0   ÚudsrA   rb   ÚexistsÚstatÚst_modeÚcreate_unix_serverÚchmodrc   rd   ÚOSErrorrI   ÚerrorrM   ÚsysÚexitÚ_log_started_messager)   )r   r0   rV   Úloopr]   r[   Ú
is_windowsÚserverÚ	listenersÚ	uds_permsÚexcr'   s   `          @r   rK   zServer.startup^   s  ùè ø€ Ø�m‰m×#Ñ#Ó%×%Ð%Ø�=‰=×$Ò$Ø#ˆDÔØà—‘ˆð 7;ð	Ø3ð	àö	ô ×'Ñ'Ó)ˆð Ðð,Ø'ð,à"ó,ð >@ˆDŒLÛ�Ü%Ÿ_™_Ó.°)Ñ;�
Ø—>‘> AÒ%©*Ù(¨Ó.�DØ#×1Ñ1°/ÈÐRX×R\ÑR\Ðfl×ftÑftÐ1Óu×u�Ø—‘×#Ñ# FÕ+ð  ð  ŠIà�Y‰YÐ"ä—=‘= §¡¬F¯N©N¼F×<NÑ<NÓOˆDØ×-Ñ-¨oÀDÈfÏjÉjÐbh×bpÑbpÐ-Óq×qˆFØ—>‘>Ð-Ð-Ð-ØŸ™ˆIØ"˜8ˆDŽLà�Z‰ZÐ#àˆIÜ�w‰w�~‰~˜fŸj™jÔ)ÜŸG™G F§J¡JÓ/×7Ñ7�	Ø×2Ñ2Ø f§j¡j°f·j±jÈ&Ï.É.ð 3ó ÷ ˆFô �H‰H�V—Z‘Z Ô+Ø—>‘>Ð-Ð-Ð-ØŸ™ˆIØ"˜8ˆD�LðØ#×1Ñ1Ø#ØŸ™ØŸ™ØŸ
™
Ø"ŸN™Nð  2ó  ÷ �ð —>‘>Ð-Ð-Ð-ØŸ™ˆIØ"˜8ˆDŒLàˆ?Ø×%Ñ% iÔ0ð ˆ�ð àˆ�ðu 	&ùðN vùð rùðøðùô ò Ü—‘˜SÔ!Ø—m‘m×,Ñ,Ó.×.Ñ.Ü—‘˜—‘ûðüs“   „N¢L£C NÃ#LÃ$BNÅ>LÅ?B>NÈ=LÈ>ANÊAL ËLËL ËANÌNÌNÌNÌL Ì	M?Ì(2M:ÍMÍM:Í5NÍ:M?Í?Nc                ó  — | j                   }|j                  �*|d   }t        j                  d|j	                  «       «       y |j
                  �!t        j                  d|j
                  «       y d}|j                  €dn|j                  }d|v rd}|j                  }|dk(  r|d   j	                  «       d   }|j                  rd	nd
}d|› d�}dt        j                  |d¬«      z   dz   }	t        j                  ||||d|	i¬«       y )Nr   z3Uvicorn running on socket %s (Press CTRL+C to quit)z8Uvicorn running on unix socket %s (Press CTRL+C to quit)z
%s://%s:%dz0.0.0.0Ú:z%s://[%s]:%dr_   ÚhttpsÚhttpzUvicorn running on z (Press CTRL+C to quit)T)Úboldr>   r?   )r'   rm   rI   rJ   Úgetsocknamerq   rc   rd   r`   rG   rH   )
r   r   r'   r[   Úaddr_formatrc   rd   Úprotocol_namerO   r>   s
             r   r{   zServer._log_started_message»   s  € Ø—‘ˆà�9‰9Ð Ø˜Q‘<ˆDÜ�K‰KØEØ× Ñ Ó"õð
 �Z‰ZÐ#Ü�K‰KÐRÐTZ×T^ÑT^Õ_ð 'ˆKØ &§¡Ð 3‘9¸¿¹ˆDØ�d‰{à,�à—;‘;ˆDØ�qŠyØ  ‘|×/Ñ/Ó1°!Ñ4�à'-§z¢z™G°vˆMØ+¨K¨=Ð8OÐPˆGØ1´E·K±KÀÐRVÔ4WÑWÐZsÑsˆMÜ�K‰KØØØØØ&¨Ð6ð õ r   c              ƒ  óÚ   K  — d}| j                  |«      ƒ d {  –—† }|sD|dz  }|dz  }t        j                  d«      ƒ d {  –—†  | j                  |«      ƒ d {  –—† }|sŒCy y 7 ŒK7 Œ$7 Œ­w)Nr   r_   i / çš™™™™™¹?)Úon_tickr2   Úsleep)r   Úcounterr*   s      r   rL   zServer.main_loopÞ   si   è ø€ ØˆØ ŸL™L¨Ó1×1ˆÙØ�q‰LˆGØ Ñ&ˆGÜ—-‘- Ó$×$Ð$Ø $§¡¨WÓ 5×5ˆKô	 ð 2øð %øØ5ús9   ‚A+™A%š(A+ÁA'ÁA+ÁA)ÁA+Á#A+Á'A+Á)A+c              ƒ  ó„  K  — |dz  dk(  rÚt        j                   «       }t        |d¬«      j                  «       }| j                  j                  rd|fg}ng }|| j                  j
                  z   | j                  _        | j                  j                  �O|| j                  z
  | j                  j                  kD  r)|| _	        | j                  j                  «       ƒ d {  –—†  | j                  ry| j                  j                  }|�3| j                  j                  |k\  rt        j                  d|› d�«       yy7 Œ]­w)	Né
   r   T)Úusegmts   datezMaximum request limit of z exceeded. Terminating process.F)Útimer   Úencoder'   Údate_headerÚencoded_headersr(   r   Úcallback_notifyr,   Útimeout_notifyr*   Úlimit_max_requestsr   rI   Úwarning)r   rŽ   Úcurrent_timeÚcurrent_dater”   Úmax_requestss         r   rŒ   zServer.on_tickç   s  è ø€ à�R‰<˜1ÒÜŸ9™9›;ˆLÜ% l¸4Ô@×GÑGÓIˆLà�{‰{×&Ò&Ø '¨Ð6Ð7‘à �à0;¸d¿k¹k×>YÑ>YÑ0YˆD×ÑÔ-ð �{‰{×*Ñ*Ð6Ø $×"4Ñ"4Ñ4°t·{±{×7QÑ7QÒQØ)5�DÔ&ØŸ+™+×5Ñ5Ó7×7Ð7ð ×ÒØà—{‘{×5Ñ5ˆØÐ#¨×(9Ñ(9×(HÑ(HÈLÒ(XÜ�N‰NÐ6°|°nÐDcÐdÔeØàð 8ús   ‚CE Ã D>Ã!AE c              ƒ  óx  K  — t         j                  d«       | j                  D ]  }|j                  «        Œ |xs g D ]  }|j                  «        Œ t	        | j
                  j                  «      D ]  }|j                  «        Œ t        j                  d«      ƒ d {  –—†  	 t        j                  | j                  «       | j                  j                  ¬«      ƒ d {  –—†  | j*                  s#| j,                  j                  «       ƒ d {  –—†  y y 7 Œv7 Œ6# t        j                  $ r‡ t         j                  dt!        | j
                  j"                  «      «       | j
                  j"                  D ]8  }t$        j&                  dk  r|j)                  «        Œ'|j)                  d¬«       Œ: Y ŒÍw xY w7 Œ§­w)NzShutting downr‹   )Útimeoutz=Cancel %s running task(s), timeout graceful shutdown exceeded)é   é	   z2Task cancelled, timeout graceful shutdown exceeded)Úmsg)rI   rJ   rg   ÚcloseÚlistr(   r   rM   r2   r�   Úwait_forÚ_wait_tasks_to_completer'   Útimeout_graceful_shutdownÚTimeoutErrorrx   Úlenr   ry   Úversion_infoÚcancelr+   rF   )r   r0   r~   r[   Ú
connectionÚts         r   rM   zServer.shutdown  sd  è ø€ Ü�‰�OÔ$ð —l”lˆFØ�L‰L�Nð #à’M˜r’MˆDØ�J‰J�Lð "ô ˜t×0Ñ0×<Ñ<Ö=ˆJØ×ÑÕ!ð >ä�m‰m˜CÓ × Ð ð	WÜ×"Ñ"Ø×,Ñ,Ó.ØŸ™×=Ñ=ô÷ ð ð  �ŠØ—-‘-×(Ñ(Ó*×*Ñ*ð ð) 	!øðùô ×#Ñ#ò 		WÜ�L‰LØOÜ�D×%Ñ%×+Ñ+Ó,ôð ×&Ñ&×,Ô,�Ü×#Ñ# fÒ,Ø—H‘H•Jà—H‘HÐ!U�HÕVò	 -ð		Wúð +úsU   ‚BF:Â DÂ!F:Â&<D Ã"DÃ#D Ã')F:ÄF8ÄF:ÄD ÄBF5Æ2F:Æ4F5Æ5F:c              ƒ  óÖ  K  — | j                   j                  r…| j                  syd}t        j	                  |«       | j                   j                  rL| j                  s@t        j                  d«      ƒ d {  –—†  | j                   j                  r| j                  sŒ@| j                   j                  r…| j                  syd}t        j	                  |«       | j                   j                  rL| j                  s@t        j                  d«      ƒ d {  –—†  | j                   j                  r| j                  sŒ@| j                  D ]  }|j                  «       ƒ d {  –—†  Œ y 7 Œì7 ŒS7 Œ­w)Nz8Waiting for connections to close. (CTRL+C to force quit)r‹   z@Waiting for background tasks to complete. (CTRL+C to force quit))
r(   r   r+   rI   rJ   r2   r�   r   rg   Úwait_closed)r   r¡   r~   s      r   r¥   zServer._wait_tasks_to_complete(  s  è ø€ à×Ñ×(Ò(°·²ØLˆCÜ�K‰K˜ÔØ×#Ñ#×/Ò/¸¿ºÜ—m‘m CÓ(×(Ð(ð ×#Ñ#×/Ò/¸¿»ð ×Ñ×"Ò"¨4¯?ª?ØTˆCÜ�K‰K˜ÔØ×#Ñ#×)Ò)°$·/²/Ü—m‘m CÓ(×(Ð(ð ×#Ñ#×)Ò)°$·/³/ð —l”lˆFØ×$Ñ$Ó&×&Ñ&ñ #ð )øð )øð 'úsC   ‚A4E)Á6E#Á7&E)ÂA3E)ÄE%Ä&E)Ä9"E)ÅE'ÅE)Å%E)Å'E)c              #  ó   K  — t        j                  «       t        j                  «       urd –— y t        D �ci c]#  }|t	        j                  || j
                  «      “Œ% }}	 d –— |j                  «       D ]  \  }}t	        j                  ||«       Œ 	 t        | j                  «      D ]  }t	        j                  |«       Œ y c c}w # |j                  «       D ]  \  }}t	        j                  ||«       Œ w xY w­wr7   )
Ú	threadingÚcurrent_threadÚmain_threadÚHANDLED_SIGNALSÚsignalÚhandle_exitÚitemsÚreversedr-   Úraise_signal)r   ÚsigÚoriginal_handlersÚhandlerÚcaptured_signals        r   r8   zServer.capture_signals:  sÚ   è ø€ ô ×#Ñ#Ó%¬Y×-BÑ-BÓ-DÑDÛØõ SbÓbÑRaÈ3˜S¤&§-¡-°°T×5EÑ5EÓ"FÑFÐRaÐÐbð	,Ûà 1× 7Ñ 7Ö 9‘��WÜ—‘˜c 7Õ+ñ !:ô
  (¨×(>Ñ(>Ö?ˆOÜ×Ñ Õ0ñ  @ùò cøð !2× 7Ñ 7Ö 9‘��WÜ—‘˜c 7Õ+ñ !:üs)   ‚6C>¸(CÁ C>Á#C Á'A$C>Ã0C;Ã;C>c                ó–   — | j                   j                  |«       | j                  r|t        j                  k(  rd| _        y d| _        y )NT)r-   rl   r*   r´   ÚSIGINTr+   )r   r¹   Úframes      r   rµ   zServer.handle_exitN  s9   € Ø×Ñ×%Ñ% cÔ*Ø×Ò ¤v§}¡}Ò 4Ø"ˆD�Oà#ˆDÕr   )r'   r
   r   r   r7   )r0   zlist[socket.socket] | Noner   r   )r   zSequence[socket.SocketType]r   r   r   )rŽ   Úintr   Úbool)r   zGenerator[None, None, None])r¹   rÀ   r¿   zFrameType | Noner   r   )r   r    r!   r   r3   r4   r9   rK   r{   rL   rŒ   rM   r¥   Ú
contextlibÚcontextmanagerr8   rµ   r#   r   r   r%   r%   3   sX   „ ó	/ô8ô'ôQô.[óz!óF6óô<!+óF'ð$ ×Ñò1ó ð1ô&$r   r%   ))Ú
__future__r   r2   rÂ   ÚloggingrA   rh   r´   rY   ry   r°   r’   Úemail.utilsr   Útypesr   Útypingr   r   r   r	   rG   Úuvicorn.configr
   Úuvicorn.protocols.http.h11_implr   Ú%uvicorn.protocols.http.httptools_implr   Ú,uvicorn.protocols.websockets.websockets_implr   Ú)uvicorn.protocols.websockets.wsproto_implr   Ú	Protocolsr¾   ÚSIGTERMr³   ÚSIGBREAKÚ	getLoggerrI   r   r%   r#   r   r   Ú<module>rÒ      sº   ðÝ "ã Û Û Û 	Û Û Û Û 
Û Û Ý "Ý ß <Ó <ã å !áÝ;ÝGÝNÝDà�kÐ#4°jÐBSÐSÑT€Ið ‡M�MØ
‡N�Nð€ð ‡<�<�7ÒØ˜Ÿ™Ð)Ñ)€Oà	ˆ×	Ñ	˜?Ó	+€÷	=ñ 	=÷`$ò `$r   