U
    /e`                     @   sX   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ dd Zdd Z	d	d
 Z
dS )    N)launcher)json)debuggeec                    s  t dtt  fdd}dtjtdd}t|}dtdstjd d	 d
krn|ddg7 }dt}|t	j
tjdtjd t| g7 }dds|ddg7 }dtjdddddddd}|d|g7 }dtdd}|dkr|d|g7 }d tt}||7 }|tjd!d  7 }d"tj}t	j }	d#tttd f}
tjd$krd%d& t	j D }	i }|
 D ]H\}}| }||kr|| |krqnd'||||< q|}
d(|	kr|	d)d  |	|
 d*d& |	 D }	d+drd,|	d-< d.tjd/d0d1dd}|d2d3}|d krN|d/k}|rdd4|	d5< d6|	d7< |d8d9r|d/krd:tj d;d<  |d=d>r|d/krd?tj d@d<  t!|||	| i S )ANZdebugOptionsc                    sh   | d   r|d  st| tdd}|dkr6d }| krd|dkr`dt| t|d}|S )Nr   Toptional Fz9{0}:false and "debugOptions":[{1}] are mutually exclusive)islowerisupperAssertionErrorbool
isnt_validr   repr)Z	prop_nameZ	flag_namevalueZdebug_optionsrequestr   =/tmp/pip-unpacked-wheel-dg3irmqq/debugpy/launcher/handlers.pyproperty_or_debug_option   s    z0launch_request.<locals>.property_or_debug_optionpython)   )sizeZnoDebugF   )      z-Xzfrozen_modules=offportz	--connect:Z
subProcessTz--configure-subProcessFalseZqtnoneautoZpysideZpyside2Zpyqt4Zpyqt5r   z--configure-qtZadapterAccessTokenr   z--adapter-access-tokenZdebugpyArgsr   processNameenvwin32c                 S   s   i | ]\}}|  |qS r   )upper.0kvr   r   r   
<dictcomp>T   s      z"launch_request.<locals>.<dictcomp>zFound duplicate in "env": {0}.ZDEBUGPY_TESTZCOV_CORE_SOURCEc                 S   s   i | ]\}}|d k	r||qS Nr   r"   r   r   r   r&   f   s       ZgeventTrueZGEVENT_SUPPORTconsoleZinternalConsoleZintegratedTerminalZexternalTerminalZredirectOutputZRedirectOutput1ZPYTHONUNBUFFEREDzutf-8ZPYTHONIOENCODINGZwaitOnNormalExitZWaitOnNormalExitzC"waitOnNormalExit" is not supported for "console":"internalConsole"c                 S   s   | dkS Nr   r   coder   r   r   <lambda>       z launch_request.<locals>.<lambda>ZwaitOnAbnormalExitZWaitOnAbnormalExitzE"waitOnAbnormalExit" is not supported for "console":"internalConsole"c                 S   s   | dkS r+   r   r,   r   r   r   r.      r/   )"setr   arraystrlistdefaultsysversion_infointospathdirnamedebugpy__file__r   Zadapter_hostenumargv
executableenvironcopyobjecttypeplatformitemsr!   r   formatpopupdater   wait_on_exit_predicatesappendspawn)r   r   r   Zcmdliner   Zqt_modeZadapter_access_tokenZdebugpy_argsZprocess_namer   Zenv_changesZnew_env_changesr$   r%   Zk_upperr)   Zredirect_outputr   r   r   launch_request   s    

      




   



rL   c                 C   s"   t jd d = | i  t   d S r'   )r   rI   Zrespondkill)r   r   r   r   terminate_request   s    
rN   c                   C   s   t jd d = t   d S r'   )r   rI   rM   r   r   r   r   
disconnect   s    rO   )r8   r5   r;   r   Zdebugpy.commonr   Zdebugpy.launcherr   rL   rN   rO   r   r   r   r   <module>   s    