???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
Yf:[                 @   s   d  Z  d d l Z d d l Z d d l Z d d l m Z d d d g Z Gd d   d e  Z Gd d   d  Z	 d	 d
   Z
 Gd d   d  Z d d   Z d d   Z Gd d   d e	  Z d d   Z d d   Z d d   Z d S)zDebugger basics    N)CO_GENERATORBdbQuitBdb
Breakpointc               @   s   e  Z d  Z d Z d S)r   z Exception to give up completely.N)__name__
__module____qualname____doc__ r
   r
   (/opt/alt/python35/lib64/python3.5/bdb.pyr   
   s   c               @   s2  e  Z d  Z d Z d 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 d# d$   Z d% d& d'  Z d d( d)  Z d* d+   Z d, d-   Z d. d/   Z d d0 d1  Z d2 d3   Z d4 d5   Z d6 d d d7 d8  Z d9 d:   Z d; d<   Z d= d>   Z  d? d@   Z! dA dB   Z" dC dD   Z# dE dF   Z$ dG dH   Z% dI dJ   Z& dK dL   Z' dM dN   Z( dO dP dQ  Z) d d dR dS  Z* d d dT dU  Z+ dV dW   Z, dX dY   Z- d S)Zr   zGeneric Python debugger base class.

    This class takes care of details of the trace facility;
    a derived class should implement user interaction.
    The standard debugger class (pdb.Pdb) is an example.
    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   so   | d | d d  d k r" | S|  j  j |  } | sk t j j |  } t j j |  } | |  j  | <| S)N<   >)r   getospathabspathnormcase)r   filenamecanonicr
   r
   r   r      s    zBdb.canonicc             C   s3   d d  l  } | j   d  |  _ |  j d  d   d  S)Nr   )	linecache
checkcachebotframe_set_stopinfo)r   r   r
   r
   r   reset&   s    
	z	Bdb.resetc             C   s   |  j  r d  S| d k r& |  j |  S| d k rB |  j | |  S| d k r^ |  j | |  S| d k rz |  j | |  S| d k r |  j S| d k r |  j S| d k r |  j St d t |   |  j S)	NlineZcallreturnZ	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   frameZeventargr
   r
   r   r*   ,   s$    	zBdb.trace_dispatchc             C   sA   |  j  |  s |  j |  r: |  j |  |  j r: t  |  j S)N)	stop_here
break_here	user_liner%   r   r*   )r   r-   r
   r
   r   r&   @   s
    	 zBdb.dispatch_linec             C   s   |  j  d  k r" | j |  _  |  j S|  j |  p= |  j |  sD d  S|  j rd | j j t @rd |  j S|  j	 | |  |  j
 r t  |  j S)N)r    f_backr*   r/   break_anywhere	stopframef_codeco_flagsr   	user_callr%   r   )r   r-   r.   r
   r
   r   r'   F   s    	 zBdb.dispatch_callc             C   s   |  j  |  s | |  j k r |  j r> | j j t @r> |  j Sz | |  _ |  j | |  Wd  d  |  _ X|  j	 rw t
  |  j | k r |  j d k r |  j d  d   |  j S)Nr   r   )r/   returnframer4   r5   r6   r   r*   r   user_returnr%   r   
