
    bi                          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ej                        Zd Zy)    N)adaptercommon)log	messagingsockets)
componentsserverssessionsc                        e Zd ZdZej
                  j                  Z fdZed        Zed        Z	ed        Z
ed        Zd Z xZS )Launcherz-Handles the launcher side of a debug session.c                     |5  |j                   rJ t        | 	  ||       d | _        	 d | _        	 | |_         d d d        y # 1 sw Y   y xY wN)launchersuper__init__pid	exit_code)selfsessionstream	__class__s      T/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/debugpy/adapter/launchers.pyr   zLauncher.__init__   sU     
	$''''GWf-DHR!DN4#G
	$ 
	$ 
	$s   6AAc                 ^     |dt               | _        | j                  j                  |       y )NsystemProcessId)intr   clientpropagate_after_startr   events     r   process_eventzLauncher.process_event"   s#    *C0))%0    c                 :    | j                   j                  |       y r   )r   r   r   s     r   output_eventzLauncher.output_event'   s    ))%0r!   c                 (     |dt               | _        y )NexitCode)r   r   r   s     r   exited_eventzLauncher.exited_event+   s    z3/r!   c                     	 | j                   j                  j                  dd| j                  i       | j                  j                          y # t        $ r Y &w xY w)Nexitedr%   )r   channel
send_eventr   	Exceptioncloser   s     r   terminated_eventzLauncher.terminated_event3   sP    	KK**8j$..5QR 	  		s   2A 	AAc                     | j                   5  | j                  	 | j                  j                  d       d d d        y # t        $ r Y w xY w# 1 sw Y   y xY w)N	terminate)r   r   r)   requestr+   )r   s    r   terminate_debuggeezLauncher.terminate_debuggee;   sX    \\ 	~~%LL((5	 	 ! 		 	s&   A?	AA
AAA)__name__
__module____qualname____doc__r   	Componentmessage_handlerr   r    r#   r&   r-   r1   __classcell__)r   s   @r   r   r      sq    7 **::O$ 1 1 1 1 0 0  r!   r   c                     |
rddgng }||z  }||gz  }i }t        |j                        } j                  s<t        j                  t
        j                        \  }|d<   t        j                  |d<    fd}	 t        j                  d||d      at        j                          	 t        j                  t              \  }}t        j                         }||k(  r|n| d
| }|t        |      dgz  }||z  }t         j"                  t         j"                  |t        d      <   t         j$                  j&                  ddhk7  r>t        dj)                  t         j$                  j&                              |t        d      <   |dk(  rt!        j*                  d |       	 t-        j.                  ||t        t1        t2        j4                  j7                               t1        |j7                               z         t8        j:                  t8        j<                  t8        j$                         n,t!        j*                  d         j>                  j@                  jC                  d       ddd}||   |	||d}|||d<   |rd|d<   t2        jD                  dk7  rdnd }d!|v r|d!   n|}|d"   }tG        tI        |            D ]o  }||   }d|v rL|jK                  d      r|jM                  d      s*|jK                  d       r|jM                  d       s| | | }|||<   |d#kD  sc||dz
     dk(  so n 	  j>                  jN                  jQ                  d$|        jY                   fd%|
rd ntZ        j\                  &      s|j                  d'      	  j^                  jN                  ja                  |jb                  |        jY                   fd(tZ        j\                  &      s|j                  d)       j                  r,	 t        je                          d at        j                          y t        jf                   d* tZ        j\                  &      }||j                  d+      |ji                          t        je                          d at        j                          y # t        $ r}|j                  d	 |      d }~ww xY w# t        $ r}|j                  d|      d }~ww xY w# tR        jT                  $ r}|jW                  |       Y d }~d }~ww xY w# tR        jT                  $ r}|jW                  |       Y d }~d }~ww xY w# t        je                          d at        j                          w xY w),Nsudoz-EportadapterAccessTokenc                     t         j                          t        j                  j	                  |       }t        |       y r   )listenerr,   r   JsonIOStreamfrom_socketr   )sockr   r   s     r   on_launcher_connectedz-spawn_debuggee.<locals>.on_launcher_connected_   s-    ''33D9&!r!   r      )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argsrM   rL   TargsCanBeInterpretedByShellnt"'terminalQuoteCharacterrX   r   runInTerminalc                       j                   S r   )r   r   s   r   <lambda>z spawn_debuggee.<locals>.<lambda>   s    G$$ r!   )timeoutz)Timed out waiting for launcher to connectc                  4     j                   j                  d uS r   )r   r   r`   s   r   ra   z spawn_debuggee.<locals>.<lambda>   s    G$$((4 r!   z3Timed out waiting for "process" event from launcherc                      y)NT )conns    r   ra   z spawn_debuggee.<locals>.<lambda>   s    r!   z'Timed out waiting for debuggee to spawn)5dict	argumentsno_debugr   get_addressr	   r>   r   access_tokenserver+   cant_handler
   report_socketsget_default_localhoststrr   log_dirrP   levelsjoininfo
subprocessPopenlistosenvironitemssysrN   rO   r   capabilitiesrequirenamerangelen
startswithendswithr)   send_requestr   MessageHandlingError	propagatewait_forr   PROCESS_SPAWN_TIMEOUTr   r0   commandr,   wait_for_connectionattach_to_session)r   start_requestpythonlauncher_pathadapter_hostrX   shell_expand_argsrL   consoleconsole_titler:   cmdlinerM   rh   _rB   exclauncher_hostlauncher_port	localhostlauncher_addrkindsrequest_argsdefault_quote
quote_charisrf   s   `                           r   spawn_debuggeer   D   s   " !%vtn"GvGG
C],,-I&2273C3CD9V*1*>*>	&'"

==-|Q
 k"'.':':8'D$}113	 	) !?!M?3 	
 	C&--4;;"*-++C%&'::G 44-0#**:K:K1L-MC()*''HH3WgFV   T"**"2"2"45SYY[8IIJ)):::: HHI7SNN''//0NO+7ZXEg&	L &)U# >B:; (*ww$CD\`iDiY'?@o|

 $F+s4y) AQAax!,,s*;

3UVUaUabeUfklkukuvykz)l1#j\:DG1uacd!2- &&33O\R $!Tv'C'C   
  ++,WXX	)$$,,]-B-BIN 400   
  ++E   	! **&0L0L
 <++,UVVw' 	!c  
''CWc
 	

H  V#//0OQTUUVL 11 -m,,- -- 	)MM-((	)0 	!s   :R) (C8U !BS .C7U &U 2U 6&S0 9U 0T" AU 3AU )	S
2SS
	S-S((S--U 0TTU TU "U5UU UU ,V )rx   ru   r{   debugpyr   r   debugpy.commonr   r   r   debugpy.adapterr   r	   r
   r>   r6   r   r   re   r!   r   <module>r      s=   
 
  
 # 2 2 9 91z## 1hU"r!   