
    %
in                        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Z	d dl
Z
d dlZd dlZd dlmZmZmZmZ d dlmZmZ d dlmZmZ d dlmZmZ ddlT ej        Zd Zd	 Z G d
 dej                   Z! G d de!          Z" G d dej#                  Z$ G d de!          Z% G d de!          Z& G d dej'                  Z( G d dej)                  Z* G d de*          Z+ G d de*          Z, G d de,          Z- G d de,          Z.d  Z/d!e+dfd"e-d#fd$e.dffZ0d% Z1d Z2dZ3d&Z4ej5        Z6 G d' d(e6          Z7dS ))    N)appeditorinteractscriptutils)MARKER_BREAKPOINTMARKER_CURRENT)afxreswindow)browserhierlist   )*c                     t           j        8t           j        j        )t           j        j                            | |           d S d S d S N)r   editcurrentView
SetContext)globslocss     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\pythonwin/pywin/debugger/debugger.pySetInteractiveContextr   "   sC    } X]%>%J!,,UD99999 ! %J%J    c                 4    | t           k    rt          S t          S r   )LINESTATE_CURRENTr   r   )lss    r   _LineStateToMarkerr   '   s    	 r   c                       e Zd ZdS )HierListItemN)__name__
__module____qualname__ r   r   r   r   /   s        Dr   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )HierFrameItemc                 f    t                               | |t          |                     || _        d S r   )r   __init__reprdebugger)selfframer(   s      r   r&   zHierFrameItem.__init__4   s+    dE4;;777 r   c                 "   | j         j        j        }|r|dk    r3d| j         j        v r#t	          | j         j        d                   dz   }nd}d|t
          j                            | j         j        j                  d         | j         j	        fz  S )N?r   z modulez<Debugger Context>z%s   (%s:%d)r   )
myobjectf_codeco_namef_localsstrospathsplitco_filenamef_lineno)r)   names     r   GetTextzHierFrameItem.GetText8   s    }#+ 	,ts{{T]3334=1*=>>J+GMM$-.:;;A>M"!
 
 	
r   c                 0    | j         j        | j        u rdS dS )N      )r(   curframer-   r)   s    r   GetBitmapColumnzHierFrameItem.GetBitmapColumnG   s    =!T]2211r   c                     g }|                     t          | j        j        dd                     |                     t          | j        j        dd                     |S )NLocals   Globalsr   )appendHierFrameDictr-   r0   	f_globals)r)   rets     r   
GetSubListzHierFrameItem.GetSubListM   sR    

=!71EEFFF

=!8)QGGHHH
r   c                     dS Nr   r"   r=   s    r   IsExpandablezHierFrameItem.IsExpandableS       qr   c                 D    | j                             | j                   dS rI   )r(   set_cur_framer-   r=   s    r   TakeDefaultActionzHierFrameItem.TakeDefaultActionV   s    ##DM222qr   N)	r   r    r!   r&   r8   r>   rG   rJ   rN   r"   r   r   r$   r$   3   sn        ! ! !
 
 
          r   r$   c                       e Zd Zd Zd ZdS )rD   c                 V    || _         t          j                            | ||           d S r   )bitmapColumnr   HLIDictr&   )r)   dictr7   rQ   s       r   r&   zHierFrameDict.__init__]   s*    (  tT22222r   c                     | j         S r   )rQ   r=   s    r   r>   zHierFrameDict.GetBitmapColumna   s      r   N)r   r    r!   r&   r>   r"   r   r   rD   rD   \   s2        3 3 3! ! ! ! !r   rD   c                   &    e Zd Zd Zd Zd Zd ZdS )NoStackAvailableItemc                 >    t                               | d |           d S r   )r   r&   )r)   whys     r   r&   zNoStackAvailableItem.__init__f   s     dD#.....r   c                     dS Nr   r"   r=   s    r   rJ   z!NoStackAvailableItem.IsExpandablei   rK   r   c                     | j         S r   )r7   r=   s    r   r8   zNoStackAvailableItem.GetTextl   s
    yr   c                     dS )Nr;   r"   r=   s    r   r>   z$NoStackAvailableItem.GetBitmapColumno   rK   r   N)r   r    r!   r&   rJ   r8   r>   r"   r   r   rV   rV   e   sP        / / /        r   rV   c                   &    e Zd Zd Zd Zd Zd ZdS )HierStackRootc                 L    t                               | |d            g | _        d S r   )r   r&   
