???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
]              "   @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z Gd d   d e  Z d d d d d d	 d
 d d g	 Z d d   Z d d   Z d d   Z Gd d   d e  Z d Z Gd d   d e j e j  Z e d k	 rd d d d d d d d d d d  d! d" d# d$ d% d& d' d d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 g" Z x2 e D]* Z e e e d7 e  j j   d8 7Z qWe e j j 7Z [ [ d d d9 d  Z d d d: d  Z  d; d   Z! d< d	   Z" d= d
   Z# d d> d  Z$ d? d   Z% d@ Z& dA dB   Z' dC d   Z( dD Z) dE dF   Z* e+ dG k rd  d l, Z, e, j*   d S)H    Nc               @   s   e  Z d  Z d S)RestartN)__name__
__module____qualname__ r   r   (/opt/alt/python35/lib64/python3.5/pdb.pyr   T   s   r   runpmPdbrunevalrunctxruncall	set_tracepost_mortemhelpc             C   s   t  j d t  j |    } y t |  } Wn t k
 rD d  SYn X| D x< t | d d D]( \ } } | j |  r_ |  | | f Sq_ WWd  QRXd  S)Nzdef\s+%s\s*[(]start   )recompileescapeopenOSError	enumeratematch)funcnamefilenameZcrefplinenoliner   r   r   find_function[   s    	r   c             C   sz   t  j |   \ } } t  j |   r@ |  j |  j k r@ | d f St  j |   rY | d f St  j | | d    | d f S)Nr   )inspectZ
findsourceZisframe	f_globalsf_localsZismoduleZgetblock)objlinesr   r   r   r   getsourcelinesh   s    !

r%   c             C   sJ   t  t j |    } | j   x$ | D] \ } } | | k r& | Sq& Wd S)Nr   )listdisZfindlinestartsreverse)codeZlastiZ
linestartsir   r   r   r   lasti2linenoq   s    
r+   c               @   s   e  Z d  Z d d   Z d S)_rstrc             C   s   |  S)Nr   )selfr   r   r   __repr__|   s    z_rstr.__repr__N)r   r   r   r.   r   r   r   r   r,   z   s   r,   z
-> c               @   s  e  Z d  Z d Z d d d d 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'   Z d( d)   Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z d2 d3   Z d4 d5   Z e Z d6 d7 d8  Z d9 d:   Z e Z  e Z! e Z" d; d<   Z# e Z$ d= d>   Z% d? d@   Z& dA dB   Z' e Z( dC dD   Z) e Z* dE dF   Z+ e Z, dG dH   Z- e Z. dI dJ   Z/ e/ Z0 e Z1 e Z2 dK dL   Z3 e3 Z4 e3 Z5 dM dN   Z6 dO dP   Z7 e7 Z8 dQ dR   Z9 e9 Z: dS dT   Z; e; Z< dU dV   Z= e= Z> dW dX   Z? e? Z@ dY dZ   ZA eA ZB d[ d\   ZC eC ZD d] d^   ZE eE ZF ZG d_ d`   ZH eH ZI da db   ZJ e ZK dc dd   ZL eL ZM eL ZN de df   ZO dg dh   ZP eP ZQ di dj   ZR eR ZS dk dl   ZT d dm dn  ZU do dp   ZV dq dr   ZW e ZX e ZY e ZZ ds dt   Z[ e[ Z\ du dv   Z] e] Z^ dw dx   Z_ e Z` f  d dy dz  Za d{ d|   Zb e Zc d} d~   Zd e Ze d d   Zf d d   Zg d d   Zh d d   Zi d d   Zj d d   Zk d d d d d d g Zl d d   Zm en d d  Zo d d   Zp ep Zq d d   Zr d d   Zs d d   Zt d d   Zu d S)r
   NZtabFc       	   $   C   s  t  j j |  d | t j j |  | | |  | r> d |  _ d |  _ i  |  _ i  |  _ d |  _	 d |  _
 i  |  _ y d d  l } | j d  Wn t k
 r Yn Xd |  _ | |  _ g  |  _ d t j k r+t j d } y9 t t j j | d    } |  j j |  Wd  QRXWn t k
 r*Yn Xy* t d   } |  j j |  Wd  QRXWn t k
 riYn Xi  |  _ i  |  _ i  |  _ d |  _ d  |  _ d  S)	Nskipr   z(Pdb)  Fz 	
