o
    i                     @   sj   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 G dd dejZdd ZdS )	    N)adaptercommon)log	messagingsockets)
componentsserversc                       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__ T/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/debugpy/adapter/launchers.pyr      s   
"zLauncher.__init__c                 C   s   |dt | _| j| d S )N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 )Nexitedr    )r   channel
send_eventr   	Exceptioncloser   r   r   r   terminated_event1   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_debuggee9   s   
"zLauncher.terminate_debuggee)__name__
__module____qualname____doc__r   	Componentmessage_handlerr   r   r   r!   r'   r*   __classcell__r   r   r   r   r	      s    



r	   c              
      s0  |
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	 W n t
yN } z|d
|d }~ww zB  \}}|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#s0|d$zj'j(|j)| W n t!j"yT } z|#| W Y d }~nd }~ww j$fd%d"t%j&d#sg|d&jrrW  *  d S tj+d'd" t%j&d#}|d u r|d(|, W  *  d S  *  w ))Nsudoz-EportadapterAccessTokenc                    s"       tj| }t| d S r
   )r&   r   JsonIOStreamfrom_socketr	   )sockr   listenerr   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--DEBUGPY_LOG_DIRwarningerror DEBUGPY_LOG_STDERRinternalConsolez{0} spawning launcher: {1!r})cwdenvstdinstdoutstderrzFailed to spawn launcher: {0}z2{0} spawning launcher via "runInTerminal" request.supportsRunInTerminalRequest
integratedexternal)integratedTerminalexternalTerminal)kindtitleargsrE   rD   TargsCanBeInterpretedByShellrunInTerminalc                      s    j S r
   )r   r   r   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   rS   r   r   rT      s    z3Timed out waiting for "process" event from launcherc                 S   s   dS )NTr   )connr   r   r   rT      s    z'Timed out waiting for debuggee to spawn)-dict	argumentsno_debugr   r9   getsocknamer   access_tokenr   server%   cant_handlestrr   log_dirrH   levelsjoininfo
subprocessPopenlistosenvironitemssysrF   rG   r   capabilitiesrequirer#   send_requestr   MessageHandlingError	propagatewait_forr   PROCESS_SPAWN_TIMEOUTr   r)   commandr&   wait_for_connectionattach_to_session)r   start_requestpythonlauncher_pathadapter_hostrP   shell_expand_argsrD   consoleconsole_titler2   cmdlinerE   rX   _r:   exclauncher_hostlauncher_portlauncher_addrkindsrequest_argsrV   r   r8   r   spawn_debuggeeB   s   











r   )rf   rc   ri   debugpyr   r   debugpy.commonr   r   r   debugpy.adapterr   r   r/   r	   r   r   r   r   r   <module>   s   4