o
    [ZhX                     @   sr   d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZmZmZ daG dd dejZdd ZdS )	    N)adaptercommon)log	messagingsockets)
componentsserverssessionsc                       s`   e Zd ZdZejjZ fddZedd Zedd Z	edd	 Z
ed
d Zdd Z  ZS )Launcherz-Handles the launcher side of a debug session.c                    sX   |  |j rJ t || d | _	 d | _	 | |_ W d    d S 1 s%w   Y  d S N)launchersuper__init__pid	exit_code)selfsessionstream	__class__ P/var/www/html/lang_env/lib/python3.10/site-packages/debugpy/adapter/launchers.pyr      s   
"zLauncher.__init__c                 C   s   |dt | _| j| d S )NZsystemProcessId)intr   clientpropagate_after_startr   eventr   r   r   process_event"   s   zLauncher.process_eventc                 C   s   | j | d S r   )r   r   r   r   r   r   output_event'      zLauncher.output_eventc                 C   s   |dt | _d S )NexitCode)r   r   r   r   r   r   exited_event+   r   zLauncher.exited_eventc                 C   s<   z| j jdd| ji W n	 ty   Y nw | j  d S )NZexitedr    )r   channelZ
send_eventr   	Exceptioncloser   r   r   r   terminated_event3   s   zLauncher.terminated_eventc              	   C   sz   | j 0 | jd u rz| jd W n ty   Y nw W d    d S W d    d S W d    d S 1 s6w   Y  d S )N	terminate)r   r   r"   requestr#   )r   r   r   r   terminate_debuggee;   s   
"zLauncher.terminate_debuggee)__name__
__module____qualname____doc__r   	ComponentZmessage_handlerr   r   r   r!   r%   r(   __classcell__r   r   r   r   r
      s    



r
   c              
      sZ  |
rddgng }||7 }||g7 }i }t |j} js)tj \}|d< tj|d<  fdd}ztj	d||dd	aW n t
yM } z|d
 |d }~ww t  zNt \}}|dkr`|n| d| }|t|dg7 }||7 }tjd urtj|td< tjjddhkrtdtjj|td< |dkrtd | ztj||t ttj t|  tjtjtjd W n_ t
y } z|d|d }~ww td   jj d ddd}|| |	||d}|d ur||d< |rd|d< z
 jj!"d | W n t#j$y } z|%| W Y d }~nd }~ww  j& fd!d"|
r(d nt'j(d#s3|d$z j)j!*|j+| W n t#j$yW } z|%| W Y d }~nd }~ww  j& fd%d"t'j(d#sj|d& jr{W t,  d at  d S tj- d'd" t'j(d#}|d u r|d(|.  W t,  d at  d S t,  d at  w ))Nsudoz-EportZadapterAccessTokenc                    s"   t   tj| }t | d S r   )listenerr$   r   ZJsonIOStreamZfrom_socketr
   )sockr   r   r   r   on_launcher_connected_   s   z-spawn_debuggee.<locals>.on_launcher_connectedr
      )backlogz5{0} couldn't create listener socket for launcher: {1}z	127.0.0.1:z--ZDEBUGPY_LOG_DIRwarningerror ZDEBUGPY_LOG_STDERRZinternalConsolez{0} spawning launcher: {1!r})cwdenvstdinstdoutstderrzFailed to spawn launcher: {0}z2{0} spawning launcher via "runInTerminal" request.ZsupportsRunInTerminalRequestZ
integratedZexternal)ZintegratedTerminalZexternalTerminal)kindtitleargsr<   r;   TZargsCanBeInterpretedByShellZrunInTerminalc                      s    j S r   )r   r   r3   r   r   <lambda>   s    z spawn_debuggee.<locals>.<lambda>)timeoutz)Timed out waiting for launcher to connectc                      s    j jd uS r   )r   r   r   r3   r   r   rC      s    z3Timed out waiting for "process" event from launcherc                 S   s   dS )NTr   )connr   r   r   rC      s    z'Timed out waiting for debuggee to spawn)/dict	argumentsZno_debugr   r1   getsocknamer   Zaccess_tokenr   Zserver#   Zcant_handler	   Zreport_socketsstrr   Zlog_dirr?   Zlevelsjoininfo
subprocessPopenlistosenvironitemssysr=   r>   r   Zcapabilitiesrequirer"   send_requestr   ZMessageHandlingError	propagatewait_forr   ZPROCESS_SPAWN_TIMEOUTr   r'   commandr$   Zwait_for_connectionZattach_to_session)r   Zstart_requestpythonZlauncher_pathZadapter_hostrB   Zshell_expand_argsr;   consoleZconsole_titler/   Zcmdliner<   rG   _r4   excZlauncher_hostZlauncher_portZlauncher_addrkindsZrequest_argsrE   r   r3   r   spawn_debuggeeD   s   












r]   )rO   rL   rR   Zdebugpyr   r   Zdebugpy.commonr   r   r   Zdebugpy.adapterr   r   r	   r1   r-   r
   r]   r   r   r   r   <module>   s   4