`@#$%^&*()=+[{]}\|;:'",<>?HOMEz.pdbrc)bdbBdb__init__cmdCmdZuse_rawinputpromptaliases
displaying
mainpyfile_wait_for_mainpyfile	tb_linenoreadlineZset_completer_delimsImportErrorallow_kbdintnosigintrcLinesosenvironr   pathjoinextendr   commandscommands_dopromptcommands_silentcommands_definingcommands_bnum)	r-   completekeystdinstdoutr/   r@   r=   ZenvHomeZrcFiler   r   r   r4      sF    														zPdb.__init__c             C   s7   |  j  r t  |  j d  |  j   |  j |  d  S)Nz-
Program interrupted. (Use 'cont' to resume).)r?   KeyboardInterruptmessageset_stepr   )r-   signumframer   r   r   sigint_handler   s
    	
zPdb.sigint_handlerc             C   s   t  j j |   |  j   d  S)N)r2   r3   resetforget)r-   r   r   r   rU      s    z	Pdb.resetc             C   s5   d  |  _  g  |  _ d |  _ d  |  _ |  j j   d  S)Nr   )r   stackcurindexcurframer<   clear)r-   r   r   r   rV      s
    				z
Pdb.forgetc             C   s   |  j    |  j | |  \ |  _ |  _ x; | re t | j j | j  } | |  j | j <| j	 } q+ W|  j |  j d |  _
 |  j
 j |  _ |  j   S)Nr   )rV   Z	get_stackrW   rX   r+   tb_framef_codetb_lastir<   tb_nextrY   r"   curframe_localsexecRcLines)r-   ftbr   r   r   r   setup   s    
	z	Pdb.setupc             C   s   |  j  s d  S|  j  } | j   g  |  _  xZ | r | j   j   } | r, | d d k r, |  j |  r, |  j  t |  7_  d Sq, Wd  S)Nr   #T)rA   r(   popstriponecmdreversed)r-   rA   r   r   r   r   r`      s    		
		zPdb.execRcLinesc             C   s=   |  j  r d  S|  j |  r9 |  j d  |  j | d   d  S)Nz--Call--)r;   Z	stop_hererP   interaction)r-   rS   Zargument_listr   r   r   	user_call   s
    	zPdb.user_callc             C   sf   |  j  rC |  j |  j | j j  k s6 | j d k r: d  Sd |  _  |  j |  rb |  j | d   d  S)Nr   F)r;   r:   canonicr\   co_filenamef_linenobp_commandsri   )r-   rS   r   r   r   	user_line   s    		zPdb.user_linec             C   s   t  |  d d  r |  j |  j k r |  j } d |  _ |  j } |  j | d   x" |  j | D] } |  j |  q] W| |  _ |  j | s |  j |  j |  j	  |  j
 | r |  j   |  j   d  Sd S)N	currentbpFr   r   )getattrrp   rG   lastcmdrc   rg   rI   print_stack_entryrW   rX   rH   _cmdlooprV   )r-   rS   rp   Zlastcmd_backr   r   r   r   rn     s     				

zPdb.bp_commandsc             C   s;   |  j  r d  S| | j d <|  j d  |  j | d   d  S)N
__return__z
--Return--)r;   r"   rP   ri   )r-   rS   Zreturn_valuer   r   r   user_return  s
    	zPdb.user_returnc             C   s   |  j  r d  S| \ } } } | | f | j d <| rH | t k rH d n d } |  j d | t j | |  d j   f  |  j | |  d  S)NZ__exception__z	Internal r0   z%s%sr   )r;   r"   StopIterationrP   	tracebackformat_exception_onlyrf   ri   )r-   rS   exc_infoexc_type	exc_valueexc_tracebackprefixr   r   r   user_exception%  s    	!zPdb.user_exceptionc             C   sN   xG y! d |  _  |  j   d |  _  PWq t k
 rE |  j d  Yq Xq Wd  S)NTFz--KeyboardInterrupt--)r?   cmdlooprO   rP   )r-   r   r   r   rt   9  s    	
	zPdb._cmdloopc             C   s   |  j  j |  j  } | r xe | j   D]W \ } } |  j |  } | | k	 r( | | k r( | | | <|  j d | | | f  q( Wd  S)Nzdisplay %s: %r  [old: %r])r9   getrY   items_getval_exceptrP   )r-   r9   exprZoldvalueZnewvaluer   r   r   preloopF  s    
	zPdb.preloopc             C   sw   t  j r( t j t j t  j  d  t  _ |  j | |  rH |  j   d  S|  j |  j |  j  |  j	   |  j   d  S)N)
r
   _previous_sigint_handlersignalSIGINTrc   rV   rs   rW   rX   rt   )r-   rS   ry   r   r   r   ri   S  s    		

zPdb.interactionc             C   s#   | d  k	 r |  j  t |   d  S)N)rP   repr)r-   r#   r   r   r   displayhooka  s    zPdb.displayhookc       	      C   s  | d  d  d k r& | d d   } |  j  } |  j j } y t | d d d  } t j } t j } t j } z8 |  j t _ |  j t _ |  j t _ t | | |  Wd  | t _ | t _ | t _ XWn> t j	   d  d  } |  j
 t j |   d j    Yn Xd  S)Nr   !