last_stackr)   r(   s     r   r&   zHierStackRoot.__init__t   s%    dHd333r   c                 J   | j         }g }|j        t          k    rY|j        d d          }|                                 g | _        |D ],\  }}| j                            ||f           ||j        u r n-| j        D ](\  }}|                    t          ||                     )|S r   )	r-   debuggerStateDBGSTATE_BREAKstackreverser`   rC   userbotframer$   )r)   r(   rF   stackUser*   linenos         r   rG   zHierStackRoot.GetSubListz   s    =!^33~aaa(H DO!)  v&&v777X222E 3 "_ 	7 	7ME6JJ}UH556666
 
r   c                     dS )Nz	root itemr"   r=   s    r   r8   zHierStackRoot.GetText   s    {r   c                     dS rI   r"   r=   s    r   rJ   zHierStackRoot.IsExpandable   rK   r   N)r   r    r!   r&   rG   r8   rJ   r"   r   r   r^   r^   s   sP            ,      r   r^   c                       e Zd ZdZd Zd ZdS )HierListDebuggerz0Hier List of stack frames, breakpoints, whateverc                     t           j                            | d t          j        d t          j        ddd                     d S )N   r   )r   HierListWithItemsr&   win32uiIDB_DEBUGGER_HIERwin32apiRGBr=   s    r   r&   zHierListDebugger.__init__   sC    "++$14c1a9P9P	
 	
 	
 	
 	
r   c                 N    t          |          }|                     |           d S r   )r^   
AcceptRoot)r)   r(   roots      r   SetupzHierListDebugger.Setup   s'    X&&r   N)r   r    r!   __doc__r&   rx   r"   r   r   rm   rm      s8        ::
 
 

    r   rm   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	DebuggerWindowc                 T    t           j                            | |           d | _        d S r   )r
   Wndr&   r(   )r)   obs     r   r&   zDebuggerWindow.__init__   s%    
D"%%%r   c                     || _         d S r   )r(   ra   s     r   InitzDebuggerWindow.Init   s     r   c                 l    t          j        d| j        z             }|d         |d         z
  dk    rd}|S )NDebugger Windows\rA   r   )r   r      r   )r   LoadWindowSizetitle)r)   defRects     r   
GetDefRectzDebuggerWindow.GetDefRect   s<    $%9DJ%FGG1:
"a''$Gr   c                     |                                  d         }t          j        j                            d| j        z   |           t          j                            | |          S )N   r   )	GetWindowPlacementpywin	frameworkr   SaveWindowSizer   r
   r}   	OnDestroy)r)   msgnewSizes      r   r   zDebuggerWindow.OnDestroy   sS    ))++A.**+?$*+LgVVVz##D#...r   c                     |d         }|dv rdS |dv r|                                   dS t          j                    }	 |j        j        }n# t
          $ r d }Y nw xY w| ||          S dS )NrA   )          r   ).   r;   r   )DeleteSelectedr   GetActiveViewbindingsfire_key_eventAttributeError)r)   r   keyviewfirers        r   	OnKeyDownzDebuggerWindow.OnKeyDown   s    !f,1'>>!!!1(**	M0EE 	 	 	EEE	5::1s   A
 
AAc                 ,    t          j                     d S r   rs   MessageBeepr=   s    r   r   zDebuggerWindow.DeleteSelected       r   c                 ,    t          j                     d S r   r   r=   s    r   EditSelectedzDebuggerWindow.EditSelected   r   r   N)
r   r    r!   r&   r   r   r   r   r   r   r"   r   r   r{   r{      s}          ! ! !  / / /
  "      r   r{   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )DebuggerStackWindowStackc                     t                               | t          j                               t	                      | _        d| _        d S rZ   )r{   r&   rq   CreateTreeCtrlrm   listlistOKr=   s    r   r&   zDebuggerStackWindow.__init__   s9    g&<&>&>???$&&	r   c                     | j                                          d| _        t          j        d| j        z   d|                                            d S )Nr   r   Visible)r   DeleteAllItemsr   rq   WriteProfileValr   IsWindowVisibler=   s    r   	SaveStatezDebuggerStackWindow.SaveState   sV    	  """ 4:-y$:N:N:P:P	
 	
 	
 	
 	
r   c                    t           j        t           j        z  t           j        z  t          j        z  t          j        z  t          j        z  }| j        	                    || 
                                |t          j                   |                     | j        t           j                   |                     | j        t           j                   | j                            ||            d| _        d S rZ   )win32conWS_CHILD
WS_VISIBLE	WS_BORDERcommctrlTVS_HASLINESTVS_LINESATROOTTVS_HASBUTTONS_obj_CreateWindowr   rq   	IDC_LIST1HookMessager   
WM_KEYDOWNWM_SYSKEYDOWNr   HierInitr   )r)   parentstyles      r   r   z DebuggerStackWindow.CreateWindow   s    !" ! #$ &	'
 %& 	 	
t'8'8&'BSTTT)<===)?@@@	64(((r   c                     | j         
J d            | j        s(d| _        | j                            | j                    d S | j                                         d S )NzInit not calledr   )r(   r   r   rx   Refreshr)   states     r   RespondDebuggerStatez(DebuggerStackWindow.RespondDebuggerState   s`    }((*;((({ 	 DKIOODM*****Ir   c                    	 |                      d          }n# t          j        $ r Y d S w xY w	 | j                            |          }| j                            |          }| j                            |          }||}| j                            |          ||fk    r| j                            |||           	 | 	                    |          }n# t          j        $ r Y d S w xY wrZ   )
GetChildItemrq   errorr   ItemFromHandler>   GetSelectedBitmapColumnGetItemImageSetItemImageGetNextSiblingItem)r)   handleitemcolselCols        r   RespondDebuggerDataz'DebuggerStackWindow.RespondDebuggerData   s
   	&&q))FF} 	 	 	FF		9++F33D)++D11CY66t<<F~y%%f--#v>>	&&vsF;;;0088=   	s    ++>C C'&C'N)	r   r    r!   r   r&   r   r   r   r   r"   r   r   r   r      sd        E  

 
 
            r   r   c                   J    e 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 )DebuggerListViewWindowc                 ^    t                               | t          j                               d S r   )r{   r&   rq   CreateListCtrlr=   s    r   r&   zDebuggerListViewWindow.__init__  s'    g&<&>&>?????r   c                 X   | }t           j        t           j        z  t           j        z  t          j        z  t          j        z  }| j                            || 	                                |t          j                   |                     | j        t           j                   |                     | j        t           j                   | }| j        d         \  }}t          j        ||df}|                    d|           d}| j        dd          D ]0\  }}|dz  }t          j        ||df}|                    ||           1|                    | j        t*                     |                    | j        t          j                   |                    | j        t          j                   d S Nr   r   )r   r   r   r   r   LVS_EDITLABELS
LVS_REPORTr   r   r   rq   r   r   r   r   r   columnsLVCFMT_LEFTInsertColumn
HookNotifyOnListEndLabelEditLVN_ENDLABELEDITOnItemRightClick	NM_RCLICKOnItemDoubleClick	NM_DBLCLK)r)   r   r   r   r   widthitemDetailsr   s           r   r   z#DebuggerListViewWindow.CreateWindow  s   !" ! %& !	" 	 	
t'8'8&'BSTTT)<===)?@@@|Au+UE1=![))) L, 	0 	0LE51HC#/qAKc;////$13CDDD$/1CDDD$0(2DEEEEEr   c                     d S r   r"   r=   s    r   r   z*DebuggerListViewWindow.RespondDebuggerData*      r   c                     d S r   r"   r   s     r   r   z+DebuggerListViewWindow.RespondDebuggerState-  r   r   c                     	 |                      dt          j                  }n# t          j        $ r Y d S w xY w|                     |           d S )N)GetNextItemr   LVNI_SELECTEDrq   r   	EditLabel)r)   sels     r   r   z#DebuggerListViewWindow.EditSelected0  s]    	""2x'=>>CC} 	 	 	FF	ss    # 66c                     |d         }t          |          t          j        v r|                                  dS t                              | |          S )NrA   r   )chrstringascii_uppercaser   r{   r   )r)   r   r   s      r   r   z DebuggerListViewWindow.OnKeyDown7  sL    !fs88v---1''c222r   c                 .    |                                   d S r   r   )r)   notify_dataextras      r   r   z(DebuggerListViewWindow.OnItemDoubleClick?      r   c                 F   |                      t          j                              }|                     |          \  }}}|dk    st          j        |z  dk    rd S |                     |t          j        t          j                   t          j	                    }|
                    t          j        t          j        z  dd           |
                    t          j        t          j        z  dd           |                                 }|                                rt          j                    }	n|                                 }	|	                    | j        d           |	                    | j        d           |                    t          j                               d S )Nr   r   i  z	Edit itemi  zDelete item)ScreenToClientrs   GetCursorPosHitTestr   TVHT_ONITEMSetItemStateLVIS_SELECTEDrq   CreatePopupMenu
