o
    i.                     @   s.  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ e Zddeji d	Zd
g diZdadd Zde_dd Zde_dd Zd%ddZdd Zed&ddZed%ddZ G dd dZ!e! Z!dd Z"dd  Z#d!d" Z$d#d$ Z%dS )'    N)adapter)jsonlogsockets)get_global_debugger)absolute_path)hide_debugpy_internalsnoneT)qt
subProcesspython	pythonEnvr
   )autor	   pysidepyside2pyqt4pyqt5c                  O   s>   t d| | |dd z	tj| i |W S  ty    w )Nz pydevd.settrace(*{0!r}, **{1!r})notify_stdinF)r   debug
setdefaultpydevdsettrace	Exception	_settracecalled)argskwargs r   M/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/debugpy/server/api.pyr   (   s   r   Fc                   C   sH   t jrdS dt _tjdd td tjdur"ttjd  dS dS )z>Starts logging to log.log_dir, if it hasn't already been done.NTzdebugpy.server)prefixzInitial environment:z/debugpy.pydevd.log)ensure_loggingensuredr   to_filedescribe_environmentlog_dirr   log_tor   r   r   r   r    7   s   

r    c                 C   sJ   t jrtdtd| f | tju r tj jttj	O  _d S | t_
d S )Nzlogging has already begunzlog_to{0!r})r    r!   RuntimeErrorr   r   sysstderrlevelssetLEVELSr$   )pathr   r   r   r%   E   s   

r%   c                 K   s   t jrtdt  td| |f | d u r|} n	t| } | | |  D ]=\}}|t	vr5t
d|tt	| }t||urJt
d||jt|}|d ur_||vr_t
d|||t	|< q&d S )Nz debug adapter is already runningzconfigure{0!r}zUnknown property {0!r}z{0!r} must be a {1}z{0!r} must be one of: {1!r})r   r   r&   r    r   r   dictupdateitems_config
ValueErrorformattype__name___config_valid_valuesget)
propertiesr   kvexpected_typevalid_valuesr   r   r   	configureP   s&   


r<   c                    s    fdd}|S )Nc                    sH  t jrtdz| \}}W n ty   | }d|f} Y nw z|  W n ty.   tdw d|  kr<dk sAtd tdt  td j	| | t
dtt td	d
}|d
kret| dtddd}t rtjttj}|f|d< tdf|d< z
 | |fi |W S  ty   tjd j	dd Y d S w )Nz(this process already has a debug adapter	127.0.0.1zexpected port or (host, port)r   i   zinvalid port numberz{0}({1!r}, **{2!r})z Initial debug configuration: {0}r
   r	   Fr   T)suspendpatch_multiprocessingdont_trace_start_patternszdebugpy_launcher.pydont_trace_end_patternsz{0}() failed:infolevel)r   r   r&   r   	__index__r1   r    r   r   r4   rB   r   reprr0   r6   r   enable_qt_supportr   osr,   dirnamer   debugpy__file__strreraise_exception)addressr   _portqt_modesettrace_kwargsdebugpy_pathfuncr   r   r   j   sF   


z _starts_debugging.<locals>.debugr   )rU   r   r   rT   r   _starts_debuggingi   s   'rV   c              
   C   s  |r| \}}t d|| d|d< td2||ddd| d S dd l}ttddd}z
t	j
d	dd
d}W n tyR } zt d tdt| d }~ww z| \}	}
t d|	|
 | \}}tdtjtjtjdt|
