U
    /eA                      @   s   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 Zdd Zedkrdej	krvej
d  d ej
d < ed ej
d = zeejd	 W n ek
r   Y nX eeej dS )
    Nc              
      s  | j d kr(ttjd t_}t|j ddl	m
} ddlm}mm} ddlm}m}m} | jd k	rtjdkrtt t krt  t dkrtd tjtjtjfD ]}|d k	r|  q| jrj jtjO  _| j d k	r| j _ j!dd "d	 | j#|_$| jd kr<t%&t'd
d(d|_$i }	z|)| j*| j \}
}W nB t+k
r } z"| jd krz ddt,| i}	W 5 d }~X Y nX |
|d|	d< | jd k	rz|) \}}W n4 t+k
r } zddt,| i}	W 5 d }~X Y nX ||d|	d< -d| j|.|	 zj|/ }zP|1d  |2d| jf |3dd}z|4|5|	&d W 5 |  X W 5 |0| X W n  t+k
r   6d Y nX d|	krʈ7d td t8d  d k	rX-d |.|	  fdd}z6t d"}t| t9|5|	|d W 5 Q R X W n  t+k
rV   6d Y nX | j d krn|:d  t|j; t|j; |<  -d! |=  -d" d S )#Nwr   )adapter)jsonlogsockets)clientsserverssessionsposixzdebugpy.adapter)prefixz$debugpy.adapter startup environment:    hexasciierrorz%Can't listen for client connections: )hostportclientz%Can't listen for server connections: serverz<Sending endpoints info to debug server at localhost:{0}:
{1}	127.0.0.1wbzutf-8z-Error sending endpoints info to debug server:z#Couldn't set up endpoints; exiting.   ZDEBUGPY_ADAPTER_ENDPOINTSz$Writing endpoints info to {0!r}:
{1}c                      sD    d  zt  W n$ tk
r>   jd dd Y nX d S )Nz%Listener ports closed; deleting {0!r}zFailed to delete {0!r}warning)level)infoosremove	ExceptionZswallow_exception Zlistener_filer   r   </tmp/pip-unpacked-wheel-dg3irmqq/debugpy/adapter/__main__.pydelete_listener_filei   s      z"main.<locals>.delete_listener_file)filez%Error writing endpoints info to file:stdiozAAll debug servers disconnected; waiting for remaining sessions...z'All debug sessions have ended; exiting.)>r   openr   devnullsysstderratexitregisterclosedebugpyr   Zdebugpy.commonr   r   r   Zdebugpy.adapterr   r   r	   
for_servernamegetsidgetpidsetsidforkexitstdinstdout
log_stderrlevelssetZLEVELSZlog_dirZto_fileZdescribe_environmentZserver_access_tokenZaccess_tokencodecsencodeurandomdecodeZserver   r   strr   reprZcreate_clientZclose_socket
settimeoutconnectmakefilewritedumpsZreraise_exceptionr   getenvprintZClientZstop_servingZwait_until_disconnectedZwait_until_ended)argsr&   r   r   r   r   r   r	   r"   Z	endpointsZclient_hostZclient_portexcZserver_hostZserver_portsockZsock_ior    fr   r   r   main   s    






""





  	
 

rH   c                 C   s   t  }|jdtdt jd |jdtd ddd |jdtdd	d
d |jdtdd |jdtdd |jdtddd |jdddd || dd  }|jd kr|jr|	d |j
d k	r|	d |S )Nz--for-serverZPORT)typemetavarhelpz--portz;start the adapter in debugServer mode on the specified port)rI   defaultrJ   rK   z--hostr   ZHOSTz;start the adapter in debugServer mode on the specified hostz--access-tokenz%access token expected from the server)rI   rK   z--server-access-tokenz#access token expected by the serverz	--log-dirZDIRz/enable logging and use DIR to save adapter logsz--log-stderr
store_truezenable logging to stderr)actionrK   r   z--log-stderr requires --portz--for-server requires --port)argparseArgumentParseradd_argumentintSUPPRESSr;   
parse_argsr   r4   r   r+   )argvparserrD   r   r   r   _parse_argv   sb             



rW   __main__r*   z/../../ )rO   r'   r7   localer   r%   rH   rW   __name__modulespath
__import__	setlocaleLC_ALLr   rU   r   r   r   r   <module>   s"   y5
