Ë
    	V.jZ   ã                   ój  — 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 ddlmZ ddlmZ ddlmZ dd	lmZ g d
¢ZdZ ej&                  d«      Z G d„ d«      Zdd„Zd„ Zd„ Zd„ Zd„ Z e«       Zej8                  Zej:                  Zej<                  Zej>                  Zy)é    Né   )Ú
connection)Úprocess)Ú	reduction)Úsemaphore_tracker)Úspawn)Úutil)Úspawnv_passfds)Úensure_runningÚget_inherited_fdsÚconnect_to_new_processÚset_forkserver_preloadé   ÚQc                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
ForkServerc                 óp   — d | _         d | _        d | _        t        j                  «       | _        dg| _        y )NÚ__main__)Ú_forkserver_addressÚ_forkserver_alive_fdÚ_inherited_fdsÚ	threadingÚLockÚ_lockÚ_preload_modules©Úselfs    úUC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\billiard/forkserver.pyÚ__init__zForkServer.__init__$   s2   € Ø#'ˆÔ Ø$(ˆÔ!Ø"ˆÔÜ—^‘^Ó%ˆŒ
Ø!+ ˆÕó    c                 ó`   — t        d„ | j                  D «       «      st        d«      ‚|| _        y)z>Set list of module names to try to load in forkserver process.c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­w©N)ÚtypeÚstr)Ú.0Úmods     r   Ú	<genexpr>z4ForkServer.set_forkserver_preload.<locals>.<genexpr>-   s   è ø€ ÐEÑ/D¨”4˜“9¤Ô#Ñ/Dùs   ‚z&module_names must be a list of stringsN)Úallr   Ú	TypeError)r   Úmodules_namess     r   r   z!ForkServer.set_forkserver_preload+   s*   € äÑE¨t×/DÒ/DÓEÔEÜÐDÓEÐEØ -ˆÕr    c                 ó   — | j                   S )z”Return list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )r   r   s    r   r   zForkServer.get_inherited_fds1   s   € ð ×"Ñ"Ð"r    c                 óü  — | j                  «        t        |«      dz   t        k\  rt        d«      ‚t	        j                  t        j
                  «      5 }|j                  | j                  «       t        j                  «       \  }}t        j                  «       \  }}||| j                  t        j                  «       g}||z  }	 t        j                  ||«       ||ft        j                  |«       t        j                  |«       cddd«       S #  t        j                  |«       t        j                  |«       ‚ xY w# t        j                  |«       t        j                  |«       w xY w# 1 sw Y   yxY w)a;  Request forkserver to create a child process.

        Returns a pair of fds (status_r, data_w).  The calling process can read
        the child process's pid and (eventually) its returncode from status_r.
        The calling process should write to data_w the pickled preparation and
        process data.
        é   ztoo many fdsN)r   ÚlenÚMAXFDS_TO_SENDÚ
ValueErrorÚsocketÚAF_UNIXÚconnectr   ÚosÚpiper   r   Úgetfdr   ÚsendfdsÚclose)r   ÚfdsÚclientÚparent_rÚchild_wÚchild_rÚparent_wÚallfdss           r   r   z!ForkServer.connect_to_new_process9   s  € ð 	×ÑÔÜˆs‹8�a‰<œ>Ò)Ü˜^Ó,Ð,Ü�]‰]œ6Ÿ>™>Ô*¨fØ�N‰N˜4×3Ñ3Ô4Ü "§¡£	ÑˆH�gÜ "§¡£	ÑˆG�XØ˜w¨×(AÑ(AÜ'×-Ñ-Ó/ð1ˆFà�c‰MˆFð	"Ü×!Ñ! &¨&Ô1Ø Ð)ô —‘˜Ô!Ü—‘˜Ô!÷! +Ñ*øðÜ—‘˜Ô"Ü—‘˜Ô"Øûä—‘˜Ô!Ü—‘˜Õ!ú÷! +Ð*ús1   ÁA1E2ÃDÃ*E2Ä-E Å EÅ,E/Å/E2Å2E;c                 ó  — | j                   5  t        j                  «        | j                  �
	 ddd«       yd}| j                  rBddh}t        j                  d«      }|j                  «       D ��ci c]  \  }}||v sŒ||“Œ }}}ni }t        j                  t        j                  «      5 }t        j                  d«      }|j                  |«       t        j                  |d«       |j                  «        t        j                   «       \  }}		 |j#                  «       |g}
||j#                  «       || j                  |fz  }t        j$                  «       }|gt'        j(                  «       z   }|d|gz  }t+        |||
«       	 t        j,                  |«       || _        |	| _        ddd«       ddd«       yc c}}w #  t        j,                  |	«       ‚ xY w# t        j,                  |«       w xY w# 1 sw Y   ŒMxY w# 1 sw Y   yxY w)	zíMake sure that a fork server is running.

        This can be called from any process.  Note that usually a child
        process will just reuse the forkserver started by its parent, so
        ensure_running() will do nothing.
        Nz<from billiard.forkserver import main; main(%d, %d, %r, **%r)Ú	main_pathÚsys_pathÚignorer3   i€  z-c)r   r   r   r   r   r   Úget_preparation_dataÚitemsr2   r3   r   Úarbitrary_addressÚbindr5   ÚchmodÚlistenr6   ÚfilenoÚget_executabler	   Ú_args_from_interpreter_flagsr
   r9   r   )r   ÚcmdÚdesired_keysÚdataÚxÚyÚlistenerÚaddressÚalive_rÚalive_wÚfds_to_passÚexeÚargss                r   r   zForkServer.ensure_runningV   sÄ  € ð �Z‹ZÜ×,Ñ,Ô.Ø×(Ñ(Ð4Ø÷ ˆZð
,ˆCð ×$Ò$Ø +¨ZÐ8�Ü×1Ñ1°(Ó;�à'+§z¡z¤|ôÙ'3™V˜a °q¸LÒ7H�A�q‘D |ð ò ð �ä—‘œvŸ~™~Ô.°(Ü$×6Ñ6°yÓA�Ø—‘˜gÔ&Ü—‘˜ %Ô(Ø—‘Ô!ô $&§7¡7£9Ñ �˜ð&Ø#+§?¡?Ó#4°gÐ">�KØ˜HŸO™OÓ-¨w¸×8MÑ8MØ ð"ñ "�Cä×.Ñ.Ó0�CØ˜5¤4×#DÑ#DÓ#FÑF�DØ˜T 3˜KÑ'�DÜ" 3¨¨kÕ:ô
 —H‘H˜WÔ%Ø+2�Ô(Ø,3�Ô)÷/ /÷# ˆZùóøð.Ü—H‘H˜WÔ%Øûä—H‘H˜WÕ%ú÷+ /Ð.ú÷# ˆZúsf   �"H¸:HÁ2F:Á?F:Â)HÂ-A$G5ÄA3G Æ#G5Æ)HÆ:HÇ GÇGÇG2Ç2G5Ç5G>	Ç:HÈH
N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   © r    r   r   r   "   s   „ ò-ò.ò#ò"ó:/4r    r   c           	      ó€  — |r\d|v rE|�Cdt        j                  «       _        	 t        j                  |«       t        j                  «       `|D ]  }	 t        |«       Œ t        j                  �A	 t        j                  j                  «        t        t        j                  «      t        _        t        j                  t        j                   t        j"                  «      }t%        j$                  t$        j&                  | ¬«      5 }t)        j*                  «       5 }|j-                  «       t.        _        |j3                  |t(        j4                  «       |j3                  |t(        j4                  «       	 	 	 |j7                  «       D �	�
cg c]  \  }	}
|	j8                  ‘Œ }}	}
|rnŒ0||v r!t        j:                  |d«      dk(  sJ ‚t<        ‚||v sJ ‚|j?                  «       d   5 }d}t        j@                  «       dk(  r$	 tC        ||||«       t        jN                  |«       ddd«       Œ·# t        j                  «       `w xY w# t        $ r Y �Œw xY w# t        t        f$ r Y �Œ¹w xY wc c}
}	w # tD        $ rE t        jF                  t        jH                  «       Ž  t        jJ                  jM                  «        Y Œ°w xY w# t        jN                  |«       w xY w# 1 sw Y   ŒºxY w# t        $ r(}|jP                  tP        jR                  k7  r‚ Y d}~Œéd}~ww xY w# 1 sw Y   nxY w	 ddd«       y# 1 sw Y   yxY w)zRun forkserver.r   NT)rK   r   r    r   )*r   Úcurrent_processÚ_inheritingr   Úimport_main_pathÚ
__import__ÚImportErrorÚsysÚstdinr9   Úopenr5   ÚdevnullÚOSErrorr1   ÚsignalÚSIGCHLDÚSIG_IGNr2   r3   Ú	selectorsÚDefaultSelectorÚgetsocknameÚ_forkserverr   ÚregisterÚ
EVENT_READÚselectÚfileobjÚreadÚ
SystemExitÚacceptÚforkÚ
_serve_oneÚ	ExceptionÚ
excepthookÚexc_infoÚstderrÚflushÚ_exitÚerrnoÚECONNABORTED)Úlistener_fdrU   ÚpreloadrB   rC   ÚmodnameÚhandlerrS   ÚselectorÚkeyÚeventsÚrfdsÚsÚcodeÚes                  r   ÚmainrŒ   Œ   s’  € áØ˜Ñ  YÐ%:Ø48ŒG×#Ñ#Ó%Ô1ð:Ü×&Ñ& yÔ1ä×+Ñ+Ó-Ð9ÛˆGðÜ˜7Õ#ð ô ‡y�yÐð	Ü�I‰I�O‰OÔÜœRŸZ™ZÓ(ŒCŒIô
 �m‰mœFŸN™N¬F¯N©NÓ;€GÜ	�‰”v—~‘~¨kÕ	:¸hÜ×%Ñ%Ô'¨8Ø*2×*>Ñ*>Ó*@ŒÔ'Ø×Ñ˜(¤I×$8Ñ$8Ô9Ø×Ñ˜'¤9×#7Ñ#7Ô8àðØØ=E¿_¹_Ô=NÔOÑ=N©M¨S°&˜CŸK›KÐ=N�DÑOÙØð ð
 ˜d‘?äŸ7™7 7¨AÓ.°#Ò5Ð5Ð5Ü$Ð$à 4Ñ'Ð'Ð'Ø—_‘_Ó& qÒ)¨QØ�DÜ—w‘w“y A’~ð+Ü& q¨(°G¸WÔEô
 ŸH™H TœN÷ *ð øô/ ×+Ñ+Ó-Ñ9ûô ò Úðûô œÐ$ò 	Úð	üó Pøô  )ò /ÜŸN™N¬C¯L©L«NÑ;ÜŸJ™J×,Ñ,Ö.ð/ûô ŸH™H T�Nú÷ *Ð)ûô ò Ø—7‘7œe×0Ñ0Ò0Øô 1ûðú÷9 (Ð'úÐ'÷ 
;×	:Ñ	:úsÕ   £H. ÁIÁ0A I ÄL4ÄALÅ8K*ÆI-
Æ"AK*Ç'KÈI3ÈKÈ%K*È-LÈ.IÉ	IÉIÉI*É)I*É-K*É3AK	Ê>KË K	ËKËK	ËKËK'Ë#K*Ë*	LË3LÌLÌLÌLÌL'	Ì#L4Ì4L=c                 ó   — | ||||fS r#   r]   )r>   r=   ÚaliveÚstfdÚ	inheriteds        r   Ú__unpack_fdsr‘   Ç   s   € Ø�G˜U D¨)Ð3Ð3r    c                 óL  — |j                  «        t        j                   |«       t        j                  t        j                  |«       t	        j
                  | t        dz   «      }| j                  «        t        |«      t        k  sJ ‚t        |Ž \  }}t        _
        }t        _        |t        j                  _        t        |t        j                   «       «       dt"        j$                  v rdd l}|j)                  «        t+        j,                  |«      }	t        ||	«       y )Nr   Úrandomr   )r9   r5   ri   rj   r   Úrecvfdsr0   r/   r‘   ro   r   r   r   Ú_semaphore_trackerÚ_fdÚwrite_unsignedÚgetpidrd   Úmodulesr“   Úseedr   Ú_main)
