a
    Rîhz  ã                   @   s°   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B eB ZG dd„ de	ƒZ
G dd„ dƒZdd	„ ZG d
d„ dƒZdd„ Zdd„ ZG dd„ deƒZdd„ Zdd„ Zdd„ ZdS )é    N)ÚCO_GENERATORÚCO_COROUTINEÚCO_ASYNC_GENERATOR)ÚBdbQuitÚBdbÚ
Breakpointc                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú+/opt/python-3.9.24/usr/lib/python3.9/bdb.pyr      s   r   c                   @   sl  e Zd ZdYdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ ZdZd%d&„Zd[d'd(„Zd)d*„ Zd+d,„ Zd-d.„ Zd\d/d0„Zd1d2„ Zd3d4„ Zd]d6d7„Zd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Z d@dA„ Z!dBdC„ Z"dDdE„ Z#dFdG„ Z$dHdI„ Z%dJdK„ Z&dLdM„ Z'd^dOdP„Z(d_dQdR„Z)d`dSdT„Z*dUdV„ Z+dWdX„ Z,dS )ar   Nc                 C   s(   |rt |ƒnd | _i | _i | _d | _d S ©N)ÚsetÚskipÚbreaksÚfncacheÚframe_returning)Úselfr   r   r   r   Ú__init__   s    zBdb.__init__c                 C   sR   |d|dd…  d kr|S | j  |¡}|sNtj |¡}tj |¡}|| j |< |S )Nú<é   éÿÿÿÿú>)r   ÚgetÚosÚpathÚabspathÚnormcase)r   ÚfilenameÚcanonicr   r   r   r   %   s    
zBdb.canonicc                 C   s&   dd l }| ¡  d | _|  d d ¡ d S )Nr   )Ú	linecacheÚ
checkcacheÚbotframeÚ_set_stopinfo)r   r    r   r   r   Úreset6   s    z	Bdb.resetc                 C   s–   | j r
d S |dkr|  |¡S |dkr0|  ||¡S |dkrD|  ||¡S |dkrX|  ||¡S |dkrf| jS |dkrt| jS |dkr‚| jS tdt|ƒƒ | jS )	NÚlineÚcallÚreturnÚ	exceptionZc_callZc_exceptionZc_returnz*bdb.Bdb.dispatch: unknown debugging event:)ÚquittingÚdispatch_lineÚdispatch_callÚdispatch_returnÚdispatch_exceptionÚtrace_dispatchÚprintÚrepr)r   ÚframeÚeventÚargr   r   r   r.   =   s$    
zBdb.trace_dispatchc                 C   s.   |   |¡s|  |¡r(|  |¡ | jr(t‚| jS r   )Ú	stop_hereÚ
break_hereÚ	user_liner)   r   r.   ©r   r1   r   r   r   r*   h   s    

zBdb.dispatch_linec                 C   sd   | j d u r|j| _ | jS |  |¡s0|  |¡s0d S | jrH|jjt@ rH| jS |  	||¡ | j
r^t‚| jS r   )r"   Úf_backr.   r4   Úbreak_anywhereÚ	stopframeÚf_codeÚco_flagsÚGENERATOR_AND_COROUTINE_FLAGSÚ	user_callr)   r   ©r   r1   r3   r   r   r   r+   t   s    

zBdb.dispatch_callc                 C   s‚   |   |¡s|| jkr|| jr,|jjt@ r,| jS z|| _|  ||¡ W d | _nd | _0 | j	r\t
‚| j|u r|| jdkr||  d d ¡ | jS ©Nr   )r4   Úreturnframer:   r;   r<   r=   r.   r   Úuser_returnr)   r   Ú
stoplinenor#   r?   r   r   r   r,   Š   s    
zBdb.dispatch_returnc                 C   s   |   |¡rF|jjt@ r.|d tu r.|d d u sŠ|  ||¡ | jrŠt‚nD| jrŠ|| jurŠ| jjjt@ rŠ|d tt	fv rŠ|  ||¡ | jrŠt‚| j
S )Nr   é   )r4   r;   r<   r=   ÚStopIterationÚuser_exceptionr)   r   r:   ÚGeneratorExitr.   r?   r   r   r   r-       s     

ÿ
ÿÿþ
zBdb.dispatch_exceptionc                 C   s.   |d u rdS | j D ]}t ||¡r dS qdS ©NFT)r   Úfnmatch)r   Úmodule_nameÚpatternr   r   r   Úis_skipped_module¿   s    
zBdb.is_skipped_modulec                 C   sN   | j r|  |j d¡¡rdS || ju r@| jdkr4dS |j| jkS | jsJdS dS )Nr   Fr   T)r   rL   Ú	f_globalsr   r:   rC   Úf_linenor7   r   r   r   r4   È   s    ÿ

zBdb.stop_herec                 C   sŒ   |   |jj¡}|| jvrdS |j}|| j| vrJ|jj}|| j| vrJdS t|||ƒ\}}|r„|j| _|r€|j	r€|  
t|jƒ¡ dS dS d S rH   )r   r;   Úco_filenamer   rN   Úco_firstlinenoÚ	effectiveÚnumberZ	currentbpÚ	temporaryÚdo_clearÚstr)r   r1   r   ÚlinenoÚbpÚflagr   r   r   r5   ×   s    

zBdb.break_herec                 C   s   t dƒ‚d S )Nz)subclass of bdb must implement do_clear())ÚNotImplementedError)r   r3   r   r   r   rT   ò   s    zBdb.do_clearc                 C   s   |   |jj¡| jv S r   )r   r;   rO   r   r7   r   r   r   r9   ù   s    zBdb.break_anywherec                 C   s   d S r   r   )r   r1   Zargument_listr   r   r   r>     s    zBdb.user_callc                 C   s   d S r   r   r7   r   r   r   r6     s    zBdb.user_linec                 C   s   d S r   r   )r   r1   Zreturn_valuer   r   r   rB   	  s    zBdb.user_returnc                 C   s   d S r   r   )r   r1   Úexc_infor   r   r   rF     s    zBdb.user_exceptionr   c                 C   s   || _ || _d| _|| _d S ©NF)r:   rA   r)   rC   )r   r:   rA   rC   r   r   r   r#     s    zBdb._set_stopinfoc                 C   s$   |d u r|j d }|  |||¡ d S )Nr   )rN   r#   )r   r1   rV   r   r   r   Ú	set_until"  s    
zBdb.set_untilc                 C   s0   | j r | j j}|r |js | j|_|  d d ¡ d S r   )r   r8   Úf_tracer.   r#   )r   Zcaller_framer   r   r   Úset_step*  s
    
zBdb.set_stepc                 C   s   |   |d ¡ d S r   )r#   r7   r   r   r   Úset_next6  s    zBdb.set_nextc                 C   s.   |j jt@ r|  |d d¡ n|  |j|¡ d S r@   )r;   r<   r=   r#   r8   r7   r   r   r   Ú
set_return:  s    zBdb.set_returnc                 C   sL   |d u rt  ¡ j}|  ¡  |r4| j|_|| _|j}q|  ¡  t  | j¡ d S r   )	ÚsysÚ	_getframer8   r$   r.   r]   r"   r^   Úsettracer7   r   r   r   Ú	set_traceA  s    
zBdb.set_tracec                 C   sH   |   | jd d¡ | jsDt d ¡ t ¡ j}|rD|| jurD|`|j}q*d S r@   )r#   r"   r   ra   rc   rb   r8   r]   r7   r   r   r   Úset_continueP  s    

