
    =Og~                         	 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dS )    N)CO_GENERATORCO_COROUTINECO_ASYNC_GENERATOR)BdbQuitBdb
Breakpointc                       e Zd ZdS )r   N)__name__
__module____qualname__     /usr/lib64/python3.11/bdb.pyr   r      s        **r   r   c                   ,   e Zd Z	 d1d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d2dZd1dZd Zd Zd Zd1dZd Zd Zd Z	 	 d3d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)d4d,Z*d5d-Z+d5d.Z,d/ Z-d0 Z.dS )6r   Nc                     |rt          |          nd | _        i | _        i | _        d | _        |                                  d S N)setskipbreaksfncacheframe_returning_load_breaks)selfr   s     r   __init__zBdb.__init__   sF    !%/CIII4	#r   c                     	 |d|dd         z   dz   k    r|S | j                             |          }|sHt          j                            |          }t          j                            |          }|| j         |<   |S )N<   >)r   getospathabspathnormcase)r   filenamecanonics      r   r&   zBdb.canonic'   s    	 sXad^+c111O,""8,, 	-gooh//Gg&&w//G%,DL"r   c                 r    	 dd l }|                                 d | _        |                     d d            d S )Nr   )	linecache
checkcachebotframe_set_stopinfo)r   r(   s     r   resetz	Bdb.reset8   sF    C4&&&&&r   c                    	 | j         rd S |dk    r|                     |          S |dk    r|                     ||          S |dk    r|                     ||          S |dk    r|                     ||          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F??%%e,,,F??%%eS111H''s333K**5#666H&&M!!&&J&&:DKKHHH""r   c                     	 |                      |          s|                     |          r#|                     |           | j        rt          | j        S r   )	stop_here
break_here	user_liner5   r   r:   r   r=   s     r   r6   zBdb.dispatch_linej   sW    	 >>%   	,DOOE$:$: 	,NN5!!!}+Gm""r   c                 *   	 | j         |j        | _         | j        S |                     |          s|                     |          sd S | j        r|j        j        t          z  r| j        S | 	                    ||           | 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    	 = !LDM&&u%% 	)<)<U)C)C 	F> 	'el36SS 	'&&uc"""='-""r   c                 j   	 |                      |          s|| j        k    r| j        r|j        j        t
          z  r| j        S 	 || _        |                     ||           d | _        n# d | _        w xY w| j	        rt          | j        |u r!| j        dk    r|                     d d            | j        S Nr   )rA   returnframerH   rI   rJ   rK   r:   r   user_returnr5   r   
stoplinenor+   rM   s      r   r8   zBdb.dispatch_return   s    	 >>%   	/ET-=$=$=~ +%,"7:W"W +**,',$  ,,,'+$$t$++++}+Gm~&&4?b+@+@""4...""s   A* *	A3c                    	 |                      |          rP|j        j        t          z  r|d         t          u r|d         $|                     ||           | j        rt          nc| j        r\|| j        urS| j        j        j        t          z  r:|d         t          t          fv r$|                     ||           | 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    	 >>%   	, L),II 0A-//CFN##E3///=/-
 n 	,dn!<!<N)25RR "=F}m<<<s+++}+Gm""r   c                 T    	 |dS | j         D ]}t          j        ||          r dS dS NFT)r   fnmatch)r   module_namepatterns      r   is_skipped_modulezBdb.is_skipped_module   sF    >5y 	 	G{G44 ttur   c                     	 | j         r/|                     |j                            d                    rdS || j        u r| j        dk    rdS |j        | j        k    S | j        sdS dS )Nr
   Fr   T)r   r]   	f_globalsr    rH   rR   f_linenorD   s     r   rA   zBdb.stop_here   s~    H 9 	%%eo&9&9*&E&EFF	5DN"""$$u>T_44~ 	4ur   c                 j   	 |                      |j        j                  }|| j        vrdS |j        }|| j        |         vr|j        j        }|| j        |         vrdS t          |||          \  }}|r>|j        | _        |r.|j	        r'| 
                    t          |j                             dS dS 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994;&&5X... \0FT[222u x77
T 	YDN . .c")nn---45r   c                 "    	 t          d          )Nz)subclass of bdb must implement do_clear())NotImplementedError)r   r?   s     r   rh   zBdb.do_clear   s    	 ""MNNNr   c                 P    	 |                      |j        j                  | j        v S r   )r&   rI   rb   r   rD   s     r   rG   zBdb.break_anywhere   s%    	||EL455DDr   c                     	 d S r   r   )r   r=   argument_lists      r   rL   zBdb.user_call  
    4r   c                     	 d S r   r   rD   s     r   rC   zBdb.user_line  s
    5r   c                     	 d S r   r   )r   r=   return_values      r   rQ   zBdb.user_return  rr   r   c                     	 d S r   r   )r   r=   exc_infos      r   rV   zBdb.user_exception  s
    2r   r   c                 @    	 || _         || _        d| _        || _        d S NF)rH   rP   r5   rR   )r   rH   rP   rR   s       r   r+   zBdb._set_stopinfo  s,    	 #& %r   c                 N    	 |
