;
"Ic               @   s   d  Z  d d l Z d d l Z d d l Z d d d g Z Gd   d e  Z Gd   d  Z d   Z Gd	   d  Z	 d
   Z
 d   Z Gd   d e  Z d   Z d   Z d   Z d S(   u   Debugger basicsi    Nu   BdbQuitu   Bdbu
   Breakpointc             B   s   |  Ee  Z d  Z d S(   u   Exception to give up completelyN(   u   __name__u
   __module__u   __doc__(   u
   __locals__(    (    u    /mit/python/lib/python3.0/bdb.pyu   BdbQuit	   s   
c             B   s  |  Ee  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   Z d d  Z d   Z d   Z d   Z d   Z d+ d  Z d   Z d   Z d d+ d+ 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+ d'  Z' d+ d+ d(  Z( d)   Z) d*   Z* d+ S(,   u   Generic 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.
    c             C   s   i  |  _  i  |  _ d  S(   N(   u   breaksu   fncache(   u   self(    (    u    /mit/python/lib/python3.0/bdb.pyu   __init__   s    	c             C   sv   | d | d d  d k o | S|  j  j |  } | p5 t j j |  } t j j |  } | |  j  | <n | S(   Nu   <i   iu   >(   u   fncacheu   getu   osu   pathu   abspathu   normcase(   u   selfu   filenameu   canonic(    (    u    /mit/python/lib/python3.0/bdb.pyu   canonic   s    c             C   s3   d d  l  } | j   d  |  _ |  j d  d   d  S(   Ni    (   u	   linecacheu
   checkcacheu   Noneu   botframeu   _set_stopinfo(   u   selfu	   linecache(    (    u    /mit/python/lib/python3.0/bdb.pyu   reset$   s    
	c             C   s   |  j  o d  S| d k o |  j |  S| d k o |  j | |  S| d k o |  j | |  S| d k o |  j | |  S| d k o |  j S| d k o |  j S| d k o |  j St d t |   |  j S(	   Nu   lineu   callu   returnu	   exceptionu   c_callu   c_exceptionu   c_returnu*   bdb.Bdb.dispatch: unknown debugging event:(   u   quittingu   dispatch_lineu   dispatch_callu   dispatch_returnu   dispatch_exceptionu   trace_dispatchu   printu   repr(   u   selfu   frameu   eventu   arg(    (    u    /mit/python/lib/python3.0/bdb.pyu   trace_dispatch*   s$    
c             C   sL   |  j  |  p |  j |  o% |  j |  |  j o
 t  qE n |  j S(   N(   u	   stop_hereu
   break_hereu	   user_lineu   quittingu   BdbQuitu   trace_dispatch(   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu   dispatch_line>   s
     
 c             C   st   |  j  d  k o | j |  _  |  j S|  j |  p |  j |  p d  S|  j | |  |  j o
 t  n |  j S(   N(	   u   botframeu   Noneu   f_backu   trace_dispatchu	   stop_hereu   break_anywhereu	   user_callu   quittingu   BdbQuit(   u   selfu   frameu   arg(    (    u    /mit/python/lib/python3.0/bdb.pyu   dispatch_callD   s     
 
c             C   sO   |  j  |  p | |  j k o( |  j | |  |  j o
 t  qH n |  j S(   N(   u	   stop_hereu   returnframeu   user_returnu   quittingu   BdbQuitu   trace_dispatch(   u   selfu   frameu   arg(    (    u    /mit/python/lib/python3.0/bdb.pyu   dispatch_returnQ   s
     
 c             C   s?   |  j  |  o( |  j | |  |  j o
 t  q8 n |  j S(   N(   u	   stop_hereu   user_exceptionu   quittingu   BdbQuitu   trace_dispatch(   u   selfu   frameu   arg(    (    u    /mit/python/lib/python3.0/bdb.pyu   dispatch_exceptionW   s
    
 c             C   sh   | |  j  k o | j |  j k Sx@ | d  k	 o2 | |  j  k	 o" | |  j k o d S| j } q$ Wd S(   NTF(   u	   stopframeu   f_linenou
   stoplinenou   Noneu   botframeu   Trueu   f_backu   False(   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu	   stop_herea   s     c             C   s   |  j  | j j  } | |  j k o d S| j } | |  j | k o) | j j } | |  j | k o d Sn t | | |  \ } } | o< | j |  _	 | o$ | j
 o |  j t | j   n d Sd Sd  S(   NFT(   u   canonicu   f_codeu   co_filenameu   breaksu   Falseu   f_linenou   co_firstlinenou	   effectiveu   numberu	   currentbpu	   temporaryu   do_clearu   stru   True(   u   selfu   frameu   filenameu   linenou   bpu   flag(    (    u    /mit/python/lib/python3.0/bdb.pyu
   break_herel   s    		c             C   s   t  d   d  S(   Nu)   subclass of bdb must implement do_clear()(   u   NotImplementedError(   u   selfu   arg(    (    u    /mit/python/lib/python3.0/bdb.pyu   do_clear   s    c             C   s   |  j  | j j  |  j k S(   N(   u   canonicu   f_codeu   co_filenameu   breaks(   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu   break_anywhere   s    c             C   s   d S(   un   This method is called when there is the remote possibility
        that we ever need to stop in this function.N(    (   u   selfu   frameu   argument_list(    (    u    /mit/python/lib/python3.0/bdb.pyu	   user_call   s    c             C   s   d S(   u9   This method is called when we stop or break at this line.N(    (   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu	   user_line   s    c             C   s   d S(   u5   This method is called when a return trap is set here.N(    (   u   selfu   frameu   return_value(    (    u    /mit/python/lib/python3.0/bdb.pyu   user_return   s    c             C   s   d S(   um   This method is called if an exception occurs,
        but only if we are to stop at or just below this level.N(    (   u   selfu   frameu   exc_info(    (    u    /mit/python/lib/python3.0/bdb.pyu   user_exception   s    ic             C   s(   | |  _  | |  _ d |  _ | |  _ d  S(   Ni    (   u	   stopframeu   returnframeu   quittingu
   stoplineno(   u   selfu	   stopframeu   returnframeu
   stoplineno(    (    u    /mit/python/lib/python3.0/bdb.pyu   _set_stopinfo   s    			c             C   s   |  j  | | | j d  d S(   ux   Stop when the line with the line no greater than the current one is
        reached or when returning from current framei   N(   u   _set_stopinfou   f_lineno(   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu	   set_until   s    c             C   s   |  j  d d  d S(   u   Stop after one line of code.N(   u   _set_stopinfou   None(   u   self(    (    u    /mit/python/lib/python3.0/bdb.pyu   set_step   s    c             C   s   |  j  | d  d S(   u2   Stop on the next line in or below the given frame.N(   u   _set_stopinfou   None(   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu   set_next   s    c             C   s   |  j  | j |  d S(   u)   Stop when returning from the given frame.N(   u   _set_stopinfou   f_back(   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu
   set_return   s    c             C   su   | d k o t j   j } n |  j   x* | o" |  j | _ | |  _ | j } q- W|  j   t j	 |  j  d S(   up   Start debugging from `frame`.

        If frame is not specified, debugging starts from caller's frame.
        N(
   u   Noneu   sysu	   _getframeu   f_backu   resetu   trace_dispatchu   f_traceu   botframeu   set_stepu   settrace(   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu	   set_trace   s    
 	
c             C   so   |  j  |  j d   |  j pN t j d   t j   j } x/ | o# | |  j k	 o | ` | j } q< Wn d  S(   N(	   u   _set_stopinfou   botframeu   Noneu   breaksu   sysu   settraceu	   _getframeu   f_backu   f_trace(   u   selfu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu   set_continue   s    
 c             C   s/   |  j  |  _ d  |  _ d |  _ t j d   d  S(   Ni   (   u   botframeu	   stopframeu   Noneu   returnframeu   quittingu   sysu   settrace(   u   self(    (    u    /mit/python/lib/python3.0/bdb.pyu   set_quit   s    		i    c       
      C   s   |  j  |  } d d  l } | j | |  } | p d | | f S| |  j k o g  |  j | <n |  j | } | | k o | j |  n t | | | | |  }	 d  S(   Ni    u   Line %s:%d does not exist(   u   canonicu	   linecacheu   getlineu   breaksu   appendu
   Breakpoint(
   u   selfu   filenameu   linenou	   temporaryu   condu   funcnameu	   linecacheu   lineu   listu   bp(    (    u    /mit/python/lib/python3.0/bdb.pyu	   set_break   s    	c             C   s   |  j  |  } | |  j k o	 d | S| |  j | k o d | | f Sx/ t j | | f d  d   D] } | j   qi W| | f t j k o |  j | j |  n |  j | p |  j | =n d  S(   Nu   There are no breakpoints in %su   There is no breakpoint at %s:%d(   u   canonicu   breaksu
   Breakpointu   bplistu   deleteMeu   remove(   u   selfu   filenameu   linenou   bp(    (    u    /mit/python/lib/python3.0/bdb.pyu   clear_break   s    		 c             C   s}   y t  |  } Wn d | SYn Xy t j | } Wn t k
 o d | SYn X| p	 d | S|  j | j | j  d  S(   Nu"   Non-numeric breakpoint number (%s)u#   Breakpoint number (%d) out of rangeu   Breakpoint (%d) already deleted(   u   intu
   Breakpointu
   bpbynumberu
   IndexErroru   clear_breaku   fileu   line(   u   selfu   argu   numberu   bp(    (    u    /mit/python/lib/python3.0/bdb.pyu   clear_bpbynumber   s    	c             C   s|   |  j  |  } | |  j k o	 d | SxC |  j | D]4 } t j | | f } x | D] } | j   qV Wq6 W|  j | =d  S(   Nu   There are no breakpoints in %s(   u   canonicu   breaksu
   Breakpointu   bplistu   deleteMe(   u   selfu   filenameu   lineu   blistu   bp(    (    u    /mit/python/lib/python3.0/bdb.pyu   clear_all_file_breaks
  s    	  c             C   sE   |  j  p d Sx& t j D] } | o | j   q q Wi  |  _  d  S(   Nu   There are no breakpoints(   u   breaksu
   Breakpointu
   bpbynumberu   deleteMe(   u   selfu   bp(    (    u    /mit/python/lib/python3.0/bdb.pyu   clear_all_breaks  s    

 c             C   s0   |  j  |  } | |  j k o | |  j | k S(   N(   u   canonicu   breaks(   u   selfu   filenameu   lineno(    (    u    /mit/python/lib/python3.0/bdb.pyu	   get_break  s    c             C   sK   |  j  |  } | |  j k o( | |  j | k o t j | | f p g  S(   N(   u   canonicu   breaksu
   Breakpointu   bplist(   u   selfu   filenameu   lineno(    (    u    /mit/python/lib/python3.0/bdb.pyu
   get_breaks!  s    c             C   s3   |  j  |  } | |  j k o |  j | Sg  Sd  S(   N(   u   canonicu   breaks(   u   selfu   filename(    (    u    /mit/python/lib/python3.0/bdb.pyu   get_file_breaks'  s    c             C   s   |  j  S(   N(   u   breaks(   u   self(    (    u    /mit/python/lib/python3.0/bdb.pyu   get_all_breaks.  s    c             C   s  g  } | o | j  | k o | j } n xF | d  k	 o8 | j | | j f  | |  j k o Pn | j } q- W| j   t d t	 |  d  } x4 | d  k	 o& | j | j  | j
 f  | j } q W| d  k o t d t	 |  d  } n | | f S(   Ni    i   (   u   tb_frameu   tb_nextu   Noneu   appendu   f_linenou   botframeu   f_backu   reverseu   maxu   lenu	   tb_lineno(   u   selfu   fu   tu   stacku   i(    (    u    /mit/python/lib/python3.0/bdb.pyu	   get_stack4  s$     
 u   : c             C   s6  d d  l  } d d  l } | \ } } |  j | j j  } d | | f } | j j o | | j j } n | d } d | j k o | j d }	 n d  }	 |	 o | | j |	  } n | d } d | j k o. | j d }
 | d } | | j |
  } n | j	 | |  } | o | | | j
   } n | S(   Ni    u   %s(%r)u   <lambda>u   __args__u   ()u
   __return__u   ->(   u	   linecacheu   reprlibu   canonicu   f_codeu   co_filenameu   co_nameu   f_localsu   Noneu   repru   getlineu   strip(   u   selfu   frame_linenou   lprefixu	   linecacheu   reprlibu   frameu   linenou   filenameu   su   argsu   rvu   line(    (    u    /mit/python/lib/python3.0/bdb.pyu   format_stack_entryH  s*    


 c             C   s   | d  k o d d  l } | j } n | d  k o
 | } n |  j   t j |  j  t | t j	  p | d } n z/ y t
 | | |  Wn t k
 o Yn XWd  d |  _ t j d   Xd  S(   Ni    u   
i   (   u   Noneu   __main__u   __dict__u   resetu   sysu   settraceu   trace_dispatchu
   isinstanceu   typesu   CodeTypeu   execu   BdbQuitu   quitting(   u   selfu   cmdu   globalsu   localsu   __main__(    (    u    /mit/python/lib/python3.0/bdb.pyu   rund  s     

 
	c             C   s   | d  k o d d  l } | j } n | d  k o
 | } n |  j   t j |  j  t | t j	  p | d } n z/ y t
 | | |  SWn t k
 o Yn XWd  d |  _ t j d   Xd  S(   Ni    u   
i   (   u   Noneu   __main__u   __dict__u   resetu   sysu   settraceu   trace_dispatchu
   isinstanceu   typesu   CodeTypeu   evalu   BdbQuitu   quitting(   u   selfu   expru   globalsu   localsu   __main__(    (    u    /mit/python/lib/python3.0/bdb.pyu   runevalv  s     

 
	c             C   s   |  j  | | |  d  S(   N(   u   run(   u   selfu   cmdu   globalsu   locals(    (    u    /mit/python/lib/python3.0/bdb.pyu   runctx  s    c             O   sl   |  j    t j |  j  d  } z. y | | |   } Wn t k
 o Yn XWd  d |  _ t j d   X| S(   Ni   (   u   resetu   sysu   settraceu   trace_dispatchu   Noneu   BdbQuitu   quitting(   u   selfu   funcu   argsu   kwdsu   res(    (    u    /mit/python/lib/python3.0/bdb.pyu   runcall  s    
 
	N(+   u   __name__u
   __module__u   __doc__u   __init__u   canonicu   resetu   trace_dispatchu   dispatch_lineu   dispatch_callu   dispatch_returnu   dispatch_exceptionu	   stop_hereu
   break_hereu   do_clearu   break_anywhereu	   user_callu	   user_lineu   user_returnu   user_exceptionu   _set_stopinfou	   set_untilu   set_stepu   set_nextu
   set_returnu   Noneu	   set_traceu   set_continueu   set_quitu	   set_breaku   clear_breaku   clear_bpbynumberu   clear_all_file_breaksu   clear_all_breaksu	   get_breaku
   get_breaksu   get_file_breaksu   get_all_breaksu	   get_stacku   format_stack_entryu   runu   runevalu   runctxu   runcall(   u
   __locals__(    (    u    /mit/python/lib/python3.0/bdb.pyu   Bdb   sR   
		
						
																		
							c               C   s   t    j   d  S(   N(   u   Bdbu	   set_trace(    (    (    u    /mit/python/lib/python3.0/bdb.pyu	   set_trace  s    c             B   sb   |  Ee  Z d  Z d Z i  Z d g Z d d d d  Z d   Z d   Z	 d   Z
 d d  Z d S(	   u  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.

    i   i    c             C   s   | |  _  d  |  _ | |  _ | |  _ | |  _ | |  _ d |  _ d |  _ d |  _	 t
 j |  _ t
 j d t
 _ |  j j |   | | f |  j k o |  j | | f j |   n |  g |  j | | f <d  S(   Ni   i    (   u   funcnameu   Noneu   func_first_executable_lineu   fileu   lineu	   temporaryu   condu   enabledu   ignoreu   hitsu
   Breakpointu   nextu   numberu
   bpbynumberu   appendu   bplist(   u   selfu   fileu   lineu	   temporaryu   condu   funcname(    (    u    /mit/python/lib/python3.0/bdb.pyu   __init__  s    									c             C   sV   |  j  |  j f } d  |  j |  j <|  j | j |   |  j | p |  j | =n d  S(   N(   u   fileu   lineu   Noneu
   bpbynumberu   numberu   bplistu   remove(   u   selfu   index(    (    u    /mit/python/lib/python3.0/bdb.pyu   deleteMe  s
    c             C   s   d |  _  d  S(   Ni   (   u   enabled(   u   self(    (    u    /mit/python/lib/python3.0/bdb.pyu   enable  s    c             C   s   d |  _  d  S(   Ni    (   u   enabled(   u   self(    (    u    /mit/python/lib/python3.0/bdb.pyu   disable  s    c             C   s  | d  k o t j } n |  j o
 d } n d } |  j o | d } n | d } t d |  j | |  j |  j f d | |  j	 o t d |  j	 f d | n |  j
 o t d |  j
 d | n |  j oA |  j d	 k o
 d
 } n d } t d |  j | f d | n d  S(   Nu   del  u   keep u   yes  u   no   u   %-4dbreakpoint   %s at %s:%du   fileu   	stop only if %su   	ignore next %d hitsi   u   su    u!   	breakpoint already hit %d time%s(   u   Noneu   sysu   stdoutu	   temporaryu   enabledu   printu   numberu   fileu   lineu   condu   ignoreu   hits(   u   selfu   outu   dispu   ss(    (    u    /mit/python/lib/python3.0/bdb.pyu   bpprint  s(    






 
N(   u   __name__u
   __module__u   __doc__u   nextu   bplistu   Noneu
   bpbynumberu   __init__u   deleteMeu   enableu   disableu   bpprint(   u
   __locals__(    (    u    /mit/python/lib/python3.0/bdb.pyu
   Breakpoint  s   
				c             C   sx   |  j  p |  j | j k o d Sd S| j j |  j  k o d S|  j p | j |  _ n |  j | j k o d Sd S(   u;   Check whether we should break here because of `b.funcname`.FT(   u   funcnameu   lineu   f_linenou   Falseu   Trueu   f_codeu   co_nameu   func_first_executable_line(   u   bu   frame(    (    u    /mit/python/lib/python3.0/bdb.pyu   checkfuncname  s    

c             C   s+  t  j |  | f } xt d t |   D] } | | } | j d k o q) n t | |  p q) n | j d | _ | j p5 | j d k o | j d | _ q) q#| d f Sq) yX t	 | j | j
 | j  } | o2 | j d k o | j d | _ q| d f Sn Wq) | d f SYq) Xq) Wd S(   u   Determine 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.

    i    i   N(   NN(   u
   Breakpointu   bplistu   rangeu   lenu   enabledu   checkfuncnameu   hitsu   condu   ignoreu   evalu	   f_globalsu   f_localsu   None(   u   fileu   lineu   frameu	   possiblesu   iu   bu   val(    (    u    /mit/python/lib/python3.0/bdb.pyu	   effective  s0     

c             B   s2   |  Ee  Z d    Z d   Z d   Z d   Z d S(   c             C   s1   | j  j } | p
 d } n t d | |  d  S(   Nu   ???u   +++ call(   u   f_codeu   co_nameu   print(   u   selfu   frameu   argsu   name(    (    u    /mit/python/lib/python3.0/bdb.pyu	   user_callF  s     
c             C   sy   d d  l  } | j j } | p
 d } n |  j | j j  } | j | | j  } t d | | j | d | j    d  S(   Ni    u   ???u   +++u   :(	   u	   linecacheu   f_codeu   co_nameu   canonicu   co_filenameu   getlineu   f_linenou   printu   strip(   u   selfu   frameu	   linecacheu   nameu   fnu   line(    (    u    /mit/python/lib/python3.0/bdb.pyu	   user_lineJ  s     
c             C   s   t  d |  d  S(   Nu
   +++ return(   u   print(   u   selfu   frameu   retval(    (    u    /mit/python/lib/python3.0/bdb.pyu   user_returnQ  s    c             C   s   t  d |  |  j   d  S(   Nu   +++ exception(   u   printu   set_continue(   u   selfu   frameu	   exc_stuff(    (    u    /mit/python/lib/python3.0/bdb.pyu   user_exceptionS  s    N(   u   __name__u
   __module__u	   user_callu	   user_lineu   user_returnu   user_exception(   u
   __locals__(    (    u    /mit/python/lib/python3.0/bdb.pyu   TdbE  s   
			u   Tdbc             C   s1   t  d |  d  t |  d  } t  d |  d  S(   Nu   foo(u   )i
   u   bar returned(   u   printu   bar(   u   nu   x(    (    u    /mit/python/lib/python3.0/bdb.pyu   fooW  s    c             C   s   t  d |  d  |  d S(   Nu   bar(u   )i   (   u   print(   u   a(    (    u    /mit/python/lib/python3.0/bdb.pyu   bar\  s    c              C   s   t    }  |  j d  d  S(   Nu   import bdb; bdb.foo(10)(   u   Tdbu   run(   u   t(    (    u    /mit/python/lib/python3.0/bdb.pyu   test`  s    	(   u   __doc__u   sysu   osu   typesu   __all__u	   Exceptionu   BdbQuitu   Bdbu	   set_traceu
   Breakpointu   checkfuncnameu	   effectiveu   Tdbu   foou   baru   test(    (    (    u    /mit/python/lib/python3.0/bdb.pyu   <module>   s    	T		5		