AppendMenur   	MF_STRING
MF_ENABLED	GetParent
IsFloatingGetMainFrameGetParentFrameHookCommand
OnEditItemOnDeleteItemTrackPopupMenu)
r)   r   r   ptflagshItemsubitemmenudockbarhook_parents
             r   r   z'DebuggerListViewWindow.OnItemRightClickB  s[     !6!8!899 $R 0 0ugB;;(.6!;;4%!79OPPP&((*X-@@$TTT*X-@@$VVV.."" 	0!.00KK--//K666 14888H133444tr   c                 .    |                                   d S r   )r   r)   commandcodes      r   r  z#DebuggerListViewWindow.OnDeleteItemW  s    r   c                 .    |                                   d S r   r   r  s      r   r  z!DebuggerListViewWindow.OnEditItemZ  r   r   N)r   r    r!   r&   r   r   r   r   r   r   r   r  r  r"   r   r   r   r     s        @ @ @F F F2      3 3 3    *      r   r   c                   2    e Zd ZdZddgZd Zd Zd Zd ZdS )	DebuggerBreakpointsWindowBreakpoints)	ConditionF   )Location   c                    g }t          |                                           D ]T}|                    |                     |d                     |                    |                     |d                     Ut	          j        d| j        z   dd                    |                     t	          j        d| j        z   d|                                            dS )Nr   r   r   BreakpointList	r   	rangeGetItemCountrC   GetItemTextrq   r   r   joinr   r)   itemsis      r   r   z#DebuggerBreakpointsWindow.SaveStateb  s    t((**++ 	1 	1ALL))!Q//000LL))!Q//0000 4:-/?5AQAQ	
 	
 	
 	 4:-y$:N:N:P:P	
 	
 	
 qr   c                 v   |d         }|d         }|d S |                      |d                   d         }ddlm} |j                                        D ]O}|D ]J}t          |          |k    r5|                                                                dk    rd }||_         nKP| 	                                 d S )Nr   r      
