a
    "h:                     @   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   s@   |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   +/opt/python-3.9.21/usr/lib/python3.9/cmd.py__init__L   s    zCmd.__init__c                 C   s  |    | jrZ| jrZz2dd l}| | _|| j || jd  W n t	yX   Y n0 z|d url|| _
| j
r| jt| j
d  d }|s2| jr| jd}nj| jrzt| j}W n ty   d}Y n0 n<| j| j | j  | j }t|sd}n
|d}| |}| |}| ||}q|   W | jr| jrzdd l}|| j W n t	yx   Y n0 n@| jr| jrzdd l}|| j W n t	y   Y n0 0 d S )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   sZ    







zCmd.cmdloopc                 C   s   |S r   r   r   r)   r   r   r   r$      s    z
Cmd.precmdc                 C   s   |S r   r   )r   r(   r)   r   r   r   r&      s    zCmd.postcmdc                 C   s   d S r   r   r   r   r   r   r      s    zCmd.preloopc                 C   s   d S r   r   r,   r   r   r   r'      s    zCmd.postloopc                 C   s   |  }|sd d |fS |d dkr4d|dd   }n2|d dkrft| dr\d|dd   }n
d d |fS dt| }}||k r|| | jv r|d }qt|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    


 zCmd.parselinec                 C   s   |  |\}}}|s|  S |d u r.| |S || _|dkrBd| _|dkrT| |S zt| d| }W n ty   | | Y S 0 ||S d S )Nr   r   do_)r6   	emptylinedefaultlastcmdgetattrAttributeError)r   r)   r4   r5   funcr   r   r   r%      s    


z
Cmd.onecmdc                 C   s   | j r| | j S d S r   )r:   r%   r,   r   r   r   r8      s    zCmd.emptylinec                 C   s   | j d|  d S )Nz*** Unknown syntax: %s
)r   r   r+   r   r   r   r9      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 )Nr7   c                    s"   g | ]}|  r|d d qS )   N
startswith.0aZdotextr   r   
<listcomp>       z%Cmd.completenames.<locals>.<listcomp>)	get_names)r   textr>   r   rF   r   completenames   s    zCmd.completenamesc                 C   s   |dkrdd l }| }| }t|t| }| | }| | }|dkr| |\}	}
}|	dkrp| j}qzt| d|	 }W q t	y   | j}Y q0 n| j
}|||||| _z| j| W S  ty   Y d S 0 d S )Nr   r   Z	complete_)r   Zget_line_bufferlstripr"   Z
get_begidxZ
get_endidxr6   r?   r;   r<   rK   Zcompletion_matches
IndexError)r   rJ   stater   Zorigliner)   strippedZbegidxZendidxr4   argsZfooZcompfuncr   r   r   r      s*    zCmd.completec                 C   s
   t | jS r   )dir	__class__r,   r   r   r   rI     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      NrA   rC   rP   r   r   	<genexpr>   s   z$Cmd.complete_help.<locals>.<genexpr>)setrK   rI   list)r   rP   commandsZtopicsr   rU   r   complete_help  s    zCmd.complete_helpc                 C   s  |rzt | d| }W nx ty   z4t | d| j}|rV| jdt|  W Y d S W n tyj   Y n0 | jdt| j|f   Y d S 0 |  n|  }g }g }i }|D ]$}|d d dkrd||dd  < q|  d}	|D ]p}|d d dkr||	krq|}	|dd  }
|
|v r4|	|
 ||
= qt | |jrN|	|
 q|	|
 q| jdt| j
  | | j|dd	 | | jt| dd	 | | j|dd	 d S )
NrS   r7   %s
rT   r   r   r@      P   )r;   r<   __doc__r   r   r   nohelprI   sortappend
doc_leaderprint_topics
doc_headermisc_headerrX   keysundoc_header)r   r5   r=   docnamesZcmds_docZ
cmds_undochelpnameZprevnamer4   r   r   r   do_help$  sN    



zCmd.do_helpc                 C   s\   |rX| j dt|  | jr<| j dt| jt|   | ||d  | j d d S )Nr[   r   r   )r   r   r   rulerr"   	columnize)r   headerZcmdsZcmdlenZmaxcolr   r   r   rc   R  s    zCmd.print_topicsr]   c                    s   s| j d d S  fddtt D }|rJtddtt| t }|dkrv| j dt d   d S tdt D ]}|| d | }g }d	}t|D ]h}	d}
t|D ]2}|||	  }||kr q | }t|
t|}
q|	|
 ||
d
 7 }||kr qq||kr q4qt }d}dg}t|D ]}g }t|D ]4}	|||	  }||krld}n | }|	| qL|r|d s|d= qtt|D ]}	||	 
||	 ||	< q| j dtd|  q<d S )Nz<empty>
c                    s   g | ]}t  | ts|qS r   )
isinstancer   )rD   r2   rX   r   r   rG   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   maxra   ljust)r   rX   ZdisplaywidthZ
nonstringssizeZnrowsZncolsZ	colwidthsZtotwidthcolZcolwidthrowr2   xZtextsr   rq   r   rn   Z  s\    


zCmd.columnize)r   NN)N)r]   )"__name__
__module____qualname__PROMPTr   
IDENTCHARSr1   rm   r:   r   rb   rd   re   rg   r_   r   r   r*   r$   r&   r   r'   r6   r%   r8   r9   r?   rK   r   rI   rZ   rl   rc   rn   r   r   r   r   r   4   s:   

4
		.)stringr
   __all__r   ascii_lettersdigitsr   r   r   r   r   r   <module>-   s   