
    %
ib$                       d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
Z
ddlZddlmZmZ ddlmZ ddlmZ d	 eD             Z	  G d
 d          Z G d de          Zedk    rddlmZ  ee          Ze                                ZdZeD ]Z eee          reed         z  Zedz  Z e                                 Z!e e"e!          k    r e#de d e"e!           d            e#de$                    d                      e#de$                    d                      e#de$                    d                     dS dS )zA utility class for a code container.

A code container is a class which holds source code for a debugger.  It knows how
to color the text, and also how to translate lines into offsets, and back.
    )annotationsN)kwlist)Any)axdebugcontexts)_wrap)COMExceptionc                :    h | ]}|                                 |S  )islower).0_keywords     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32comext/axdebug/codecontainer.py	<setcomp>r      s:       	      c                      e Zd Z	 	 	 	 	 d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 Zd ZdS )SourceCodeContainer<Remove Me!>r   Ntext
str | Nonec                    || _         || _        |r|                                  d| _        || _        i | _        || _        || _        || _        d S Nr   )	sourceContextr   _buildlines
nextLineNofileNamecodeContextssitestartLineNumberdebugDocument)selfr   r   r   r   r   r    s          r   __init__zSourceCodeContainer.__init__   s`     + $	 	 ,.	.*r   c                h    d x| _         x| _        | _        d | _        d | _        d | _        d | _        d S N)r   lineslineOffsetsr   r    r   r   r!   s    r   _ClosezSourceCodeContainer._Close4   s=    488	8DJ!1 !	!r   c                    | j         S r$   )r   r'   s    r   GetTextzSourceCodeContainer.GetText;   s
    yr   c                     t          d          )NzYou must subclass this)NotImplementedError)r!   dnts     r   GetNamezSourceCodeContainer.GetName>   s    !":;;;r   c                    | j         S r$   )r   r'   s    r   GetFileNamezSourceCodeContainer.GetFileNameA   s
    }r   c                    |                                   	 | j        |         S # t          $ r t          t          j                  w xY w)Nscode)r*   r&   
IndexErrorr	   winerrorS_FALSE)r!   cLineNumbers     r   GetPositionOfLinez%SourceCodeContainer.GetPositionOfLineD   sQ    	7#K00 	7 	7 	7X%56666	7s	   # %Ac                    |                                   d}d}| j        dd          D ]}||k    r n"|}|dz  }t          t          j                  |||z
  fS )Nr      r2   )r*   r&   r	   r5   r6   )r!   charPos
lastOffsetlineNo
lineOffsets        r   GetLineOfPositionz%SourceCodeContainer.GetLineOfPositionK   sz    
*122. 	7 	7JG###JaKFF X%56666*,--r   c                    | j         t          | j                  k    r	d| _         dS | j        | j                  }| xj         dz  c_         |S )Nr    r:   )r   lenr%   )r!   rcs     r   GetNextLinezSourceCodeContainer.GetNextLineZ   sF    ?c$*oo--DO2Z(1	r   c                D    |                                   | j        |         S r$   )r*   r%   )r!   nums     r   GetLinezSourceCodeContainer.GetLineb   s    z#r   c                D    t          |                                           S r$   )rB   r*   r'   s    r   GetNumCharszSourceCodeContainer.GetNumCharsf   s    4<<>>"""r   c                R    |                                   t          | j                  S r$   )r*   rB   r%   r'   s    r   GetNumLineszSourceCodeContainer.GetNumLinesi   s    4:r   c                    | j                             d|          }|dk     rt          | j                   }n|dz   }| j         ||         }||fS )N
r   r:   )r   findrB   )r!   posinewposrs        r   
_buildlinezSourceCodeContainer._buildlinem   sR    INN4%%q55^^FFUFIc&j!&yr   c                    g | _         dg| _        |                     d          \  }}|rP| j                             |           | j                            |           |                     |          \  }}|Nd S d S r   )r%   r&   rS   append)r!   linerO   s      r   r   zSourceCodeContainer._buildlinesv   s    
3OOA&&	c 	-Jd#####C(((,,ID#  	- 	- 	- 	- 	-r   c                $   |\  }}|\  }}	|                                   |dz
  }
| j        |
         |z   }|| j        z
  }|dk    rnQ|dk    r%| j                            t
          j                   n&| j                            t
          j        |f           t          |          }||z   | _        d}|t          j	        k    r|t          v rt
          j        }ns|t          j        k    rt
          j        }nV|t          j        k    rt
          j        }n9|t          j        k    rt
          j        }n|t          j        k    rt
          j        }|dk    rd S |dk    r| j                            |           d S | j                            ||f           d S )Nr:   r   )r*   r&   lastPosattrsrU   r   SOURCETEXT_ATTR_COMMENTrB   tokenizeNAME	_keywordsSOURCETEXT_ATTR_KEYWORDSTRINGSOURCETEXT_ATTR_STRINGNUMBERSOURCETEXT_ATTR_NUMBEROPSOURCETEXT_ATTR_OPERATORCOMMENT)r!   typetokensposeposrV   srowscolerowecollinenumrealCharPos
numskippedkwSizeattrs                  r   _ProcessTokenz!SourceCodeContainer._ProcessToken   s   
d
d(&w/$6 4</
??1__Jg=>>>>Jw>
KLLLU"V+8=  	!!6X_$$1DDX_$$1DDX[  3DDX%%%2DQ;;Dq[[Jd#####JtVn-----r   c                H   d| _         g | _        	 t          j        | j                  D ]} | j        |  n# t          j        $ r Y nw xY wt          |                                           | j         z
  }|r&| j                            t          j
        |f           | j        S r   )rX   rY   r[   rD   rs   
TokenErrorrB   r*   rU   r   rZ   )r!   tokensnumAtEnds      r   GetSyntaxColorAttributesz,SourceCodeContainer.GetSyntaxColorAttributes   s    
	"+D,<== , ,""F+++," 	 	 	D	t||~~&&5 	KJw>IJJJzs   &7 A	A	c           	     l    t          t          j        |||| | j                  t          j                  S r$   )r   r   DebugCodeContextr   r   IID_IDebugCodeContext)r!   r=   r;   rB   s       r   _MakeDebugCodeContextz)SourceCodeContainer._MakeDebugCodeContext   s2    %fgsD$)LL)
 
 	
r   c                    |                      |          \  }}	 |                     |dz             }n	#  |}Y nxY w|                     ||||z
            }|S )Nr:   )r?   r8   r|   )r!   r;   r=   offsetendPoscodecontexts         r   _MakeContextAtPositionz*SourceCodeContainer._MakeContextAtPosition   sk    //88	++FQJ77FF	FFF00&7BRSSs   3 9c                    |                      |          \  }}|                     |          }	 | j        |         }n/# t          $ r" |                     |          }|| j        |<   Y nw xY w|S r$   )r?   r8   r   KeyErrorr   )r!   r;   r=   r~   ccs        r   GetCodeContextAtPositionz,SourceCodeContainer.GetCodeContextAtPosition   s     //88((00	,"7+BB 	, 	, 	,,,W55B)+Dg&&&	, 	s   = )A)(A))r   r   r   NN)r   r   )__name__
__module____qualname__r"   r(   r*   r.   r0   r8   r?   rD   rG   rI   rK   rS   r   rs   rx   r|   r   r   r   r   r   r   r      s>         + + + + +*" " "  < < <  7 7 7. . .    # # #    - - -". ". ".H  
 
 
  
 
 
 
 
r   r   c                       e Zd Zd Zd Zd ZdS )SourceModuleContainerc                |   || _         t          |d          rK| j         j        }|d         dv r
|d d         }	 t          j        |          }nR# t          j        $ r Y nAw xY w|j        dk    r0t          t          j	                  dk    rt          j	        d         }nd}t                              | d |           d S )N__file__)OoCcSs__main__r   z
<Unknown!>)modulehasattrr   win32apiGetFullPathNameerrorr   rB   sysargvr   r"   )r!   r   fnames      r   r"   zSourceModuleContainer.__init__   s    6:&& 	%K(ERy:::crc
 077>    *,,SX1B1B$$$T477777s   A A A c                &   | j         |                                 }|rJ	 t          |d                                          | _         n1# t          $ r}d|| _         Y d }~nd }~ww xY wd| j         d| _         |                                  | j         S )NrR   z# COMException opening file
# z # No file available for module '')r   r0   openreadOSErrorr   r   )r!   r   detailss      r   r*   zSourceModuleContainer.GetText   s    9$$&&E NN $UC 0 0 5 5 7 7DII N N N M' M MDIIIIIIN Nt{MMM	ys   'A 
A%
A  A%c                   | j         j        }	 t          j        | j         j                  }n.# t          j        $ r | j         j        }Y nt          $ r |}Y nw xY w|t          j        k    r|	                    d          d         S |t          j
        k    r|S |t          j        k    r%t          j        	                    |          d         S |t          j        k    rd| S t          t           j                  )N.r   r:   zfile:r2   )r   r   r   r   r   r   AttributeErrorr   DOCUMENTNAMETYPE_APPNODEsplitDOCUMENTNAMETYPE_TITLEDOCUMENTNAMETYPE_FILE_TAILospathDOCUMENTNAMETYPE_URLr	   r5   E_UNEXPECTED)r!   r-   namer   s       r   r.   zSourceModuleContainer.GetName   s    {#	,T[-ABBEE~ 	) 	) 	)K(EEE 	 	 	EEE	'222::c??2&&G222LG6667==''**G000"5??"X%:;;;;s   - A
AAN)r   r   r   r"   r*   r.   r   r   r   r   r      sA        8 8 8$  < < < < <r   r   r   )ttestr:   zLengths don't match!!! (/)zGetLineOfPos=   
   )%__doc__
__future__r   r   r   r[   keywordr   typingr   r   r5   win32com.axdebugr   r   win32com.axdebug.utilr   win32com.server.exceptionr	   r]   r   r   r   Testr   scrx   rY   attrlenrr   
isinstancetupler*   r   rB   printr?   r   r   r   <module>r      so    # " " " " " 				 



                . . . . . . . . ' ' ' ' ' ' 2 2 2 2 2 2   	 n n n n n n n nb1< 1< 1< 1< 1</ 1< 1< 1<h z		u	%	%B''))EG  :dE"" 	tAwGGqLGG::<<D##d))???33t99???@@@ 
E/2//22333	E/2//22333	E/2//3344444) r   