|j         dz   }|                     |||           d S Nr   )r`   r+   )r   r=   rj   s      r   	set_untilzBdb.set_until$  s8    	9 >^a'F5%00000r   c                     	 | j         r!| j         j        }|r|j        s| j        |_        |                     d d            d S r   )r   rF   f_tracer:   r+   )r   caller_frames     r   set_stepzBdb.set_step,  sV    *
  	;/6L ;L$8 ;'+':$4&&&&&r   c                 4    	 |                      |d            d S r   )r+   rD   s     r   set_nextzBdb.set_next8  s!    @5$'''''r   c                     	 |j         j        t          z  r|                     |d d           d S |                     |j        |           d S rO   )rI   rJ   rK   r+   rF   rD   s     r   
set_returnzBdb.set_return<  sT    7< #@@ 	4udB/////u|U33333r   c                     	 |t          j                    j        }|                                  |r| j        |_        || _        |j        }||                                  t          j        | j                   d S r   )	sys	_getframerF   r,   r:   r~   r*   r   settracerD   s     r   	set_tracezBdb.set_traceC  s{    	 =MOO*E

 	! /EM!DMLE  	! 	T()))))r   c                     	 |                      | j        d d           | j        sMt          j        d            t          j                    j        }|r!|| j        ur|`|j        }|r|| j        ud S d S d S d S d S rO   )r+   r*   r   r   r   r   rF   r~   rD   s     r   set_continuezBdb.set_continueR  s    	
 	4=$333{ 	%LMOO*E %E66M  %E6666		% 	%% % % %66r   c                 d    	 | j         | _        d | _        d| _        t	          j        d            d S NT)r*   rH   rP   r5   r   r   r   s    r   set_quitzBdb.set_quita  s7    	 Tr   c                 t    	 | j                             |g           }||vr|                    |           d S d S r   )r   
setdefaultappend)r   r%   rj   
bp_linenoss       r   _add_to_breakszBdb._add_to_breaksr  sI    =[++Hb99
##f%%%%% $#r   Fc                     	 |                      |          }dd l}|                    ||          }|sd||fz  S |                     ||           t	          |||||          }d S )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  s    	
 <<))  622 	D.(F1CCCHf---&)T8DDtr   c                 |    	 t           j                                        D ]\  }}|                     ||           d S r   )r   bplistkeysr   r   r%   rj   s      r   r   zBdb._load_breaks  sO    	 #-"3"8"8":": 	2 	2Xv&1111	2 	2r   c                     	 ||ft           j        vr | j        |                             |           | j        |         s
