
    %
iF                         d 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Z	ddl
mZmZ ddlmZmZmZ d Zdej        v ZeZeZereZeZ G d d	          Zd
 Zdad Z G d dej        ej                  Zd ZdS )zPThe glue between the Python debugger interface and the Active Debugger interface    N)_wraptrace   )axdebuggateways
stackframec                      d S N )argss    C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32comext/axdebug/adb.pyfnullr      s    D    DEBUG_AXDEBUGc                        e Zd Zd Zd Zd ZdS )OutputReflectorc                 "    || _         || _        d S r
   )	writefuncfile)selfr   r   s      r   __init__zOutputReflector.__init__   s    "			r   c                 ,    t          | j        |          S r
   )getattrr   r   names     r   __getattr__zOutputReflector.__getattr__#   s    ty$'''r   c                 d    |                      |           | j                            |           d S r
   )r   r   write)r   messages     r   r   zOutputReflector.write&   s.    w	     r   N)__name__
__module____qualname__r   r   r   r   r   r   r   r      sA          ( ( (! ! ! ! !r   r   c                 r    | dS d}| j         d}dt          |            d| j        j         d| j         | S )Nz<None>z(with trace!)z **No Trace Set **z	Frame at z, file z, line: )f_traceidf_codeco_filenamef_lineno)frameaddns     r   _dumpfr+   +   sO    }x= 'De2e99eeU\-Eeeu~e_ceeer   c                    	 | j                                         }dd l}dd| j                                         |f|j        |<   t
                              || ||dz              d S #  t          j                     Y d S xY w)Nr   r   )	codeContainerGetFileName	linecacheGetTextcacheg_adb_OnSetBreakPoint	traceback	print_exc)codeContextbreakPointStatelineNofileNamer/   s        r   OnSetBreakPointr:   8   s    ,88::$%q+*C*K*K*M*Mx$W	!xovPQzRRRRRs   A"A& &A>c                       e Zd Zd Zd Zd Zd"dZd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd#dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"dS )$Adbc                 `   d | _         d | _        d | _        d x| _        | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        g | _        t          j                            |            t!          j                    | _        |                                  d S r
   )debugApplicationdebuggingThreaddebuggingThreadStateHandlestackSnifferCookiestackSniffercodeContainerProvider
breakFlagsbreakReasonappDebuggerappEventConnectionlogicalbotframecurrentframerecursiveDatabdbBdbr   _threadallocate_lock_threadprotectlockresetr   s    r   r   zAdb.__init__E   s     $#*.'6::$"3%)"#"&# ")"7"9"9

