ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     B
    YI~d              "   @   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G dd deZdddddd	d
ddg	Zdd Zdd Zdd ZG dd deZdZG d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/d0d1d2d3d4d5d6g"Zx*eD ]"Zeeed7e j d8 7 Zq(W eejj7 Z[[dId9dZdJd:dZ d;d Z!d<d	 Z"dd=d>d
Z#dKd?dZ$d@d Z%dAZ&dBdC Z'dDd Z(dEZ)dFdG Z*e+dHkrd dl,Z,e,*  dS )L    Nc               @   s   e Zd ZdS )RestartN)__name__
__module____qualname__ r   r   (/opt/alt/python37/lib64/python3.7/pdb.pyr   U   s   r   runpmPdbrunevalrunctxruncall	set_tracepost_mortemhelpc          	   C   sx   t dt |  }yt|}W n tk
r4   d S X |4 x,t|ddD ]\}}||rJ| ||fS qJW W d Q R X d 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   sX   t | \}}t | r,| j| jkr,|dfS t | r>|dfS t ||d  |d fS )Nr   )inspectZ
findsourceZisframe	f_globalsf_localsZismoduleZgetblock)objlinesr   r   r   r   getsourcelinesi   s    
r%   c             C   s8   t t| }|  x|D ]\}}||kr|S qW dS )Nr   )listdisZfindlinestartsreverse)codeZlastiZ
linestartsir   r   r   r   lasti2linenor   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,   {   s   r,   z
-> c               @   s  e Zd ZdZdd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/d0 Zd1d2 Zd3d4 Zd5d6 ZeZdd8d9Zd:d; ZeZ eZ!eZ"d<d= Z#eZ$d>d? Z%d@dA Z&dBdC Z'eZ(dDdE Z)eZ*dFdG Z+eZ,dHdI Z-eZ.dJdK Z/e/Z0eZ1eZ2dLdM Z3e3Z4e3Z5dNdO Z6dPdQ Z7e7Z8dRdS Z9e9Z:dTdU Z;e;Z<dVdW Z=e=Z>dXdY Z?e?Z@dZd[ ZAeAZBd\d] ZCeCZDd^d_ ZEeE ZFZGd`da ZHeHZIdbdc ZJeZKddde ZLeLZMeLZNdfdg ZOdhdi ZPePZQdjdk ZReRZSdldm ZTddndoZUdpdq ZVdrds ZWeZXeZYeZZdtdu Z[e[Z\dvdw Z]e]Z^dxdy Z_eZ`dd{d|Zad}d~ ZbeZcdd ZdeZedd Zfdd Zgdd Zhdd Zidd Zjdd ZkddddddgZldd ZmenfddZodd ZpepZqdd Zrdd Zsdd Ztdd Zudd ZvdS )r
   NtabFTc       	   	   C   s4  t jj| |d tj| ||| |r,d| _d| _i | _i | _d| _	d| _
i | _ydd l}|d W n tk
rz   Y nX d| _|| _g | _|ry,ttjd}| j| W d Q R X W n tk
r   Y nX y$td}| j| W d Q R X W n tk
r   Y nX i | _i | _i | _d| _d | _d S )	N)skipr   z(Pdb)  Fz 	
`@#$%^&*()=+[{]}\|;:'",<>?z~/.pdbrcz.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rcLinesr   ospath
expanduserextendr   commandscommands_dopromptcommands_silentcommands_definingcommands_bnum)	r-   completekeystdinstdoutr0   r@   Zreadrcr=   ZrcFiler   r   r   r4      sD    
zPdb.__init__c             C   s*   | j r
t| d |   | | d S )Nz-
Program interrupted. (Use 'cont' to resume).)r?   KeyboardInterruptmessageset_stepr   )r-   Zsignumframer   r   r   sigint_handler   s
    
zPdb.sigint_handlerc             C   s   t j|  |   d S )N)r2   r3   resetforget)r-   r   r   r   rS      s    z	Pdb.resetc             C   s&   d | _ g | _d| _d | _| j  d S )Nr   )r   stackcurindexcurframer<   clear)r-   r   r   r   rT      s
    z
Pdb.forgetc             C   sl   |    | ||\| _| _x*|rFt|jj|j}|| j|j< |j	}qW | j| j d | _
| j
j| _|  S )Nr   )rT   Z	get_stackrU   rV   r+   tb_framef_codetb_lastir<   tb_nextrW   r"   curframe_localsexecRcLines)r-   ftbr   r   r   r   setup   s    

z	Pdb.setupc             C   sh   | j s
d S | j }|  g | _ xD|rb|  }|r |d dkr | |r |  j t|7  _ dS q W d 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 | |r*| d | |d  d S )Nz--Call--)r;   Z	stop_hererO   interaction)r-   rQ   Zargument_listr   r   r   	user_call   s
    

zPdb.user_callc             C   sH   | j r.| j| |jjks$|jdkr(d S d| _ | |rD| |d  d S )Nr   F)r;   r:   canonicrZ   co_filenamef_linenobp_commandsrg   )r-   rQ   r   r   r   	user_line   s    

zPdb.user_linec             C   s   t | ddr| j| jkr| j}d| _| j}| |d  x| j| D ]}| | qBW || _| j| sv| | j| j	  | j
| r|   |   d S dS )N	currentbpFr   r   )getattrrn   rF   lastcmdra   re   rH   print_stack_entryrU   rV   rG   _cmdlooprT   )r-   rQ   rn   Zlastcmd_backr   r   r   r   rl     s     

zPdb.bp_commandsc             C   s.   | j r
d S ||jd< | d | |d  d S )N
__return__z
--Return--)r;   r"   rO   rg   )r-   rQ   Zreturn_valuer   r   r   user_return  s
    

zPdb.user_returnc             C   sh   | j r
d S |\}}}||f|jd< |s2|tkr2dnd}| d|t||d  f  | || d S )NZ__exception__z	Internal r1   z%s%s)r;   r"   StopIterationrO   	tracebackformat_exception_onlyrd   rg   )r-   rQ   exc_infoexc_type	exc_valueexc_tracebackprefixr   r   r   user_exception%  s    
zPdb.user_exceptionc             C   sD   x>yd| _ |   d| _ P W q tk
r:   | d Y qX qW d S )NTFz--KeyboardInterrupt--)r?   cmdlooprN   rO   )r-   r   r   r   rr   9  s    zPdb._cmdloopc             C   sb   | j | j}|r^xJ| D ]>\}}| |}||k	r||kr|||< | d|||f  qW d S )Nzdisplay %s: %r  [old: %r])r9   getrW   items_getval_exceptrO   )r-   r9   exprZoldvalueZnewvaluer   r   r   preloopF  s    
zPdb.preloopc             C   sZ   t jrttjt j d t _| ||r4|   d S | | j| j  | 	  |   d S )N)
r
   _previous_sigint_handlersignalSIGINTra   rT   rq   rU   rV   rr   )r-   rQ   rw   r   r   r   rg   S  s    zPdb.interactionc             C   s   |d k	r|  t| d S )N)rO   repr)r-   r#   r   r   r   displayhooka  s    zPdb.displayhookc       	      C   s   |d d dkr|dd  }| j }| jj}ydt|d dd}tj}tj}tj}z(| jt_| jt_| jt_t||| W d |t_|t_|t_X W n4   t	 d d }| 
tj| d   Y nX d S )Nr   !
z<stdin>Zsingle   ru   )r]   rW   r!   r   sysrM   rL   r   execry   errorrw   rx   rd   )	r-   r   localsglobalsr)   Zsave_stdoutZ
save_stdinZsave_displayhookry   r   r   r   defaulti  s(     zPdb.defaultc             C   s   |  s|S | }xx|d | jkr| j|d  }d}x0|dd  D ] }|dt| |}|d7 }qDW |dd|dd  }| }qW |d dkr|d}|dkr||d d   }| j	| |d | 
 }|S )	Nr   r   %z%* aliasz;;r   )rd   splitr8   replacestrjoinfindlstripcmdqueueappendrstrip)r-   r   argsiiZtmpArgZmarkernextr   r   r   precmd  s&    
z
Pdb.precmdc             C   s"   | j stj| |S | |S d S )N)rI   r5   r6   re   handle_command_def)r-   r   r   r   r   re     s    z
Pdb.onecmdc             C   s   |  |\}}}|sd S |dkr0d| j| j< d S |dkrBg | _dS | j| j }|rf||d |  n
|| yt| d| }W n tk
r   | j}Y nX |j	| j
krd| j| j< g | _dS d S )NZsilentTendr   r   do_F)Z	parselinerH   rJ   r   rF   r   ro   AttributeErrorr   r   commands_resumingrG   )r-   r   r5   argZcmdlistfuncr   r   r   r     s,    
zPdb.handle_command_defc             C   s   t || jd d S )N)file)printrM   )r-   msgr   r   r   rO     s    zPdb.messagec             C   s   t d|| jd d S )Nz***)r   )r   rM   )r-   r   r   r   r   r     s    z	Pdb.errorc             C   s   |  drg S y| ||||}W n tk
r>   g }Y nX t|d }xP|D ]H}tj|rt||d  qTtj	|rT|
 drT||d  qTW |S )N):,*/)z.pyz.pywr   )rd   endswith_complete_expression	ExceptionglobrB   rC   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                s.   g | ]&\}}|d k	rt | 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 dkrd y0| d  }x dd D ]}t||}qPW W n ttfk
r|   g S X d	 d d d  fddt
|D S fdd| D S d S )N.r   r   ru   c                s"   g | ]}|  d  r| qS )ru   )r   )r   n)dottedr}   r   r   r     s    z,Pdb._complete_expression.<locals>.<listcomp>c                s   g | ]}|  r|qS r   )r   )r   r   )r   r   r   r     s    )rW   r!   copyupdater]   r   ro   KeyErrorr   r   dirkeys)r-   r   r   r   r   nsr#   partr   )r   r}   r   r   r     s    
zPdb._complete_expressionc             C   s(  |st tjjd }n"yt|}W n   | d d S || _|| jkrf| j| | j| | j	| f}nd }g | j|< d| j|< d| j	|< | j
}d| _
d| _zzy|   W nh tk
r   |r|d | j|< |d | j|< |d | j	|< n| j|= | j|= | j	|= | d Y nX W d d| _|| _
X d S )	Nr   z.Usage: commands [bnum]
        ...
        endTFz(com) r   r   z1command definition aborted, old commands restored)lenr2   r   r   intr   rJ   rF   rG   rH   r7   rI   r   rN   )r-   r   ZbnumZold_command_defsZprompt_backr   r   r   do_commands  s@    %




zPdb.do_commandsr   c          
   C   s@  |s<| j r8| d x"tjjD ]}|r| |  qW d S d }d }d }|d}|dkr~||d d   }|d |  }|	d}d }	|dkr|d |  }| 
|}
|
s| d|  d S |
}||d d   }yt|}W n$ tk
r   | d|  d S X nyt|}W n tk
r   yt|| jj| j}W n   |}Y nX y.t|drl|j}|j}|j}	|j}|j}W n@   | |\}}}|s| d	|  d S |}	t|}Y nX Y nX |s|  }| ||}|r<| |||||	}|r| | n*| ||d
 }| 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.ru   zBreakpoint %d at %s:%d) breaksrO   r2   r   r   Zbpformatr   r   r   rfindlookupmoduler   r   
ValueErrorevalrW   r!   r]   hasattrr   __code__co_nameco_firstlinenorj   lineinfodefaultFile	checklineZ	set_break
get_breaksnumberr   r   )r-   r   Z	temporaryr   r   r   condZcommaZcolonr   r_   r   r)   okZlnr   errr   r   r   do_breakR  s~    






zPdb.do_breakc             C   s"   | j jj}|dkr| jr| j}|S )Nz<string>)rW   rZ   rj   r:   )r-   r   r   r   r   r     s    
zPdb.defaultFilec             C   s   |  |d d S )Nr   )r   )r-   r   r   r   r   	do_tbreak  s    zPdb.do_tbreakc       
      C   s   d}| d}t|dkr(|d  }nt|dkrB|d  }n|S |dkrR|S | d}|d dkr~|d= t|dkr~|S |  }t|dkr|d }n| |d }|r|}|d }t||}	|	p|S )	N)NNN'r   r      r1   r   r-   )r   r   rd   r   r   r   )
r-   Z
identifierZfailedZidstringidpartsZfnameitemr_   Zanswerr   r   r   r     s.    
 


zPdb.lineinfoc             C   s   t | dr| jjnd }t|||}|s6| d dS | }|rn|d dksn|d d dksn|d d dkr|| d dS |S )	NrW   zEnd of filer   rb   r   z"""z'''zBlank or comment)r   rW   r!   	linecachegetlinerO   rd   r   )r-   r   r   r   r   r   r   r   r     s    
 
zPdb.checklinec             C   sl   |  }x^|D ]V}y| |}W n, tk
rL } z| | W d d }~X Y qX |  | d|  qW d S )Nz
Enabled %s)r   get_bpbynumberr   r   enablerO   )r-   r   r   r*   r   r   r   r   r   	do_enable  s    
zPdb.do_enablec             C   sl   |  }x^|D ]V}y| |}W n, tk
rL } z| | W d d }~X Y qX |  | d|  qW d S )NzDisabled %s)r   r   r   r   disablerO   )r-   r   r   r*   r   r   r   r   r   
do_disable  s    
zPdb.do_disablec          
   C   s   | dd}y|d }W n tk
r0   d }Y nX y| |d  }W nH tk
rf   | d Y nX tk
r } z| | W d d }~X Y n.X ||_|s| d|j  n| 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   rd   r   r   r   rO   r   )r-   r   r   r   r   r   r   r   r   do_condition  s    
zPdb.do_conditionc          
   C   s   |  }yt|d  }W n   d}Y nX y| |d  }W nH tk
rb   | d Y nv tk
r } z| | W d d }~X Y nLX ||_|dkr|dkrd| }nd}| d||j	f  n| 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   rd   r   r   r   r   ignorerO   r   )r-   r   r   countr   r   Zcountstrr   r   r   	do_ignore:  s(    	

zPdb.do_ignorec       
      C   s  |sxyt d}W n tk
r(   d}Y nX |  }|dkrtdd tjjD }|   x|D ]}| d|  q^W d S d|kr|	d}|d | }||d d  }yt
|}W n tk
r   d	| }Y nX | ||}| ||}|r| | nx|D ]}| d|  q W d S | }	xd|	D ]\}y| |}W n. tk
rj } z| | W d d }~X Y nX | | | d|  q*W d S )
NzClear all breaks? no)yZyesc             S   s   g | ]}|r|qS r   r   )r   r   r   r   r   r   k  s    z Pdb.do_clear.<locals>.<listcomp>z
Deleted %sr   r   zInvalid line number (%s))inputEOFErrorrd   r   r2   r   r   Zclear_all_breaksrO   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   |    d S )N)print_stack_trace)r-   r   r   r   r   do_where  s    zPdb.do_wherec             C   s>   || _ | j| j  d | _| jj| _| | j| j   d | _d S )Nr   )rV   rU   rW   r"   r]   rq   r   )r-   r   r   r   r   _select_frame  s
    
zPdb._select_framec             C   sx   | j dkr| d d S yt|p"d}W n" tk
rJ   | d|  d S X |dk rZd}ntd| j | }| | d S )Nr   zOldest framer   zInvalid frame count (%s))rV   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"| d d S yt|p,d}W n" tk
rT   | d|  d S X |dk rnt| jd }ntt| jd | j | }| | d S )Nr   zNewest framezInvalid frame count (%s)r   )rV   r   rU   r   r   r   minr   )r-   r   r   r  r   r   r   do_down  s    
zPdb.do_downc             C   sf   |rPyt |}W n" tk
r2   | d|  d S X || jjkrT| d d S nd }| | j| dS )NzError in argument: %rz7"until" line number is smaller than current line numberr   )r   r   r   rW   rk   Z	set_until)r-   r   r   r   r   r   do_until  s    
zPdb.do_untilc             C   s   |    dS )Nr   )rP   )r-   r   r   r   r   do_step  s    zPdb.do_stepc             C   s   |  | j dS )Nr   )Zset_nextrW   )r-   r   r   r   r   do_next  s    zPdb.do_nextc             C   s<   |r4dd l }tjdd }||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 dS )Nr   )Z
set_returnrW   )r-   r   r   r   r   	do_return  s    zPdb.do_returnc             C   s>   | j s2yttj| jt_W n tk
r0   Y nX |   dS )Nr   )r@   r   r   rR   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"| d d S yt|}W n tk
rL   | d Y nnX y:|| j_| j| j  d |f| j| j < | | j| j   W n0 tk
r } z| d|  W d d }~X Y nX d S )Nr   z)You can only jump within the bottom framez)The 'jump' command requires a line numberr   zJump failed: %s)	rV   r   rU   r   r   r   rW   rk   rq   )r-   r   er   r   r   do_jump   s    
zPdb.do_jumpc             C   s   t d  | jj}| j}t| j| j| j}d| j	
  |_	| d yt |j|||f W n< tk
r   t  d d }| tj| d 
  Y nX | d t | j |j| _d S )Nz(%s) zENTERING RECURSIVE DEBUGGERr   ru   zLEAVING RECURSIVE DEBUGGER)r   settracerW   r!   r]   r
   rK   rL   rM   r7   rd   rO   call_tracingr   r   ry   r   rw   rx   Ztrace_dispatchrp   )r-   r   r   r   pry   r   r   r   do_debug=  s    


zPdb.do_debugc             C   s   d| _ |   dS )NTr   )_user_requested_quitset_quit)r-   r   r   r   r   do_quitT  s    zPdb.do_quitc             C   s   |  d d| _|   dS )Nr1   Tr   )rO   r  r  )r-   r   r   r   r   do_EOF_  s    
z
Pdb.do_EOFc             C   s   | j j}| j}|j|j }|jtj@ r.|d }|jtj@ rB|d }xJt	|D ]>}|j
| }||krz| d||| f  qL| d|f  qLW d S )Nr   z%s = %rz%s = *** undefined ***)rW   rZ   r]   co_argcountco_kwonlyargcountco_flagsr    Z
CO_VARARGSZCO_VARKEYWORDSrangeco_varnamesrO   )r-   r   codictr   r*   namer   r   r   do_argsh  s      
zPdb.do_argsc             C   s.   d| j kr | t| j d  n
| d d S )Nrs   zNot yet returned!)r]   rO   r   r   )r-   r   r   r   r   	do_retvaly  s    
zPdb.do_retvalc             C   sN   yt || jj| jS    t d d }| tj| d 	   Y nX d S )Nr   ru   )
r   rW   r!   r]   r   ry   r   rw   rx   rd   )r-   r   ry   r   r   r   _getval  s    zPdb._getvalc             C   sh   y.|d krt || jj| jS t ||j|jS W n4   t d d }tj| d 	 }t
d| S d S )Nr   ru   z** raised %s **)r   rW   r!   r]   r"   r   ry   rw   rx   rd   r,   )r-   r   rQ   ry   r   r   r   r   r     s    zPdb._getval_exceptc             C   s*   y|  t| | W n   Y nX d S )N)rO   r   r!  )r-   r   r   r   r   do_p  s    zPdb.do_pc             C   s,   y|  t| | W n   Y nX d S )N)rO   pprintZpformatr!  )r-   r   r   r   r   do_pp  s    z	Pdb.do_ppc             C   sd  d| _ d }|r|dkry^d|krX|d\}}t| }t| }||k rr|| }nt| }td|d }W q tk
r   | d|  d S X n0| jd ks|dkrtd| jj	d }n
| jd }|d kr|d }| jj
j}| |}yZt|| jj}| ||d | ||| j t|t|| _t||k rF| d W n tk
r^   Y nX d S )	Nr&   r   r   r      zError in argument: %r
   z[EOF])rp   r   r   rd   r   r   r   r   rW   rk   rZ   rj   get_file_breaksr   getlinesr!   _print_linesr  r   rO   rN   )r-   r   Zlastfirstr   	breaklistr$   r   r   r   do_list  s>    



zPdb.do_listc          
   C   sj   | j jj}| |}yt| j \}}W n, tk
rR } z| | d S d }~X Y nX | |||| j  d S )N)rW   rZ   rj   r'  r%   r   r   r)  )r-   r   r   r+  r$   r   r   r   r   r   do_longlist  s    


zPdb.do_longlistc          
   C   sl   y|  |}W n
   d S yt|\}}W n0 ttfk
rZ } z| | d S d }~X Y nX | || d S )N)r!  r%   r   	TypeErrorr   r)  )r-   r   r#   r$   r   r   r   r   r   	do_source  s    
zPdb.do_sourcer   c       
      C   s   |r|j }| j|d}nd }}xt||D ]|\}}t|d}	t|	dk rX|	d7 }	||krj|	d7 }	n|	d7 }	||kr|	d7 }	n||kr|	d7 }	| |	d |   q.W d S )	Nru   r      r   Bz->z>>	)	rk   r<   r   r   r   rjustr   rO   r   )
r-   r$   r   r   rQ   Zcurrent_linenoZ
exc_linenor   r   sr   r   r   r)    s     

zPdb._print_linesc             C   s   y|  |}W n
   d S d }y
|j}W n tk
r<   Y nX |rV| d|j  d S y|jj}W n tk
rv   Y nX |r| d|j  d S |jtkr| d|j|j	f  d S | t| d S )NzFunction %sz	Method %szClass %s.%s)
r!  r   r   rO   r   r   	__class__typer   r   )r-   r   valuer)   r   r   r   	do_whatis  s.    

zPdb.do_whatisc             C   sp   |s<|  d x\| j| ji  D ]}|  d|  q$W n0| |}|| j| ji |< |  d||f  d S )NzCurrently displaying:z%s: %rzdisplay %s: %r)rO   r9   r   rW   r   r   
setdefault)r-   r   r   valr   r   r   
do_display6  s    

zPdb.do_displayc             C   sT   |r@y| j | ji |= W qP tk
r<   | d|  Y qPX n| j | jd  d S )Nznot displaying %s)r9   r   rW   r   r   rc   )r-   r   r   r   r   do_undisplayI  s    zPdb.do_undisplayc                s    fdd| j | ji D S )Nc                s   g | ]}|  r|qS r   )r   )r   r  )r   r   r   r   Y  s    z*Pdb.complete_undisplay.<locals>.<listcomp>)r9   r   rW   )r-   r   r   r   r   r   )r   r   complete_undisplayX  s    zPdb.complete_undisplayc             C   s*   | j j }|| j tjd|d d S )Nz*interactive*)Zlocal)rW   r!   r   r   r]   r)   interact)r-   r   r   r   r   r   do_interact\  s    zPdb.do_interactc             C   s   |  }t|dkrLt| j }x$|D ]}| d|| j| f  q(W d S |d | jkrt|dkr| d|d | j|d  f  nd|dd  | j|d < d S )Nr   z%s = %sr   r   )r   r   sortedr8   r   rO   r   )r-   r   r   r   r   r   r   r   do_aliasf  s    
"zPdb.do_aliasc             C   s6   |  }t|dkrd S |d | jkr2| 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 | ]}|  r|qS r   )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   s8   yx| j D ]}| | q
W W n tk
r2   Y nX d S )N)rU   rq   rN   )r-   frame_linenor   r   r   r     s
    zPdb.print_stack_tracec             C   s6   |\}}|| j krd}nd}| || ||  d S )Nz> z  )rW   rO   Zformat_stack_entry)r-   rE  Zprompt_prefixrQ   r   r}   r   r   r   rq     s    
zPdb.print_stack_entryc             C   s   |st j| |S y<yt| d| }| S  tk
rJ   t| d| }Y nX W n" tk
rp   | d|  Y n0X tjjdkr| d|  d S | 	|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_helpro   r   r   r   flagsoptimizerO   __doc__r   )r-   r   ZtopicZcommandr   r   r   rF    s    zPdb.do_helpc             C   s   |  | jjpd  d S )Nr1   )rO   	help_execrI  rd   )r-   r   r   r   rJ    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|rt j|r|S t jtjd |}t j|rP| || jkrP|S t j|\}}|dkrp|d }t j|r|S xHtjD ]>}xt j	|rt 
|}qW t j||}t j|r|S qW d S )Nr   r1   z.py)rB   rC   isabsexistsr   r   ri   r:   splitextislinkreadlink)r-   r   r_   rootZextdirnamefullnamer   r   r   r     s"    zPdb.lookupmodulec          	   C   sr   d| _ d| _dd l}||\}}}| |j| _dd l}|j	  |j
d| j|j|j|td | | d S )NTFr   __main__)r   __file____package__
__loader____spec____builtins__)r;   r  runpyZ_get_module_detailsri   rj   r:   rT  __dict__rX   r   parentloaderrY  r   )r-   Zmodule_namerZ  Zmod_nameZmod_specr)   rT  r   r   r   
_runmodule  s    

zPdb._runmodulec          	   C   st   dd l }|j  |jd|td d| _| || _d| _t	|d}d|
 | jf }W d Q R X | | d S )Nr   rT  )r   rU  rY  TFrbzexec(compile(%r, %r, 'exec')))rT  r[  rX   r   rY  r;   ri   r:   r  r   readr   )r-   r   rT  r   	statementr   r   r   
_runscript  s    

zPdb._runscript)r/   NNNFT)r   )N)r   N)wr   r   r   r   r4   rR   rS   rT   ra   r^   rh   rm   rl   rt   r~   rr   r   rg   r   r   r   re   r   rO   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_ppr,  Zdo_lr-  Zdo_llr/  Zcomplete_sourcer)  r8  Zcomplete_whatisr;  Zcomplete_displayr<  r=  r?  rA  rB  rD  r   r   line_prefixrq   rF  Zdo_hrJ  rK  r   r^  rb  r   r   r   r   r
      s    
-	
M
]!!.	
		1
!
#	
whereZdownZupbreakZtbreakrX   r   r   r   Z	conditionrF   stepr   ZuntilZjumpreturnZretvalcontinuer&   Zlonglistr   r  ppZwhatissourceZdisplayZ	undisplayr>  r   Zunaliasdebugquitr   z

c             C   s   t  | || d S )N)r
   r   )ra  r   r   r   r   r   r   7  s    c             C   s   t  | ||S )N)r
   r   )Z
expressionr   r   r   r   r   r   :  s    c             C   s   t | || d S )N)r   )ra  r   r   r   r   r   r   =  s    c              O   s   t  j| |S )N)r
   r   )r   kwdsr   r   r   r   A  s    )headerc             C   s,   t  }| d k	r||  |t j d S )N)r
   rO   r   r   	_getframef_back)rn  pdbr   r   r   r   D  s    
c             C   sB   | d krt  d } | d kr$tdt }|  |d |  d S )Nr   zAA valid traceback must be passed if no exception is being handled)r   ry   r   r
   rS   rg   )tr  r   r   r   r   L  s    c               C   s   t tj d S )N)r   r   last_tracebackr   r   r   r   r	   Z  s    zimport x; x.main()c               C   s   t t d S )N)r   TESTCMDr   r   r   r   testb  s    ru  c              C   s   dd l } | t d S )Nr   )pydocZpagerrI  )rv  r   r   r   r   f  s    a  usage: pdb.py [-c command] ... [-m module | pyfile] [arg] ...

Debug the Python program given by pyfile. Alternatively,
an executable module or package to debug can be specified using
the -m switch.

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   s
  dd l } |  tjdd  dddg\}}|s>tt td g }d}xJ|D ]B\}}|dkrntt t  qL|d	kr|| qL|d
krLd}qLW |d }|stj	|std|d td |tjd d < |stj
|tjd< t }|j| xy2|r|| n
|| |jr"P td W q tk
r`   td|d tdd|  Y q tk
r   tddd tt d  Y q tk
r   t  td Y q   t  td td t d }	|d |	 td| d  Y qX qW d S )Nr   r   zmhc:r   zcommand=r   F)z-hz--help)z-cz	--command)z-mTzError:zdoes not existz*The program finished and will be restartedZ
Restartingzwith arguments:r2  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)getoptr   r	  r   _usageexitr   rB   rC   rM  rR  r
   rA   rE   r^  rb  r  r   r   
SystemExitry   SyntaxErrorrw   	print_excrg   )
rw  Zoptsr   rF   Zrun_as_moduleoptZoptargr:   rq  rr  r   r   r   mainy  sb     



r~  rT  )NN)NN)N)-rB   r   r   r5   r2   r'   r)   r   r#  r   r    rw   r   r   r   __all__r   r%   r+   r   r,   rc  r3   r6   r
   rI  Z_help_orderZ_commandro   rd   rJ  r   r   r   r   r   r   r	   rt  ru  r   rx  r~  r   rq  r   r   r   r   <module>F   sr   		           '

"


C