| j        |= d S d S r   )r   r   r   remover   s      r   _prune_breakszBdb._prune_breaks  s`    	 fZ%666K!((000{8$ 	&H%%%	& 	&r   c                    	 |                      |          }|| j        vrd|z  S || j        |         vrd||fz  S t          j        ||f         d d          D ]}|                                 |                     ||           d S )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5aaa8 	 	BKKMMMM8V,,,tr   c                     	 	 |                      |          }n&# t          $ r}t          |          cY d }~S d }~ww xY w|                                 |                     |j        |j                   d S r   )get_bpbynumber
ValueErrorri   r   r   filer.   )r   r?   rk   errs       r   clear_bpbynumberzBdb.clear_bpbynumber  s    		$$S))BB 	 	 	s88OOOOOO	
27BG,,,ts    
<7<<c                     	 |                      |          }|| j        vrd|z  S | j        |         D ]/}t          j        ||f         }|D ]}|                                 0| j        |= d S )Nr   )r&   r   r   r   r   )r   r%   r.   blistrk   s        r   clear_all_file_breakszBdb.clear_all_file_breaks  s    	 <<))4;&&3h>>K) 	 	D%hn5E  K!tr   c                 r    	 | j         sdS t          j        D ]}|r|                                 i | _         d S )NzThere are no breakpoints)r   r   
bpbynumberr   )r   rk   s     r   clear_all_breakszBdb.clear_all_breaks  sM    	 { 	.--' 	 	B tr   c                     	 |st          d          	 t          |          }n!# t           $ r t          d|z            d w xY w	 t          j        |         }n!# t          $ r t          d|z            d w xY w|t          d|z            |S )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XXFF 	Q 	Q 	Q?#EFFDP	Q	U&v.BB 	U 	U 	U@6IJJPTT	U:<vEFFF	s   $ AA A7c                 ^    	 |                      |          }|| j        v o|| j        |         v S r   r&   r   r   s      r   	get_breakzBdb.get_break  s9    G<<))4;& ,dk(++	,r   c                     	 |                      |          }|| j        v r#|| j        |         v rt          j        ||f         pg S r   )r&   r   r   r   r   s      r   
get_breakszBdb.get_breaks  sZ    	 <<))4;& 0dk(++0h./635	6r   c                 ^    	 |                      |          }|| j        v r| j        |         S g S r   r   )r   r%   s     r   get_file_breakszBdb.get_file_breaks  s9    	 <<))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        f           || j        u rn	|j        }|/|                                 t          dt          |          dz
            }|*|                    |j         |j	        f           |j        }|*| 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!QZ)))DM!!A	 m
 	3u::>""mLL!*ak2333	A m 9As5zzA~&&Aaxr   : c                    	 dd l }dd l}|\  }}|                     |j        j                  }|d|d}|j        j        r||j        j        z  }n|dz  }|dz  }d|j        v r*|j        d         }	|dz  }||                    |	          z  }|9|                    |||j	                  }
|
r|||

                                z   z  }n|| 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99 &&&)< 	%%AAOA	T	5>))-BIAb!!!A$$XvuGGD ,Wtzz||++G4444Ar   c                    	 |dd l }|j        }||}|                                  t          |t                    rt          |dd          }t          j        | j                   	 t          |||           n# t          $ r Y nw xY wd| _        t          j        d            d S # 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    	 ?OOO'G>F

c3 	3#z622CT()))	gv&&&& 	 	 	D	 !DML !DMLs*   'A9 8B& 9
BB& BB& &Cc                 v   	 |dd l }|j        }||}|                                  t          j        | j                   	 t          |||          d| _        t          j        d            S # t          $ r Y nw xY w	 d| _        t          j        d            d S # 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    	 ?OOO'G>F

T()))	gv.. !DML	  	 	 	D	 DML !DMLs$   A- -
A:7B 9A::B B8c                 6    	 |                      |||           d S r   )r   )r   r   r   r   s       r   runctxz
Bdb.runctxs  s!    <gv&&&&&r   c                   	 |                                   t          j        | j                   d }	  ||i |}n# t          $ r Y nw xY wd| _        t          j        d            n # d| _        t          j        d            w xY w|S r   )r,   r   r   r:   r   r5   )r   funcargskwdsress        r   runcallzBdb.runcallz  s    	 	

T()))	$%%%CC 	 	 	D	 !DML !DML
s&   ; A' 
AA' AA' 'Br   )r   FNN)r   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 O OE E E        % % % %"1 1 1 1
' 
' 
'( ( (4 4 4* * * *% % %  "& & & AE    	2 	2 	2& & &  "        (, , ,6 6 6	 	 	    .   D   ,   (' ' '    r   r   c                  H    	 t                                                       d S r   )r   r   r   r   r   r   r     s    FEEOOr   c                   b    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dS )r   r   NFc                 |   || _         d | _        || _        || _        || _        || _        d| _        d| _        d| _        t          j
        | _        t          xj
        dz  c_
        | j                            |            ||f| j        v r$| j        ||f                             |            d S | g| j        ||f<   d S )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     *.'		"		 o1t$$$$<4;&&Kd
#**400000'+fDKd
###r   c                  P    dt           _        i t           _        d gt           _        d S r{   )r   r   r   r   r   r   r   clearBreakpointszBreakpoint.clearBreakpoints  s!    

!%
r   c                     	 | j         | j        f}d | j        | j        <   | j        |                             |            | j        |         s
| j        |= d S d S r   )r   r.   r   re   r   r   )r   indexs     r   r   zBreakpoint.deleteMe  si    	 DI&'+$E!!$'''{5! 	#E"""	# 	#r   c                     	 d| _         d S r   r   r   s    r   enablezBreakpoint.enable  s    -r   c                     	 d| _         d S ry   r   r   s    r   disablezBreakpoint.disable  s    .r   c                 j    	 |t           j        }t          |                                 |           d S )N)r   )r   stdoutr;   bpformat)r   outs     r   bpprintzBreakpoint.bpprint  s6    	
 ;*CdmmooC((((((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k    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    	 > 	DDD< 	"'>DD'>D,T04	490F F9 	8CDII77C; 	>,~==C9 	Ly1}}9TYOKKC
r   c                 6    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     s        ( DFJ- - - -( ' ' \'
# # #    ) ) ) )  <N N N N Nr   r   c                     	 | j         s| j        |j        k    rdS dS |j        j        | j         k    rdS | j        s|j        | _        | j        |j        k    rdS dS rY   )r   r.   r`   rI   r   r   )br=   s     r   checkfuncnamer    sx     : 6U^## 5t |qz))u ' 6',~$#u~55u4r   c                    	 t           j        | |f         }|D ]}|j        s
t          ||          s|xj        dz  c_        |j        s"|j        dk    r|xj        dz  c_        N|dfc S 	 t          |j        |j        |j	                  }|r"|j        dk    r|xj        dz  c_        n|dfc S #  |dfcY c S xY wdS )Nr   r   TFr   )
r   r   r   r  r   r   r   r   r_   r   )r   r.   r=   	possiblesr  vals         r   rd   rd   +  s    !$*-I !" !"y 	Q&& 		!v 	"x!||A 4y   
"165?ENCC )x!||A !"4y(((" 5z!!!!!<s   -AB22B<c                   &    e Zd Zd Zd Zd Zd ZdS )Tdbc                 H    |j         j        }|sd}t          d||           d S )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                  }t          d||j        |d|	                                           d S )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  s{    |#!ET\\%,233  U^U_EEeRsDJJLLAAAAAr   c                 &    t          d|           d S )Nz
+++ returnr;   )r   r=   retvals      r   rQ   zTdb.user_returnl  s    lF#####r   c                 N    t          d|           |                                  d S )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  `  sS        & & &B B B$ $ $    r   r  c                 l    t          d| d           t          | dz            }t          d|           d S )Nzfoo(r   
   zbar returned)r;   bar)nxs     r   foor%  r  s9    	&!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                  L    t                      } |                     d           d S )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 B B B B B B B B
*
*
* ,| ;>P P + + + + +i + + +x	 x	 x	 x	 x	 x	 x	 x	v  
uN uN uN uN uN uN uN uNt  @0 0 0j    #   $  
  % % % % %r   