
    *dz/                     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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j                    Zddej        i d	Zd
g diZdad Zde_        d Zde_        d ZddZd Zedd            Zedd            Z  G d d          Z! e!            Z!d Z"d Z#d Z$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                      t          j        d| |           |                    dd           	 t          j        | i |S # t          $ r  w xY w)Nz pydevd.settrace(*{0!r}, **{1!r})notify_stdinF)r   debug
setdefaultpydevdsettrace	_settracecalled	Exception)argskwargss     2lib/python3.11/site-packages/debugpy/server/api.pyr   r   (   se    I0$???
ne,,, ////   s	   ? AFc                      t           j        rdS dt           _        t          j        d           t          j        d           t          j        #t          j        t          j        dz              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_to     r   r"   r"   7   sn     !NK'((((3444
{ck$99::::: r)   c                    t           j        rt          d          t          j        d| f           | t
          j        u r3t          j        xj        t          t          j	                  z  c_        d S | t          _
        d S )Nzlogging has already begunzlog_to{0!r})r"   r#   RuntimeErrorr   r   sysstderrlevelssetLEVELSr&   )paths    r   r'   r'   E   sl     86777ImdW%%%sz
S__,r)   c                    t           j        rt          d          t                       t	          j        d| |f           | |} n$t          |           } |                     |           |                                 D ]\  }}|t          vr"t          d                    |                    t          t          |                   }t          |          |ur(t          d                    ||j                            t                              |          }|'||vr#t          d                    ||                    |t          |<   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_valuess         r   	configurerB   P   sP    ?=>>>IV 4555

*%%
&!!!  "" 	 	1G5<<Q??@@@WQZ((77-''299!]=STTUUU+//22$1L+@+@:AA!\RRSSS

	 	r)   c                       fd}|S )Nc                    t           j        rt          d          	 | \  }}n# t          $ r	 | }d|f} Y nw xY w	 |                                 n# t          $ r t          d          w xY wd|cxk    rdk     sn t          d          t                       t          j        dj	        | |           t          j
        dt          j        t                               t                              d	d
          }|d
k    rt          j        |           dt                              dd          d}t#                      rOt$          j                            t+          t,          j                            }|f|d<   t1          d          f|d<   	  | |fi |S # t          $ r  t          j        dj	        d           Y d S w xY 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__r7   r"   r   r   r:   rJ   r   reprr6   r<   r   enable_qt_supportr	   osr1   dirnamer   debugpy__file__strreraise_exception)addressr   _portqt_modesettrace_kwargsdebugpy_pathfuncs          r   r   z _starts_debugging.<locals>.debugj   s    	KIJJJ	*GAtt 	* 	* 	*D"D)GGG	*	>NN 	> 	> 	><===	>T####G####2333	'HHH3TYw5G5GHHH++dF++f$W--- %,[[t%D%D
 

 "## 	W7??=9I+J+JKKL<H?O78:=>S:T:T9VO56	P4;;F;;; 	P 	P 	P!/4=OOOOOOO	Ps)   $ 77A A*	F &GGr(   )r\   r   s   ` r   _starts_debuggingr]   i   s)    %P %P %P %P %PN Lr)   c           
      $   |r3| \  }}t          j        d||           d|d<   t          d2||ddd| d S dd l}t	          j        t          j        d          d                              d          }	 t          j
        d	dd
          }nE# t          $ r8}t          j        d           t          dt          |          z             d }~ww xY w	 |                                \  }	}