Breakpointnone)
GetItembdbr0  bplistvaluesidstriplowercondr   )	r)   stdr   r   textitem_idr0  r4  bps	            r   r   z,DebuggerBreakpointsWindow.OnListEndLabelEdito  s    QxAw<F,,tAw''*"""""" '..00 	 	F  b66W$$zz||))++v55#"BGE	 %
 	  """""r   c                    	 |                      dt          j                  }|                     |          d         }ddlm} |j                                        D ]A}|D ]<}t          |          |k    r'| j	        
                    |j        |j                    n=Bn(# t          j        $ r t          j                     Y nw xY w|                                  d S )Nr   r.  r   r/  )r   r   r   r2  r3  r0  r4  r5  r6  r(   clear_breakfilelinerq   r   rs   r   r   )r)   numr<  r0  r4  r=  s         r   r   z(DebuggerBreakpointsWindow.DeleteSelected  s    	#""2x'=>>Cll3''*G&&&&&&$+2244     B"vv((11"'27CCC )
 } 	# 	# 	# """""	#  """""s   BB "CCc                    | }|                                  d}ddlm} |j                                        D ]}|D ]}t
          j                            |j                  d         }|j	        }|dz   dddt          |          dt          |          f}|                    |          }|                    |d| d|j                    d S )Nr   r   r/  r   z: )r   r3  r0  r4  r5  r2   r3   r4   r@  r9  r1   r6  
InsertItemSetItemTextrA  )	r)   lindexr0  r4  r=  baseNamer9  r   s	            r   r   z-DebuggerBreakpointsWindow.RespondDebuggerData  s    	"""""" '..00 	B 	BF B B7==11!4wqy!Q3t99aB?T**eQ8(@(@rw(@(@AAAAB	B 	Br   N)	r   r    r!   r   r   r   r   r   r   r"   r   r   r  r  ^  se        E "45G  # # #&# # #B B B B Br   r  c                   8    e Zd ZdZddgZd Zd Zd Zd Zd Z	d	S )
DebuggerWatchWindowWatch)
Expressionr  )Valuer!  c                    t                               | |           t          j        d| j        z   dd                              d          }d}|D ]}|r|                     |dz   |          }|                     |dz   d           d S )Nr   Items r$  r   r   
<New Item>)r   r   rq   GetProfileValr   r4   rD  )r)   r   r+  rG  r   s        r   r   z DebuggerWatchWindow.CreateWindow  s    ++D&999% 4:-w
 

%++ 	  	9 	9D 9	488	<00000r   c                 l   g }t          |                                 dz
            D ]+}|                    |                     |d                     ,t	          j        d| j        z   dd                    |                     t	          j        d| j        z   d|                                            dS )Nr   r   r   rO  r$  r   r%  r*  s      r   r   zDebuggerWatchWindow.SaveState  s    t((**Q.// 	1 	1ALL))!Q//0000 4:-w		%8H8H	
 	
 	
 	 4:-y$:N:N:P:P	
 	
 	
 qr   c                    |d         }|d         }|d         }|d S |                      |d|           ||                                 dz
  k    r|                     |dz   d           |                     | j        j                   d S )Nr   r   r   rQ  )rE  r'  rD  r   r(   rc   )r)   r:  r   r   itemnor;  s         r   r   z&DebuggerWatchWindow.OnListEndLabelEdit  s    QxaAw<FD)))T&&((1,,,OOFQJ555!!$-"=>>>>>r   c                     	 |                      dt          j                  }||                                 dz
  k     r|                     |           d S d S # t
          j        $ r t          j                     Y d S w xY w)Nr   r   )	r   r   r   r'  
