o
    wi.                     @   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d Zde_dd Zd%ddZdd Zed&ddZde_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   sB   t d| | |dd ztj| i | W d S  ty     w )Nz pydevd.settrace(*{0!r}, **{1!r})notify_stdinF)r   debug
setdefaultpydevdsettrace	Exception)argskwargs r   O/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/debugpy/server/api.py	_settrace(   s   r   c                   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   2   s   

r   Fc                 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$   @   s   

r$   c                 K   s   t   td| |f | d u r|} n	t| } | | |  D ]=\}}|tvr.td|t	t| }t	||urCtd||j
t|}|d urX||vrXtd|||t|< qd S )Nz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   dictupdateitems_config
ValueErrorformattype__name___config_valid_valuesget)
propertiesr   kvexpected_typevalid_valuesr   r   r   	configureK   s"   


r;   c                    s    fdd}|S )Nc                    sB  z| \}}W n t y   | }t }||f} Y nw z|  W n t y+   tdw d|  kr9dk s>td tdt  td j| | t	dt
t tdd}|dkrbt| 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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   get_default_localhost	__index__r0   r   r   r   r3   r@   r   reprr/   r5   r   enable_qt_supportr   osr+   dirnamer   debugpy__file__strreraise_exception)addressr   _port	localhostqt_modesettrace_kwargsdebugpy_pathfuncr   r   r   b   sD   


z _starts_debugging.<locals>.debugr   )rU   r   r   rT   r   _starts_debugginga   s   %rV   c              
   C   s  t jrtd| \}}|r&td|| d|d< td2||ddd| d S dd l}tt	
ddd	}zt }tj|dd
d}W n ty] }	 ztd tdt|	 d }	~	ww zt|\}
}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/j0y@   tjd#dd td$ ty[ }	 ztjd%dd td&t|	 d }	~	ww W |-  n|-  w td't| d(|v r}tt|d( z"t|d) d* }t1|d) d+ }t|d, d* }t1|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|| dt _||fS )3Nz8debugpy.listen() has already been called on this processz2Listening: pydevd without debugpy adapter: {0}:{1}Fr=   )hostrO   wait_for_ready_to_runblock_until_connectedr       hexascii   )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:r@   rA   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   rO   clientz%Error parsing adapter endpoints:
{0}
z!error parsing adapter endpoints: z;Adapter is accepting incoming client connections on {0}:{1})rW   rO   rX   rY   access_tokenz)pydevd is connected to adapter at {0}:{1}r   )2listencalledr%   r   r@   r   
subprocesscodecsencoderG   urandomdecoder   rC   create_serverr   swallow_exceptionrK   get_addressr/   r5   r&   
executabler+   rH   r   rJ   r#   r   rE   platformboolPopen_adapter_processnamewait
returncoder   add_dont_terminate_child_pidpidaccept
settimeoutmakefileloadsreadcloseclose_socketsocketr^   int)rM   rR   in_process_debug_adapterrW   rO   rk   server_access_tokenrP   endpoints_listenerexcendpoints_hostendpoints_portadapter_argsra   
python_envsockrN   sock_io	endpointsserver_hostserver_portclient_hostclient_portr   r   r   ri      s   







ri   c                 C   s(   | \}}t d||||pdd| d S )Nr   )rW   rO   client_access_tokenppidr   )r   )rM   rR   rh   parent_session_pidrW   rO   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   :  s   zwait_for_client.cancelN)r3   
__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_connectedB  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   r@   r   r   r&   	_getframef_backget_file_type
PYDEV_FILEr   )r   r   r   r   r   
breakpointF  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_threadf  s   r   r   )F)NN)&rl   rG   r   r   r&   r   rI   r   debugpy.commonr   r   r   _pydevd_bundle.pydevd_constantsr   pydevd_file_utilsr   debugpy.common.utilr   local_tlsrs   r/   r4   rw   r   r   r    r$   r;   rV   ri   rj   r   r   r   r   r   r   r   r   r   r   <module>   sN   


) 