t          j        d|	|
           | \  }}t                               dt$          j                  t          j                            t,          j                  dt          |
          d|dt          |          d|g
}t           j        |dt           j        gz  }t          j        dt3          j        |                     d}t$          j        dk    r
|dz  }|dz  }t                               d          }t9          |          sd }	 |                    |d||          at          j        dk    rt<                                            n*dt<          _!        tE          j#        t<          j$                   nG# t          $ r:}t          j        dd           t          d t          |          z             d }~ww xY w	 |%                                \  }}	 |&                    d            |'                    d!d          }	 t3          j(        |)                                                    d"                    }|*                                 n# |*                                 w xY w	 t          j+        |           n# t          j+        |           w xY wnz# tX          j-        $ r& t          j        d#d           t          d$          t          $ r:}t          j        d%d           t          d&t          |          z             d }~ww xY w	 |*                                 n# |*                                 w xY wt          j        d't3          j        |                     d(|v r"t          t          |d(                             	 t          |d)         d*                   }t]          |d)         d+                   }t          |d,         d*                   }t]          |d,         d+                   }nZ# t          $ rM}t          j        d-t3          j        |          d           t          d.t          |          z             d }~ww xY wt          j        d/||           t          d2||dd|d0| t          j        d1||           ||fS )3Nz2Listening: pydevd without debugpy adapter: {0}:{1}FrG   )hostrX   wait_for_ready_to_runblock_until_connectedr       hexasciirE   
   )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:rJ   rK   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serverr_   rX   clientz%Error parsing adapter endpoints:
{0}
z!error parsing adapter endpoints: z;Adapter is accepting incoming client connections on {0}:{1})r_   rX   r`   ra   access_tokenz)pydevd is connected to adapter at {0}:{1}r(   )/r   rJ   r   
subprocesscodecsencoderP   urandomdecoder   create_serverr   swallow_exceptionr+   rT   getsocknamer6   r<   r,   
executabler1   rQ   r   rS   r&   r   rN   platformboolPopen_adapter_processnamewait
returncoder   add_dont_terminate_child_pidpidaccept
settimeoutmakefileloadsreadcloseclose_socketsocketrf   int)rV   rZ   in_process_debug_adapterr_   rX   rq   server_access_tokenendpoints_listenerexcendpoints_hostendpoints_portadapter_argsri   
python_envsockrW   sock_io	endpointsserver_hostserver_portclient_hostclient_ports                         r   listenr      s   
   
dEtTRRR38/0 	
"'"'		
 	

 	
 	
 	
 	 -
2>>EEgNNN$2;2NNN N N NCDDDACHHLMMMNQ#);)G)G)I)I&9	
 	
 	
 
dKK#.11GOOG,--II#
 ;"[#+66L949\;R;RSSS <7""Z'MZ'M [[--
J 	J	L)//Mz  0     w'!! !%%'''' /0 +34D4HIII 	L 	L 	L!"APPPP?#c((JKKK	L	R(//11GD!+%%%--a00$ $
7<<>>+@+@+I+I J JIMMOOOOGMMOOOOO$T****$T*****~ 	K 	K 	K!;6    IJJJ 	R 	R 	R!"GvVVVVECPQQQ	R + 	  """"  """"H3TYy5I5IJJJ)3y122333K)H-f566)H-f566)H-f566)H-f566 K K K5Ii  	
 	
 	
 	

 >SIJJJK HE    #"(     H8+{SSS##s   5B 
C3C

CD-P" A-I/ .P" /
J395J..J33P" 7N +M8 ;9M	 4M8 	MM8 #N 8NN P" =P	5PP		P" "P8	A,S6 6
U AUUc                 0    | \  }}t          d|||d| d S )N)r_   rX   client_access_tokenr(   )r   )rV   rZ   rp   r_   rX   s        r   connectr   &  s.    JD$X4dXXXXXXXr)   c                   *    e Zd Zd Zed             ZdS )wait_for_clientc                     t                       t          j        d           t                      }|t	          d          t          j                    }|j        | _        t          j
        |           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_events      r   __call__zwait_for_client.__call__-  so    	%&&&"$$<KLLL (("&|444444r)   c                       t          d          )Nz&wait_for_client() must be called first)r+   r(   r)   r   r   zwait_for_client.cancel9  s    CDDDr)   N)r:   
__module____qualname__r   staticmethodr   r(   r)   r   r   r   ,  sC        
5 
5 
5 E E \E E Er)   r   c                  (    t          j                    S N)r   _is_attachedr(   r)   r   is_client_connectedr   A  s       r)   c                     t                       t                      st          j        d           d S t          j        d           t                      } t          j                    j        }|E| 	                    |          | j
        k    r'|j        }|| 	                    |          | j
        k    't          ddd|           d }d S )Nz,breakpoint() ignored - debugger not attachedzbreakpoint()TF)rF   trace_only_current_threadrG   stop_at_frame)r"   r   r   rJ   r   r   r,   	_getframef_backget_file_type
PYDEV_FILEr   )r   r   s     r   
breakpointr   E  s       ?@@@In   DMOO*M!}--@@%, 	!}--@@ "&##	    MMMr)   c                  j    t                       t          j        d           t          d           d S )Nzdebug_this_thread()F)rF   )r"   r   r   r   r(   r)   r   debug_this_threadr   ^  s6    I#$$$er)   c                     t                       t          j        d|            t                      }| r|                                 d S |                                 d S )Nztrace_this_thread({0!r}))r"   r   r   r   enable_tracingdisable_tracing)should_tracer   s     r   trace_this_threadr   e  sd    I(,777  D r)   r   )F)&rr   rP   r   r   r,   r   rR   r   debugpy.commonr   r   r   _pydevd_bundle.pydevd_constantsr   pydevd_file_utilsr   debugpy.common.utilr	   local_tlsry   r6   r;   r}   r   r   r"   r#   r'   rB   r]   r   r   r   r   r   r   r   r(   r)   r   <module>r      s-  
  				   



            - - - - - - - - - - ? ? ? ? ? ? + + + + + + 6 6 6 6 6 6y n	  	
A
A
A   	  	  	  	 ; ; ;       2( ( (V N$ N$ N$ N$b Y Y Y Y
E E E E E E E E$ "/##! ! !  2      r)   