zBdb.set_continuec                 C   s"   | j | _d | _d| _t d ¡ d S ©NT)r"   r:   rA   r)   ra   rc   ©r   r   r   r   Úset_quit_  s    zBdb.set_quitFc           
      C   sb   |   |¡}dd l}| ||¡}|s.d||f S | j |g ¡}||vrN| |¡ t|||||ƒ}	d S )Nr   zLine %s:%d does not exist)r   r    Úgetliner   Ú
setdefaultÚappendr   )
r   r   rV   rS   ÚcondÚfuncnamer    r%   ÚlistrW   r   r   r   Ú	set_breakp  s    

zBdb.set_breakc                 C   s4   ||ft jvr| j|  |¡ | j| s0| j|= d S r   )r   Úbplistr   Úremove©r   r   rV   r   r   r   Ú_prune_breaks‚  s    
zBdb._prune_breaksc                 C   sj   |   |¡}|| jvrd| S || j| vr6d||f S tj||f d d … D ]}| ¡  qL|  ||¡ d S )NúThere are no breakpoints in %szThere is no breakpoint at %s:%d)r   r   r   rp   ÚdeleteMers   )r   r   rV   rW   r   r   r   Úclear_break  s    


zBdb.clear_breakc              
   C   sX   z|   |¡}W n, ty: } zt|ƒW  Y d }~S d }~0 0 | ¡  |  |j|j¡ d S r   )Úget_bpbynumberÚ
ValueErrorrU   ru   rs   Úfiler%   )r   r3   rW   Úerrr   r   r   Úclear_bpbynumber   s    zBdb.clear_bpbynumberc                 C   sX   |   |¡}|| jvrd| S | j| D ]$}tj||f }|D ]}| ¡  q<q&| j|= d S )Nrt   )r   r   r   rp   ru   )r   r   r%   ZblistrW   r   r   r   Úclear_all_file_breaks­  s    

