‡Æ
ÅMö9c       s”   d  Z  d k Z d k Z d k Z d Z d f  d „  ƒ  YZ d „  Z d f  d „  ƒ  YZ d „  Z d	 e f d
 „  ƒ  YZ	 d „  Z
 d „  Z d „  Z d S(   s   Debugger basicsNs   bdb.BdbQuits   Bdbc      sa  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 „  Z d „  Z d „  Z d „  Z d „  Z d e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d  „  Z  d" d! „ Z! e e d# „ Z" e e d$ „ Z# d% „  Z$ d& „  Z% RS('   sÕ   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    s   h  |  _ h  |  _ d  S(   N(   s   selfs   breakss   fncache(   s   selfs    /mit/python/lib/python2.0/bdb.pys   __init__ s    	c    sE   |  i i | ƒ } | o# t i i | ƒ } | |  i | <n | Sd  S(   N(   s   selfs   fncaches   gets   filenames   canonics   oss   paths   abspath(   s   selfs   filenames   canonics    /mit/python/lib/python2.0/bdb.pys   canonic s
    c    s;   d  k  } | i ƒ  t |  _ t |  _ t |  _ d |  _ d  S(   Ni    (   s	   linecaches
   checkcaches   Nones   selfs   botframes	   stopframes   returnframes   quitting(   s   selfs	   linecaches    /mit/python/lib/python2.0/bdb.pys   reset s    	
			c    s¨   |  i o d  Sn | d j o |  i | ƒ Sn | d j o |  i | | ƒ Sn | d j o |  i | | ƒ Sn | d j o |  i | | ƒ Sn d G| GH|  i	 Sd  S(   Ns   lines   calls   returns	   exceptions*   bdb.Bdb.dispatch: unknown debugging event:(
   s   selfs   quittings   events   dispatch_lines   frames   dispatch_calls   args   dispatch_returns   dispatch_exceptions   trace_dispatch(   s   selfs   frames   events   args    /mit/python/lib/python2.0/bdb.pys   trace_dispatch& s    

c    sP   |  i | ƒ p |  i | ƒ o% |  i | ƒ |  i o
 t ‚ n n |  i Sd  S(   N(   s   selfs	   stop_heres   frames
   break_heres	   user_lines   quittings   BdbQuits   trace_dispatch(   s   selfs   frames    /mit/python/lib/python2.0/bdb.pys   dispatch_line4 s
     
 c    s|   |  i t j o | |  _ |  i Sn |  i | ƒ p |  i | ƒ o d  Sn |  i | | ƒ |  i	 o
 t
 ‚ n |  i Sd  S(   N(   s   selfs   botframes   Nones   frames   trace_dispatchs	   stop_heres   break_anywheres	   user_calls   args   quittings   BdbQuit(   s   selfs   frames   args    /mit/python/lib/python2.0/bdb.pys   dispatch_call: s    	!
 
c    sL   |  i | ƒ p | |  i j o( |  i | | ƒ |  i o
 t ‚ n n d  S(   N(   s   selfs	   stop_heres   frames   returnframes   user_returns   args   quittings   BdbQuit(   s   selfs   frames   args    /mit/python/lib/python2.0/bdb.pys   dispatch_returnG s     
 c    sC   |  i | ƒ o( |  i | | ƒ |  i o
 t ‚ n n |  i Sd  S(   N(   s   selfs	   stop_heres   frames   user_exceptions   args   quittings   BdbQuits   trace_dispatch(   s   selfs   frames   args    /mit/python/lib/python2.0/bdb.pys   dispatch_exceptionL s
    
 c    s~   |  i t j o d Sn | |  i j o d Sn xC | t j	 o | |  i j	 o% | |  i j o d Sn | i } q3 Wd Sd  S(   Ni   i    (   s   selfs	   stopframes   Nones   frames   botframes   f_back(   s   selfs   frames    /mit/python/lib/python2.0/bdb.pys	   stop_hereV s     c    s½   |  i | i i ƒ } |  i i | ƒ o d Sn | i } | |  i | j o d Sn t
 | | | ƒ \ } } | o? | i |  _ | o | i o |  i t | i ƒ ƒ n d Sn d Sd  S(   Ni    i   (   s   selfs   canonics   frames   f_codes   co_filenames   filenames   breakss   has_keys   f_linenos   linenos	   effectives   bps   flags   numbers	   currentbps	   temporarys   do_clears   str(   s   selfs   frames   filenames   linenos   bps   flags    /mit/python/lib/python2.0/bdb.pys
   break_herea s    	c    s#   |  i i |  i | i i ƒ ƒ Sd  S(   N(   s   selfs   breakss   has_keys   canonics   frames   f_codes   co_filename(   s   selfs   frames    /mit/python/lib/python2.0/bdb.pys   break_anywherer s    c    s   d S(   sn   This method is called when there is the remote possibility
        that we ever need to stop in this function.N(    (   s   selfs   frames   argument_lists    /mit/python/lib/python2.0/bdb.pys	   user_cally s     c    s   d S(   s9   This method is called when we stop or break at this line.N(    (   s   selfs   frames    /mit/python/lib/python2.0/bdb.pys	   user_line~ s     c    s   d S(   s5   This method is called when a return trap is set here.N(    (   s   selfs   frames   return_values    /mit/python/lib/python2.0/bdb.pys   user_return‚ s     c    s   | \ } } } d S(   sm   This method is called if an exception occurs,
        but only if we are to stop at or just below this level.N(    (   s   selfs   frames   .4s   exc_types	   exc_values   exc_tracebacks    /mit/python/lib/python2.0/bdb.pys   user_exception† s    c    s   t  |  _ t  |  _ d |  _ d S(   s   Stop after one line of code.i    N(   s   Nones   selfs	   stopframes   returnframes   quitting(   s   selfs    /mit/python/lib/python2.0/bdb.pys   set_stepŽ s     		c    s   | |  _ t |  _ d |  _ d S(   s2   Stop on the next line in or below the given frame.i    N(   s   frames   selfs	   stopframes   Nones   returnframes   quitting(   s   selfs   frames    /mit/python/lib/python2.0/bdb.pys   set_next” s     		c    s"   | i |  _ | |  _ d |  _ d S(   s)   Stop when returning from the given frame.i    N(   s   frames   f_backs   selfs	   stopframes   returnframes   quitting(   s   selfs   frames    /mit/python/lib/python2.0/bdb.pys
   set_returnš s     	c    s   y d d Wn t  i ƒ  d i i } n X|  i ƒ  x* | o" |  i | _ | |  _	 | i } q9 W|  i
 ƒ  t  i |  i ƒ d S(   s   Start debugging from here.i   s    i   N(   s   syss   exc_infos   tb_frames   f_backs   frames   selfs   resets   trace_dispatchs   f_traces   botframes   set_steps   settrace(   s   selfs   frames    /mit/python/lib/python2.0/bdb.pys	   set_trace  s     
 	
c    s˜   |  i |  _ t |  _ d |  _ |  i ok t i t ƒ y d d Wn t i	 ƒ  d i
 i } n Xx+ | o | |  i j	 o | ` | i } qe Wn d  S(   Ni    i   s    i   (   s   selfs   botframes	   stopframes   Nones   returnframes   quittings   breakss   syss   settraces   exc_infos   tb_frames   f_backs   frames   f_trace(   s   selfs   frames    /mit/python/lib/python2.0/bdb.pys   set_continue® s    		 c    s/   |  i |  _ t |  _ d |  _ t i t ƒ d  S(   Ni   (   s   selfs   botframes	   stopframes   Nones   returnframes   quittings   syss   settrace(   s   selfs    /mit/python/lib/python2.0/bdb.pys   set_quit¾ s    		c 	   s®   |  i | ƒ } d  k } | i | | ƒ } | o d | | f Sn |  i i | ƒ o g  |  i | <n |  i | } | | j o | i
 | ƒ n t | | | | ƒ } d  S(   Ns   Line %s:%d does not exist(   s   selfs   canonics   filenames	   linecaches   getlines   linenos   lines   breakss   has_keys   lists   appends
   Breakpoints	   temporarys   conds   bp(	   s   selfs   filenames   linenos	   temporarys   conds	   linecaches   lines   lists   bps    /mit/python/lib/python2.0/bdb.pys	   set_breakË s    	i    c    sÓ   |  i | ƒ } |  i i | ƒ o d | Sn | |  i | j o d | | f Sn x( t i | | f d r } | i	 ƒ  ql Wt i i | | f ƒ o |  i | i
 | ƒ n |  i | o |  i | =n d  S(   Ns   There are no breakpoints in %ss   There is no breakpoint at %s:%di    (   s   selfs   canonics   filenames   breakss   has_keys   linenos
   Breakpoints   bplists   bps   deleteMes   remove(   s   selfs   filenames   linenos   bps    /mit/python/lib/python2.0/bdb.pys   clear_breakÙ s     c    s   y t  | ƒ } Wn d | Sn Xy t i | } Wn t j
 o d | Sn X| o d | Sn |  i | i	 | i
 ƒ d  S(   Ns"   Non-numeric breakpoint number (%s)s#   Breakpoint number (%d) out of ranges   Breakpoint (%d) already deleted(   s   ints   args   numbers
   Breakpoints
   bpbynumbers   bps
   IndexErrors   selfs   clear_breaks   files   line(   s   selfs   args   numbers   bps    /mit/python/lib/python2.0/bdb.pys   clear_bpbynumberé s    c    s‡   |  i | ƒ } |  i i | ƒ o d | Sn xG |  i | d r6 } t i | | f } x | d r } | i
 ƒ  qa Wq? W|  i | =d  S(   Ns   There are no breakpoints in %si    (   s   selfs   canonics   filenames   breakss   has_keys   lines
   Breakpoints   bplists   blists   bps   deleteMe(   s   selfs   filenames   lines   blists   bps    /mit/python/lib/python2.0/bdb.pys   clear_all_file_breaksö s     	 c    sK   |  i o d Sn x( t i d r } | o | i ƒ  n q Wh  |  _ d  S(   Ns   There are no breakpointsi    (   s   selfs   breakss
   Breakpoints
   bpbynumbers   bps   deleteMe(   s   selfs   bps    /mit/python/lib/python2.0/bdb.pys   clear_all_breaks s     c    s7   |  i | ƒ } |  i i | ƒ o | |  i | j Sd  S(   N(   s   selfs   canonics   filenames   breakss   has_keys   lineno(   s   selfs   filenames   linenos    /mit/python/lib/python2.0/bdb.pys	   get_breaks    c    sR   |  i | ƒ } |  i i | ƒ o% | |  i | j o t i | | f p g  Sd  S(   N(   s   selfs   canonics   filenames   breakss   has_keys   linenos
   Breakpoints   bplist(   s   selfs   filenames   linenos    /mit/python/lib/python2.0/bdb.pys
   get_breakss    c    s9   |  i | ƒ } |  i i | ƒ o |  i | Sn g  Sd  S(   N(   s   selfs   canonics   filenames   breakss   has_key(   s   selfs   filenames    /mit/python/lib/python2.0/bdb.pys   get_file_breakss    c    s   |  i Sd  S(   N(   s   selfs   breaks(   s   selfs    /mit/python/lib/python2.0/bdb.pys   get_all_breakss    c    sÛ   g  } | o | i | j o | i } n xF | t j	 o8 | i | | i f ƒ | |  i	 j o Pn | i
 } q- W| i ƒ  t d t | ƒ d ƒ } x4 | t j	 o& | i | i | i f ƒ | i } q™ W| | f Sd  S(   Ni    i   (   s   stacks   ts   tb_frames   fs   tb_nexts   Nones   appends   f_linenos   selfs   botframes   f_backs   reverses   maxs   lens   is	   tb_lineno(   s   selfs   fs   ts   stacks   is    /mit/python/lib/python2.0/bdb.pys	   get_stack s      
 c    sI  d  k  } d  k } d  k } | \ } } |  i | i i	 ƒ } | d | d }	 | i i o |	 | i i }	 n |	 d }	 | i i d ƒ o | i d }
 n t }
 |
 o |	 | i |
 ƒ }	 n |	 d }	 | i i d ƒ o. | i d } |	 d }	 |	 | i | ƒ }	 n | i | | ƒ } | o |	 | | i | ƒ }	 n |	 Sd  S(   Ns   (s   )s   <lambda>s   __args__s   ()s
   __return__s   ->(   s	   linecaches   reprs   strings   frame_linenos   frames   linenos   selfs   canonics   f_codes   co_filenames   filenames   ss   co_names   f_localss   has_keys   argss   Nones   rvs   getlines   lines   lprefixs   strip(   s   selfs   frame_linenos   lprefixs	   linecaches   reprs   strings   frames   linenos   filenames   ss   argss   rvs   lines    /mit/python/lib/python2.0/bdb.pys   format_stack_entry2s*    


 s   : c    s¼   | e j o d  k } | i } n | e j o
 | } n |  i ƒ  e i |  i	 ƒ e
 | e i ƒ o | d } n z( y | | | UWn e j
 o n XWd  d |  _ e i e ƒ Xd  S(   Ns   
i   (   s   globalss   Nones   __main__s   __dict__s   localss   selfs   resets   syss   settraces   trace_dispatchs
   isinstances   cmds   typess   CodeTypes   BdbQuits   quitting(   s   selfs   cmds   globalss   localss   __main__s    /mit/python/lib/python2.0/bdb.pys   runNs"    	

	 	c    sÂ   | t j o d  k } | i } n | t j o
 | } n |  i ƒ  t i |  i	 ƒ t
 | t i ƒ o | d } n z. y t | | | ƒ SWn t j
 o n XWd  d |  _ t i t ƒ Xd  S(   Ns   
i   (   s   globalss   Nones   __main__s   __dict__s   localss   selfs   resets   syss   settraces   trace_dispatchs
   isinstances   exprs   typess   CodeTypes   evals   BdbQuits   quitting(   s   selfs   exprs   globalss   localss   __main__s    /mit/python/lib/python2.0/bdb.pys   runevalas"    	

	 	c    s   |  i | | | ƒ d  S(   N(   s   selfs   runs   cmds   globalss   locals(   s   selfs   cmds   globalss   localss    /mit/python/lib/python2.0/bdb.pys   runctxts    c    so   |  i ƒ  t i |  i ƒ t } z- y t | | ƒ } Wn t
 j
 o n XWd  d |  _ t i t ƒ X| Sd  S(   Ni   (   s   selfs   resets   syss   settraces   trace_dispatchs   Nones   ress   applys   funcs   argss   BdbQuits   quitting(   s   selfs   funcs   argss   ress    /mit/python/lib/python2.0/bdb.pys   runcallzs    
	 	(&   s   __doc__s   __init__s   canonics   resets   trace_dispatchs   dispatch_lines   dispatch_calls   dispatch_returns   dispatch_exceptions	   stop_heres
   break_heres   break_anywheres	   user_calls	   user_lines   user_returns   user_exceptions   set_steps   set_nexts
   set_returns	   set_traces   set_continues   set_quits   Nones	   set_breaks   clear_breaks   clear_bpbynumbers   clear_all_file_breakss   clear_all_breakss	   get_breaks
   get_breakss   get_file_breakss   get_all_breakss	   get_stacks   format_stack_entrys   runs   runevals   runctxs   runcall(    s    /mit/python/lib/python2.0/bdb.pys   Bdb
 sJ    								
																
							c      s   t  ƒ  i ƒ  d  S(   N(   s   Bdbs	   set_trace(    s    /mit/python/lib/python2.0/bdb.pys	   set_trace‰s    s
   Breakpointc      sP   d  Z  d Z h  Z e g Z d e d „ Z d „  Z d „  Z d „  Z d „  Z	 RS(   s”  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   c    s¼   | |  _  | |  _ | |  _ | |  _ d |  _ d |  _ d |  _ t i	 |  _
 t i	 d t _	 |  i i |  ƒ |  i i | | f ƒ o |  i | | f i |  ƒ n |  g |  i | | f <d  S(   Ni   i    (   s   files   selfs   lines	   temporarys   conds   enableds   ignores   hitss
   Breakpoints   nexts   numbers
   bpbynumbers   appends   bplists   has_key(   s   selfs   files   lines	   temporarys   conds    /mit/python/lib/python2.0/bdb.pys   __init__¥s    							i    c    sW   |  i |  i f } t |  i |  i <|  i | i |  ƒ |  i | o |  i | =n d  S(   N(	   s   selfs   files   lines   indexs   Nones
   bpbynumbers   numbers   bplists   remove(   s   selfs   indexs    /mit/python/lib/python2.0/bdb.pys   deleteMe·s
    c    s   d |  _ d  S(   Ni   (   s   selfs   enabled(   s   selfs    /mit/python/lib/python2.0/bdb.pys   enable¿s    c    s   d |  _ d  S(   Ni    (   s   selfs   enabled(   s   selfs    /mit/python/lib/python2.0/bdb.pys   disableÂs    c    sÕ   |  i o
 d } n d } |  i o | d } n | d } d |  i | |  i |  i f GH|  i o d |  i f GHn |  i o d |  i GHn |  i	 o6 |  i	 d j o
 d	 } n d
 } d |  i	 | f GHn d  S(   Ns   del  s   keep s   yess   no s   %-4dbreakpoint    %s at %s:%ds   	stop only if %ss   	ignore next %d hitsi   s   ss    s!   	breakpoint already hit %d time%s(   s   selfs	   temporarys   disps   enableds   numbers   files   lines   conds   ignores   hitss   ss(   s   selfs   disps   sss    /mit/python/lib/python2.0/bdb.pys   bpprintÅs     






 
(
   s   __doc__s   nexts   bplists   Nones
   bpbynumbers   __init__s   deleteMes   enables   disables   bpprint(    s    /mit/python/lib/python2.0/bdb.pys
   Breakpoints    				c    s   t  i |  | f } xü t d t | ƒ ƒ d rã } | | } | i	 d j o q+ n | i
 d | _
 | i o5 | i d j o | i d | _ q+ n | d f Snm yX t | i | i | i ƒ } | o2 | i d j o | i d | _ n | d f Sn Wn | d f Sn Xq+ Wt t f Sd S(   sô   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(   s
   Breakpoints   bplists   files   lines	   possibless   ranges   lens   is   bs   enableds   hitss   conds   ignores   evals   frames	   f_globalss   f_localss   vals   None(   s   files   lines   frames	   possibless   is   bs   vals    /mit/python/lib/python2.0/bdb.pys	   effectiveÞs.      
s   Tdbc      s&   d „  Z  d „  Z d „  Z d „  Z RS(   Nc    s/   | i i } | o
 d } n d G| G| GHd  S(   Ns   ???s   +++ call(   s   frames   f_codes   co_names   names   args(   s   selfs   frames   argss   names    /mit/python/lib/python2.0/bdb.pys	   user_calls     
c    sƒ   d  k  } d  k } | i i } | o
 d } n |  i | i i ƒ } | i
 | | i ƒ } d G| G| i G| Gd G| i | ƒ GHd  S(   Ns   ???s   +++s   :(   s	   linecaches   strings   frames   f_codes   co_names   names   selfs   canonics   co_filenames   fns   getlines   f_linenos   lines   strip(   s   selfs   frames	   linecaches   strings   names   fns   lines    /mit/python/lib/python2.0/bdb.pys	   user_lines     
c    s   d G| GHd  S(   Ns
   +++ return(   s   retval(   s   selfs   frames   retvals    /mit/python/lib/python2.0/bdb.pys   user_returns    c    s   d G| GH|  i ƒ  d  S(   Ns   +++ exception(   s	   exc_stuffs   selfs   set_continue(   s   selfs   frames	   exc_stuffs    /mit/python/lib/python2.0/bdb.pys   user_exceptions    	(   s	   user_calls	   user_lines   user_returns   user_exception(    s    /mit/python/lib/python2.0/bdb.pys   Tdbs    			c    s*   d G|  Gd GHt |  d ƒ } d G| GHd  S(   Ns   foo(s   )i
   s   bar returned(   s   ns   bars   x(   s   ns   xs    /mit/python/lib/python2.0/bdb.pys   foo#s    c    s   d G|  Gd GH|  d Sd  S(   Ns   bar(s   )i   (   s   a(   s   as    /mit/python/lib/python2.0/bdb.pys   bar(s    c     s   t  ƒ  }  |  i d ƒ d  S(   Ns   import bdb; bdb.foo(10)(   s   Tdbs   ts   run(   s   ts    /mit/python/lib/python2.0/bdb.pys   test,s    	(   s   __doc__s   syss   oss   typess   BdbQuits   Bdbs	   set_traces
   Breakpoints	   effectives   Tdbs   foos   bars   test(    s    /mit/python/lib/python2.0/bdb.pys   ? s   			ÿ €	Q	3		