
    ^h2'                         S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	J
r
  SSKJr  \R                  " S5      rS	 r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      rg)zE
System command aliases.

Authors:

* Fernando Perez
* Brian Granger
    N)Configurable   )
UsageError)ListInstance)errorz^(\s*)()(\S+)(.*$)c                  n   [         R                  S:X  a  / SQn [        R                  R	                  S5      (       a  / SQnOQ[        R                  R	                  S5      (       d$  [        R                  R	                  S5      (       a  / SQnO/ SQnX-   n U $ [         R                  S	;   a  / S
Qn U $ / n U $ )z1Return list of shell aliases to auto-define.
    posix)mkdirr   rmdirr   )mvr   )rmr   )cpr   )catr   linux))lszls -F --color)llzls -F -o --color)lfzls -F -o --color %l | grep ^-)lkzls -F -o --color %l | grep ^l)ldirzls -F -o --color %l | grep /$)lxz ls -F -o --color %l | grep ^-..xopenbsdnetbsd))r   zls -F)r   zls -F -l)r   zls -F -l %l | grep ^-)r   zls -F -l %l | grep ^l)r   zls -F -l %l | grep /$)r   zls -F -l %l | grep ^-..x))r   zls -F -G)r   zls -F -l -G)r   zls -F -l -G %l | grep ^-)r   zls -F -l -G %l | grep ^l)r   zls -F -G -l %l | grep /$)r   zls -F -l -G %l | grep ^-..x)ntdos))r   zdir /on)ddirdir /ad /on)r   r   r   r   )echor    )renr!   )copyr"   )osnamesysplatform
startswith)default_aliases
ls_aliasess     L/home/james-whalen/.local/lib/python3.13/site-packages/IPython/core/alias.pyr(   r(   (   s     
ww' <<""7++J \\$$Y//3<<3J3J83T3TJJ *6  
M	!      c                       \ rS rSrSrg)
AliasErrorq    N__name__
__module____qualname____firstlineno____static_attributes__r/   r+   r*   r-   r-   q       r+   r-   c                       \ rS rSrSrg)InvalidAliasErroru   r/   Nr0   r/   r+   r*   r8   r8   u   r6   r+   r8   c                   <    \ rS rSrSr1 SkrS rS rS rS
S jr	Sr
g	)Aliasx   zxCallable object storing the details of one alias.

