
    z%i~                         	 d dl Z d dlZd dl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)CO_GENERATORCO_COROUTINECO_ASYNC_GENERATOR)BdbQuitBdb
Breakpointc                       e Zd Zy)r   N)__name__
__module____qualname__     7/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/bdb.pyr   r      s    *r   r   c                   *   e Zd Z	 d.dZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd/dZd.dZd Zd Zd Zd.dZd Zd Zd Z	 	 d0d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*d2d*Z+d2d+Z,d, Z-d- Z.y)3r   Nc                 v    |rt        |      nd | _        i | _        i | _        d | _        | j                          y N)setskipbreaksfncacheframe_returning_load_breaks)selfr   s     r   __init__zBdb.__init__   s3    !%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.reset8   s+    C4&r   c                 |   	 | j                   ry |dk(  r| j                  |      S |dk(  r| j                  ||      S |dk(  r| j                  ||      S |dk(  r| j	                  ||      S |dk(  r| j
                  S |dk(  r| j
                  S |dk(  r| j
                  S t        dt        |             | j
                  S )	Nlinecallreturn	exceptionc_callc_exceptionc_returnz*bdb.Bdb.dispatch: unknown debugging event:)quittingdispatch_linedispatch_calldispatch_returndispatch_exceptiontrace_dispatchprintrepr)r   frameeventargs       r   r:   zBdb.trace_dispatch?   s    	. ==F?%%e,,F?%%eS11H''s33K**5#66H&&&M!&&&J&&&:DKH"""r   c                     	 | j                  |      s| j                  |      r#| j                  |       | j                  rt        | j
                  S r   )	stop_here
break_here	user_liner5   r   r:   r   r=   s     r   r6   zBdb.dispatch_linej   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:   rA   break_anywhere	stopframef_codeco_flagsGENERATOR_AND_COROUTINE_FLAGS	user_callr5   r   r   r=   r?   s      r   r7   zBdb.dispatch_callv   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                  S # d | _        w xY wNr   )rA   returnframerH   rI   rJ   rK   r:   r   user_returnr5   r   
stoplinenor+   rM   s      r   r8   zBdb.dispatch_return   s    	 >>% ET-=-=$=~~%,,"7"7:W"W***,',$  ,'+$}}Gm~~&4??b+@""4.""" (,$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      )rA   rI   rJ   rK   StopIterationuser_exceptionr5   r   rH   GeneratorExitr:   rM   s      r   r9   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   s7    >yy 	G{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   r]   	f_globalsr    rH   rR   f_linenorD   s     r   rA   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rY   )r&   rI   co_filenamer   r`   co_firstlineno	effectivenumber	currentbp	temporarydo_clearstr)r   r=   r%   linenobpflags         r   rB   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   r?   s     r   rh   zBdb.do_clear   s    	 ""MNNr   c                 f    	 | j                  |j                  j                        | j                  v S r   )r&   rI   rb   r   rD   s     r   rG   zBdb.break_anywhere   s)    	||ELL445DDr   c                      	 y r   r   )r   r=   argument_lists      r   rL   zBdb.user_call      4r   c                      	 y r   r   rD   s     r   rC   zBdb.user_line  s    5r   c                      	 y r   r   )r   r=   return_values      r   rQ   zBdb.user_return  rr   r   c                      	 y r   r   )r   r=   exc_infos      r   rV   zBdb.user_exception  s    2r   c                 >    	 || _         || _        d| _        || _        y NF)rH   rP   r5   rR   )r   rH   rP   rR   s       r   r+   zBdb._set_stopinfo  s(    	 #& %r   c                 N    	 ||j                   dz   }| j                  |||       y Nr   )r`   r+   )r   r=   rj   s      r   	set_untilzBdb.set_until$  s.    	9 >^^a'F5%0r   c                     	 | j                   r5| j                   j                  }|r|j                  s| j                  |_        | j	                  d d        y r   )r   rF   f_tracer:   r+   )r   caller_frames     r   set_stepzBdb.set_step,  sJ    *
 //66LL$8$8'+':':$4&r   c                 *    	 | j                  |d        y r   )r+   rD   s     r   set_nextzBdb.set_next8  s    @5$'r   c                     	 |j                   j                  t        z  r| j                  |d d       y | j                  |j                  |       y rO   )rI   rJ   rK   r+   rF   rD   s     r   
set_returnzBdb.set_return<  s>    7<<  #@@udB/u||U3r   c                    	 |t        j                         j                  }| j                          |r'| j                  |_        || _        |j                  }|r'| j                          t        j                  | j                         y r   )	sys	_getframerF   r,   r:   r~   r*   r   settracerD   s     r   	set_tracezBdb.set_traceC  sj    	 =MMO**E

 //EM!DMLLE  	T(()r   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 rO   )r+   r*   r   r   r   r   rF   r~   rD   s     r   set_continuezBdb.set_continueR  s{    	
 	4==$3{{LLMMO**EE6M E6%6%	 r   c                 n    	 | j                   | _        d | _        d| _        t	        j
                  d        y NT)r*   rH   rP   r5   r   r   r   s    r   set_quitzBdb.set_quita  s/    	 Tr   c                 j    	 | j                   j                  |g       }||vr|j                  |       y y r   )r   
