ÿØÿà 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
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     a
    XC?h                     @   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d dlZd dlZG dd deZg d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urg dZeD ] Zeeede j d 7 Zqeej j7 Z[[d+ddZ!d,ddZ"dd Z#dd Z$ddddZ%d-ddZ&d d! Z'd"Z(d#d$ Z)d%d& Z*d'Z+d(d) Z,e-d*krd dl.Z.e.,  dS ).    Nc                   @   s   e Zd ZdS )RestartN)__name__
__module____qualname__ r   r   (/opt/alt/python39/lib64/python3.9/pdb.pyr   W   s   r   )	runpmPdbrunevalrunctxruncall	set_tracepost_mortemhelpc                 C   s   t dt |  }zt|}W n ty6   Y d S 0 |L t|ddD ].\}}||rJ| ||f  W  d    S qJW d    n1 s0    Y  d S )Nzdef\s+%s\s*[(]   )start)recompileescapetokenizeopenOSError	enumeratematch)funcnamefilenameZcrefplinenoliner   r   r   find_function^   s    
<r    c                 C   sX   t | \}}t | r,| j| ju 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   getsourcelinesk   s    
r'   c                 C   s8   t t| }|  |D ]\}}||kr|  S qdS Nr   )listdisZfindlinestartsreverse)codeZlastiZ
linestartsir   r   r   r   lasti2linenot   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   r3   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 ZWdtdu ZXdvdw ZYeZZeZ[eZ\dxdy Z]e]Z^dzd{ Z_e_Z`d|d} ZaeZbdddZcdd ZdeZedd ZfeZgdd Zhdd Zidd Zjdd Zkdd Zldd Zmg dZndd ZoepfddZqdd ZrerZsdd Ztdd Zudd Zvdd Zwdd ZxdS )r
   NtabFTc           	      C   sb  t jj| |d tj| ||| td |r6d| _d| _i | _	i | _
d| _d| _i | _zdd l}|d W n ty   Y n0 d| _|| _g | _|r@z@ttjd}| j| W d    n1 s0    Y  W n ty   Y n0 z:td	}| j| W d    n1 s0    Y  W n ty>   Y n0 i | _i | _i | _d| _d | _d S )
N)skipzpdb.Pdbr   z(Pdb)  Fz 	
`@#$%^&*()=+[{]}\|;:'",<>?z~/.pdbrcz.pdbrc)bdbBdb__init__cmdCmdsysauditZ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)	r2   completekeystdinstdoutr5   rG   ZreadrcrD   ZrcFiler   r   r   r9      sF    
.
0zPdb.__init__c                 C   s*   | j r
t| d |   | | d S )Nz-
Program interrupted. (Use 'cont' to resume).)rF   KeyboardInterruptmessageset_stepr   )r2   Zsignumframer   r   r   sigint_handler   s
    