Instances are registered as magic functions to allow use of aliases.
>   cdpopdaliasdhistpushdunaliasc                 ~    Xl         X l        X0l        SR                  U5      U l        U R                  5       U l        g )NzAlias for `!{}`)shellr$   cmdformat__doc__validatenargs)selfrD   r$   rE   s       r*   __init__Alias.__init__   s0    
	(//4]]_
r+   c                    U R                   U R                  ;   a  [        SU R                   -  5      e U R                  R                  R
                  S   U R                      n[        U[        5      (       d  [        SU R                   -  5      e [        U R                  [        5      (       d  [        SU R                  -  5      eU R                  R                  S5      U R                  R                  S5      -
  nUS:  a*  U R                  R                  S5      S:  a  [        S	5      eU$ ! [         a     Nf = f)
z7Validate the alias, and return the number of arguments.z@The name %s can't be aliased because it is a keyword or builtin.linezAThe name %s can't be aliased because it is another magic command.z*An alias command must be a string, got: %r%s%%sr   %lzEThe %s and %l specifiers are mutually exclusive in alias definitions.)r$   	blacklistr8   rD   magics_managermagics
isinstancer;   KeyErrorrE   strcountfind)rJ   callerrI   s      r*   rH   Alias.validate   s7   99&# %JLPII%V W W	\ZZ..55f=diiHF fe,,' )OQUQZQZ)[ \ \ - 488S))# %.04%9 : : t$txx~~e'<<AIDHHMM$/14# %F G G #  		s   0D2 2
D?>D?c                 N    SR                  U R                  U R                  5      $ )Nz<alias {} for {!r}>)rF   r$   rE   )rJ   s    r*   __repr__Alias.__repr__   s    $++DIItxx@@r+   c           
         U R                   nU R                  nUR                  S5      S:  a  UR                  SU5      nSnUS:X  a1  UR                  S5      S:  a  UR                  SS5      nU< SU< 3nOuUR	                  S U5      n[        U5      U:  a+  [        SU R                  < S	U< S
[        U5      < S35      eU[        US U 5      -  < SSR                  XCS  5      < 3nU R                  R                  U5        g )NrQ   r    rP   r   rO    zAlias <z> requires z arguments, z given.)rE   rI   rY   replacesplitlenr   r$   tuplejoinrD   system)rJ   restrE   rI   argss        r*   __call__Alias.__call__   s    hh

88D>Q++dD)CD!8xx!#kk%. $'C ::dE*D4y5  yy%T"4 5 5 5fu#66sxxV7MNC

#r+   )rG   rE   r$   rI   rD   N)r`   )r1   r2   r3   r4   rG   rR   rK   rH   r]   rj   r5   r/   r+   r*   r;   r;   x   s$     @I%4Ar+   r;   c                      ^  \ rS rSr\" \" 5       5      R                  SS9r\" / S9R                  SS9r\" SSS9r	SU 4S jjr
S r\S	 5       rS
 rS rS rS rS rS rS rSrU =r$ )AliasManager   T)config)default_valuez1IPython.core.interactiveshell.InteractiveShellABC)
allow_nonec                    > [         [        U ]
  " SSU0UD6  U R                  R                  R
                  S   U l        U R                  5         g )NrD   rN   r/   )superrm   rK   rD   rS   rT   
linemagicsinit_aliases)rJ   rD   kwargs	__class__s      r*   rK   AliasManager.__init__   sB    lD*AA&A**33::6Br+   c                     U R                   U R                  -    HX  u  pUR                  S5      (       a,  U R                  R                  S:X  a  UR                  SS5      nU R                  X5        MZ     g )Nzls NoColorz --colorr`   )r(   user_aliasesr'   rD   colorsrb   soft_define_aliasrJ   r$   rE   s      r*   ru   AliasManager.init_aliases   s^    --0A0AAID~~e$$):):i)Gkk*b1""4- Br+   c                     U R                   R                  5        VVs/ s H)  u  p[        U[        5      (       d  M  XR                  4PM+     snn$ s  snnf N)rt   itemsrU   r;   rE   )rJ   nfuncs      r*   aliasesAliasManager.aliases   sH    /3/D/D/F 8/F)1)$6 HH/F 8 	8 8s
   AAc                 r     U R                  X5        g! [         a  n[        SU-  5         SnAgSnAff = f)z2Define an alias, but don't raise on an AliasError.zInvalid alias: %sN)define_aliasr-   r   )rJ   r$   rE   es       r*   r}   AliasManager.soft_define_alias   s6    	+d( 	+%)**	+s    
616c                 v    [        U R                  XS9nU R                  R                  R                  USUS9  g)zpDefine a new alias after validating it.

This will raise an :exc:`AliasError` if there are validation
problems.
)rD   r$   rE   rN   )
magic_kind
magic_nameN)r;   rD   rS   register_function)rJ   r$   rE   rZ   s       r*   r   AliasManager.define_alias   s9     TZZd<

!!33Fv?C 	4 	Er+   c                 l    U R                   R                  US5      n[        U[        5      (       a  U$ S$ )z9Return an alias, or None if no alias by that name exists.N)rt   getrU   r;   )rJ   r$   anames      r*   	get_aliasAliasManager.get_alias   s/    ##D$/"5%00u:d:r+   c                 (    U R                  U5      SL$ )z?Return whether or not a given name has been defined as an aliasN)r   rJ   r$   s     r*   is_aliasAliasManager.is_alias   s    ~~d#4//r+   c                 f    U R                  U5      (       a  U R                  U	 g [        SU-  5      e)N%s is not an alias)r   rt   
ValueErrorr   s     r*   undefine_aliasAliasManager.undefine_alias   s.    ==%1D899r+   c                 P    U R                    H  u  pU R                  U5        M     g r   )r   r   r~   s      r*   clear_aliasesAliasManager.clear_aliases   s     ID% &r+   c                 f    U R                  U5      nU(       a  UR                  $ [        SU-  5      e)z/Retrieve the command to which an alias expands.r   )r   rE   r   )rJ   r$   rZ   s      r*   retrieve_aliasAliasManager.retrieve_alias   s.    %::1D899r+   )rt   r   )r1   r2   r3   r4   r   r(   tagr{   r   rD   rK   ru   propertyr   r}   r   r   r   r   r   r   r5   __classcell__)rw   s   @r*   rm   rm      s    ?,-111>Ob)--T-:LHUYZE. 8 8+E;
0:&: :r+   rm   )rG   r#   rer%   traitlets.config.configurabler   r   r   	traitletsr   r   loggingcompileshell_line_splitr(   	Exceptionr-   r8   objectr;   rm   r/   r+   r*   <module>r      so   * 
 	 
 6  $  ::34 FR	 		
 	BF BPB:< B:r+   