
    
hb$                       S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
r
SSKrSSKJrJr  SSKJr  SSKJr  \ V s1 s H  n U R'                  5       (       d  M  U iM     sn r  " S	 S
5      r " S S\5      r\S:X  a  SSKJr  \" \5      r\R7                  5       rSr\ H   r\" \\ 5      (       a
  \\S   -  rM  \S-  rM"     \RC                  5       r"\\#" \"5      :w  a  \$" S\ S\#" \"5       S35        \$" S\RK                  S5      5        \$" S\RK                  S5      5        \$" S\RK                  S5      5        ggs  sn f )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                      \ rS rSr     S SS jjrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rSrg)SourceCodeContainer   Nc                    X0l         Xl        U(       a  U R                  5         SU l        X l        0 U l        XPl        X@l        X`l        g Nr   )	sourceContexttext_buildlines
nextLineNofileNamecodeContextssitestartLineNumberdebugDocument)selfr   r   r   r   r   r   s          tC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\win32comext/axdebug/codecontainer.py__init__SourceCodeContainer.__init__   sC     + $	 ,.	.*    c                f    S =U l         =U l        U l        S U l        S U l        S U l        S U l        g N)r   lineslineOffsetsr   r   r   r   r   s    r   _CloseSourceCodeContainer._Close4   s7    488	8DJ!1 !	!r   c                    U R                   $ r   )r   r!   s    r   GetTextSourceCodeContainer.GetText;   s    yyr   c                    [        S5      e)NzYou must subclass this)NotImplementedError)r   dnts     r   GetNameSourceCodeContainer.GetName>   s    !":;;r   c                    U R                   $ r   )r   r!   s    r   GetFileNameSourceCodeContainer.GetFileNameA   s    }}r   c                    U R                  5          U R                  U   $ ! [         a    [        [        R
                  S9ef = f)Nscode)r%   r    
IndexErrorr	   winerrorS_FALSE)r   cLineNumbers     r   GetPositionOfLine%SourceCodeContainer.GetPositionOfLineD   sA    	7##K00 	7X%5%566	7s	   ! "Ac                    U R                  5         SnSnU R                  SS   H  nXA:  a    O"UnUS-  nM     [        [        R                  S9eX1U-
  4$ )Nr      r0   )r%   r    r	   r3   r4   )r   charPos
lastOffsetlineNo
lineOffsets        r   GetLineOfPosition%SourceCodeContainer.GetLineOfPositionK   sd    
**12.J##JaKF	 / X%5%566*,--r   c                    U R                   [        U R                  5      :  a  SU l         gU R                  U R                      nU =R                   S-  sl         U$ )Nr    r9   )r   lenr   )r   rcs     r   GetNextLineSourceCodeContainer.GetNextLineZ   sE    ??c$**o-DOZZ(1	r   c                @    U R                  5         U R                  U   $ r   )r%   r   )r   nums     r   GetLineSourceCodeContainer.GetLineb   s    zz#r   c                4    [        U R                  5       5      $ r   )rB   r%   r!   s    r   GetNumCharsSourceCodeContainer.GetNumCharsf   s    4<<>""r   c                L    U R                  5         [        U R                  5      $ r   )r%   rB   r   r!   s    r   GetNumLinesSourceCodeContainer.GetNumLinesi   s    4::r   c                    U R                   R                  SU5      nUS:  a  [        U R                   5      nOUS-   nU R                   X nXC4$ )N
r   r9   )r   findrB   )r   posinewposrs        r   
_buildlineSourceCodeContainer._buildlinem   sI    IINN4%q5^FUFIIc!yr   c                    / U l         S/U l        U R                  S5      u  pU(       aS  U R                   R                  U5        U R                  R                  U5        U R                  U5      u  pU(       a  MR  g g r   )r   r    rW   append)r   linerS   s      r   r   SourceCodeContainer._buildlinesv   sc    
3OOA&	JJd###C(,ID dr   c                |   Uu  pgUu  pU R                  5         US-
  n
