ó
æNXc           @   sô   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m	 Z	 d d l
 m Z m Z d d l m Z e j d ƒ Z d	 „  Z d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   sE   
System command aliases.

Authors:

* Fernando Perez
* Brian Granger
iÿÿÿÿN(   t   Configurable(   t
   UsageError(   t   string_types(   t   Listt   Instance(   t   errors   ^(\s*)()(\S+)(.*$)c       	   C   sò   t  j d k r¸ d+ d, d- d. d/ d0 g }  t j j d ƒ rT d1 d2 d3 d4 d5 d6 g } nW t j j d ƒ sx t j j d ƒ r“ d7 d8 d9 d: d; d< g } n d= d> d? d@ dA dB g } |  | }  n6 t  j dC k rè dD dE dF dG dH dI dJ dK g }  n g  }  |  S(L   s1   Return list of shell aliases to auto-define.
    t   posixt   mkdirt   rmdirt   mvt   rmt   cpt   catt   linuxt   lss   ls -F --colort   lls   ls -F -o --colort   lfs   ls -F -o --color %l | grep ^-t   lks   ls -F -o --color %l | grep ^lt   ldirs   ls -F -o --color %l | grep /$t   lxs    ls -F -o --color %l | grep ^-..xt   openbsdt   netbsds   ls -Fs   ls -F -ls   ls -F -l %l | grep ^-s   ls -F -l %l | grep ^ls   ls -F -l %l | grep /$s   ls -F -l %l | grep ^-..xs   ls -F -Gs   ls -F -l -Gs   ls -F -l -G %l | grep ^-s   ls -F -l -G %l | grep ^ls   ls -F -G -l %l | grep /$s   ls -F -l -G %l | grep ^-..xt   ntt   doss   dir /ont   ddirs   dir /ad /ont   echot   rent   copy(   s   mkdirs   mkdir(   s   rmdirs   rmdir(   R	   R	   (   R
   R
   (   s   cps   cp(   s   cats   cat(   R   s   ls -F --color(   R   s   ls -F -o --color(   R   s   ls -F -o --color %l | grep ^-(   R   s   ls -F -o --color %l | grep ^l(   R   s   ls -F -o --color %l | grep /$(   R   s    ls -F -o --color %l | grep ^-..x(   R   s   ls -F(   R   s   ls -F -l(   R   s   ls -F -l %l | grep ^-(   R   s   ls -F -l %l | grep ^l(   R   s   ls -F -l %l | grep /$(   R   s   ls -F -l %l | grep ^-..x(   R   s   ls -F -G(   R   s   ls -F -l -G(   R   s   ls -F -l -G %l | grep ^-(   R   s   ls -F -l -G %l | grep ^l(   R   s   ls -F -G -l %l | grep /$(   R   s   ls -F -l -G %l | grep ^-..x(   s   nts   dos(   R   s   dir /on(   R   s   dir /ad /on(   R   s   dir /ad /on(   s   mkdirs   mkdir(   s   rmdirs   rmdir(   R   R   (   R   R   (   s   copys   copy(   t   ost   namet   syst   platformt
   startswith(   t   default_aliasest
   ls_aliases(    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyR!   )   s@    
		$	t
   AliasErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyR#   r   s   t   InvalidAliasErrorc           B   s   e  Z RS(    (   R$   R%   (    (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyR&   v   s   t   Aliasc           B   sM   e  Z d  Z d d d d d d h Z d „  Z d „  Z d	 „  Z d
 d „ Z RS(   s€   Callable object storing the details of one alias.

    Instances are registered as magic functions to allow use of aliases.
    t   cdt   popdt   pushdt   dhistt   aliast   unaliasc         C   s.   | |  _  | |  _ | |  _ |  j ƒ  |  _ d  S(   N(   t   shellR   t   cmdt   validatet   nargs(   t   selfR.   R   R/   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   __init__‚   s    			c         C   s   |  j  |  j k r( t d |  j  ƒ ‚ n  y |  j j j d |  j  } Wn t k
 rY n& Xt | t ƒ s t d |  j  ƒ ‚ n  t |  j	 t
 ƒ s§ t d |  j	 ƒ ‚ n  |  j	 j d ƒ |  j	 j d ƒ } | d k rü |  j	 j d ƒ d k rü t d	 ƒ ‚ n  | S(
   s7   Validate the alias, and return the number of arguments.s@   The name %s can't be aliased because it is a keyword or builtin.t   linesA   The name %s can't be aliased because it is another magic command.s*   An alias command must be a string, got: %rs   %ss   %%si    s   %lsE   The %s and %l specifiers are mutually exclusive in alias definitions.(   R   t	   blacklistR&   R.   t   magics_managert   magicst   KeyErrort
   isinstanceR'   R/   R   t   countt   find(   R2   t   callerR1   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyR0   ˆ   s"    "$c         C   s   d j  |  j |  j ƒ S(   Ns   <alias {} for {!r}>(   t   formatR   R/   (   R2   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   __repr__¢   s    t    c         C   s  |  j  } |  j } | j d ƒ d k rB | j d | ƒ } d } n  | d k r‹ | j d ƒ d k rx | j d d ƒ } n  d | | f } nt | j d  | ƒ } t | ƒ | k  rÔ t d |  j | t | ƒ f ƒ ‚ n  d | t	 | |  ƒ d	 j
 | | ƒ f } |  j j | ƒ d  S(
   Ns   %li    R?   s   %%si   s   %ss   %s %ss+   Alias <%s> requires %s arguments, %s given.t    (   R/   R1   R;   t   replacet   splitt   Nonet   lenR   R   t   tuplet   joinR.   t   system(   R2   t   restR/   R1   t   args(    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   __call__¥   s    			+(   R$   R%   t   __doc__R5   R3   R0   R>   RJ   (    (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyR'   y   s   			t   AliasManagerc           B   s§   e  Z e e ƒ  d  e ƒZ e d g  d  e ƒ Z e d d e ƒZ d d „ Z	 d „  Z
 e d „  ƒ Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z RS(   t   configt   default_values1   IPython.core.interactiveshell.InteractiveShellABCt
   allow_nonec         K   s@   t  t |  ƒ j d | |  |  j j j d |  _ |  j ƒ  d  S(   NR.   R4   (   t   superRL   R3   R.   R6   R7   t
   linemagicst   init_aliases(   R2   R.   t   kwargs(    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyR3   Æ   s    c         C   s5   x. |  j  |  j D] \ } } |  j | | ƒ q Wd  S(   N(   R!   t   user_aliasest   soft_define_alias(   R2   R   R/   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyRR   Ì   s    c         C   s>   g  |  j  j ƒ  D]* \ } } t | t ƒ r | | j f ^ q S(   N(   RQ   t   itemsR9   R'   R/   (   R2   t   nt   func(    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   aliasesÑ   s    c         C   s<   y |  j  | | ƒ Wn! t k
 r7 } t d | ƒ n Xd S(   s2   Define an alias, but don't raise on an AliasError.s   Invalid alias: %sN(   t   define_aliasR#   R   (   R2   R   R/   t   e(    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyRU   Ö   s    c         C   sA   t  d |  j d | d | ƒ } |  j j j | d d d | ƒd S(   sˆ   Define a new alias after validating it.

        This will raise an :exc:`AliasError` if there are validation
        problems.
        R.   R   R/   t
   magic_kindR4   t
   magic_nameN(   R'   R.   R6   t   register_function(   R2   R   R/   R<   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyRZ   Ý   s    c         C   s,   |  j  j | d ƒ } t | t ƒ r( | Sd S(   s9   Return an alias, or None if no alias by that name exists.N(   RQ   t   getRC   R9   R'   (   R2   R   t   aname(    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt	   get_aliasç   s    c         C   s   |  j  | ƒ d k	 S(   s?   Return whether or not a given name has been defined as an aliasN(   Ra   RC   (   R2   R   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   is_aliasì   s    c         C   s0   |  j  | ƒ r |  j | =n t d | ƒ ‚ d  S(   Ns   %s is not an alias(   Rb   RQ   t
   ValueError(   R2   R   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   undefine_aliasð   s    c         C   s+   x$ |  j  D] \ } } |  j | ƒ q
 Wd  S(   N(   RY   Rd   (   R2   R   R/   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   clear_aliasesö   s    c         C   s0   |  j  | ƒ } | r | j St d | ƒ ‚ d S(   s/   Retrieve the command to which an alias expands.s   %s is not an aliasN(   Ra   R/   Rc   (   R2   R   R<   (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   retrieve_aliasú   s    N(   R$   R%   R   R!   t   TrueRT   R   R.   RC   R3   RR   t   propertyRY   RU   RZ   Ra   Rb   Rd   Re   Rf   (    (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyRL   À   s   			
				(   RK   R   t   reR   t   traitlets.config.configurableR    t   IPython.core.errorR   t   IPython.utils.py3compatR   t	   traitletsR   R   t   IPython.utils.warnR   t   compilet   shell_line_splitR!   t	   ExceptionR#   R&   t   objectR'   RL   (    (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/core/alias.pyt   <module>	   s   	IG