r   c                 ^    |d         dk    r|S t           j                            | |          S )Nr   <)rK   rL   canonic)r   fnames     r   rT   zAdb.canonicW   s*    8s??LwtU+++r   c                 b    t          d           t          j                            |            d S )Nz	adb.reset)
traceenterrK   rL   rP   rQ   s    r   rP   z	Adb.reset\   s*    ;dr   Nc                     || j         vr
g | j         |<   | j         |         }||v rdS |                    |           ||| j        ||f<   d S d S )Nz$There is already a breakpoint there!)breaksappendcbreaks)r   filenamelinenocondlists        r   __xxxxx__set_breakzAdb.__xxxxx__set_break`   sm    4;&&$&DK!{8$T>>99F-1DL6)*** r   c                     t          dt          |          t          | j                             || j        u rdS t          d           dS )N	stop_herer   zstop_here said 'No'!r   )rW   r+   	stopframetracevr   r)   s     r   rb   zAdb.stop_herek   sL    ;uvdn/E/EFFF DN""1%&&&qr   c                    t          d| j        t          |                     d | _        | j        t          j        k    rt          j        | _        n| j        t          j        k    rt          j        | _        nm| j        t          j	        k    rt          j
        | _        nFt          d| j                   t          j                            | |          rt          j        | _        | j        d uS )N
break_herezCalling base 'break_here' with)rW   rD   r+   rE   r   APPBREAKFLAG_DEBUGGER_HALTBREAKREASON_DEBUGGER_HALTAPPBREAKFLAG_DEBUGGER_BLOCKBREAKREASON_DEBUGGER_BLOCKAPPBREAKFLAG_STEPBREAKREASON_STEPprintrY   rK   rL   rg   BREAKREASON_BREAKPOINTre   s     r   rg   zAdb.break_herev   s    <&--@@@?g@@@&@D_ CCC&AD_ 999&7D2DK@@@w!!$.. B#*#A t++r   c                    t          dt          |                     | j        t          j        k    rt          j        | _        dS t          j        	                    | |          }t          dt          |          d|           |S )Nbreak_anywherer   	returning)rW   r+   rD   r   rh   ri   rE   rK   rL   rq   rd   )r   r)   rcs      r   rq   zAdb.break_anywhere   sp    #VE]]333?g@@@&@D1W##D%00R@@@	r   c                     t          dt          |          |           | j        |u r%t          d           t	          j        d            d S |j        | _        t          j	        
                    | ||          S )Ndispatch_returnz#dispatch_return resetting sys.trace)rW   r+   rH   rd   syssettracef_backrI   rK   rL   ru   r   r)   args      r   ru   zAdb.dispatch_return   sq    $fUmmS9995((8999LF!Lw&&tUC888r   c                    t          dt          |          t          | j                             || j        u r>t	          dt          |          d           t          j        | j                   | j        S | j        	                    |j
        j                   t	          dt          |          d           d S || _        t          j                            | |          S )Ndispatch_linez for bottom frame returing tracerz!dispatch_line has no document for- skipping trace!)rW   r+   botframerH   r   rv   rw   trace_dispatchrC   FromFileNamer&   r'   rI   rK   rL   r|   re   s     r   r|   zAdb.dispatch_line   s    ?F5MM6$-3H3HIIID(((/6%==2TUUU L,--- &&%225<3KLLT3VE]]DW   4 	 w$$T5111r   c                 F   t          dt          |                     t          j                    |j        d<   || j        u rt          d           | j        S | j        	                    |j
        j                   t          dt          |          d           d S | j        S )Ndispatch_call__axstack_address__z1dispatch_call is self.botframe - returning tracerz!dispatch_call has no document forr}   )rW   r+   r   GetStackAddressf_localsr~   r   r   rC   r   r&   r'   ry   s      r   r   zAdb.dispatch_call   s    ?F5MM222070G0I0I,-DM!!EFFF&& %225<3KLLT3VE]]DW   4""r   c                     t          dt          |          ||           | j        t          d           d S t          j                            | |||          S )Nr   z"trace_dispatch has no application!)rW   r+   r>   r   rK   rL   r   )r   r)   eventrz   s       r   r   zAdb.trace_dispatch   sV    #VE]]E3??? (6777Fw%%dE5#>>>r   c                     t          dt          |                     |j        dk    r.| j        }|t          j        }|                     |d |           d S d S )N	user_liner   )rW   r+   r(   rE   r   rm   _HandleBreakPoint)r   r)   rE   s      r   r   zAdb.user_line   sa    ;u...>Q*K"%6""5$<<<<<	 r   c                 H    t           j                            | ||           d S r
   )rK   rL   user_return)r   r)   return_values      r   r   zAdb.user_return   s"    D%66666r   c                 H    t           j                            | ||           d S r
   )rK   rL   user_exception)r   r)   exc_infos      r   r   zAdb.user_exception   s"    tUH55555r   c                    t          d|dt          |                     t          dt          | j                             	 | j                            |          }t          d|           n8# t          j        $ r&}t          j	        }t          d|           Y d }~nd }~ww xY wg | _        d| _        |t          j        k    r|                                  n|t          j	        k    r$t          d           |                                  n|t          j        k    r$t          d           |                                  ny|t          j        k    r%t          d	           |                     |           nD|t          j        k    r%t          d
           |                     |           nt-          d          d | _        d S )Nz$Calling HandleBreakPoint with reasonzat framez Current frame iszHandleBreakPoint returned with zHandleBreakPoint FAILED withr   zresume action is continuezresume action is stepzresume action is nextzresume action is stop outzunknown resume action flags)rW   r+   rI   r>   HandleBreakPointrd   	pythoncom	com_errorr   BREAKRESUMEACTION_CONTINUEr   stackcurindexBREAKRESUMEACTION_ABORTset_quitset_continueBREAKRESUMEACTION_STEP_INTOset_stepBREAKRESUMEACTION_STEP_OVERset_nextBREAKRESUMEACTION_STEP_OUT
set_return
ValueErrorrE   )r   r)   tbreasonresumeActiondetailss         r   r   zAdb._HandleBreakPoint   s   2FJu	
 	
 	
 	&t/@(A(ABBB	;0AA&IIL4lCCCC" 	; 	; 	; #=L0'::::::::		; 
7:::MMOOOOW???.///W@@@*+++MMOOOOW@@@*+++MM%    W???.///OOE"""":;;;s   *A. .B#=BB#c                 f    t           j        | _        t          j                            |            d S r
   )r   BREAKREASON_LANGUAGE_INITIATEDrE   rK   rL   	set_tracerQ   s    r   r   zAdb.set_trace  s)    "A$r   c                    t          d           |                                  d | _        | j        M	 | j                            | j                   n,# t          j        $ r t          d| j                    Y nw xY wd x| _        | _	        | j
         | j
                                         d | _
        d | _        d | _        | j        "| j                                         d | _        d S d S )N
ClosingAppz&*** Could not RemoveStackFrameSniffer )rW   rP   rH   rA   r>   RemoveStackFrameSnifferr   r   r   rB   rG   
DisconnectrF   rC   CloserQ   s    r   CloseAppzAdb.CloseApp  s   <   

#".%==d>UVVVV&   VT=TVV     7;:$"3".#..000&*D# $%1&,,...)-D&&& 21s   A &A<;A<c                 6   || _         || _        t          t          j        |           t
          j                  | _        |                    | j                  | _	        t          j        j                            | j        | t
          j                  | _        d S r
   )rC   r>   r   r   DebugStackFrameSnifferr   IID_IDebugStackFrameSnifferrB   AddStackFrameSnifferrA   win32comclientconnectSimpleConnection!IID_IRemoteDebugApplicationEventsrG   )r   r>   rC   s      r   	AttachAppzAdb.AttachApp  s    %:" 0!-d33W5X
 
 #3"G"G#
 #
 #+/"9"J"J!4)R#
 #
r   c                    t          d| dt          | j                             t          j                    | j        k    rt          d           d S t          | j                  dk    rd | _        d | _        d | _        d | _	        d S | j        d         \  | _
        | _        | _        | _	        | j        dd          | _        d S )NResetAXDebuggingzwith refcountz'ResetAXDebugging called on other threadr   r   )rW   lenrJ   win32apiGetCurrentThreadIdr?   r   rH   rI   r@   logbotframerc   rQ   s    r   r   zAdb.ResetAXDebugging/  s    %t_c$BT>U>UVVV&((D,@@@;<<<Ft!""a''#'D #'D  $D.2D+F q!	
N+!/3r   c                    ||}nt          j                    |j        d<   t          d|            | j                                         	 t          j                    }| j        || _        ni| j        |k    r+t          d           	 | j        
                                 dS | j                            d| j        | j        | j        | j        f           | j        
                                 n# | j        
                                 w xY wt          dt#          |                     || _        || _        || _        d| _        t          j                    | _        |                                  dS )ziGet ready for potential debugging.  Must be called on the thread
        that is being debugged.
        Nr   SetupAXDebuggingz2SetupAXDebugging called on other thread - ignored!r   z"SetupAXDebugging has base frame as)r   r   r   rW   rO   acquirer   r   r?   r   releaserJ   insertrH   rc   rI   r@   r+   r~   GetThreadStateHandle_BreakFlagsChanged)r   	baseFrame	userFrame
thisThreads       r   r   zAdb.SetupAXDebuggingE  s    !II 9@8O8Q8QI45%t,,,'')))	.!466J#+'1$$':55NOOO #++----- ")),)7	   #++----D#++----2F94E4EFFF!"( *1*F*H*H'!!!!!s   <C0 #3C0 0Dc                     t          d           | _        fd}t          t          j        |          t          _        t          t          j        |          t          _        d S )NOnConnectDebuggerc                 .                         |           S r
   )onDebugOutput)srF   s    r   <lambda>z'Adb.OnConnectDebugger.<locals>.<lambda>v  s    k77:: r   )rW   rF   r   rv   stdoutstderr)r   rF   r   s    ` r   r   zAdb.OnConnectDebuggerr  sT    &444&::::	$SZ;;