zPdb.sigint_handlerc                 C   s   t j|  |   d S r0   )r7   r8   resetforgetr1   r   r   r   rZ      s    z	Pdb.resetc                 C   s&   d | _ g | _d| _d | _| j  d S r(   )r   stackcurindexcurframerC   clearr1   r   r   r   r[      s
    z
Pdb.forgetc                 C   sh   |    | ||\| _| _|rDt|jj|j}|| j|j< |j	}q| j| j d | _
| j
j| _|  S r(   )r[   Z	get_stackr\   r]   r.   tb_framef_codetb_lastirC   tb_nextr^   r$   curframe_localsexecRcLines)r2   ftbr   r   r   r   setup   s    
z	Pdb.setupc                 C   sd   | j s
d S | j }|  g | _ |r`|  }|r|d dkr| |r|  j t|7  _ dS qd S )Nr   #T)rH   r+   popstriponecmdreversed)r2   rH   r   r   r   r   re      s    
zPdb.execRcLinesc                 C   s.   | j r
d S | |r*| d | |d  d S )Nz--Call--)rB   Z	stop_hererV   interaction)r2   rX   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)rB   rA   canonicra   co_filenamef_linenobp_commandsrn   )r2   rX   r   r   r   	user_line   s    
zPdb.user_linec                 C   s   t | ddr| j| jv r| j}d| _| j}| |d  | j| D ]}| | q@|| _| j| sr| | j| j	  | j
| r|   |   d S dS )N	currentbpFr   r   )getattrru   rM   lastcmdrh   rl   rO   print_stack_entryr\   r]   rN   _cmdloopr[   )r2   rX   ru   Zlastcmd_backr   r   r   r   rs     s"    


zPdb.bp_commandsc                 C   s.   | j r
d S ||jd< | d | |d  d S )N
__return__z
--Return--)rB   r$   rV   rn   )r2   rX   Zreturn_valuer   r   r   user_return   s
    

zPdb.user_returnc                 C   sh   | j r
d S |\}}}||f|jd< |s2|tu r2dnd}| d|t||d  f  | || d S )NZ__exception__z	Internal r6   z%s%s)rB   r$   StopIterationrV   	tracebackformat_exception_onlyrk   rn   )r2   rX   exc_infoexc_type	exc_valueexc_tracebackprefixr   r   r   user_exception(  s    
zPdb.user_exceptionc                 C   s@   zd| _ |   d| _ W q<W q  ty8   | d Y q 0 q d S )NTFz--KeyboardInterrupt--)rF   cmdlooprU   rV   r1   r   r   r   ry   <  s    zPdb._cmdloopc                 C   s^   | j | j}|rZ| D ]>\}}| |}||ur||kr|||< | d|||f  qd S )Nzdisplay %s: %r  [old: %r])r@   getr^   items_getval_exceptrV   )r2   r@   exprZoldvalueZnewvaluer   r   r   preloopI  s    
zPdb.preloopc                 C   sr   t jr4zttjt j W n ty,   Y n0 d t _| ||rL|   d S | | j| j	  | 
  |   d S r0   )r
   _previous_sigint_handlersignalSIGINT
ValueErrorrh   r[   rx   r\   r]   ry   )r2   rX   r~   r   r   r   rn   V  s    zPdb.interactionc                 C   s   |d ur|  t| d S r0   )rV   repr)r2   r%   r   r   r   displayhookh  s    zPdb.displayhookc                 C   s   |d d dkr|dd  }| j }| jj}zvt|d dd}tj}tj}tj}z:| jt_| jt_| jt_t||| W |t_|t_|t_n|t_|t_|t_0 W n   | 	  Y n0 d S )Nr   !
z<stdin>Zsingle)
rd   r^   r#   r   r<   rT   rS   r   exec
_error_exc)r2   r   localsglobalsr,   Zsave_stdoutZ
save_stdinZsave_displayhookr   r   r   defaultp  s*    zPdb.defaultc                 C   s   |  s|S | }|d | jv r| j|d  }d}|dd  D ] }|dt| |}|d7 }q@|dd|dd  }| }q|d dkr|d}|dkr||d d   }| j	| |d | 
 }|S )	Nr   r   %z%* aliasz;;   )rk   splitr?   replacestrjoinfindlstripcmdqueueappendrstrip)r2   r   argsZiiZtmpArgZmarkernextr   r   r   precmd  s(    


z
Pdb.precmdc                 C   s"   | j stj| |S | |S d S r0   )rP   r:   r;   rl   handle_command_def)r2   r   r   r   r   rl     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
|| zt| d| }W n ty   | j}Y n0 |j	| j
v rd| j| j< g | _dS d S )NZsilentTendr   r   do_F)Z	parselinerO   rQ   r   rM   r   rv   AttributeErrorr   r   commands_resumingrN   )r2   r   r:   argZcmdlistfuncr   r   r   r     s,    
zPdb.handle_command_defc                 C   s   t || jd d S )NfileprintrT   r2   msgr   r   r   rV     s    zPdb.messagec                 C   s   t d|| jd d S )Nz***r   r   r   r   r   r   error  s    z	Pdb.errorc                 C   s   |  drg S z| ||||}W n ty<   g }Y n0 tt|d }|D ]H}tj|rv|	|d  qVtj
|rV| drV|	|d  qV|S )N):,*/).pyz.pywr   )rk   endswith_complete_expression	Exceptionglobr   rI   rJ   isdirr   isfilelower)r2   textr   begidxendidxZ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 urt | rt |qS r0   )r   
startswith).0r-   bpr   r   r   
<listcomp>  s   z*Pdb._complete_bpnumber.<locals>.<listcomp>)r   r7   
Breakpoint
bpbynumberr2   r   r   r   r   r   r   r   _complete_bpnumber  s    zPdb._complete_bpnumberc              	      s   | j s
g S i | j j| j}dv rd z,| d  } dd D ]}t||}qHW n ttfyt   g  Y S 0 d d d d  fddt|D S fdd|	 D S d S )N.r   r   r|   c                    s"   g | ]}|  d  r| qS )r|   r   r   n)dottedr   r   r   r         z,Pdb._complete_expression.<locals>.<listcomp>c                    s   g | ]}|  r|qS r   r   r   r   r   r   r     r   )
r^   r#   rd   r   rv   KeyErrorr   r   dirkeys)r2   r   r   r   r   nsr%   partr   )r   r   r   r   r     s    

zPdb._complete_expressionc                 C   s6  |st tjjd }n&zt|}W n   | d Y d S 0 || _|| jv rj| j| | j| | j	| f}nd }g | j|< d| j|< d| j	|< | j
}d| _
d| _zz|   W nf ty   |r|d | j|< |d | j|< |d | j	|< n| j|= | j|= | j	|= | d Y n0 W d| _|| _
nd| _|| _
0 d S )	Nr   z.Usage: commands [bnum]
        ...
        endTFz(com) r   r   z1command definition aborted, old commands restored)lenr7   r   r   intr   rQ   rM   rN   rO   r>   rP   r   rU   )r2   r   ZbnumZold_command_defsZprompt_backr   r   r   do_commands  sF    %




zPdb.do_commandsr   c              
   C   s>  |s8| j r4| d tjjD ]}|r| |  qd S d }d }d }|d}|dkrz||d d   }|d |  }|	d}d }	|dkr|d |  }| 
|}
|
s| d|  d S |
}||d d   }zt|}W n$ ty
   | d|  Y d S 0 nzt|}W n ty   zt|| jj| j}W n   |}Y n0 z.t|drf|j}|j}|j}	|j}|j}W nD   | |\}}}|s| d	|  Y Y d S |}	t|}Y n0 Y n0 |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.r|   zBreakpoint %d at %s:%d) breaksrV   r7   r   r   Zbpformatr   r   r   rfindlookupmoduler   r   r   evalr^   r#   rd   hasattrr   __code__co_nameco_firstlinenorq   lineinfodefaultFile	checklineZ	set_break
get_breaksnumberr   r   )r2   r   Z	temporaryr   r   r   condZcommaZcolonr   rf   r   r,   okZlnr   errr   r   r   do_breakW  s    







zPdb.do_breakc                 C   s"   | j jj}|dkr| jr| j}|S )Nz<string>)r^   ra   rq   rA   )r2   r   r   r   r   r     s    
zPdb.defaultFilec                 C   s   |  |d d S r!   )r   r2   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      r6   r   r2   )r   r   rk   r   r   r    )
r2   Z
identifierZfailedZidstringidpartsZfnameitemrf   Zanswerr   r   r   r     s,    



zPdb.lineinfoc                 C   s   t | dd }|r|jnd }t|||}|s:| d dS | }|rr|d dksr|d d dksr|d d dkr| d dS |S )	Nr^   zEnd of filer   ri   r   z"""z'''zBlank or comment)rv   r#   	linecachegetlinerV   rk   r   )r2   r   r   rX   r   r   r   r   r   r     s    

zPdb.checklinec                 C   sj   |  }|D ]X}z| |}W n. tyL } z| | W Y d }~qd }~0 0 |  | d|  qd S )Nz
Enabled %s)r   get_bpbynumberr   r   enablerV   r2   r   r   r-   r   r   r   r   r   	do_enable   s     zPdb.do_enablec                 C   sj   |  }|D ]X}z| |}W n. tyL } z| | W Y d }~qd }~0 0 |  | d|  qd S )NzDisabled %s)r   r   r   r   disablerV   r   r   r   r   
do_disable  s     zPdb.do_disablec              
   C   s   | dd}z|d }W n ty.   d }Y n0 z| |d  }W nH tyb   | d Y nZ ty } z| | W Y d }~n6d }~0 0 ||_|s| d|j  n| d|j  d S )Nr   r   r   Breakpoint number expectedz#Breakpoint %d is now unconditional.z$New condition set for breakpoint %d.)	r   
IndexErrorr   rk   r   r   r   rV   r   )r2   r   r   r   r   r   r   r   r   do_condition%  s    
 zPdb.do_conditionc              
   C   s   |  }zt|d  }W n   d}Y n0 z| |d  }W nH ty`   | d Y nx ty } z| | W Y d }~nTd }~0 0 ||_|dkr|dkrd| }nd}| d||j	f  n| d|j	  d S )Nr   r   r  z%d crossingsz