zBdb.clear_all_file_breaksc                 C   s,   | j s
dS tjD ]}|r| ¡  qi | _ d S )NzThere are no breakpoints)r   r   Ú
bpbynumberru   )r   rW   r   r   r   Úclear_all_breaks¼  s    

zBdb.clear_all_breaksc                 C   s‚   |st dƒ‚zt|ƒ}W n  t y8   t d| ƒd ‚Y n0 ztj| }W n  tyh   t d| ƒd ‚Y n0 |d u r~t d| ƒ‚|S )NzBreakpoint number expectedz Non-numeric breakpoint number %sz!Breakpoint number %d out of rangezBreakpoint %d already deleted)rx   Úintr   r}   Ú
IndexError)r   r3   rR   rW   r   r   r   rw   É  s    zBdb.get_bpbynumberc                 C   s"   |   |¡}|| jv o || j| v S r   ©r   r   rr   r   r   r   Ú	get_breakÝ  s    

ÿzBdb.get_breakc                 C   s4   |   |¡}|| jv r0|| j| v r0tj||f p2g S r   )r   r   r   rp   rr   r   r   r   Ú
get_breaksã  s    

ÿþþzBdb.get_breaksc                 C   s&   |   |¡}|| jv r| j| S g S d S r   r   )r   r   r   r   r   Úget_file_breaksí  s    


zBdb.get_file_breaksc                 C   s   | j S r   )r   rg   r   r   r   Úget_all_breaksø  s    zBdb.get_all_breaksc                 C   s¢   g }|r|j |u r|j}|d urD| ||jf¡ || ju r<qD|j}q| ¡  tdt|ƒd ƒ}|d ur€| |j |j	f¡ |j}q^|d u rštdt|ƒd ƒ}||fS )Nr   r   )
Útb_frameÚtb_nextrk   rN   r"   r8   ÚreverseÚmaxÚlenÚ	tb_lineno)r   ÚfÚtÚstackÚir   r   r   Ú	get_stackÿ  s     
zBdb.get_stackú: c                 C   sª   dd l }dd l}|\}}|  |jj¡}d||f }|jjrH||jj7 }n|d7 }|d7 }d|jv r‚|jd }	|d7 }|| |	¡7 }| |||j	¡}
|
r¦|||
 
¡  7 }|S )Nr   z%s(%r)z<lambda>z()Z
__return__z->)r    Úreprlibr   r;   rO   Úco_nameÚf_localsr0   ri   rM   Ústrip)r   Zframe_linenoZlprefixr    r’   r1   rV   r   ÚsÚrvr%   r   r   r   Úformat_stack_entry  s     	

zBdb.format_stack_entryc              	   C   sœ   |d u rdd l }|j}|d u r"|}|  ¡  t|tƒr@t|ddƒ}t | j¡ z8zt	|||ƒ W n t
yp   Y n0 W d| _t d ¡ nd| _t d ¡ 0 d S )Nr   z<string>ÚexecT)Ú__main__Ú__dict__r$   Ú
isinstancerU   Úcompilera   rc   r.   r™   r   r)   )r   ÚcmdÚglobalsÚlocalsrš   r   r   r   Úrun5  s"    
ÿzBdb.runc              	   C   s–   |d u rdd l }|j}|d u r"|}|  ¡  t | j¡ zHz t|||ƒW W d| _t d ¡ S  tyj   Y n0 W d| _t d ¡ nd| _t d ¡ 0 d S )Nr   T)	rš   r›   r$   ra   rc   r.   Úevalr)   r   )r   ÚexprrŸ   r    rš   r   r   r   ÚrunevalK  s$    
ûÿzBdb.runevalc                 C   s   |   |||¡ d S r   )r¡   )r   rž   rŸ   r    r   r   r   Úrunctx_  s    z
Bdb.runctxc             	   O   sj   |   ¡  t | j¡ d }z:z||i |¤Ž}W n ty>   Y n0 W d| _t d ¡ nd| _t d ¡ 0 |S rf   )r$   ra   rc   r.   r   r)   )r   ÚfuncÚargsÚkwdsÚresr   r   r   Úruncallf  s    ÿzBdb.runcall)N)r   )N)N)FNN)r‘   )NN)NN)-r   r	   r
   r   r   r$   r.   r*   r+   r,   r-   rL   r4   r5   rT   r9   r>   r6   rB   rF   r#   r\   r^   r_   r`   rd   re   rh   ro   rs   rv   r{   r|   r~   rw   r‚   rƒ   r„   r…   r   r˜   r¡   r¤   r¥   rª   r   r   r   r   r      sX   
+	


  ÿ