$SZ;;


r   c                 B   t          d           t          t          j        t                    rt          j        j        t          _        t          t          j        t                    rt          j        j        t          _        d | _        |                                  d S )NOnDisconnectDebugger)	rW   
isinstancerv   r   r   r   r   rF   r   rQ   s    r   r   zAdb.OnDisconnectDebuggerz  sh    )***cj/22 	)CJcj/22 	)CJr   c                 &    t          d|           d S )N	OnSetNamerW   r   s     r   r   zAdb.OnSetName  s    ;%%%%%r   c                 &    t          d|           d S )NOnDebugOutputr   )r   strings     r   r   zAdb.OnDebugOutput  s    ?F+++++r   c                 $    t          d           d S )NOnCloser   rQ   s    r   r   zAdb.OnClose  s    9r   c                 &    t          d|           d S )NOnEnterBreakPointr   r   rdats     r   r   zAdb.OnEnterBreakPoint      &-----r   c                 &    t          d|           d S )NOnLeaveBreakPointr   r   s     r   r   zAdb.OnLeaveBreakPoint  r   r   c                 &    t          d|           d S )NOnCreateThreadr   r   s     r   r   zAdb.OnCreateThread  s    #T*****r   c                 &    t          d|           d S )NOnDestroyThreadr   r   s     r   r   zAdb.OnDestroyThread  s    $d+++++r   c                 ^    t          d||           || _        |                                  d S )NzDebugger OnBreakFlagChange)rW   rD   r   )r   abfr   s      r   OnBreakFlagChangezAdb.OnBreakFlagChange  s4    /d;;;!!!!!r   c                 >   t          d| j         dd| j         dz   dt          j                     z              t          d| j                   t          | j                  s| j        rb| j        r4t          dt          | j                             | j
        | j        _        n't          d           | j        | j
        | j        _        | j        D| j        r?| j        t          j                    k    r%t          j        | j        | j
                   d S d S d S d S )	Nz_BreakFlagsChanged to  zwith our thread = z, zand debugging thread = z_BreakFlagsChanged has breakszBreakFlagsChange with bot framez&BreakFlagsChanged, but no bottom frame)rW   rD   r?   r   r   r   rY   r   rH   r+   r   r$   rc   r@   r   SetThreadStateTracerQ   s    r   r   zAdb._BreakFlagsChanged  sQ   7T_777;4#7;;;<G(C(E(EGGH	
 	
 	

 	-t{;;;
 t{ 	At 	A# 
A7@T9U9UVVV
 04/B$,,>???>--1-@DN* +7 8$(C(E(EEE'/1D    	 8777EEr   c                 H   t          d| ||||           |t          j        k    r>|                     ||          }|rt	          d|           t          d| j                   n|                     ||           |                                  t          d| j                   d S )Nr3   z*** set_break failed -z+_OnSetBreakPoint just set BP and has breaksz$_OnSetBreakPoint leaving with breaks)	rW   r   BREAKPOINT_ENABLED	set_breakrn   r   rY   clear_breakr   )r   keyr6   bpsr8   problems         r   r3   zAdb._OnSetBreakPoint  s    %tS+sFKKK',,,nnS&11G 9.888?MMMMS&)))!!!4dkBBBBBr   r
   )NN)#r    r!   r"   r   rT   rP   _Adb__xxxxx__set_breakrb   rg   rq   ru   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r   r   r   r<   r<   D   s         $, , ,
  	2 	2 	2 	2	 	 	, , ,  	9 	9 	92 2 2,# # #(? ? ?= = =7 7 76 6 6        D     . . ..
 
 
"4 4 4,*" *" *" *"Z< < <  & & &, , ,  . . .. . .+ + +, , ," " "
" " "H
C 
C 
C 
C 
Cr   r<   c                  :    t           t                      a t           S r
   )r2   r<   r   r   r   Debuggerr     s    }Lr   )__doc__rM   rK   osrv   r4   r   r   win32com.client.connectr   win32com.axdebug.utilr   r    r   r   r   r   environ	debuggingrW   rd   r   r+   r2   r:   rL   RemoteDebugApplicationEventsr<   r   r   r   r   <module>r      sv   V V  



 				 



              . . . . . . . . + + + + + + + + + +	 	 	 rz)	
	 JF
! 
! 
! 
! 
! 
! 
! 
!f f f 		 	 	HC HC HC HC HC#'88 HC HC HCV    r   