o
    ^i                     @   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__ T/home/ubuntu/hpml_nyu/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_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   	Componentmessage_handlerr   r   r   r"   r(   r+   __classcell__r   r   r   r   r
      s    



r
   c              
      s(  |
rddgng }||7 }||g7 }i }t |j} js*ttj\}|d< tj|d<  fdd}ztj	d||dd	aW n t
yN } z|d
 |d }~ww t  ztt\}}t }||krf|n| d| }|t|dg7 }||7 }tjd urt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< |r_d|d< tj"dkrd nd!}d"|v r|d" n|}|d# }t#t$|D ]@}|| }d|v rI|%d r5|&d sI|%d!rA|&d!sI| | | }|||< |d$kr]||d  dkr] nqz
 jj'(d%| W n t)j*y } z|+| W Y d }~nd }~ww  j, fd&d'|
rd nt-j.d(s|d)z j/j'0|j1| W n t)j*y } z|+| W Y d }~nd }~ww  j, fd*d't-j.d(s|d+ jrW t2  d at  d S tj3 d,d' t-j.d(}|d u r|d-|4  W t2  d at  d S t2  d at  w ).Nsudoz-EportadapterAccessTokenc                    s"   t   tj| }t | d S r   )listenerr'   r   JsonIOStream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--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argsrF   rE   TargsCanBeInterpretedByShellnt"'terminalQuoteCharacterrQ   r   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   r:   r   r   rX      s    z3Timed out waiting for "process" event from launcherc                 S   s   dS )NTr   )connr   r   r   rX      s    z'Timed out waiting for debuggee to spawn)5dict	argumentsno_debugr   get_addressr   r6   r   access_tokenserver&   cant_handler	   report_socketsget_default_localhoststrr   log_dirrI   levelsjoininfo
subprocessPopenlistosenvironitemssysrG   rH   r   capabilitiesrequirenamerangelen
startswithendswithr$   send_requestr   MessageHandlingError	propagatewait_forr   PROCESS_SPAWN_TIMEOUTr   r*   commandr'   wait_for_connectionattach_to_session)r   start_requestpythonlauncher_pathadapter_hostrQ   shell_expand_argsrE   consoleconsole_titler3   cmdlinerF   r\   _r;   exclauncher_hostlauncher_port	localhostlauncher_addrkindsrequest_argsdefault_quote
quote_charisrZ   r   r:   r   spawn_debuggeeD   s   






:





r   )rl   ri   ro   debugpyr   r   debugpy.commonr   r   r   debugpy.adapterr   r   r	   r6   r0   r
   r   r   r   r   r   <module>   s   4