r   c                   C   s   t ƒ  ¡  d S r   )r   rd   r   r   r   r   rd   x  s    rd   c                   @   sV   e Zd ZdZi ZdgZddd„Zdd„ Zdd	„ Zd
d„ Z	ddd„Z
dd„ Zdd„ ZdS )r   r   NFc                 C   s   || _ d | _|| _|| _|| _|| _d| _d| _d| _t	j
| _t	 j
d7  _
| j | ¡ ||f| jv r|| j||f  | ¡ n| g| j||f< d S )NTr   r   )rm   Úfunc_first_executable_linery   r%   rS   rl   ÚenabledÚignoreÚhitsr   ÚnextrR   r}   rk   rp   )r   ry   r%   rS   rl   rm   r   r   r   r   ˜  s    zBreakpoint.__init__c                 C   s>   | j | jf}d | j| j< | j|  | ¡ | j| s:| j|= d S r   )ry   r%   r}   rR   rp   rq   )r   Úindexr   r   r   ru   ¬  s
    
zBreakpoint.deleteMec                 C   s
   d| _ d S rf   ©r¬   rg   r   r   r   Úenableº  s    zBreakpoint.enablec                 C   s
   d| _ d S r[   r±   rg   r   r   r   Údisable¾  s    zBreakpoint.disablec                 C   s"   |d u rt j}t|  ¡ |d d S )N)ry   )ra   Ústdoutr/   Úbpformat)r   Úoutr   r   r   ÚbpprintÂ  s    zBreakpoint.bpprintc                 C   sš   | j rd}nd}| jr |d }n|d }d| j|| j| jf }| jrT|d| jf 7 }| jrj|d| jf 7 }| jr–| jdkr€d	}nd
}|d| j|f 7 }|S )Nzdel  zkeep zyes  zno   z%-4dbreakpoint   %s at %s:%dz
	stop only if %sz
	ignore next %d hitsr   r–   Ú z"
	breakpoint already hit %d time%s)rS   r¬   rR   ry   r%   rl   r­   r®   )r   ZdispÚretÚssr   r   r   rµ   Ì  s&    
ÿ
zBreakpoint.bpformatc                 C   s   d| j | j| jf S )Nzbreakpoint %s at %s:%s)rR   ry   r%   rg   r   r   r   Ú__str__ê  s    zBreakpoint.__str__)FNN)N)r   r	   r
   r¯   rp   r}   r   ru   r²   r³   r·   rµ   r»   r   r   r   r   r   }  s   


r   c                 C   sN   | j s| j|jkrdS dS |jj| j kr,dS | js:|j| _| j|jkrJdS dS rH   )rm   r%   rN   r;   r“   r«   )Úbr1   r   r   r   Úcheckfuncnameñ  s    r½   c                 C   sÊ   t j| |f }|D ]²}|jsqt||ƒs*q| jd7  _|jsh|jdkrZ| jd8  _qqÄ|df  S qzBt|j|j|j	ƒ}|r¨|jdkrš| jd8  _n|dfW   S W q   |df Y   S 0 qdS )Nr   r   TF)NN)
r   rp   r¬   r½   r®   rl   r­   r¢   rM   r”   )ry   r%   r1   Z	possiblesr¼   Úvalr   r   r   rQ     s*    


rQ   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTdbc                 C   s    |j j}|sd}td||ƒ d S )Nú???z+++ call)r;   r“   r/   )r   r1   r§   Únamer   r   r   r>   D  s    zTdb.user_callc                 C   sT   dd l }|jj}|sd}|  |jj¡}| ||j|j¡}td||j|d| 	¡ ƒ d S )Nr   rÀ   z+++ú:)
r    r;   r“   r   rO   ri   rN   rM   r/   r•   )r   r1   r    rÁ   Úfnr%   r   r   r   r6   H  s    zTdb.user_linec                 C   s   t d|ƒ d S )Nz
+++ return©r/   )r   r1   Zretvalr   r   r   rB   O  s    zTdb.user_returnc                 C   s   t d|ƒ |  ¡  d S )Nz+++ exception)r/   re   )r   r1   Z	exc_stuffr   r   r   rF   Q  s    
zTdb.user_exceptionN)r   r	   r
   r>   r6   rB   rF   r   r   r   r   r¿   C  s   r¿   c                 C   s&   t d| dƒ t| d ƒ}t d|ƒ d S )Nzfoo(ú)é
   zbar returned)r/   Úbar)ÚnÚxr   r   r   ÚfooU  s    rÊ   c                 C   s   t d| dƒ | d S )Nzbar(rÅ   rD   rÄ   )Úar   r   r   rÇ   Z  s    rÇ   c                  C   s   t ƒ } |  d¡ d S )Nzimport bdb; bdb.foo(10))r¿   r¡   )r   r   r   r   Útest^  s    rÌ   )rI   ra   r   Úinspectr   r   r   Ú__all__r=   Ú	Exceptionr   r   rd   r   r½   rQ   r¿   rÊ   rÇ   rÌ   r   r   r   r   Ú<module>   s&       kt"0