
    4bh%                         	 d dl Z d dlZd dlZd dlmZ d dlmZmZmZ g dZ	eez  ez  Z
 G d de      Z G d d      Zd	 Z G d
 d      Zd Zd Z G d de      Zd Zd Zd Zy)    N)contextmanager)CO_GENERATORCO_COROUTINECO_ASYNC_GENERATOR)BdbQuitBdb
Breakpointc                       e Zd Zy)r   N)__name__
__module____qualname__     -/opt/python-3.12.12/usr/lib/python3.12/bdb.pyr   r      s    *r   r   c                   @   e Zd Z	 d0dZd Zd Ze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d1dZd Zd0dZd Zd Zd Zd0dZd Zd Zd Z	 	 d2d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,d3d+Z-d4d,Z.d4d-Z/d. Z0d/ Z1y)5r   Nc                     |rt        |      nd | _        i | _        i | _        d | _        d | _        | j                          y N)setskipbreaksfncacheframe_returning
enterframe_load_breaks)selfr   s     r   __init__zBdb.__init__    s:    !%CI4	#r   c                     	 |d|dd z   dz   k(  r|S | j                   j                  |      }|sMt        j                  j	                  |      }t        j                  j                  |      }|| j                   |<   |S )N<   >)r   getospathabspathnormcase)r   filenamecanonics      r   r(   zBdb.canonic)   sv    	 sXa^+c11O,,""8,ggooh/Ggg&&w/G%,DLL"r   c                 `    	 dd l }|j                          d | _        | j                  d d        y )Nr   )	linecache
checkcachebotframe_set_stopinfo)r   r*   s     r   resetz	Bdb.reset:   s+    C4&r   c              #   0   K   || _         d  d | _         y wr   )r   r   frames     r   set_enterframezBdb.set_enterframeA   s     s   c                 Z   	 | j                  |      5  | j                  r
	 d d d        y |dk(  r| j                  |      cd d d        S |dk(  r| j                  ||      cd d d        S |dk(  r| j	                  ||      cd d d        S |dk(  r| j                  ||      cd d d        S |dk(  r| j                  cd d d        S |dk(  r| j                  cd d d        S |dk(  r| j                  cd d d        S t        dt        |             | j                  cd d d        S # 1 sw Y   y xY w)	Nlinecallreturn	exceptionc_callc_exceptionc_returnz*bdb.Bdb.dispatch: unknown debugging event:)	r2   quittingdispatch_linedispatch_calldispatch_returndispatch_exceptiontrace_dispatchprintrepr)r   r1   eventargs       r   r@   zBdb.trace_dispatchG   s$   	0   '}} (' ))%0	 ('
 ))%5 ('  ++E37 (' #..uc: ('  ** (' %** (' 
"**! ('" >UL&&% (''s:   D!D!	D!)D!	D!)D!D!D!7 D!!D*c                     	 | j                  |      s| j                  |      r#| j                  |       | j                  rt        | j
                  S r   )	stop_here
break_here	user_liner;   r   r@   r0   s     r   r<   zBdb.dispatch_linet   sC    	 >>% DOOE$:NN5!}}Gm"""r   c                 f   	 | j                   |j                  | _         | j                  S | j                  |      s| j	                  |      sy | j
                  r)|j                  j                  t        z  r| j                  S | j                  ||       | j                  rt        | j                  S r   )r,   f_backr@   rF   break_anywhere	stopframef_codeco_flagsGENERATOR_AND_COROUTINE_FLAGS	user_callr;   r   r   r1   rD   s      r   r=   zBdb.dispatch_call   s    	 == !LLDM&&&u%)<)<U)C>>ell336SS&&&uc"==-"""r   c                    	 | j                  |      s|| j                  k(  r| j                  r)|j                  j                  t
        z  r| j                  S 	 || _        | j                  ||       d | _        | j                  rt        | j                  |u r!| j                  dk7  r| j                  d d        | j                  dk7  r| j                  |       | j                  S # d | _        w xY wNr    )rF   returnframerL   rM   rN   rO   r@   r   user_returnr;   r   
stoplinenor-   _set_caller_tracefuncrQ   s      r   r>   zBdb.dispatch_return   s    	 >>% ET-=-=$=~~%,,"7"7:W"W***,',$  ,'+$}}Gm~~&4??b+@""4. "$**51""" (,$s   C% %	C.c                    	 | j                  |      r]|j                  j                  t        z  r|d   t        u r|d   $| j                  ||       | j                  rt        | j                  S | j                  rj|| j                  ur\| j                  j                  j                  t        z  r5|d   t        t        fv r$| j                  ||       | j                  rt        | j                  S )Nr      )rF   rM   rN   rO   StopIterationuser_exceptionr;   r   rL   GeneratorExitr@   rQ   s      r   r?   zBdb.dispatch_exception   s    	 >>%  LL)),IIA-/CFN##E3/==- """ nndnn!<NN))225RRF}m<<s+}}Gm"""r   c                 ^    	 |y| j                   D ]  }t        j                  ||      s y yNFT)r   fnmatch)r   module_namepatterns      r   is_skipped_modulezBdb.is_skipped_module   s2    >yyG{G4 ! r   c                     	 | j                   r+| j                  |j                  j                  d            ry|| j                  u r)| j
                  dk(  ry|j                  | j
                  k\  S | j                  syy)Nr   Fr    T)r   rb   	f_globalsr"   rL   rV   f_linenor0   s     r   rF   zBdb.stop_here   si    H 99%%eoo&9&9*&EFDNN""$>>T__44~~r   c                    	 | j                  |j                  j                        }|| j                  vry|j                  }|| j                  |   vr(|j                  j
                  }|| j                  |   vryt        |||      \  }}|rD|j                  | _        |r0|j                  r$| j                  t        |j                               yyr^   )r(   rM   co_filenamer   re   co_firstlineno	effectivenumber	currentbp	temporarydo_clearstr)r   r1   r'   linenobpflags         r   rG   zBdb.break_here   s    	
 << 8 894;;&X.. \\00FT[[22 x7
TYYDNc"))n-r   c                     	 t        d      )Nz)subclass of bdb must implement do_clear())NotImplementedError)r   rD   s     r   rm   zBdb.do_clear  s    	 ""MNNr   c                 f    	 | j                  |j                  j                        | j                  v S r   )r(   rM   rg   r   r0   s     r   rK   zBdb.break_anywhere
  s)    	||ELL445DDr   c                      	 y r   r   )r   r1   argument_lists      r   rP   zBdb.user_call      4r   c                      	 y r   r   r0   s     r   rH   zBdb.user_line  s    5r   c                      	 y r   r   )r   r1   return_values      r   rU   zBdb.user_return  rw   r   c                      	 y r   r   )r   r1   exc_infos      r   r[   zBdb.user_exception  s    2r   c                 >    	 || _         || _        d| _        || _        y NF)rL   rT   r;   rV   )r   rL   rT   rV   s       r   r-   zBdb._set_stopinfo"  s(    	 #& %r   c                 |    |j                   }|r.|j                  s!|| j                  ur| j                  |_        y y y y r   )rJ   f_tracer,   r@   )r   current_framecaller_frames      r   rW   zBdb._set_caller_tracefunc0  s>     %++ 4 4T]]9Z#'#6#6L  :[ 4<r   c                 N    	 ||j                   dz   }| j                  |||       y Nr   )re   r-   )r   r1   ro   s      r   	set_untilzBdb.set_until=  s.    	9 >^^a'F5%0r   c                 *    	 | j                  d d        y r   r-   r   s    r   set_stepzBdb.set_stepE  s    *4&r   c                 *    	 | j                  |d        y r   r   r0   s     r   set_nextzBdb.set_nextI  s    @5$'r   c                     	 |j                   j                  t        z  r| j                  |d d       y | j                  |j                  |       y rS   )rM   rN   rO   r-   rJ   r0   s     r   
set_returnzBdb.set_returnM  s>    7<<  #@@udB/u||U3r   c                    	 t        j                  d        |t        j                         j                  }| j	                          | j                  |      5  |r'| j                  |_        || _        |j                  }|r'| j                          d d d        t        j                  | j                         y # 1 sw Y   )xY wr   )
syssettrace	_getframerJ   r.   r2   r@   r   r,   r   r0   s     r   	set_tracezBdb.set_traceT  s    	 	T=MMO**E

  ' $ 3 3 %  MMO ( 	T(() ('s   )B:B::Cc                 $   	 | j                  | j                  d d       | j                  sft        j                  d        t        j
                         j                  }|r0|| j                  ur!|`|j                  }|r|| j                  ury y y y y rS   )r-   r,   r   r   r   r   rJ   r   r0   s     r   set_continuezBdb.set_continuee  s{    	
 	4==$3{{LLMMO**EE6M E6%6%	 r   c                 n    	 | j                   | _        d | _        d| _        t	        j
                  d        y NT)r,   rL   rT   r;   r   r   r   s    r   set_quitzBdb.set_quitt  s/    	 Tr   c                 j    	 | j                   j                  |g       }||vr|j                  |       y y r   )r   
setdefaultappend)r   r'   ro   
bp_linenoss       r   _add_to_breakszBdb._add_to_breaks  s6    =[[++Hb9
#f% $r   c                 &   	 | j                  |      }dd l}|j                  ||      }|sd||fz  S | j                  ||       t	        |||||      }| j
                  }	|	r1| j                  |	      r| j                  |	_        |	j                  }	|	r1y )Nr   zLine %s:%d does not exist)
r(   r*   getliner   r	   r   rK   r@   r   rJ   )
r   r'   ro   rl   condfuncnamer*   r4   rp   r1   s
             r   	set_breakzBdb.set_break  s    	
 <<)  62.(F1CCCHf-&)T8D ""5) $ 3 3LLE  r   c                 v    	 t         j                  j                         D ]  \  }}| j                  ||        y r   )r	   bplistkeysr   r   r'   ro   s      r   r   zBdb._load_breaks  s7    	 #-"3"3"8"8":Xv&1 #;r   c                     	 ||ft         j                  vr| j                  |   j                  |       | j                  |   s| j                  |= y y r   )r	   r   r   remover   s      r   _prune_breakszBdb._prune_breaks  sP    	 fZ%6%66KK!((0{{8$H% %r   c                     	 | j                  |      }|| j                  vrd|z  S || j                  |   vrd||fz  S t        j                  ||f   d d  D ]  }|j	                           | j                  ||       y )NThere are no breakpoints in %szThere is no breakpoint at %s:%d)r(   r   r	   r   deleteMer   )r   r'   ro   rp   s       r   clear_breakzBdb.clear_break  s    	 <<)4;;&3h>>X..4&7III ##Hf$45a8BKKM 98V,r   c                     	 	 | j                  |      }|j                          | j	                  |j
                  |j                         y # t        $ r}t        |      cY d }~S d }~ww xY wr   )get_bpbynumber
ValueErrorrn   r   r   filer4   )r   rD   rp   errs       r   clear_bpbynumberzBdb.clear_bpbynumber  s]    		$$S)B 	277BGG,	  	s8O	s   A 	A)
A$A)$A)c                     	 | j                  |      }|| j                  vrd|z  S | j                  |   D ].  }t        j                  ||f   }|D ]  }|j	                           0 | j                  |= y )Nr   )r(   r   r	   r   r   )r   r'   r4   blistrp   s        r   clear_all_file_breakszBdb.clear_all_file_breaks  sy    	 <<)4;;&3h>>KK)D%%hn5E  * KK!r   c                 ~    	 | j                   syt        j                  D ]  }|s|j                           i | _         y )NzThere are no breakpoints)r   r	   
bpbynumberr   )r   rp   s     r   clear_all_breakszBdb.clear_all_breaks  s;    	 {{-''B ( r   c                     	 |st        d      	 t        |      }	 t        j                  |   }|t        d|z        |S # t         $ r t        d|z        d w xY w# t        $ r t        d|z        d w xY w)NzBreakpoint number expectedz Non-numeric breakpoint number %sz!Breakpoint number %d out of rangezBreakpoint %d already deleted)r   intr	   r   
IndexError)r   rD   rj   rp   s       r   r   zBdb.get_bpbynumber  s    	
 9::	QXF	U&&v.B :<vEFF	  	Q?#EFDP	Q  	U@6IJPTT	Us   A A AA6c                 h    	 | j                  |      }|| j                  v xr || j                  |   v S r   r(   r   r   s      r   	get_breakzBdb.get_break	  s:    G<<)4;;& ,dkk(++	,r   c                     	 | j                  |      }|| j                  v xr( || j                  |   v xr t        j                  ||f   xs g S r   )r(   r   r	   r   r   s      r   
get_breakszBdb.get_breaks  s^    	 <<)4;;& 0dkk(++0h./635	6r   c                 d    	 | j                  |      }|| j                  v r| j                  |   S g S r   r   )r   r'   s     r   get_file_breakszBdb.get_file_breaks  s7    	 <<)t{{";;x((Ir   c                     	 | j                   S r   )r   r   s    r   get_all_breakszBdb.get_all_breaks$  s    2{{r   c                    	 g }|r|j                   |u r|j                  }|;|j                  ||j                  f       || j                  u rn|j
                  }|;|j                          t        dt        |      dz
        }|6|j                  |j                   |j                  f       |j                  }|6|t        dt        |      dz
        }||fS )Nr   r   )
tb_frametb_nextr   re   r,   rJ   reversemaxlen	tb_lineno)r   ftstackis        r   	get_stackzBdb.get_stack+  s    	
 q		AmLL!QZZ)DMM!A	 m
 	3u:>"mLL!**akk23		A m 9As5zA~&Aaxr   c                    	 dd l }dd l}|\  }}| j                  |j                  j                        }|d|d}|j                  j
                  r||j                  j
                  z  }n|dz  }|dz  }d|j                  v r(|j                  d   }	|dz  }||j                  |	      z  }|7|j                  |||j                        }
|
r|||
j                         z   z  }|S || dz  }|S )	Nr   ()z<lambda>z()
__return__z->zWarning: lineno is None)r*   reprlibr(   rM   rg   co_namef_localsrB   r   rd   strip)r   frame_linenolprefixr*   r   r1   ro   r'   srvr4   s              r   format_stack_entryzBdb.format_stack_entryB  s    	 	"$v<< 8 89 &)<<%%%AOA	T	5>>)-BIAb!!A$$XvuGDWtzz|++  G9344Ar   c                 ~   	 |dd l }|j                  }||}| j                          t        |t              rt        |dd      }t        j                  | j                         	 t        |||       d| _        t        j                  d        y # t        $ r Y (w xY w# d| _        t        j                  d        w xY w)Nr   z<string>execT)__main____dict__r.   
isinstancern   compiler   r   r@   r   r   r;   )r   cmdglobalslocalsr   s        r   runzBdb.rund  s    	 ?''G>F

c3#z62CT(()	gv& !DMLL	  		 !DMLLs$   %B 	BB BB B<c                 ~   	 |dd l }|j                  }||}| j                          t        j                  | j
                         	 t        |||      d| _        t        j                  d        S # t        $ r Y nw xY w	 d| _        t        j                  d        y # d| _        t        j                  d        w xY w)Nr   T)	r   r   r.   r   r   r@   evalr;   r   )r   exprr   r   r   s        r   runevalzBdb.runevalz  s    	 ?''G>F

T(()	gv. !DMLL	  		 DMLL !DMLLs$   A1 1	A=:B <A==B B<c                 ,    	 | j                  |||       y r   )r   )r   r   r   r   s       r   runctxz
Bdb.runctx  s    <gv&r   c                   	 | j                          t        j                  | j                         d }	  ||i |}d| _        t        j                  d        |S # t        $ r Y )w xY w# d| _        t        j                  d        w xY wr   )r.   r   r   r@   r   r;   )r   funcargskwdsress        r   runcallzBdb.runcall  s    	 	

T(()	%%C !DMLL
  		 !DMLLs#   A 	A&#A) %A&&A) )Br   )r   FNN)z: NN)2r   r   r   r   r(   r.   r   r2   r@   r<   r=   r>   r?   rb   rF   rG   rm   rK   rP   rH   rU   r[   r-   rW   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      s
   "'  
+'Z
##,#6#>6OE%71'(4*"%"& AE0	2&"(,6	.D,('r   r   c                  6    	 t               j                          y r   )r   r   r   r   r   r   r     s    FEOOr   c                   Z    e Zd Z	 dZi ZdgZddZed        Zd Z	d Z
d ZddZd	 Zd
 Zy)r	   r   Nc                    || _         d | _        || _        || _        || _        || _        d| _        d| _        d| _        t        j                  | _        t        xj                  dz  c_
        | j                  j                  |        ||f| j                  v r!| j                  ||f   j                  |        y | g| j                  ||f<   y )NTr   r   )r   func_first_executable_liner   r4   rl   r   enabledignorehitsr	   nextrj   r   r   r   )r   r   r4   rl   r   r   s         r   r   zBreakpoint.__init__  s     *.'		"		 oo1t$$<4;;&KKd
#**40'+fDKKd
#r   c                  H    dt         _        i t         _        d gt         _        y r   )r	   r   r   r   r   r   r   clearBreakpointszBreakpoint.clearBreakpoints  s    

!%
r   c                     	 | j                   | j                  f}d | j                  | j                  <   | j                  |   j                  |        | j                  |   s| j                  |= y y r   )r   r4   r   rj   r   r   )r   indexs     r   r   zBreakpoint.deleteMe  sa    	 DII&'+$E!!$'{{5!E" "r   c                     	 d| _         y r   r   r   s    r   enablezBreakpoint.enable  s    -r   c                     	 d| _         y r~   r  r   s    r   disablezBreakpoint.disable  s    .r   c                 `    	 |t         j                  }t        | j                         |       y )N)r   )r   stdoutrA   bpformat)r   outs     r   bpprintzBreakpoint.bpprint  s'    	
 ;**CdmmoC(r   c                    	 | j                   rd}nd}| j                  r|dz   }n|dz   }d| j                  || j                  | j                  fz  }| j
                  r|d| j
                  z  }| j                  r|d| j                  fz  z  }| j                  r(| j                  dkD  rd	}nd
}|d| j                  |fz  z  }|S )Nzdel  zkeep zyes  zno   z%-4dbreakpoint   %s at %s:%dz
	stop only if z
	ignore next %d hitsr   r    z"
	breakpoint already hit %d time%s)rl   r   rj   r   r4   r   r   r   )r   dispretsss       r   r	  zBreakpoint.bpformat  s    	 >>DD<<'>D'>D,T04		4990F F99DII77C;;,~==C99yy1}9TYYOKKC
r   c                 T    d| j                   d| j                  d| j                  S )Nzbreakpoint z at :)rj   r   r4   r   s    r   __str__zBreakpoint.__str__  s    ;+/;;		499MMr   r   r   )r   r   r   r   r   r   r   staticmethodr   r   r  r  r  r	  r  r   r   r   r	   r	     sR    ( DFJ-( ' '
#)<Nr   r	   c                 
   	 | j                   s| j                  |j                  k7  ryy|j                  j                  | j                   k7  ry| j
                  s|j                  | _        | j
                  |j                  k7  ryyr^   )r   r4   re   rM   r   r   )br1   s     r   checkfuncnamer  &  sr     ::66U^^#  ||qzz) ''',~~$##u~~5r   c                    	 t         j                  | |f   }|D ]  }|j                  st        ||      s|xj                  dz  c_        |j
                  s+|j                  dkD  r|xj                  dz  c_        c|dfc S 	 t        |j
                  |j                  |j                        }|r+|j                  dkD  r|xj                  dz  c_        n|dfc S  y#  |dfcY c S xY w)Nr   r   TFr   )
r	   r   r   r  r   r   r   r   rd   r   )r   r4   r1   	possiblesr  vals         r   ri   ri   F  s     !!$*-IyyQ&	!vvxx!|A 4y 
"1665??ENNCxx!|A !"4y(5 D " 5z!s   ACC(c                   $    e Zd Zd Zd Zd Zd Zy)Tdbc                 R    |j                   j                  }|sd}t        d||       y )N???z+++ call)rM   r   rA   )r   r1   r   names       r   rP   zTdb.user_call|  s$    ||##ETj$%r   c           	      (   dd l }|j                  j                  }|sd}| j                  |j                  j                        }|j                  ||j                  |j                        }t        d||j                  |d|j                                y )Nr   r  z+++r  )
r*   rM   r   r(   rg   r   re   rd   rA   r   )r   r1   r*   r  fnr4   s         r   rH   zTdb.user_line  sk    ||##ET\\%,,223  U^^U__EeRsDJJLAr   c                     t        d|       y )Nz
+++ returnrA   )r   r1   retvals      r   rU   zTdb.user_return  s    lF#r   c                 <    t        d|       | j                          y )Nz+++ exception)rA   r   )r   r1   	exc_stuffs      r   r[   zTdb.user_exception  s    oy)r   N)r   r   r   rP   rH   rU   r[   r   r   r   r  r  {  s    &B$r   r  c                 R    t        d| d       t        | dz        }t        d|       y )Nzfoo(r   
   zbar returned)rA   bar)nxs     r   foor,    s%    	&!SAbD	A	.!r   c                 &    t        d| d       | dz  S )Nzbar(r   rY   r#  )as    r   r)  r)    s    	&!SQ3Jr   c                  :    t               } | j                  d       y )Nzimport bdb; bdb.foo(10))r  r   )r   s    r   testr0    s    AEE
#$r   )r_   r   r#   
contextlibr   inspectr   r   r   __all__rO   	Exceptionr   r   r   r	   r  ri   r  r,  r)  r0  r   r   r   <module>r5     s      
 	 % B B
* ,| ;>P P +i +R
 R
j
uN uNt@0j# $
%r   