o
    à›h  ã                   @   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__© úOc:\Users\shubh\Videos\agent\nova\Lib\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r”td tjj¡ƒ|tdƒ< |dkrÏt 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< 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