z<stdin>Zsingle   rw   )r_   rY   r!   r   sysrN   rM   r   execr{   errorry   rz   rf   )	r-   r   localsglobalsr)   Zsave_stdoutZ
save_stdinZsave_displayhookr{   r   r   r   defaulti  s(     						zPdb.defaultc             C   s.  | j    s | S| j   } x | d |  j k r |  j | d } d } x> | d d   D], } | j d t |  |  } | d 7} qZ W| j d d j | d d     } | j   } q W| d d k r*| j d  } | d k r*| | d d   j   } |  j j	 |  | d  |  j
   } | S)	Nr   r   %z%* aliasz;;r   )rf   splitr8   replacestrrE   findlstripcmdqueueappendrstrip)r-   r   argsiiZtmpArgmarkernextr   r   r   precmd  s&    	%z
Pdb.precmdc             C   s-   |  j  s t j j |  |  S|  j |  Sd  S)N)rJ   r5   r6   rg   handle_command_def)r-   r   r   r   r   rg     s    	z
Pdb.onecmdc             C   s   |  j  |  \ } } } | s" d  S| d k rB d |  j |  j <d  S| d k r[ g  |  _ d S|  j |  j } | r | j | d |  n | j |  y t |  d |  } Wn t k
 r |  j } Yn X| j	 |  j
 k r d |  j |  j <g  |  _ d Sd  S)NZsilentTendr   r   do_F)Z	parselinerI   rK   r   rG   r   rq   AttributeErrorr   r   commands_resumingrH   )r-   r   r5   argZcmdlistfuncr   r   r   r     s,    		zPdb.handle_command_defc             C   s   t  | d |  j d  S)Nfile)printrN   )r-   msgr   r   r   rP     s    zPdb.messagec             C   s   t  d | d |  j d  S)Nz***r   )r   rN   )r-   r   r   r   r   r     s    z	Pdb.errorc             C   s   | j    j d  r g  Sy |  j | | | |  } Wn t k
 rO g  } Yn Xt j | d  } xl | D]d } t j j |  r | j | d  qj t j j	 |  rj | j
   j d  rj | j | d  qj W| S)	N:,*/.py.pyw)r   r   )r   r   )rf   endswith_complete_expression	ExceptionglobrB   rD   isdirr   isfilelower)r-   textr   begidxendidxretglobsfnr   r   r   _complete_location  s    'zPdb._complete_locationc                s#     f d d   t  t j j  D S)Nc                sC   g  |  ]9 \ } } | d  k	 r t  |  j    r t  |   q S)N)r   
startswith).0r*   bp)r   r   r   
<listcomp>  s   	 	z*Pdb._complete_bpnumber.<locals>.<listcomp>)r   r2   
Breakpoint
bpbynumber)r-   r   r   r   r   r   )r   r   _complete_bpnumber  s    zPdb._complete_bpnumberc                s  |  j  s g  S|  j  j j   } | j |  j  d  k r  j d    y< |   d } x'   d d  D] } t | |  } ql WWn t t f k
 r g  SYn Xd j	   d  d   d     f d d   t
 |  D S f d d   | j   D Sd  S)	N.r   r   c                s-   g  |  ]# } | j    d  r  |  q S)r   rw   )r   )r   n)dottedr   r   r   r     s   	 z,Pdb._complete_expression.<locals>.<listcomp>c                s%   g  |  ] } | j     r |  q Sr   )r   )r   r   )r   r   r   r     s   	 rw   rw   )rY   r!   copyupdater_   r   rq   KeyErrorr   rE   dirkeys)r-   r   r   r   r   nsr#   partr   )r   r   r   r   r     s    		 zPdb._complete_expressionc             C   sz  | s t  t j j  d } n, y t |  } Wn |  j d  d  SYn X| |  _ | |  j k r |  j | |  j | |  j	 | f } n d  } g  |  j | <d |  j | <d |  j	 | <|  j
 } d |  _
 d |  _ z y |  j   Wny t k
 r^| r/| d |  j | <| d |  j | <| d |  j	 | <n |  j | =|  j | =|  j	 | =|  j d  Yn XWd  d |  _ | |  _
 Xd  S)	Nr   z.Usage: commands [bnum]
        ...
        endTFz(com) r   r   z1command definition aborted, old commands restored)lenr2   r   r   intr   rK   rG   rH   rI   r7   rJ   r   rO   )r-   r   ZbnumZold_command_defsZprompt_backr   r   r   do_commands  s@    %		

			


	zPdb.do_commandsr   c             C   s  | sP |  j  rL |  j d  x- t j j D] } | r) |  j | j    q) Wd  Sd  } d  } d  } | j d  } | d k r | | d d   j   } | d  |  j   } | j	 d  } d  }	 | d k rk| d  |  j   } |  j
 |  }
 |
 s|  j d |  d  S|
 } | | d d   j   } y t |  } WqPt k
 rg|  j d |  d  SYqPXn y t |  } Wn t k
 rOy t | |  j j |  j  } Wn | } Yn Xy@ t | d  r| j } | j } | j }	 | j } | j } WnM |  j |  \ } } } | s4|  j d	 |  d  S| }	 t |  } Yn XYn X| sb|  j   } |  j | |  } | r|  j | | | | |	  } | r|  j |  n9 |  j | |  d } |  j d
 | j | j | j f  d  S)Nz!Num Type         Disp Enb   Wherer   r   r   r   z%r not found from sys.pathzBad lineno: %s__func__zJThe specified object %r is not a function or was not found along sys.path.zBreakpoint %d at %s:%drw   ) breaksrP   r2   r   r   Zbpformatr   r   r   rfindlookupmoduler   r   