1 crossingz%Will ignore next %s of breakpoint %d.z-Will stop next time breakpoint %d is reached.)
r   r   rk   r   r  r   r   ignorerV   r   )r2   r   r   countr   r   Zcountstrr   r   r   	do_ignore@  s,    	
 
zPdb.do_ignorec           
      C   s  |srzt d}W n ty&   d}Y n0 |  }|dv rndd tjjD }|   |D ]}| d|  qZd S d|v r|	d}|d | }||d d  }zt
|}W n ty   d	| }Y n"0 | ||d d  }| ||}|r| | n|D ]}| d|  qd S | }	|	D ]^}z| |}W n0 tyd } z| | W Y d }~n"d }~0 0 | | | d|  q"d S )
NzClear all breaks? Zno)yZyesc                 S   s   g | ]}|r|qS r   r   )r   r   r   r   r   r   q  r   z Pdb.do_clear.<locals>.<listcomp>z
Deleted %sr   r   zInvalid line number (%s))inputEOFErrorrk   r   r7   r   r   Zclear_all_breaksrV   r   r   r   r   Zclear_breakr   r   r   Zclear_bpbynumber)
r2   r   ZreplyZbplistr   r-   r   r   r   Z
numberlistr   r   r   do_clearc  sF    


 
zPdb.do_clearc                 C   s   |    d S r0   )print_stack_tracer   r   r   r   do_where  s    zPdb.do_wherec                 C   s>   || _ | j| j  d | _| jj| _| | j| j   d | _d S r(   )r]   r\   r^   r$   rd   rx   r   )r2   r   r   r   r   _select_frame  s
    
