o
    IAf:                     @   s>   	 d dl Z d dlZdgZdZe je j d ZG dd dZdS )    NCmdz(Cmd) _c                   @   s   e Zd Z	 eZeZdZdZdZ	dZ
dZdZdZdZdZd/d
dZd0d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 d1d-d.Z!dS )2r   = Nz(Documented commands (type help <topic>):zMiscellaneous help topics:zUndocumented commands:z*** No help on %s   tabc                 C   sB   	 |d ur	|| _ ntj | _ |d ur|| _ntj| _g | _|| _d S N)stdinsysstdoutcmdqueuecompletekey)selfr   r	   r    r   /usr/lib/python3.10/cmd.py__init__L   s   

zCmd.__init__c                 C   s  	 |    | jr.| jr.zdd l}| | _|| j || jd  W n	 t	y-   Y nw z|d ur6|| _
| j
rD| jt| j
d  d }|s| jrR| jd}n3| jrhzt| j}W n( tyg   d}Y nw | j| j | j  | j }t|sd}n|d}| |}| |}| ||}|rH|   W | jr| jrzdd l}|| j W d S  t	y   Y d S w d S d S | jr| jrzdd l}|| j W w  t	y   Y w w w w )Nr   z
: complete
EOFz
)preloopuse_rawinputr   readlineZget_completerZold_completerZset_completercompleteparse_and_bindImportErrorintror   writestrr   popinputpromptEOFErrorflushr	   lenrstripprecmdonecmdpostcmdpostloop)r   r   r   stopliner   r   r   cmdloopb   sh   






zCmd.cmdloopc                 C      	 |S r   r   r   r)   r   r   r   r$         z
Cmd.precmdc                 C   r+   r   r   )r   r(   r)   r   r   r   r&         zCmd.postcmdc                 C      	 d S r   r   r   r   r   r   r      r.   zCmd.preloopc                 C   r/   r   r   r0   r   r   r   r'      r-   zCmd.postloopc                 C   s   	 |  }|sd d |fS |d dkrd|dd   }n|d dkr4t| dr/d|dd   }nd d |fS dt|}}||k rU|| | jv rU|d }||k rU|| | jv sF|d | ||d    }}|||fS )Nr   ?zhelp r   !Zdo_shellzshell )striphasattrr"   
identchars)r   r)   incmdargr   r   r   	parseline   s   


4
zCmd.parselinec                 C   s   	 |  |\}}}|s|  S |d u r| |S || _|dkr"d| _|dkr+| |S zt| d| }W ||S  tyE   | | Y S w )Nr   r   do_)r:   	emptylinedefaultlastcmdgetattrAttributeError)r   r)   r8   r9   funcr   r   r   r%      s"   	

z
Cmd.onecmdc                 C   s   	 | j r
| | j S d S r   )r>   r%   r0   r   r   r   r<      s   zCmd.emptylinec                 C   s   	 | j d|  d S )Nz*** Unknown syntax: %s
)r   r   r,   r   r   r   r=      s   zCmd.defaultc                 G   s   	 g S r   r   )r   ignoredr   r   r   completedefault   s   zCmd.completedefaultc                    s   d|   fdd|   D S )Nr;   c                    s"   g | ]}|  r|d d qS )   N
startswith.0aZdotextr   r   
<listcomp>   s   " z%Cmd.completenames.<locals>.<listcomp>)	get_names)r   textrB   r   rJ   r   completenames   s   zCmd.completenamesc                 C   s   	 |dkrZdd l }| }| }t|t| }| | }| | }|dkrO| |\}	}
}|	dkr9| j}nz	t| d|	 }W n t	yN   | j}Y nw | j
}|||||| _z| j| W S  tyj   Y d S w )Nr   r   Z	complete_)r   Zget_line_bufferlstripr"   Z
get_begidxZ
get_endidxr:   rC   r?   r@   rN   Zcompletion_matches
IndexError)r   rM   stater   Zorigliner)   strippedZbegidxZendidxr8   argsZfooZcompfuncr   r   r   r      s0   
zCmd.completec                 C   s
   t | jS r   )dir	__class__r0   r   r   r   rL     s   
zCmd.get_namesc                    s4   t | j  }t  fdd|  D }t||B S )Nc                 3   s.    | ]}| d  d  r|dd V  qdS )help_r      NrE   rG   rS   r   r   	<genexpr>   s    z$Cmd.complete_help.<locals>.<genexpr>)setrN   rL   list)r   rS   commandsZtopicsr   rX   r   complete_help  s   zCmd.complete_helpc                 C   s  	 |rNz	t | d| }W n< tyH   zt | d| j}|r,| jdt|  W Y d S W n	 ty6   Y nw | jdt| j|f   Y d S w |  d S |  }g }g }i }|D ]}|d d dkrld||dd  < qZ|  d}	|D ]5}|d d dkr||	krqu|}	|dd  }
|
|v r|	|
 ||
= qut | |jr|	|
 qu|	|
 qu| jdt| j
  | | j|dd	 | | jt| dd	 | | j|dd	 d S )
NrV   r;   %s
rW   r   r   rD      P   )r?   r@   __doc__r   r   r   nohelprL   sortappend
doc_leaderprint_topics
doc_headermisc_headerr[   keysundoc_header)r   r9   rA   docnamesZcmds_docZ
cmds_undochelpnameZprevnamer8   r   r   r   do_help$  sZ   



zCmd.do_helpc                 C   s`   |r.| j dt|  | jr| j dt| jt|   | ||d  | j d d S d S )Nr^   r   r   )r   r   r   rulerr"   	columnize)r   headerZcmdsZcmdlenZmaxcolr   r   r   rf   R  s   zCmd.print_topicsr`   c                    s  	  s| j d d S  fddtt D }|r&tddtt| t }|dkr<| j dt d   d S tdt D ]L}|| d | }g }d	}t|D ]3}	d}
t|D ]}|||	  }||krk n | }t|
t|}
q]|	|
 ||
d
 7 }||kr nqU||kr n
qCt }d}dg}t|D ]Q}g }t|D ]}	|||	  }||krd}n | }|	| q|r|d s|d= |r|d rtt|D ]}	||	 
||	 ||	< q| j dtd|  qd S )Nz<empty>
c                    s   g | ]}t  | ts|qS r   )
isinstancer   )rH   r6   r[   r   r   rK   d  s    
z!Cmd.columnize.<locals>.<listcomp>z list[i] not a string for i in %sz, r   r^   r      r   z  )r   r   ranger"   	TypeErrorjoinmapr   maxrd   ljust)r   r[   ZdisplaywidthZ
nonstringssizeZnrowsZncolsZ	colwidthsZtotwidthcolZcolwidthrowr6   xZtextsr   rt   r   rq   Z  sf   
zCmd.columnize)r   NNr   )r`   )"__name__
__module____qualname__PROMPTr   
IDENTCHARSr5   rp   r>   r   re   rg   rh   rj   rb   r   r   r*   r$   r&   r   r'   r:   r%   r<   r=   rC   rN   r   rL   r]   ro   rf   rq   r   r   r   r   r   4   s>    

4
		.)stringr
   __all__r   ascii_lettersdigitsr   r   r   r   r   r   <module>   s    ,