stoplinenor!   )r   r-   r.   r
   r
   r   r(   V   s    	
	 zBdb.dispatch_returnc             C   s   |  j  |  ra | j j t @o< | d t k o< | d d  k s |  j | |  |  j r t  n` |  j r | |  j k	 r |  j j j t @r | d t t	 f k r |  j | |  |  j r t  |  j
 S)Nr      )r/   r5   r6   r   StopIterationuser_exceptionr%   r   r4   GeneratorExitr*   )r   r-   r.   r
   r
   r   r)   f   s     	 		 zBdb.dispatch_exceptionc             C   s.   x' |  j  D] } t j | |  r
 d Sq
 Wd S)NTF)r   fnmatch)r   Zmodule_namepatternr
   r
   r   is_skipped_module   s    zBdb.is_skipped_modulec             C   sk   |  j  r( |  j | j j d   r( d S| |  j k rZ |  j d k rJ d S| j |  j k S|  j sg d Sd S)Nr   Fr   Tr   )r   rA   	f_globalsr   r4   r:   f_lineno)r   r-   r
   r
   r   r/      s    		zBdb.stop_herec             C   s   |  j  | j j  } | |  j k r( d S| j } | |  j | k rg | j j } | |  j | k rg d St | | |  \ } } | r | j |  _ | r | j	 r |  j
 t | j   d Sd Sd  S)NFT)r   r5   co_filenamer   rC   co_firstlineno	effectivenumberZ	currentbp	temporarydo_clearstr)r   r-   r   linenobpZflagr
   r
   r   r0      s    	zBdb.break_herec             C   s   t  d   d  S)Nz)subclass of bdb must implement do_clear())NotImplementedError)r   r.   r
   r
   r   rI      s    zBdb.do_clearc             C   s   |  j  | j j  |  j k S)N)r   r5   rD   r   )r   r-   r
   r
   r   r3      s    zBdb.break_anywherec             C   s   d S)znThis method is called when there is the remote possibility
        that we ever need to stop in this function.Nr
   )r   r-   Zargument_listr
   r
   r   r7      s    zBdb.user_callc             C   s   d S)z9This method is called when we stop or break at this line.Nr
   )r   r-   r
   r
   r   r1      s    zBdb.user_linec             C   s   d S)z5This method is called when a return trap is set here.Nr
   )r   r-   Zreturn_valuer
   r
   r   r9      s    zBdb.user_returnc             C   s   d S)zmThis method is called if an exception occurs,
        but only if we are to stop at or just below this level.Nr
   )r   r-   exc_infor
   r
   r   r=      s    zBdb.user_exceptionr   c             C   s(   | |  _  | |  _ d |  _ | |  _ d  S)NF)r4   r8   r%   r:   )r   r4   r8   r:   r
   r
   r   r!      s    			zBdb._set_stopinfoc             C   s0   | d k r | j  d } |  j | | |  d S)zxStop when the line with the line no greater than the current one is
        reached or when returning from current frameNr   )rC   r!   )r   r-   rK   r
   r
   r   	set_until   s    zBdb.set_untilc             C   sE   |  j  r1 |  j  j } | r1 | j r1 |  j | _ |  j d d  d S)zStop after one line of code.N)r   r2   f_tracer*   r!   )r   Zcaller_framer
   r
   r   set_step   s
    	zBdb.set_stepc             C   s   |  j  | d  d S)z2Stop on the next line in or below the given frame.N)r!   )r   r-   r
   r
   r   set_next   s    zBdb.set_nextc             C   s=   | j  j t @r& |  j | d d  n |  j | j |  d S)z)Stop when returning from the given frame.Nr   r   )r5   r6   r   r!   r2   )r   r-   r
   r
   r   
set_return   s    zBdb.set_returnc             C   sn   | d k r t  j   j } |  j   x( | rO |  j | _ | |  _ | j } q( W|  j   t  j |  j  d S)zpStart debugging from `frame`.

        If frame is not specified, debugging starts from caller's frame.
        N)	sys	_getframer2   r"   r*   rP   r    rQ   settrace)r   r-   r
   r
   r   	set_trace   s    
		
zBdb.set_tracec             C   sj   |  j  |  j d  d  |  j sf t j d   t j   j } x( | re | |  j k	 re | ` | j } q> Wd  S)Nr   r   )r!   r    r   rT   rV   rU   r2   rP   )r   r-   r
   r
   r   set_continue   s    	zBdb.set_continuec             C   s/   |  j  |  _ d  |  _ d |  _ t j d   d  S)NT)r    r4   r8   r%   rT   rV   )r   r
   r
   r   set_quit  s    		zBdb.set_quitFc       
      C   s   |  j  |  } d d  l } | j | |  } | sA d | | f S|  j j | g   } | | k ro | j |  t | | | | |  }	 d  S)Nr   zLine %s:%d does not exist)r   r   getliner   
setdefaultappendr   )
r   r   rK   rH   condfuncnamer   r#   listrL   r
   r
   r   	set_break  s    zBdb.set_breakc             C   sD   | | f t  j k r) |  j | j |  |  j | s@ |  j | =d  S)N)r   bplistr   remove)r   r   rK   r
   r
   r   _prune_breaks!  s    zBdb._prune_breaksc             C   s   |  j  |  } | |  j k r& d | S| |  j | k rG d | | f Sx/ t j | | f d  d   D] } | j   qe W|  j | |  d  S)NzThere are no breakpoints in %szThere is no breakpoint at %s:%d)r   r   r   ra   deleteMerc   )r   r   rK   rL   r
   r
   r   clear_break'  s    $zBdb.clear_breakc             C   si   y |  j  |  } Wn/ t k
 rD } z t |  SWYd  d  } ~ Xn X| j   |  j | j | j  d  S)N)get_bpbynumber
ValueErrorrJ   rd   rc   filer#   )r   r.   rL   errr
   r
   r   clear_bpbynumber3  s    