d|dt|d|g
}t jd ur|dt jg7 }t dt| d}tjdkr|dO }|dO }td}t|sd }z|j|d||datjdkrt   n	dt_!t"#tj$ W n ty } zt jddd td t| d }~ww z7|% \}}z(|&d  |'d!d}zt(|) d"}W |*  n|*  w W t	+| nt	+| w W n/ t,j-y4   t jd#dd td$ tyO } zt jd%dd td&t| d }~ww W |*  n|*  w t d't| d(|v rqtt|d( z"t|d) d* }t.|d) d+ }t|d, d* }t.|d, d+ }W n  ty } zt jd-t|dd td.t| d }~ww t d/|| td2||dd|d0| t d1|| ||fS )3Nz2Listening: pydevd without debugpy adapter: {0}:{1}Fr?   )hostrP   wait_for_ready_to_runblock_until_connectedr       hexasciir=   
   )timeoutz#Can't listen for adapter endpoints:z$can't listen for adapter endpoints: z+Waiting for adapter endpoints on {0}:{1}...r   z--for-serverz--hostz--portz--server-access-tokenz	--log-dirz&debugpy.listen() spawning adapter: {0}win32i   i   r   T)	close_fdscreationflagsenvposixzError spawning debug adapter:rB   rC   zerror spawning debug adapter: rbzutf-8z)Timed out waiting for adapter to connect:z(timed out waiting for adapter to connectz#Error retrieving adapter endpoints:z$error retrieving adapter endpoints: z$Endpoints received from adapter: {0}errorserverrW   rP   clientz%Error parsing adapter endpoints:
{0}
z!error parsing adapter endpoints: z;Adapter is accepting incoming client connections on {0}:{1})rW   rP   rX   rY   access_tokenz)pydevd is connected to adapter at {0}:{1}r   )/r   rB   r   
subprocesscodecsencoderH   urandomdecoder   create_serverr   swallow_exceptionr&   rL   getsocknamer0   r6   r'   
executabler,   rI   r   rK   r$   r   rF   platformboolPopen_adapter_processnamewait
returncoder   add_dont_terminate_child_pidpidaccept
settimeoutmakefileloadsreadcloseclose_socketsocketr^   int)rN   rR   in_process_debug_adapterrW   rP   ri   server_access_tokenendpoints_listenerexcendpoints_hostendpoints_portadapter_argsra   
python_envsockrO   sock_io	endpointsserver_hostserver_portclient_hostclient_portr   r   r   listen   s   







r   c                 C   s"   | \}}t d|||d| d S )N)rW   rP   client_access_tokenr   )r   )rN   rR   rh   rW   rP   r   r   r   connect&  s   r   c                   @   s    e Zd Zdd Zedd ZdS )wait_for_clientc                 C   sF   t   td t }|d u rtdt }|j| _t	j
|d d S )Nzwait_for_client()z*listen() or connect() must be called first)cancel)r    r   r   r   r&   	threadingEventr*   r   r   _wait_for_attach)selfpydbcancel_eventr   r   r   __call__-  s   
zwait_for_client.__call__c                   C   s   t d)Nz&wait_for_client() must be called first)r&   r   r   r   r   r   9  s   zwait_for_client.cancelN)r4   
__module____qualname__r   staticmethodr   r   r   r   r   r   ,  s    r   c                   C   s   t  S N)r   _is_attachedr   r   r   r   is_client_connectedA  s   r   c                  C   s   t   t std d S td t } t j}|d ur5| 	|| j
kr5|j}|d ur5| 	|| j
ks&tddd|d d }d S )Nz,breakpoint() ignored - debugger not attachedzbreakpoint()TF)r>   trace_only_current_threadr?   stop_at_frame)r    r   r   rB   r   r   r'   	_getframef_backget_file_type
PYDEV_FILEr   )r   r   r   r   r   
breakpointE  s&   


r   c                   C   s   t   td tdd d S )Nzdebug_this_thread()F)r>   )r    r   r   r   r   r   r   r   debug_this_thread^  s   
r   c                 C   s4   t   td|  t }| r|  d S |  d S )Nztrace_this_thread({0!r}))r    r   r   r   enable_tracingdisable_tracing)should_tracer   r   r   r   trace_this_threade  s   r   r   )F)&rj   rH   r   r   r'   r   rJ   r   debugpy.commonr   r   r   _pydevd_bundle.pydevd_constantsr   pydevd_file_utilsr   debugpy.common.utilr   local_tlsrq   r0   r5   ru   r   r   r    r!   r%   r<   rV   r   r   r   r   r   r   r   r   r   r   r   <module>   sN   

+ 