zPdb._select_framec                 C   sx   | j dkr| d d S zt|p"d}W n" tyJ   | d|  Y d S 0 |dk rZd}ntd| j | }| | d S )Nr   zOldest framer   Invalid frame count (%s))r]   r   r   r   maxr  r2   r   r  Znewframer   r   r   do_up  s    

z	Pdb.do_upc                 C   s   | j d t| jkr"| d d S zt|p,d}W n" tyT   | d|  Y d S 0 |dk rnt| jd }ntt| jd | j | }| | d S )Nr   zNewest framer  r   )r]   r   r\   r   r   r   minr  r  r   r   r   do_down  s    
zPdb.do_downc                 C   sf   |rPzt |}W n" ty2   | d|  Y d S 0 || jjkrT| d d S nd }| | j| dS )NError in argument: %rz7"until" line number is smaller than current line numberr   )r   r   r   r^   rr   Z	set_until)r2   r   r   r   r   r   do_until  s    
zPdb.do_untilc                 C   s   |    dS r!   )rW   r   r   r   r   do_step  s    zPdb.do_stepc                 C   s   |  | j dS r!   )Zset_nextr^   r   r   r   r   do_next  s    zPdb.do_nextc              
   C   sz   |rrdd l }tjdd }z||t_W n8 tyb } z | d||f  W Y d }~d S d }~0 0 |tjd d< td S )Nr   r   zCannot run %s: %s)shlexr<   argvr   r   r   r   )r2   r   r  Zargv0er   r   r   do_run  s    z
Pdb.do_runc                 C   s   |  | j dS r!   )Z
set_returnr^   r   r   r   r   	do_return  s    zPdb.do_returnc                 C   s<   | j s0zttj| jt_W n ty.   Y n0 |   dS r!   )rG   r   r   rY   r
   r   r   Zset_continuer   r   r   r   do_continue  s    zPdb.do_continuec              
   C   s   | j d t| jkr"| d d S zt|}W n tyJ   | d Y np0 z:|| j_| j| j  d |f| j| j < | | j| j   W n2 ty } z| d|  W Y d }~n