r‰   rS   rU   r„   r:   r>   r=   r�   r“   rŠ   s
             r   rx   rx   Ë   sÕ   € à‡N�NÔÜ‡H�HˆWÔÜ
‡M�M”&—.‘. 'Ô*ô ×
Ñ
˜Aœ~°Ñ1Ó
2€CØ‡G�G„IÜˆs‹8”~Ò%Ð%Ð%ô *6°sÐ);ñ'€Wˆg”{Ô7Ø	Œ;Ô%Ø/3Ô×(Ñ(Ô,ô �7œBŸI™I›KÔ(ð ”3—;‘;ÑÛØ�‰Œô �;‰;�wÓ€Dô �7˜DÕ!r    c                 óø   — d}t         j                  }t        |«      |k  rCt        j                  | |t        |«      z
  «      }|st        d«      ‚||z  }t        |«      |k  rŒCt         j                  |«      d   S )Nr    zunexpected EOFr   )ÚUNSIGNED_STRUCTÚsizer/   r5   rt   ÚEOFErrorÚunpack)ÚfdrP   Úlengthr‰   s       r   Úread_unsignedr£   í   su   € Ø€DÜ×!Ñ!€FÜ
ˆd‹)�fÒ
Ü�G‰G�B˜¤ T£Ñ*Ó+ˆÙÜÐ+Ó,Ð,Ø�‰	ˆô	 ˆd‹)�fÓ
ô
 ×!Ñ! $Ó'¨Ñ*Ð*r    c                 ó�   — t         j                  |«      }|r/t        j                  | |«      }|dk(  rt	        d«      ‚||d  }|rŒ.y y )Nr   zshould not get here)r�   Úpackr5   ÚwriteÚRuntimeError)r¡   ÚnÚmsgÚnbytess       r   r—   r—   ø   sH   € Ü
×
Ñ
˜qÓ
!€CÙ
Ü—‘˜"˜cÓ"ˆØ�QŠ;ÜÐ4Ó5Ð5Ø�&�'ˆlˆô	 r    )NN) r   r5   rl   ri   r2   Ústructrd   r   Ú r   r   r   r   r   r	   Úcompatr
   Ú__all__r0   ÚStructr�   r   rŒ   r‘   rx   r£   r—   ro   r   r   r   r   r]   r    r   Ú<module>r°      s°   ðÛ Û 	Û Û Û Û Û 
Û å Ý Ý Ý Ý Ý å "ò%€ð €Ø�&—-‘- Ó$€÷c4ñ c4óT8òv4ò"òD+òñ ‹l€Ø×+Ñ+€Ø×1Ñ1Ð Ø$×;Ñ;Ð Ø$×;Ñ;Ñ r    