U R                  U
   U-   nXR                  -
  nUS:X  a  O[US:X  a*  U R                  R	                  [
        R                  5        O+U R                  R	                  [
        R                  U45        [        U5      nX-   U l        SnU[        R                  :X  a  U[        ;   a  [
        R                  nOU[        R                  :X  a  [
        R                  nOnU[        R                  :X  a  [
        R                  nOIU[        R                   :X  a  [
        R"                  nO$U[        R$                  :X  a  [
        R                  nUS:X  a  g US:X  a  U R                  R	                  U5        g U R                  R	                  X45        g )Nr9   r   )r%   r    lastPosattrsrZ   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eposr[   srowscolerowecollinenumrealCharPos
numskippedkwSizeattrs                  r   _ProcessToken!SourceCodeContainer._ProcessToken   sV   

(&&w/$6 <</
?1_JJg==>JJw>>
KLU"+8== 	!66X__$11DX__$11DX[[ 33DX%%%22DQ;q[JJd#JJtn-r   c                   SU l         / U l         [        R                  " U R                  5       H  nU R                  " U6   M     [        U R                  5       5      U R                   -
  nU(       a+  U R                  R                  [        R                  U45        U R                  $ ! [        R
                   a     Nzf = fr   )r^   r_   ra   rD   ry   
TokenErrorrB   r%   rZ   r   r`   )r   tokensnumAtEnds      r   GetSyntaxColorAttributes,SourceCodeContainer.GetSyntaxColorAttributes   s    
	"++D,<,<=""F+ > t||~&5JJw>>IJzz "" 		s   6B* *C Cc           	     v    [        [        R                  " XX0U R                  5      [        R
                  5      $ r   )r   r   DebugCodeContextr   r   IID_IDebugCodeContext)r   r<   r:   rB   s       r   _MakeDebugCodeContext)SourceCodeContainer._MakeDebugCodeContext   s.    %%fs$))L))
 	
r   c                    U R                  U5      u  p# U R                  US-   5      nU R                  X!XA-
  5      nU$ !   Un N= f)Nr9   )r>   r6   r   )r   r:   r<   offsetendPoscodecontexts         r   _MakeContextAtPosition*SourceCodeContainer._MakeContextAtPosition   sV    //8	++FQJ7F 00&BRS	Fs	   ? Ac                    U R                  U5      u  p#U R                  U5      n U R                  U   nU$ ! [         a#    U R	                  U5      nX@R                  U'    U$ f = fr   )r>   r6   r   KeyErrorr   )r   r:   r<   r   ccs        r   GetCodeContextAtPosition,SourceCodeContainer.GetCodeContextAtPosition   sv     //8((0	,""7+B 	  	,,,W5B)+g&		,s   7 )A$#A$)r_   r   r   r   r^   r    r   r   r   r   r   r   )z<Remove Me!>r   r   NN)r   z
str | None)__name__
__module____qualname____firstlineno__r   r"   r%   r*   r-   r6   r>   rD   rH   rK   rN   rW   r   ry   r   r   r   r   __static_attributes__ r   r   r   r      sv      ++*"<7.#-".H

r   r   c                  &    \ rS rSrS rS rS rSrg)SourceModuleContainer   c                   Xl         [        US5      (       a<  U R                   R                  nUS   S;   a  US S n [        R                  " U5      nOCUR                  S:X  a1  [        [        R                  5      S:  a  [        R                  S   nOSn[        R                  U S U5        g ! [        R
                   a     N.f = f)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   SourceModuleContainer.__init__   s    6:&&KK((ERy::cr
 007 *,SXX1B$$$T47 >> s   B/ /CCc                2   U R                   c]  U R                  5       nU(       a!   [        US5      R                  5       U l         OSU R
                   S3U l         U R                  5         U R                   $ ! [         a  nSU< 3U l          S nAN6S nAff = f)NrV   z# COMException opening file
# z # No file available for module '')r   r-   openreadOSErrorr   r   )r   r   detailss      r   r%   SourceModuleContainer.GetText   s    99$$&EN $UC 0 5 5 7DI ?t{{m1M	yy  N"A' MDIINs   A7 7
BBBc                F   U R                   R                  n [        R                  " U R                   R                  5      nU[        R                  :X  a  UR                  S5      S   $ U[        R                  :X  a  U$ U[        R                  :X  a"  [        R                  R                  U5      S   $ U[        R                  :X  a  SU 3$ [        [         R"                  S9e! [        R
                   a    U R                   R                  n N[         a    Un Nf = f)N.r   r9   zfile:r0   )r   r   r   r   r   r   AttributeErrorr   DOCUMENTNAMETYPE_APPNODEsplitDOCUMENTNAMETYPE_TITLEDOCUMENTNAMETYPE_FILE_TAILospathDOCUMENTNAMETYPE_URLr	   r3   E_UNEXPECTED)r   r)   namer   s       r   r*   SourceModuleContainer.GetName   s    {{##	,,T[[-A-ABE
 '222::c?2&&G222LG66677=='**G0005'?"X%:%:;; ~~ 	)KK((E 	E	s   *C& &*D D D )r   r   N)r   r   r   r   r   r%   r*   r   r   r   r   r   r      s    8$<r   r   r   )ttestr9   zLengths don't match!!! (/)zGetLineOfPos=   
   )&__doc__
__future__r   r   r   ra   keywordr   typingr   r   r3   win32com.axdebugr   r   win32com.axdebug.utilr   win32com.server.exceptionr	   islowerrc   r   r   r   Testr   scr   r_   attrlenrx   
isinstancetupler%   r   rB   printr>   )_keywords   0r   <module>r      sQ   # 	 
      . ' 2  	 n nb1</ 1<h z	u	%B'')EGdE""tAwGqLG	 
 ::<D#d)(	3t9+Q?@ 
/2//23	/2//23	/2//34) ]s   EE