d }~0 0 d S )Nr   z)You can only jump within the bottom framez)The 'jump' command requires a line numberr   zJump failed: %s)	r]   r   r\   r   r   r   r^   rr   rx   )r2   r   r  r   r   r   do_jump*  s    
zPdb.do_jumpc                 C   s   t d  | jj}| j}t| j| j| j}d| j	
  |_	| d zt |j|||f W n tyv   |   Y n0 | d t | j |j| _d S )Nz(%s) zENTERING RECURSIVE DEBUGGERzLEAVING RECURSIVE DEBUGGER)r<   settracer^   r#   rd   r
   rR   rS   rT   r>   rk   rV   call_tracingr   r   r   Ztrace_dispatchrw   )r2   r   r   r   pr   r   r   do_debugG  s    


zPdb.do_debugc                 C   s   d| _ |   dS )NTr   )_user_requested_quitset_quitr   r   r   r   do_quit]  s    zPdb.do_quitc                 C   s   |  d d| _|   dS )Nr6   Tr   )rV   r#  r$  r   r   r   r   do_EOFh  s    
z
Pdb.do_EOFc                 C   s   | j j}| j}|j|j }|jtj@ r.|d }|jtj@ rB|d }t	|D ]>}|j
| }||v rx| d||| f  qJ| d|f  qJd S )Nr   z%s = %rz%s = *** undefined ***)r^   ra   rd   co_argcountco_kwonlyargcountco_flagsr"   Z
CO_VARARGSZCO_VARKEYWORDSrangeco_varnamesrV   )r2   r   codictr   r-   namer   r   r   do_argsq  s    
zPdb.do_argsc                 C   s.   d| j v r | t| j d  n
| d d S )Nrz   zNot yet returned!)rd   rV   r   r   r   r   r   r   	do_retval  s    
zPdb.do_retvalc                 C   s0   zt || jj| jW S    |    Y n0 d S r0   )r   r^   r#   rd   r   r   r   r   r   _getval  s
    zPdb._getvalc                 C   sr   z2|d u rt || jj| jW S t ||j|jW S W n:   t d d }tj| d 	 }t
d|  Y S 0 d S )Nr   r|   z** raised %s **)r   r^   r#   rd   r$   r<   r   r~   r   rk   r/   )r2   r   rX   r   r   r   r   r   r     s    zPdb._getval_exceptc                 C   s,   t  d d }| tj| d   d S )Nr   r|   )r<   r   r   r~   r   rk   )r2   r   r   r   r   r     s    zPdb._error_excc                 C   sJ   z|  |}W n   Y d S 0 z| || W n   |   Y n0 d S r0   )r1  rV   r   )r2   r   r   valr   r   r   _msg_val_func  s    zPdb._msg_val_funcc                 C   s   |  |t d S r0   )r3  r   r   r   r   r   do_p  s    zPdb.do_pc                 C   s   |  |tj d S r0   )r3  pprintZpformatr   r   r   r   do_pp  s    z	Pdb.do_ppc                 C   sb  d| _ d }|r|dkrz^d|v rX|d\}}t| }t| }||k rr|| }nt| }td|d }W q ty   | d|  Y d S 0 n0| jd u s|dkrtd| jj	d }n
| jd }|d u r|d }| jj
j}| |}zZt|| jj}| ||d | ||| j t|t|| _t||k rF| d W n ty\   Y n0 d S )	Nr)   r   r   r      r  
   z[EOF])rw   r   r   rk   r  r   r   r   r^   rr   ra   rq   get_file_breaksr   getlinesr#   _print_linesr  r   rV   rU   )r2   r   Zlastfirstr   	breaklistr&   r   r   r   do_list  s@    




zPdb.do_listc              
   C   sn   | j jj}| |}zt| j \}}W n0 tyV } z| | W Y d }~d S d }~0 0 | |||| j  d S r0   )r^   ra   rq   r9  r'   r   r   r;  )r2   r   r   r=  r&   r   r   r   r   r   do_longlist  s    