zBdb.clear_bpbynumberc             C   sz   |  j  |  } | |  j k r& d | SxC |  j | D]4 } t j | | f } x | D] } | j   qT Wq4 W|  j | =d  S)NzThere are no breakpoints in %s)r   r   r   ra   rd   )r   r   r#   ZblistrL   r
   r
   r   clear_all_file_breaks;  s    zBdb.clear_all_file_breaksc             C   s>   |  j  s d Sx! t j D] } | r | j   q Wi  |  _  d  S)NzThere are no breakpoints)r   r   
bpbynumberrd   )r   rL   r
   r
   r   clear_all_breaksE  s    	zBdb.clear_all_breaksc             C   s   | s t  d   y t |  } Wn" t  k
 rF t  d |   Yn Xy t j | } Wn" t k
 r| t  d |   Yn X| d  k r t  d |   | S)NzBreakpoint number expectedz Non-numeric breakpoint number %sz!Breakpoint number %d out of rangezBreakpoint %d already deleted)rg   intr   rl   
IndexError)r   r.   rG   rL   r
   r
   r   rf   M  s    zBdb.get_bpbynumberc             C   s/   |  j  |  } | |  j k o. | |  j | k S)N)r   r   )r   r   rK   r
   r
   r   	get_break\  s    zBdb.get_breakc             C   sH   |  j  |  } | |  j k rD | |  j | k rD t j | | f pG g  S)N)r   r   r   ra   )r   r   rK   r
   r
   r   
get_breaksa  s    zBdb.get_breaksc             C   s1   |  j  |  } | |  j k r) |  j | Sg  Sd  S)N)r   r   )r   r   r
   r
   r   get_file_breaksg  s    zBdb.get_file_breaksc             C   s   |  j  S)N)r   )r   r
   r
   r   get_all_breaksn  s    zBdb.get_all_breaksc             C   s   g  } | r$ | j  | k r$ | j } x? | d  k	 re | j | | j f  | |  j k rY P| j } q' W| j   t d t |  d  } x2 | d  k	 r | j | j  | j	 f  | j } q W| d  k r t d t |  d  } | | f S)Nr   r   )
tb_frametb_nextr\   rC   r    r2   reversemaxlen	tb_lineno)r   ftstackir
   r
   r   	get_stackt  s     	
zBdb.get_stackz: c             C   s,  d d  l  } d d  l } | \ } } |  j | j j  } d | | f } | j j rh | | j j 7} n
 | d 7} d | j k r | j d }	 n d  }	 |	 r | | j |	  7} n
 | d 7} d | j k r | j d }
 | d 7} | | j |
  7} | j | | | j	  } | r(| | | j
   7} | S)Nr   z%s(%r)z<lambda>Z__args__z()Z
__return__z->)r   reprlibr   r5   rD   co_namef_localsr,   rZ   rB   strip)r   Zframe_linenoZlprefixr   r   r-   rK   r   sargsrvr#   r
   r
   r   format_stack_entry  s*    


zBdb.format_stack_entryc             C   s   | d  k r! d d  l  } | j } | d  k r3 | } |  j   t | t  r^ t | d d  } t j |  j  z- y t	 | | |  Wn t
 k
 r Yn XWd  d |  _ t j d   Xd  S)Nr   z<string>execT)__main____dict__r"   
isinstancerJ   compilerT   rV   r*   r   r   r%   )r   cmdglobalslocalsr   r
   r
   r   run  s    	
		zBdb.runc             C   s   | d  k r! d d  l  } | j } | d  k r3 | } |  j   t j |  j  z- y t | | |  SWn t k
 rx Yn XWd  d |  _ t j d   Xd  S)Nr   T)	r   r   r"   rT   rV   r*   evalr   r%   )r   exprr   r   r   r
   r
   r   runeval  s    	
		zBdb.runevalc             C   s   |  j  | | |  d  S)N)r   )r   r   r   r   r
   r
   r   runctx  s    z
Bdb.runctxc             O   sj   |  j    t j |  j  d  } z, y | | |   } Wn t k
 rJ Yn XWd  d |  _ t j d   X| S)NT)r"   rT   rV   r*   r   r%   )r   funcr   kwdsresr
   r
   r   runcall  s    
		zBdb.runcall).r   r   r   r	   r   r   r"   r*   r&   r'   r(   r)   rA   r/   r0   rI   r3   r7   r1   r9   r=   r!   rO   rQ   rR   rS   rW   rX   rY   r`   rc   re   rj   rk   rm   rf   rp   rq   rr   rs   r~   r   r   r   r   r   r
   r
   r
   r   r      sX   