ValueErrorevalrY   r!   r_   hasattrr   __code__co_nameco_firstlinenorl   lineinfodefaultFile	checklineZ	set_break
get_breaksnumberr   r   )r-   r   Z	temporaryr   r   r   condZcommaZcolonr   ra   r   r)   oklnr   errr   r   r   do_breakR  s~    								zPdb.do_breakc             C   s1   |  j  j j } | d k r- |  j r- |  j } | S)Nz<string>)rY   r\   rl   r:   )r-   r   r   r   r   r     s    	zPdb.defaultFilec             C   s   |  j  | d  d  S)Nr   )r   )r-   r   r   r   r   	do_tbreak  s    zPdb.do_tbreakc       
      C   s  d } | j  d  } t |  d k r: | d j   } n) t |  d k r_ | d j   } n | S| d k rs | S| j  d  } | d d k r | d =t |  d k r | S|  j   } t |  d k r | d } n) |  j | d  } | r | } | d } t | |  }	 |	 p| S)	N'r   r      r0   r   r-   )NNN)r   r   rf   r   r   r   )
r-   Z
identifierZfailedZidstringidpartsZfnameitemra   Zanswerr   r   r   r     s.     
zPdb.lineinfoc             C   s   t  |  d  r |  j j n d  } t j | | |  } | sM |  j d  d S| j   } | s | d d k s | d  d  d k s | d  d  d k r |  j d  d S| S)	NrY   zEnd of filer   rd   r   z"""z'''zBlank or comment)r   rY   r!   	linecachegetlinerP   rf   r   )r-   r   r   r   r   r   r   r   r     s    !,zPdb.checklinec             C   s   | j    } xq | D]i } y |  j |  } Wn2 t k
 r` } z |  j |  WYd  d  } ~ Xq X| j   |  j d |  q Wd  S)Nz
Enabled %s)r   get_bpbynumberr   r   enablerP   )r-   r   r   r*   r   r   r   r   r   	do_enable  s     
zPdb.do_enablec             C   s   | j    } xq | D]i } y |  j |  } Wn2 t k
 r` } z |  j |  WYd  d  } ~ Xq X| j   |  j d |  q Wd  S)NzDisabled %s)r   r   r   r   disablerP   )r-   r   r   r*   r   r   r   r   r   
do_disable  s     
zPdb.do_disablec             C   s   | j  d d  } y | d } Wn t k
 r: d  } Yn Xy |  j | d j    } WnP t k
 ry |  j d  Ynl t k
 r } z |  j |  WYd  d  } ~ Xn; X| | _ | s |  j d | j  n |  j d | j  d  S)Nr   r   r   zBreakpoint number expectedz#Breakpoint %d is now unconditional.z$New condition set for breakpoint %d.)	r   
IndexErrorr   rf   r   r   r   rP   r   )r-   r   r   r   r   r   r   r   r   do_condition  s     	zPdb.do_conditionc             C   s  | j    } y t | d j    } Wn d } Yn Xy |  j | d j    } WnP t k
 ru |  j d  Yn t k
 r } z |  j |  WYd  d  } ~ Xnf X| | _ | d k r | d k r d | } n d } |  j d | | j	 f  n |  j d | j	  d  S)Nr   r   zBreakpoint number expectedz%d crossingsz
1 crossingz%Will ignore next %s of breakpoint %d.z-Will stop next time breakpoint %d is reached.)
r   r   rf   r   r   r   r   ignorerP   r   )r-   r   r   countr   r   Zcountstrr   r   r   	do_ignore:  s(    	 			zPdb.do_ignorec       
   !   C   s  | s y t  d  } Wn t k
 r0 d } Yn X| j   j   } | d k r d d   t j j D } |  j   x | D] } |  j d |  qy Wd  Sd | k rf| j	 d  } | d  |  } | | d	 d   } y t
 |  } Wn t k
 rd
 | } Yn% X|  j | |  } |  j | |  } | r@|  j |  n" x | D] } |  j d |  qGWd  S| j   }	 xt |	 D]l } y |  j |  } Wn2 t k
 r} z |  j |  WYd  d  } ~ XqyX|  j |  |  j d |  qyWd  S)NzClear all breaks? noyyesc             S   s   g  |  ] } | r |  q Sr   r   )r   r   r   r   r   r   k  s   	 z Pdb.do_clear.<locals>.<listcomp>z
Deleted %sr   r   zInvalid line number (%s))r   r   )inputEOFErrorrf   r   r2   r   r   Zclear_all_breaksrP   r   r   r   r   Zclear_breakr   r   r   Zclear_bpbynumber)
r-   r   ZreplyZbplistr   r*   r   r   r   Z
numberlistr   r   r   do_clear]  sF    
 zPdb.do_clearc             C   s   |  j    d  S)N)print_stack_trace)r-   r   r   r   r   do_where  s    zPdb.do_wherec             C   sS   | |  _  |  j |  j  d |  _ |  j j |  _ |  j |  j |  j   d  |  _ d  S)Nr   )rX   rW   rY   r"   r_   rs   r   )r-   r   r   r   r   _select_frame  s
    	zPdb._select_framec             C   s   |  j  d k r  |  j d  d  Sy t | p/ d  } Wn' t k
 r_ |  j d |  d  SYn X| d k  ru d } n t d |  j  |  } |  j |  d  S)Nr   zOldest framer   zInvalid frame count (%s))rX   r   r   r   maxr  )r-   r   r   newframer   r   r   do_up  s    		z	Pdb.do_upc             C   s   |  j  d t |  j  k r- |  j d  d  Sy t | p< d  } Wn' t k
 rl |  j d |  d  SYn X| d k  r t |  j  d } n# t t |  j  d |  j  |  } |  j |  d  S)Nr   zNewest framezInvalid frame count (%s)r   )rX   r   rW   r   r   r   minr  )r-   r   r   r  r   r   r   do_down  s    	#zPdb.do_downc             C   s   | rf y t  |  } Wn' t k
 r? |  j d |  d  SYn X| |  j j k rl |  j d  d  Sn d  } |  j |  j |  d S)NzError in argument: %rz7"until" line number is smaller than current line numberr   )r   r   r   rY   rm   Z	set_until)r-   r   r   r   r   r   do_until  s    	zPdb.do_untilc             C   s   |  j    d S)Nr   )rQ   )r-   r   r   r   r   do_step  s    
zPdb.do_stepc             C   s   |  j  |  j  d S)Nr   )Zset_nextrY   )r-   r   r   r   r   do_next  s    zPdb.do_nextc             C   sT   | rJ d d  l  } t j d d  } | j |  t _ | t j d  d  <t  d  S)Nr   r   )shlexr   argvr   r   )r-   r   r  Zargv0r   r   r   do_run  s    z
Pdb.do_runc             C   s   |  j  |  j  d S)Nr   )Z
set_returnrY   )r-   r   r   r   r   	do_return  s    zPdb.do_returnc             C   sK   |  j  s= y t j t j |  j  t _ Wn t k
 r< Yn X|  j   d S)Nr   )r@   r   r   rT   r
   r   r   Zset_continue)r-   r   r   r   r   do_continue  s    	
zPdb.do_continuec             C   s   |  j  d t |  j  k r- |  j d  d  Sy t |  } Wn t k
 r^ |  j d  Yn XyK | |  j _ |  j |  j  d | f |  j |  j  <|  j |  j |  j   Wn6 t k
 r } z |  j d |  WYd  d  } ~ Xn Xd  S)Nr   z)You can only jump within the bottom framez)The 'jump' command requires a line numberr   zJump failed: %s)	rX   r   rW   r   r   r   rY   rm   rs   )r-   r   er   r   r   do_jump   s    $zPdb.do_jumpc             C   s   t  j d   |  j j } |  j } t |  j |  j |  j  } d |  j	 j
   | _	 |  j d  t  j | j | | | f  |  j d  t  j |  j  | j |  _ d  S)Nz(%s) zENTERING RECURSIVE DEBUGGERzLEAVING RECURSIVE DEBUGGER)r   settracerY   r!   r_   r
   rL   rM   rN   r7   rf   rP   call_tracingr   Ztrace_dispatchrr   )r-   r   r   r   pr   r   r   do_debug=  s    	zPdb.do_debugc             C   s   d |  _  |  j   d S)NTr   )_user_requested_quitset_quit)r-   r   r   r   r   do_quitP  s    	
zPdb.do_quitc             C   s$   |  j  d  d |  _ |  j   d S)Nr0   Tr   )rP   r  r  )r-   r   r   r   r   do_EOF[  s    	
z
Pdb.do_EOFc             C   s   |  j  j } |  j } | j } | j d @r5 | d } | j d @rL | d } x_ t |  D]Q } | j | } | | k r |  j d | | | f  qY |  j d | f  qY Wd  S)N   r      z%s = %rz%s = *** undefined ***)rY   r\   r_   co_argcountco_flagsrangeco_varnamesrP   )r-   r   codictr   r*   namer   r   r   do_argsd  s    		 
 
zPdb.do_argsc             C   s=   d |  j  k r, |  j t |  j  d   n |  j d  d  S)Nru   zNot yet returned!)r_   rP   r   r   )r-   r   r   r   r   	do_retvalu  s    zPdb.do_retvalc          
   C   se   y t  | |  j j |  j  SWnA t j   d  d  } |  j t j |   d j	      Yn Xd  S)Nr   r   rw   )
r   rY   r!   r_   r   r{   r   ry   rz   rf   )r-   r   r{   r   r   r   _getval  s     zPdb._getvalc          
   C   s   y? | d  k r( t  | |  j j |  j  St  | | j | j  SWnE t j   d  d  } t j |   d j	   } t
 d |  SYn Xd  S)Nr   r   z** raised %s **rw   )r   rY   r!   r_   r"   r   r{   ry   rz   rf   r,   )r-   r   rS   r{   r   r   r   r   r     s    zPdb._getval_exceptc          
   C   s/   y  |  j  t |  j |    Wn Yn Xd  S)N)rP   r   r(  )r-   r   r   r   r   do_p  s     zPdb.do_pc          
   C   s2   y# |  j  t j |  j |    Wn Yn Xd  S)N)rP   pprintZpformatr(  )r-   r   r   r   r   do_pp  s    #z	Pdb.do_ppc             C   s  d |  _  d  } | r | d k r y d | k r | j d  \ } } t | j    } t | j    } | | k  r | | } n% t | j    } t d | d  } Wqt k
 r |  j d |  d  SYqXnD |  j d  k s | d k rt d |  j j	 d  } n |  j d } | d  k r/| d } |  j j
 j } |  j |  } yz t j | |  j j  } |  j | | d |  | | |  j  t | t |   |  _ t |  | k  r|  j d  Wn t k
 rYn Xd  S)	Nr&   r   r   r      zError in argument: %r
   z[EOF])rr   r   r   rf   r  r   r   r   rY   rm   r\   rl   get_file_breaksr   getlinesr!   _print_linesr	  r   rP   rO   )r-   r   Zlastfirstr   	breaklistr$   r   r   r   do_list  s>    	

zPdb.do_listc             C   s   |  j  j j } |  j |  } y t |  j   \ } } Wn6 t k
 ro } z |  j |  d  SWYd  d  } ~ Xn X|  j | | | |  j   d  S)N)rY   r\   rl   r.  r%   r   r   r0  )r-   r   r   r2  r$   r   r   r   r   r   do_longlist  s    zPdb.do_longlistc             C   s   y |  j  |  } Wn d  SYn Xy t |  \ } } Wn< t t f k
 rv } z |  j |  d  SWYd  d  } ~ Xn X|  j | |  d  S)N)r(  r%   r   	TypeErrorr   r0  )r-   r   r#   r$   r   r   r   r   r   	do_source  s    	zPdb.do_sourcec       
      C   s   | r' | j  } |  j j | d	  } n
 d
 } } x t | |  D] \ } } t |  j d  }	 t |	  d k  r~ |	 d 7}	 | | k r |	 d 7}	 n
 |	 d 7}	 | | k r |	 d 7}	 n | | k r |	 d 7}	 |  j |	 d | j    qA Wd  S)Nr   r   r  r   Bz->z>>	rw   rw   )	rm   r<   r   r   r   rjustr   rP   r   )
r-   r$   r   r   rS   Zcurrent_linenoZ
exc_linenor   r   sr   r   r   r0    s     	



zPdb._print_linesc             C   s   y |  j  |  } Wn d  SYn Xd  } y | j } Wn t k
 rI Yn X| rh |  j d | j  d  Sy | j j } Wn t k
 r Yn X| r |  j d | j  d  S| j t k r |  j d | j | j	 f  d  S|  j t |   d  S)NzFunction %sz	Method %szClass %s.%s)
r(  r   r   rP   r   r   	__class__typer   r   )r-   r   valuer)   r   r   r   	do_whatis  s.    	zPdb.do_whatisc             C   s   | sP |  j  d  x| |  j j |  j i   j   D] } |  j  d |  q2 WnB |  j |  } | |  j j |  j i   | <|  j  d | | f  d  S)NzCurrently displaying:z%s: %rzdisplay %s: %r)rP   r9   r   rY   r   r   
setdefault)r-   r   r   valr   r   r   
do_display2  s    %zPdb.do_displayc             C   sf   | rL y |  j  j |  j i   | =Wqb t k
 rH |  j d |  Yqb Xn |  j  j |  j d   d  S)Nznot displaying %s)r9   r   rY   r   r   re   )r-   r   r   r   r   do_undisplayE  s    zPdb.do_undisplayc                s)     f d d   |  j  j |  j i   D S)Nc                s%   g  |  ] } | j     r |  q Sr   )r   )r   r  )r   r   r   r   U  s   	 z*Pdb.complete_undisplay.<locals>.<listcomp>)r9   r   rY   )r-   r   r   r   r   r   )r   r   complete_undisplayT  s    zPdb.complete_undisplayc             C   s9   |  j  j j   } | j |  j  t j d d | d  S)Nz*interactive*local)rY   r!   r   r   r_   r)   interact)r-   r   r   r   r   r   do_interactX  s    zPdb.do_interactc             C   s   | j    } t |  d k rf t |  j j    } x, | D]$ } |  j d | |  j | f  q: Wd  S| d |  j k r t |  d k r |  j d | d |  j | d f  n$ d j | d d    |  j | d <d  S)Nr   z%s = %sr   r   )r   r   sortedr8   r   rP   rE   )r-   r   r   r   r   r   r   r   do_aliasb  s    "%)zPdb.do_aliasc             C   sG   | j    } t |  d k r" d  S| d |  j k rC |  j | d =d  S)Nr   )r   r   r8   )r-   r   r   r   r   r   
do_unalias  s
     zPdb.do_unaliasc                s     f d d   |  j  D S)Nc                s%   g  |  ] } | j     r |  q Sr   )r   )r   a)r   r   r   r     s   	 z(Pdb.complete_unalias.<locals>.<listcomp>)r8   )r-   r   r   r   r   r   )r   r   complete_unalias  s    zPdb.complete_unaliasr  r  r  r  r  r  c             C   s>   y% x |  j  D] } |  j |  q WWn t k
 r9 Yn Xd  S)N)rW   rs   rO   )r-   frame_linenor   r   r   r    s
    zPdb.print_stack_tracec             C   sK   | \ } } | |  j  k r$ d } n d } |  j | |  j | |   d  S)Nz> z  )rY   rP   Zformat_stack_entry)r-   rL  Zprompt_prefixrS   r   r   r   r   r   rs     s    		zPdb.print_stack_entryc             C   s   | s t  j j |  |  SyJ y t |  d |  } |   SWn% t k
 ra t |  d |  } Yn XWn# t k
 r |  j d |  Yn> Xt j j d k r |  j d |  d  S|  j	 | j
 j    d  S)NZhelp_r   zNo help for %rr   zJNo help for %r; please do not run Python with -OO if you need command help)r5   r6   do_helprq   r   r   r   flagsoptimizerP   __doc__r   )r-   r   ZtopicZcommandr   r   r   rM    s    	zPdb.do_helpc             C   s#   |  j  |  j j p d j    d  S)Nr0   )rP   	help_execrP  rf   )r-   r   r   r   rQ    s    
zPdb.help_execc             C   s   t    d  S)N)r   )r-   r   r   r   help_pdb  s    zPdb.help_pdbc             C   s!  t  j j |  r( t  j j |  r( | St  j j t j d |  } t  j j |  rr |  j |  |  j k rr | St  j j |  \ } } | d k r | d } t  j j |  r | Sxd t j D]Y } x% t  j j	 |  r t  j
 |  } q Wt  j j | |  } t  j j |  r | Sq Wd  S)Nr   r0   z.py)rB   rD   isabsexistsrE   r   rk   r:   splitextislinkreadlink)r-   r   ra   rootextdirnamefullnamer   r   r   r     s"    $*
zPdb.lookupmodulec          
   C   s   d d  l  } | j j   | j j d d d | d t i  d |  _ |  j |  |  _ d |  _ t	 | d    } d	 | j
   |  j f } Wd  QRX|  j |  d  S)
Nr   r   __main____file____builtins__TFrbzexec(compile(%r, %r, 'exec')))r\  __dict__rZ   r   r^  r;   rk   r:   r  r   readr   )r-   r   r\  r   	statementr   r   r   
_runscript  s    		zPdb._runscript)vr   r   r   r   r4   rT   rU   rV   rc   r`   rj   ro   rn   rv   r   rt   r   ri   r   r   r   rg   r   rP   r   r   r   r   r   Zcomplete_commandsr   r   Zdo_bZcomplete_breakZ
complete_br   Zcomplete_tbreakr   r   r   Zcomplete_enabler   Zcomplete_disabler   Zcomplete_conditionr   Zcomplete_ignorer  Zdo_clZcomplete_clearZcomplete_clr  Zdo_wZdo_btr  r  Zdo_ur
  Zdo_dr  Zdo_untr  Zdo_sr  Zdo_nr  Z
do_restartr  Zdo_rr  Zdo_cZdo_contr  Zdo_jr  Zcomplete_debugr  Zdo_qZdo_exitr  r&  Zdo_ar'  Zdo_rvr(  r   r)  r+  Zcomplete_printZ
complete_pZcomplete_ppr3  Zdo_lr4  Zdo_llr6  Zcomplete_sourcer0  r>  Zcomplete_whatisrA  Zcomplete_displayrB  rC  rF  rH  rI  rK  r   r  line_prefixrs   rM  Zdo_hrQ  rR  r   rc  r   r   r   r   r
      s   .	
M]!!.
			1!
#	
ZwhereZdownZupbreakZtbreakrZ   r   r   r   Z	conditionrG   stepr   ZuntilZjumpreturnZretvalcontinuer&   Zlonglistr   r  ppZwhatissourceZdisplayZ	undisplayrE  r   Zunaliasdebugquitr   z

c             C   s   t    j |  | |  d  S)N)r
   r   )rb  r   r   r   r   r   r   !  s    c             C   s   t    j |  | |  S)N)r
   r   )Z
expressionr   r   r   r   r   r   $  s    c             C   s   t  |  | |  d  S)N)r   )rb  r   r   r   r   r   r   '  s    c              O   s   t    j |  |   S)N)r
   r   )r   kwdsr   r   r   r   +  s    c               C   s   t    j t j   j  d  S)N)r
   r   r   	_getframef_backr   r   r   r   r   .  s    c             C   s[   |  d  k r t  j   d }  |  d  k r4 t d   t   } | j   | j d  |   d  S)Nr   zAA valid traceback must be passed if no exception is being handled)r   r{   r   r
   rU   ri   )tr  r   r   r   r   3  s    	
c               C   s   t  t j  d  S)N)r   r   last_tracebackr   r   r   r   r	   A  s    zimport x; x.main()c               C   s   t  t  d  S)N)r   TESTCMDr   r   r   r   testI  s    rs  c              C   s   d d  l  }  |  j t  d  S)Nr   )pydocZpagerrP  )rt  r   r   r   r   M  s    a  usage: pdb.py [-c command] ... pyfile [arg] ...

Debug the Python program given by pyfile.

Initial commands are read from .pdbrc files in your home directory
and in the current directory, if they exist.  Commands supplied with
-c are executed after commands from .pdbrc files.

To let the script run until an exception occurs, use "-c continue".
To let the script run up to a given line X in the debugged file, use
"-c 'until X'".c        	      C   sN  d d  l  }  |  j  t j d d   d d d g  \ } } | sW t t  t j d  g  } xP | D]H \ } } | d k r t t  t j   qd | d k rd | j |  qd W| d } t j j	 |  s t d
 | d  t j d  | t j d  d   <t j j
 |  t j d <t   } | j j |  xy% | j |  | j rKPt d  Wq1t k
 rt d | d  t d d j |   Yq1t k
 rt d d d t t j   d  Yq1t k
 rt j   t j d  Yq1t j   t d  t d  t j   d } | j d  |  t d | d  Yq1Xq1Wd  S)Nr   r   zhc:--helpz
--command=r   -h-c	--commandzError:zdoes not existz*The program finished and will be restartedZ
Restartingzwith arguments:r8  r   z/The program exited via sys.exit(). Exit status:r   z2Uncaught exception. Entering post mortem debuggingz1Running 'cont' or 'step' will restart the programz#Post mortem debugger finished. The z will be restarted)rv  ru  )rw  rx  )getoptr   r  r   _usageexitr   rB   rD   rT  rZ  r
   rA   rF   rc  r  r   rE   
SystemExitr{   SyntaxErrorry   	print_excri   )	ry  Zoptsr   rG   optZoptargr:   pdbrp  r   r   r   main^  sV    .


		




r  r\  )-rB   r   r   r5   r2   r'   r)   r   r*  r   r    ry   r   r   r   __all__r   r%   r+   r   r,   rd  r3   r6   r
   rP  Z_help_orderZ_commandrq   rf   rQ  r   r   r   r   r   r   r	   rr  rs  r   rz  r  r   r  r   r   r   r   <module>E   sf   		     (<