zPdb.do_longlistc              
   C   st   z|  |}W n   Y d S 0 zt|\}}W n4 ttfyb } z| | W Y d }~d S d }~0 0 | || d S r0   )r1  r'   r   	TypeErrorr   r;  )r2   r   r%   r&   r   r   r   r   r   	do_source  s    
zPdb.do_sourcer   c           
      C   s   |r|j }| j|d}nd }}t||D ]|\}}t|d}	t|	dk rV|	d7 }	||v rh|	d7 }	n|	d7 }	||kr|	d7 }	n||kr|	d7 }	| |	d |   q,d S )	Nr|   r      r   Bz->z>>	)	rr   rC   r   r   r   rjustr   rV   r   )
r2   r&   r   r   rX   Zcurrent_linenoZ
exc_linenor   r   sr   r   r   r;    s     

zPdb._print_linesc                 C   s   z|  |}W n   Y d S 0 d }z|jj}W n ty@   Y n0 |rZ| d|j  d S z
|j}W n tyv   Y n0 |r| d|j  d S |jtu r| d|j|j	f  d S | t| d S )Nz	Method %szFunction %szClass %s.%s)
r1  r   r   r   rV   r   	__class__typer   r   )r2   r   valuer,   r   r   r   	do_whatis#  s.    

zPdb.do_whatisc                 C   sl   |s8|  d | j| ji  D ]}|  d|  q"n0| |}|| j| ji |< |  d||f  d S )NzCurrently displaying:z%s: %rzdisplay %s: %r)rV   r@   r   r^   r   r   
setdefault)r2   r   r   r2  r   r   r   
do_displayF  s    

zPdb.do_displayc                 C   sR   |r>z| j | ji |= W qN ty:   | d|  Y qN0 n| j | jd  d S )Nznot displaying %s)r@   r   r^   r   r   rj   r   r   r   r   do_undisplayY  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   i  s   
z*Pdb.complete_undisplay.<locals>.<listcomp>)r@   r   r^   r   r   r   r   complete_undisplayh  s    zPdb.complete_undisplayc                 C   s$   i | j j| j}tjd|d d S )Nz*interactive*)Zlocal)r^   r#   rd   r,   interact)r2   r   r   r   r   r   do_interactl  s    zPdb.do_interactc                 C   s   |  }t|dkrHt| j }|D ]}| d|| j| f  q&d S |d | jv rt|dkr| d|d | j|d  f  nd|dd  | j|d < d S )Nr   z%s = %sr   r   )r   r   sortedr?   r   rV   r   )r2   r   r   r   r   r   r   r   do_aliasu  s    "zPdb.do_aliasc                 C   s6   |  }t|dkrd S |d | jv r2| j|d = d S r(   )r   r   r?   )r2   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   ar   r   r   r     r   z(Pdb.complete_unalias.<locals>.<listcomp>)r?   r   r   r   r   complete_unalias  s    zPdb.complete_unalias)r  r  r  r  r%  r  c                 C   s2   z| j D ]}| | qW n ty,   Y n0 d S r0   )r\   rx   rU   )r2   frame_linenor   r   r   r    s
    
zPdb.print_stack_tracec                 C   s6   |\}}|| j u rd}nd}| || ||  d S )Nz> z  )r^   rV   Zformat_stack_entry)r2   rV  Zprompt_prefixrX   r   r   r   r   r   rx     s    

zPdb.print_stack_entryc                 C   s   |st j| |S z>zt| d| }| W W S  tyL   t| d| }Y n0 W n  typ   | d|  Y nL0 tjjdkr| d|  d S |j	d u 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 helpz&No help for %r; __doc__ string missing)r:   r;   do_helprv   r   r   r<   flagsoptimize__doc__rV   r   )r2   r   ZtopicZcommandr   r   r   rW    s&    

zPdb.do_helpc                 C   s   |  | jjpd  d S )Nr6   )rV   	help_execrZ  rk   r1   r   r   r   r[    s    
zPdb.help_execc                 C   s
   t   d S r0   )r   r1   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 tjD ]>}t j	|rt 