setdefaultappend)r   r%   rj   
bp_linenoss       r   _add_to_breakszBdb._add_to_breaksr  s6    =[[++Hb9
#f% $r   c                     	 | j                  |      }dd l}|j                  ||      }|sd||fz  S | j                  ||       t	        |||||      }y )Nr   zLine %s:%d does not exist)r&   r(   getliner   r   )	r   r%   rj   rg   condfuncnamer(   r.   rk   s	            r   	set_breakzBdb.set_breakx  sd    	
 <<)  62.(F1CCCHf-&)T8Dr   c                 v    	 t         j                  j                         D ]  \  }}| j                  ||        y r   )r   bplistkeysr   r   r%   rj   s      r   r   zBdb._load_breaks  s<    	 #-"3"3"8"8": 	2Xv&1	2r   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%   rj   rk   s       r   clear_breakzBdb.clear_break  s    	 <<)4;;&3h>>X..4&7III ##Hf$45a8 	BKKM	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
ValueErrorri   r   r   filer.   )r   r?   rk   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%   r.   blistrk   s        r   clear_all_file_breakszBdb.clear_all_file_breaks  s    	 <<)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   rk   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   r?   re   rk   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   r`   r*   rF   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&   rI   rb   co_namef_localsr<   r   r_   strip)r   frame_linenolprefixr(   r   r=   rj   r%   srvr.   s              r   format_stack_entryzBdb.format_stack_entry'  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,   
isinstanceri   compiler   r   r:   r   r   r5   )r   cmdglobalslocalsr   s        r   runzBdb.runI  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:   evalr5   r   )r   exprr   r   r   s        r   runevalzBdb.runeval_  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.runctxs  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   r5   )r   funcargskwdsress        r   runcallzBdb.runcallz  s    	 	

T(()	%%C !DMLL
  		 !DMLLs#   A 	A&#A) %A&&A) )Br   )r   FNN)z: NN)/r
   r   r   r   r&   r,   r:   r6   r7   r8   r9   r]   rA   rB   rh   rG   rL   rC   rQ   rV   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   r      s    "')#V
##,#,#>6OE%"1
'(4*%"& AE 	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   r.   rg   r   enabledignorehitsr   nextre   r   r   r   )r   r   r.   rg   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   r.   r   re   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 ry   r   r   s    r   disablezBreakpoint.disable  s    .r   c                 `    	 |t         j                  }t        | j                         |       y )N)r   )r   stdoutr;   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)rg   r   re   r   r.   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 :)re   r   r.   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rY   )r   r.   r`   rI   r   r   )br=   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   r_   r   )r   r.   r=   	possiblesr  vals         r   rd   rd   +  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)rI   r   r;   )r   r=   r   names       r   rL   zTdb.user_calla  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(   rI   r   r&   rb   r   r`   r_   r;   r   )r   r=   r(   r  fnr.   s         r   rC   zTdb.user_linee  sk    ||##ET\\%,,223  U^^U__EeRsDJJLAr   c                     t        d|       y )Nz
+++ returnr;   )r   r=   retvals      r   rQ   zTdb.user_returnl  s    lF#r   c                 <    t        d|       | j                          y )Nz+++ exception)r;   r   )r   r=   	exc_stuffs      r   rV   zTdb.user_exceptionn  s    oy)r   N)r
   r   r   rL   rC   rQ   rV   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)r;   bar)nxs     r   foor$  r  s%    	&!SAbD	A	.!r   c                 &    t        d| d       | dz  S )Nzbar(r   rT   r  )as    r   r!  r!  w  s    	&!SQ3Jr   c                  :    t               } | j                  d       y )Nzimport bdb; bdb.foo(10))r  r   )r   s    r   testr(  {  s    AEE
#$r   )rZ   r   r!   inspectr   r   r   __all__rK   	Exceptionr   r   r   r   r  rd   r  r$  r!  r(  r   r   r   <module>r,     s      
 	 B B
* ,| ;>P P +i +x	 x	v
uN uNt@0j# $
%r   