c               C   s   t    j   d  S)N)r   rW   r
   r
   r
   r   rW     s    rW   c               @   s   e  Z d  Z d Z d Z i  Z d g Z d d 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   a  Breakpoint class.

    Implements temporary breakpoints, ignore counts, disabling and
    (re)-enabling, and conditionals.

    Breakpoints are indexed by number through bpbynumber and by
    the file,line tuple using bplist.  The former points to a
    single instance of class Breakpoint.  The latter points to a
    list of such instances since there may be more than one
    breakpoint per line.

    r   NFc             C   s   | |  _  d  |  _ | |  _ | |  _ | |  _ | |  _ d |  _ d |  _ d |  _ t	 j
 |  _ t	 j
 d 7_
 |  j j |   | | f |  j k r |  j | | f j |   n |  g |  j | | f <d  S)NTr   r   )r^   func_first_executable_linerh   r#   rH   r]   enabledignorehitsr   nextrG   rl   r\   ra   )r   rh   r#   rH   r]   r^   r
   r
   r   r     s    									zBreakpoint.__init__c             C   sQ   |  j  |  j f } d  |  j |  j <|  j | j |   |  j | sM |  j | =d  S)N)rh   r#   rl   rG   ra   rb   )r   indexr
   r
   r   rd   	  s
    zBreakpoint.deleteMec             C   s   d |  _  d  S)NT)r   )r   r
   r
   r   enable  s    zBreakpoint.enablec             C   s   d |  _  d  S)NF)r   )r   r
   r
   r   disable  s    zBreakpoint.disablec             C   s/   | d  k r t  j } t |  j   d | d  S)Nrh   )rT   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 r | 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)rH   r   rG   rh   r#   r]   r   r   )r   ZdispZretZssr
   r
   r   r     s$    			
				zBreakpoint.bpformatc             C   s   d |  j  |  j |  j f S)Nzbreakpoint %s at %s:%s)rG   rh   r#   )r   r
   r
   r   __str__3  s    zBreakpoint.__str__)r   r   r   r	   r   ra   rl   r   rd   r   r   r   r   r   r
   r
   r
   r   r     s   	c             C   sk   |  j  s# |  j | j k r d Sd S| j j |  j  k r< d S|  j sQ | j |  _ |  j | j k rg d Sd S)z;Check whether we should break here because of `b.funcname`.FT)r^   r#   rC   r5   r   r   )br-   r
   r
   r   checkfuncname8  s    		r   c             C   s   t  j |  | f } x | D] } | j s, q t | |  s> q | j d 7_ | j s | j d k rz | j d 8_ q q | d f Sq yP t | j | j | j	  } | r | j d k r | j d 8_ n
 | d f SWq | d f SYq Xq Wd S)zDetermine which breakpoint for this file:line is to be acted upon.

    Called only if we know there is a bpt at this
    location.  Returns breakpoint that was triggered and a flag
    that indicates if it is ok to delete a temporary bp.

    r   r   TFN)NN)
r   ra   r   r   r   r]   r   r   rB   r   )rh   r#   r-   Z	possiblesr   valr
   r
   r   rF   T  s*    		rF   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)Nz???z+++ call)r5   r   r+   )r   r-   r   namer
   r
   r   r7     s     zTdb.user_callc             C   sz   d d  l  } | j j } | s$ d } |  j | j j  } | j | | j | j  } t d | | j | d | j	    d  S)Nr   z???z+++:)
r   r5   r   r   rD   rZ   rC   rB   r+   r   )r   r-   r   r   fnr#   r
   r
   r   r1     s     zTdb.user_linec             C   s   t  d |  d  S)Nz
+++ return)r+   )r   r-   Zretvalr
   r
   r   r9     s    zTdb.user_returnc             C   s   t  d |  |  j   d  S)Nz+++ exception)r+   rX   )r   r-   Z	exc_stuffr
   r
   r   r=     s    zTdb.user_exceptionN)r   r   r   r7   r1   r9   r=   r
   r
   r
   r   r     s   r   c             C   s1   t  d |  d  t |  d  } t  d |  d  S)Nzfoo()
   zbar returned)r+   bar)nxr
   r
   r   foo  s    r   c             C   s   t  d |  d  |  d S)Nzbar(r   r;   )r+   )ar
   r
   r   r     s    r   c              C   s   t    }  |  j d  d  S)Nzimport bdb; bdb.foo(10))r   r   )r{   r
   r
   r   test  s    	r   )r	   r?   rT   r   inspectr   __all__	Exceptionr   r   rW   r   r   rF   r   r   r   r   r
   r
   r
   r   <module>   s     Z0