DeleteItemrq   r   rs   r   )r)   rB  s     r   r   z"DebuggerWatchWindow.DeleteSelected  s    	#""2x'=>>CT&&((1,,,$$$$$ -,} 	# 	# 	# """"""	#s   AA "A<;A<c                 X   d x}}|t           k    r/| j        j        r"| j        j        j        }| j        j        j        }n|t
          k    rdd l}|j        x}}t          | 	                                dz
            D ]}| 
                    |d          }|d}nz	 t          t          |||                    }nZ# t          $ r d}Y nL t          j                    \  }}	}
t!          j        ||	          d                                         }d }
Y nxY w|                     |d|           d S )Nr   r   rP  zSyntax Error)rd   r(   r<   rE   r0   DBGSTATE_NOT_DEBUGGING__main____dict__r&  r'  r(  r'   evalSyntaxErrorsysexc_info	tracebackformat_exception_onlyr7  rE  )r)   r   r   r   rZ  r,  r;  valtvtbs              r   r   z(DebuggerWatchWindow.RespondDebuggerState  sP   N""}% 7.8}-6,,,OOO#,,EDt((**Q.// 	( 	(A##Aq))D}tD%6677CC" ) ) )(CCC"|~~HAq"#9!Q??BHHJJCBBBQ3''''	( 	(s   B88DADN)
r   r    r!   r   r   r   r   r   r   r   r"   r   r   rJ  rJ    sn        E!?3G	1 	1 	1
 
 
	? 	? 	?# # #( ( ( ( (r   rJ  c                 D     |            }|                     |            |S r   )r   )r   klasscontrols      r   CreateDebuggerDialogri    s&    eggG   Nr   i  i  )
   rj  i  c           	      n   t           j        t          j        z  t          j        z  t          j        z  t          j        z  }t          j        | |t          j	                  }|
                    dt          j                   |                    t          j                   |                    t          j                   |                    d           |                     |           t&          D ]C\  }}}	 |                     |           d}n# t          j        $ r d}Y nw xY w|r:t,          j        j                                        }t           j        t          j        z  }|                    | t6          |j        |||f           |                    |                                t          j        z  t          j        z  t          j        z             |                    t          j                   ||                     |           "|                     ||t          j                   Ed S )Nr   Debuggerr   )childCreatorArgs) r   r   r	   CBRS_SIZE_DYNAMICCBRS_TOPCBRS_TOOLTIPS
CBRS_FLYBYrq   CreateToolBarID_VIEW_TOOLBAR_DBGModifyStyler   TBSTYLE_FLATLoadToolBarIDR_DEBUGGEREnableDockingCBRS_ALIGN_ANYSetWindowTextDockControlBarDebuggerDialogInfosGetControlBarr   r   docking
DockingBar	CBRS_LEFTr   ri  r   SetBarStyleGetBarStyleFloatControlBar)r*   r   tbdr6  rg  floatexistsbars           r   PrepareControlBarsr    s+   

"	#
/	 
	 
		 
 
ug.I
J
JCOOAx,---OOG()))f+,,,j!!!	 0 E EE5	###FF} 	 	 	FFF	 	m&1133!F$44 K#X 	 	
 	
 	
 	OO"#  &'	
 	
 	
 	&/000=  %%%%!!#uf.CDDDD9E Es   8DD$#D$rA   c                   <   e Zd Zd Zd Zd4dZd Zd Zd Zd5d	Z	d
 Z
d Zd Zd6dZd Zd Zd Zd Zd Zd Zd Zd Zd7dZd8dZd8dZd Zd Zd Zd Zd Zd5d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/ Z.d0 Z/d1 Z0d2 Z1d3 Z2dS )9rl  c                    d| _         t          | _        d | _        d| _        d| _        t          | _        d | _        d | _	        d| _
        d| _        d| _        t                              |            t          j                                        D ]S}d}	 |                    |dz   t&                    }|dk    rn)|                     |                                |           NT|                                  t/          j                                                    | _        t7                      | _        dx| _        | _        d S )Nr   rP  r   r   )inited	SKIP_NONEskipBotFramerg   frameShutdownpumpingrY  rc   shownLineCurrentshownLineCallstacklast_cmd_debuggedabortClosedisInitialBreakpointdebugger_parentr&   r   editorTemplateGetDocumentListMarkerGetNextr   	set_breakGetPathNameresetrq   GetAppIsInprocinForcedGUILoadDebuggerOptionsoptionsbAtExceptionbAtPostMortem)r)   doclineNos      r   r&   zDebugger.__init__1  s2   % 3 $"&!##$   &&& (88:: 	: 	:CF:**6A:7HIIQ;;s00&999	:  	

">++4466*,,122D...r   c                 .    |                                   d S r   )closer=   s    r   __del__zDebugger.__del__M  s    

r   r   c                    | j         r|                                 sdS || _        | j        sdS d| _        t	          d d            t          j                    }t          D ]h\  }}}	 |                    |          }|j	        0|j	        
                                 |                    |dd           T# t
          j        $ r Y ew xY w|                                  |                                  dS r   )r  StopDebuggerPumpr  r  r   rq   r	  r|  r}  dialogr   ShowControlBarr   _UnshowCurrentLineset_quit)r)   r  r*   r6  rg  r  re  s          r   r  zDebugger.closeP  s    < 	 ((** q +{ 	1dD)))$&& 3 	 	Bu((,,9(I'')))((Q222=    	!!!qs   &AB33CCc                     | j         s
J d            |                                 rd| _         t          j                     dS dS )Nz0Can't stop the debugger pump if I'm not pumping!r   r   )r  GUIAboutToFinishInteractrq   r  r=   s    r   r  zDebugger.StopDebuggerPumpp  sL    |OOOOO|((** 	DL$&&&1qr   c                 j    	 | j         |         S # t          $ r}t          d| d          |d}~ww xY w)z&Public interface into debugger optionszOption z is not a valid optionN)r  KeyError)r)   optionr   s      r   
get_optionzDebugger.get_optiony  sT    	P<'' 	P 	P 	PCVCCCDD%O	Ps    
2-2c                     d S r   r"   r)   cmds     r   prep_runzDebugger.prep_run  r   r   Nc                 b    |                      t                     |                                  d S r   )r   rY  r  r  s     r   done_runzDebugger.done_run  s(    !!"8999

r   c                 d    t           j                            |                                          S r   )r2   r3   abspathr8  )r)   fnames     r   canoniczDebugger.canonic  s"    wu%%++---r   c                     t                               |            d | _        |                                  |                                  d S r   )r  r  rg   UpdateAllLineStatesr  r=   s    r   r  zDebugger.reset  sH    d###   """!!!!!r   c                 P    t                               | ||           |d u| _        d S r   )r  setupr  )r)   frc  s      r   r  zDebugger.setup  s,    dAq)))TMr   c                     |                      |          }|                     ||t                     t                              | ||||          S r   )r  SetLineStateLINESTATE_BREAKPOINTr  r  )r)   filenameri   	temporaryr9  s        r   r  zDebugger.set_break  sH    <<))(F,@AAA((xDQQQr   c                     |                      |          }|                     ||t                     t                              | ||          S r   )r  ResetLineStater  r  r?  )r)   r  ri   s      r   r?  zDebugger.clear_break  sD    <<))Hf.BCCC**46BBBr   c                 @    | j         rd S |                                  d S r   )r  GUIAboutToBreakr=   s    r   cmdloopzDebugger.cmdloop  s*     	Fr   c                     d S r   r"   r)   r*   s     r   print_stack_entryzDebugger.print_stack_entry  s    r   c                 F    ||j         d<   |                     |d            d S )N
__return__)r0   interaction)r)   r*   return_values      r   user_returnzDebugger.user_return  s,     (4|$%%%%%r   c                 `    |                      |          r|                     |d            d S d S r   )	stop_herer  )r)   r*   argss      r   	user_callzDebugger.user_call  s<    >>%   	*UD)))))	* 	*r   c                 <   |\  }}}|                      t                    r{||f|j        d<   t          d           t	          |t
                    st	          |t                    s|f} || }t          j        |||           | 	                    ||           d S d S )N__exception__z&Unhandled exception while debugging...)
r  OPT_STOP_EXCEPTIONSr0   print
isinstanceBaseExceptiontupler`  print_exceptionr  )r)   r*   r_  exc_type	exc_valueexc_tracebacks         r   user_exceptionzDebugger.user_exception  s     08,9m??.// 	3.6	.AEN?+:;;; i77 1!)U33 -!*I$Hi0	%h	=IIIUM22222	3 	3r   c                 V    |j         dk    rd S t                              | |           d S rZ   )r6   r  	user_liner  s     r   r  zDebugger.user_line  s0    >QF!!$.....r   c                 <   | j         rd| _         |                                  dS || j        u r&| j        t          k    r|                                  dS || j        u r&| j        t
          k    r|                                  dS t                              | |          S rZ   )	r  set_continuebotframer  SKIP_RUN	SKIP_STEPset_stepr  r  r  s     r   r  zDebugger.stop_here  s    # 	'(D$1DM!!d&78&C&C1DM!!d&79&D&DMMOOO1((u555r   r   c                    t          |t          t          j        f          st	          d          || _        |rd| _        nd| _        	 |dd l}|j        }||}| 	                                 | 
                    |           t          j        | j                   t          |t          j                  s|dz  }	 	 |rt          | _        nt           | _        t#          |||           n# t$          j        $ r Y nw xY wt(          | _        d| _        t          j        d            n,# t(          | _        d| _        t          j        d            w xY w	 |                     |           d S # |                     |           w xY w)NzOnly strings can be runr   r   
)r  r1   typesCodeType	TypeErrorr  r  rZ  r[  r  r  r^  settracetrace_dispatchr  r  r  execr3  BdbQuitr  quittingr  )r)   r  globalslocalsstart_steppingrZ  s         r   runzDebugger.run  s   #U^455 	75666!$ 	)'(D$$'(D$	"+~ JJLLLMM#L,---c5>22 t#% 5,5)),4)gv....{   D %.! !T"""" %.! !T""""" MM#DMM#sC   
A2E, >,C+ *D( +C=:D( <C==D(  (E, ()EE, ,Fc                     |                      |           	 t                              | |||           |                     |           d S # |                     |           w xY wr   )r  r  runevalr  )r)   exprr  r  s       r   r  zDebugger.runeval  sc    d	 ##D$@@@MM$DMM$s   A A"c                 (   |                                   t          j        | j                   	 	 t	          |||           n# t
          j        $ r Y nw xY wd| _        t          j        d            d S # d| _        t          j        d            w xY wrI   )r  r^  r  r  r  r3  r  r  )r)   whatr   r   s       r   runexeczDebugger.runexec  s    

T()))	T5$'''';    DML DMLs)   A A4 AA4 AA4 4Bc                 Z    |                                  r|                                  d S d S r   )GUIAboutToRunr  r=   s    r   do_set_stepzDebugger.do_set_step  s1     	MMOOOOO	 	r   c                 f    |                                  r|                     | j                   d S d S r   )r  set_nextr<   r=   s    r   do_set_nextzDebugger.do_set_next  s:     	)MM$-(((((	) 	)r   c                 f    |                                  r|                     | j                   d S d S r   )r  
set_returnr<   r=   s    r   do_set_returnzDebugger.do_set_return  s:     	+OODM*****	+ 	+r   c                 Z    |                                  r|                                  d S d S r   )r  r  r=   s    r   do_set_continuezDebugger.do_set_continue  s8     	 	  	 r   c                 |    d}| j         r|                                 }|rt                              |            d S d S rI   )r  r  r  r  )r)   oks     r   r  zDebugger.set_quit!  sN    < 	)&&((B 	+$$T*****	+ 	+r   c                 "   |d}|rk|j         r<|j         j        r0t          j                            |j         j                  d         }nd}t          t          |          ||j        |           d S t          t          |          d           d S )NrP  r   z??None)r.   r5   r2   r3   r4   r  r'   r6   )r)   r*   r7   r  s       r   _dump_frame_zDebugger._dump_frame_(  s    <D 	&|  8 el&>??B$t**eU^U;;;;;$t**f%%%%%r   c                 `   	 ddz    n/#  t          j                    d         j        j        j        }Y nxY w|                                  d | _        |r-d|j        v r|| _        n| j        |_        || _	        |j        }|-| 
                                 t          j        | j                   d S )Nr   rP  rA   _debugger_stop_frame_)r^  r_  tb_framef_backr  rg   r0   r  f_tracer  r  r  r  s     r   	set_tracezDebugger.set_trace4  s    	=FFF	=LNN1%.5<EEE

  
	! '%.88$)! /EM!DMLE  
	! 	T()))))s    *4c                     |
J d            || _         | j        D ]\  }}||u r	|| _         nJ d            t          |j        |j                   |                                  |                                  d S )NzYou must pass a valid frameFz"Can't find the frame in the stack.)r<   re   curindexr   rE   r0   GUIRespondDebuggerDataShowCurrentLine)r)   r*   r  rG  s       r   rM   zDebugger.set_cur_frameJ  s       "?   
 	? 	?HAuEzz %  ?>>>5eou~>>>##%%%r   c                 "    | j         t          k    S r   )rc   rd   r=   s    r   IsBreakzDebugger.IsBreakZ  s    !^33r   c                 "    | j         t          k    S r   )rc   rY  r=   s    r   IsDebuggingzDebugger.IsDebugging]  s    !%;;;r   c                 8   || j         k    rd S |t          k    rd}n?|t          k    rd}n1|t          k    r| j        sd}n| j        rd}nd}nt          d          t          j                    	                    t          j
        t          j                  |z              | j         t          k    r|t          k    rt          d|           d S || _         	 t          j                    }n# t          j        $ r d }Y nw xY w|Nt          D ]F\  }}}t          j                                        |          j        }|                    |           Gt&          j                                        D ]}|                    |           |                                  d S )NrP  z
 - runningz - breakz - post mortem exceptionz - exceptionzInvalid debugger state passed!z-Ignoring state change cos I'm trying to stop!)rc   rY  DBGSTATE_RUNNINGrd   r  r  
ValueErrorrq   r	  rz  
LoadStringIDR_MAINFRAMEDBGSTATE_QUITTINGr  r   r|  r}  r  r   r   r  r  OnDebuggerStateChanger  )	r)   r   r   r*   r6  rg  r  cbr  s	            r   r   zDebugger.RespondDebuggerState`  s   D&&&F***EE&&& EEn$$$ '"# '2&=>>>,,w455=	
 	
 	
 !222u@V7V7VA5IIIF"	(**EE} 	 	 	EEE	$7 / / E5)++99"==D''....(88:: 	- 	-C%%e,,,,s   C) )C=<C=c                    | j         rd S d| _         t          j                    }t          D ]o\  }}}|                    |          }|j                            |            t          j        d|j        j        z   dd          r|	                    |dd           p|                    t          j
                  }|	                    |dd           |                                  d S )Nr   r   r   r   )r  rq   r	  r|  r}  r  r   rR  r   r  rs  r  )r)   r*   r6  rg  r  wre  s          r   GUICheckInitzDebugger.GUICheckInit  s    ; 	F$&& !4 	. 	.Bu##B''AHMM$ $$qx~5y!  . $$Q1---   !<==RA&&&##%%%%%r   c                     t          j                    }t          D ](\  }}}|j        |k    r|                    |          c S )J d            )NFzCan't find a bar of that name!)rq   r	  r|  r   r}  )r)   barNamer*   r6  rg  r  s         r   GetDebuggerBarzDebugger.GetDebuggerBar  s`    $&& 3 	/ 	/Bu{g%%**2..... &6666ur   c                     | j         sd S t          D ]E\  }}}t          j                                        |          j        }|                                 Fd S r   )r  r|  rq   r	  r}  r  r   )r)   r6  rg  r  r&  s        r   r  zDebugger.GUIRespondDebuggerData  se    { 	F 3 	% 	%Bu%''55b99@B""$$$$	% 	%r   c                     |                                  sdS |                                  |                     t                     t	          d d            dS r   )r  r  r   r   r   r=   s    r   r  zDebugger.GUIAboutToRun  sW    $$&& 	1!!!!!"2333dD)))qr   c                    |                                   |                     t                     |                                  | j        rt          d           dS d| _        t          j                     | j        r
J d            | j        r2t          j	                    
                    t          j                   dS dS )z\Called as the GUI debugger is about to get context, and take control of the running program.z!!! Already pumping - outa hereNr   z0Should not be pumping once the pump has finished)r)  r   rd   GUIAboutToInteractr  r  rq   StartDebuggerPumpr  r	  PostMessager   WM_CLOSEr=   s    r   r  zDebugger.GUIAboutToBreak  s    !!.111!!!< 	3444F!###<SS!SSS 	B ""..x/@AAAAA	B 	Br   c                 @   t          j                    }|                                | _        d| _        t          j                    }||ur5|| _        |                                | _        |                    d           | j        rG|	                                s3|
                    t          j                   |                                 | j        r%t          | j        j        | j        j                   nt          dd           |                                  dS )zCCalled as the GUI is about to perform any interaction with the userNr   )rq   r	  IsWindowEnabledbFrameEnabledoldForegroundGetForegroundWindowoldFrameEnableStateEnableWindowr  r   
ShowWindowr   SW_SHOWUpdateWindowr<   r   rE   r0   r  )r)   r*   fws      r   r0  zDebugger.GUIAboutToInteract  s   $&& #2244!(**U??!#D','<'<'>'>D$q!!! 	!E$9$9$;$; 	!X-...   = 	.!$-"94=;QRRRR!$---##%%%%%r   c                 $   | j         \	 t          j                                        | j                   | j                             d           n# t          j        $ r Y nw xY w| j        sdS t          j                                                    D ]1}|	                                D ]}|
                                s  dS 2|                     t                    r2t          j                    }|                    t          j                   dS )zCalled as the GUI is about to finish any interaction with the user
        Returns non zero if we are allowed to stop interactingNr   r   )r7  rq   r	  r:  r9  r   r  r  GetDocTemplateListr  SaveModifiedr  OPT_HIDEr;  r   SW_HIDE)r)   templater  r*   s       r   r  z!Debugger.GUIAboutToFinishInteract  s'    )$&&33D4LMMM"//2222=     	1  ((;;== 	 	H//11  '')) 111 ??8$$ 	/(**EX-...qs   AA A! A!c                 `    |                      ||           |                     |||           d S r   )
ShowLineNor  )r)   fileNamer  	lineStates       r   ShowLineStatezDebugger.ShowLineState  s4    &)))(FI66666r   c                     t           j                            |          }|=t          |          }|                    ||          s|                    ||           d S d S d S r   )r   r  FindOpenDocumentr   MarkerCheck	MarkerAddr)   rG  r  rH  r  markers         r   r  zDebugger.SetLineState  sk    #44X>>?'	22F??6622 .ff----- ?. .r   c                     t           j                            |          }|'t          |          }|                    ||           d S d S r   )r   r  rK  r   MarkerDeleterN  s         r   r  zDebugger.ResetLineState  sM    #44X>>?'	22FVV,,,,, ?r   c                    |                     t                     |                     t                     |                     |                                          }| j                            |g           D ]}|                    |t                     | j        rV|| j        d         k    rG| j        d         }|	                    |t                    s!|                    |t                     d S d S d S d S r   )
MarkerDeleteAllr   r   r  r  breaksgetrM  r  rL  )r)   r  r  rA  r  s        r   UpdateDocumentLineStatesz!Debugger.UpdateDocumentLineStates  s     	-...N+++S__..//KOOE2.. 	3 	3DMM$ 12222  	6Ud.CA.F%F%F*1-F??6>:: 6fn55555	6 	6%F%F6 6r   c                 r    t           j                                        D ]}|                     |           d S r   )r   r  r  rV  )r)   r  s     r   r  zDebugger.UpdateAllLineStates  sA    (88:: 	/ 	/C))#....	/ 	/r   c                     |                                   | j        rW|                     | j        j        j                  }| j        j        }||f| _        |                     ||t                     d S d S r   )	r  r<   r  r.   r5   r6   r  rI  r   )r)   rG  r  s      r   r  zDebugger.ShowCurrentLine#  s|    
 	!!!= 	D||DM$8$DEEH]+F$,f$4D!x1BCCCCC		D 	Dr   c                 r    | j         /| j         \  }}|                     ||t                     d| _         dS dS )z&Unshow the current line, and forget itN)r  r  r   )r)   r  ri   s      r   r  zDebugger._UnshowCurrentLine/  sF     , 1ME6v/@AAA$(D!!! -,r   c                    t           j                            |          d u}t          j                            |          rSt          j        ||          r>|s:t           j                            |          }||                     |           dS dS dS dd l	}|
                    ||          }t          dt          j                            |          ||d d                             d          fz             dS )Nr   r   z
%s(%d): %sr   r   )r   r  rK  r2   r3   isfiler   JumpToDocumentrV  	linecachegetliner  basename
expandtabs)r)   r  ri   wasOpenr  r]  rA  s          r   rF  zDebugger.ShowLineNo6  s   '88BB$N7>>(## 	(B8V(T(T 	 +<<XFF?11#6661q1 $$Xv66D7##H--vtCRCy7K7KA7N7NOP   1r   )r   r   )r   N)NNr   )NN)3r   r    r!   r&   r  r  r  r  r  r  r  r  r  r  r?  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  rM   r  r  r   r)  r,  r  r  r  r0  r  rI  r  r  rV  r  r  r  rF  r"   r   r   rl  rl  0  s       3 3 38     @  P P P     . . ." " "* * *R R R R
C C C
  
  & & &* * *
3 3 3*/ / /
6 6 6# # # #J       
 
 
 
  ) ) )+ + +     + + +
& 
& 
& 
&* * *,   4 4 4< < <" " "N& & &07 7 7% % %  B B B& & &.  <7 7 7
. . .- - -6 6 6$/ / /
D 
D 
D) ) )    r   rl  )8r3  r2   pdbr   r^  r`  r  r   pywin.docking.DockingBarr   rs   r   rq   pywin.frameworkr   r   r   r   (pywin.framework.editor.color.coloreditorr   r   	pywin.mfcr	   r
   pywin.toolsr   r   dbgconLVN_ENDLABELEDITWr   r   r   HLIPythonObjectr   r$   rR   rD   rV   r^   rp   rm   r}   r{   r   r   r  rJ  ri  r|  r  r  r  r  Pdbr  rl  r"   r   r   <module>rl     s   


 				 



  



              > > > > > > > > > > > > V V V V V V V V $ $ $ $ $ $ $ $ ) ) ) ) ) ) ) )    - : : :
  	 	 	 	 	7* 	 	 	& & & & &L & & &R! ! ! ! !GO ! ! !    <   ! ! ! ! !L ! ! !H
 
 
 
 
x1 
 
 
"( ( ( ( (VZ ( ( (V7 7 7 7 7. 7 7 7tN N N N N^ N N Nb?B ?B ?B ?B ?B 6 ?B ?B ?BDE( E( E( E( E(0 E( E( E(P    $'&1 $' ,E ,E ,Eb 		'Y Y Y Y Y Y Y Y Y Yr   