;
Éâ"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   iÿÿÿÿu   >(   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    iÿÿÿÿc             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		