|}qt j||}t j|r|  S qd S )Nr   r6   r   )rI   rJ   isabsexistsr   r<   rp   rA   splitextislinkreadlink)r2   r   rf   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__)rB   r#  runpy_get_module_detailsrp   rq   rA   re  __dict__r_   updateparentloaderrj  r   )r2   Zmodule_namerk  Zmod_nameZmod_specr,   re  r   r   r   
_runmodule  s     
zPdb._runmodulec                 C   s   dd l }|j  |jd|td d| _| || _d| _t	
|"}d| | jf }W d    n1 sp0    Y  | | d S )Nr   re  )r   rf  rj  TFzexec(compile(%r, %r, 'exec')))re  rm  r_   rn  rj  rB   rp   rA   r#  io	open_codereadr   )r2   r   re  r   	statementr   r   r   
_runscript  s    

"zPdb._runscript)r4   NNNFT)r   )N)r   N)yr   r   r   r   r9   rY   rZ   r[   rh   re   ro   rt   rs   r{   r   ry   r   rn   r   r   r   rl   r   rV   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_ar0  Zdo_rvr1  r   r   r3  r4  r6  Zcomplete_printZ
complete_pZcomplete_ppr>  Zdo_lr?  Zdo_llrA  Zcomplete_sourcer;  rJ  Zcomplete_whatisrL  Zcomplete_displayrM  rN  rP  rR  rS  rU  r   r  line_prefixrx   rW  Zdo_hr[  r\  r   rq  rv  r   r   r   r   r
      s     
/	
M
]!!.	

1
!	#	r
   )"r   whereZdownZupbreakZtbreakr_   r   r   r  Z	conditionrM   stepr   ZuntilZjumpreturnZretvalr   continuer)   Zlonglistr   r!  ZppZwhatissourceZdisplayZ	undisplayrO  r   Zunaliasdebugquitr   z

c                 C   s   t  | || d S r0   )r
   r   ru  r   r   r   r   r   r   I  s    r   c                 C   s   t  | ||S r0   )r
   r   )Z
expressionr   r   r   r   r   r   L  s    r   c                 C   s   t | || d S r0   )r   r  r   r   r   r   O  s    r   c                  O   s   t  j| i |S r0   )r
   r   )r   kwdsr   r   r   r   S  s    r   )headerc                 C   s,   t  }| d ur||  |t j d S r0   )r
   rV   r   r<   	_getframef_back)r  pdbr   r   r   r   V  s    
r   c                 C   sB   | d u rt  d } | d u r$tdt }|  |d |  d S )Nr   zAA valid traceback must be passed if no exception is being handled)r<   r   r   r
   rZ   rn   )tr!  r   r   r   r   ^  s    r   c                   C   s   t tj d S r0   )r   r<   last_tracebackr   r   r   r   r	   l  s    r	   zimport x; x.main()c                   C   s   t t d S r0   )r   TESTCMDr   r   r   r   testt  s    r  c                  C   s   dd l } | t d S r(   )pydocZpagerrZ  )r  r   r   r   r   x  s    r   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   sX  dd l } |  tjdd  dddg\}}|s>tt td g }d}|D ]B\}}|dv rltt t  qJ|d	v r|| qJ|d
v rJd}qJ|d }|stj	|std|d td |rdd l
}z|| W n$ ty   t  td Y n0 |tjd d < |s.tj|}tj|tjd< t }	|	j| z6|rT|	| n
|	| |	jrlW qTtd W n ty   td|d tddtjdd    Y n ty   tddd tt d  Y np ty   t  td Y nL   t  td td t d }
|	d |
 td| d  Y n0 q@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:rD  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   rI   rJ   r^  rk  rl  r   r~   	print_excrealpathrc  r
   rH   rL   rq  rv  r#  r   r   
SystemExitr   SyntaxErrorrn   )r  Zoptsr   rM   Zrun_as_moduleoptZoptargrA   rk  r  r  r   r   r   main  sr     



 r  re  )NN)NN)N)/rI   rr  r   r<   r:   r7   r*   r,   r   r5  r   r"   r   r~   r   r   r   __all__r    r'   r.   r   r/   rw  r8   r;   r
   rZ  Z_help_orderZ_commandrv   rk   r[  r   r   r   r   r   r   r	   r  r  r   r  r  r   r  r   r   r   r   <module>F   sl   		           7



L
