a
    &ñ»j)
  ã                   @   sž   d 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
 e
dœdd„ZG d	d
„ d
eƒZeƒ  d¡Zedur”eeƒZe ¡  edƒ neƒ  dS )z:
a remote python shell

for injection into startserver.py
é    N)ÚThread)Ú	print_exc)ÚNoReturn©Úreturnc                  C   s   t dƒ tjd  d¡\} }t|ƒ}ttj tjd ¡ƒ 	¡ }t
 
t
jt
j¡}| | |f¡ | t|ƒd  ¡ ¡ t dƒ |tjg}zht |g g ¡\}}}tj|v r¼tƒ }	| |	d  ¡ ¡ ||v r†| d¡ ¡ }	tj |	¡ tj ¡  q†W n$ t�y   dd l}
|
 ¡  Y n0 t d¡ d S )Nzclient side startingé   ú:r   Ú
zsend boot stringi   )ÚprintÚsysÚargvÚsplitÚintÚopenÚosÚpathÚabspathÚreadÚsocketÚAF_INETÚSOCK_STREAMÚconnectÚsendallÚreprÚencodeÚstdinÚselectÚinputÚrecvÚdecodeÚstdoutÚwriteÚflushÚBaseExceptionÚ	tracebackr   Úexit)ÚhostZportstrÚportZmyselfÚsockZ	inputlistÚrÚwÚeÚliner$   © r-   ú:E:\soccer\ml_env\Lib\site-packages\execnet/script/shell.pyÚ
clientside   s,    

r/   c                       s0   e Zd Zddœ‡ fdd„Zddœdd„Z‡  ZS )ÚpromptagentNr   c                    s   t dƒ t ¡  || _d S )Nzserver side starting)r
   ÚsuperÚ__init__Ú
clientsock)Úselfr3   ©Ú	__class__r-   r.   r2   .   s    zpromptagent.__init__c                 C   s  t dƒ | j d¡}| j d¡}| j ¡ }z®| dj|Ž ¡ | ¡  | ¡ }|sXtdƒ‚| 	¡ rÎt
jt
j }}|| t
_t
_zBztt|d ddƒƒ W n ty®   tƒ  Y n0 W |t
_|t
_n|t
_|t
_0 | ¡  W q* t� yþ   t
j d	¡ Y �qY q*0 q*| j ¡  d S )
NzEntering thread prompt loopr*   r)   z
{} {} >>> Znothingr	   z<remote pyin>Úsinglez'connection close, prompt thread returns)r
   r3   ÚmakefileÚgetsocknamer!   Úformatr"   ÚreadlineÚEOFErrorÚstripr   r    ÚstderrÚexecÚcompiler#   r   Úclose)r4   Z
clientfileZfileinÚlocr,   ZoldoutZolderrr-   r-   r.   Úrun3   s6    
ÿzpromptagent.run)Ú__name__Ú
__module__Ú__qualname__r2   rC   Ú__classcell__r-   r-   r5   r.   r0   -   s   r0   r3   zpromptagent - thread started)Ú__doc__r   r   r   r   Ú	threadingr   r$   r   Útypingr   r/   r0   ÚglobalsÚgetr(   ZprompterÚstartr
   r-   r-   r-   r.   Ú<module>   s   '
