ó
æNXc           @   sø  d  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 m Z d d „ Z
 d d „ Z d d „ Z d d „ Z d d	 „ Z d
 „  Z d „  Z d „  Z e j e j Bd d „ Z e j d d k rÔe Z d d „ Z d Z d d l Z e
 Z e
 Z e Z e Z e
 Z  e
 Z! e
 Z" e# f Z$ e# Z% e j& Z& e' d „ Z( e) Z* d „  Z+ d „  Z, e j- Z- e j. Z. d d d „ Z/ e j0 d e j1 ƒ Z2 d „  Z3 e d „  ƒ Z4 e d „  ƒ Z5 d „  Z6 ne' Z d d „ Z d Z d d l7 Z e Z e Z e
 Z e
 Z e Z  e Z! e Z" e# e8 f Z$ e8 Z% d d l Z e j0 d ƒ Z9 e' d „ Z( e* Z* d  „  Z+ d! „  Z, e j: Z- d" „  Z. d# „  Z4 d$ „  Z6 e Z& e d% „  ƒ Z5 e j; d& k rÐd d d d' „ Z/ n d d d d( „ Z/ d) „  Z< d* „  Z= d S(+   s=   Compatibility tricks for Python 3. Mainly to do with unicode.iÿÿÿÿNi   (   t   DEFAULT_ENCODINGc         C   s   |  S(   N(    (   t   xt   encoding(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   no_code   s    c         C   s   | p	 t  } |  j | d ƒ S(   Nt   replace(   R    t   decode(   t   sR   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyR      s    c         C   s   | p	 t  } |  j | d ƒ S(   NR   (   R    t   encode(   t   uR   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyR      s    c         C   s    t  |  t ƒ r t |  | ƒ S|  S(   N(   t
   isinstancet   bytesR   (   R   R   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   cast_unicode   s    c         C   s    t  |  t ƒ s t |  | ƒ S|  S(   N(   R	   R
   R   (   R   R   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt
   cast_bytes   s    c         C   s6   t  |  t ƒ r |  j ƒ  St  |  t ƒ s2 t |  ƒ S|  S(   s+   Cast a buffer or memoryview object to bytes(   R	   t
   memoryviewt   tobytesR
   (   t   buf(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   buffer_to_bytes"   s
    

c            s"   t  j ˆ  ƒ ‡  f d †  ƒ } | S(   Nc            sP   t  |  t ƒ r d  } |  } n |  } | j } ˆ  | ƒ } | rL | | _ | S| S(   N(   R	   t   string_typest   Nonet   __doc__(   t   func_or_strt   funct   doc(   t   str_change_func(    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   wrapper+   s    			(   t	   functoolst   wraps(   R   R   (    (   R   sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   _modify_str_or_docstring*   s    c         C   sv   y t  |  ƒ SWn t k
 r! n Xy t t |  ƒ ƒ SWn t k
 rI n Xy t t |  ƒ ƒ SWn t k
 rq n Xd S(   sl   unicode(e) with various fallbacks. Used for exceptions, which may not be
    safe to call unicode() on.
    u   Unrecoverably corrupt evalue(   t   unicode_typet   UnicodeErrort   str_to_unicodet   strt   repr(   t   e(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   safe_unicode<   s    c            s   d „  } t  j j ˆ  ƒ r2 | ˆ  | ƒ r. ˆ  Sd S| d k rY t  j j d t  j ƒ } n  | sc d S| j t  j ƒ } t	 j
 d k rt  j | k r© | j d t  j ƒ n  t  j j d d ƒ j t  j ƒ } t ‡  f d †  | Dƒ ƒ rò ˆ  g } qg  | D] } ˆ  | ^ qù } n	 ˆ  g } t ƒ  } xu | D]m } t  j j | ƒ }	 |	 | k r+| j |	 ƒ x9 | D]. }
 t  j j | |
 ƒ } | | | ƒ rc| SqcWq+q+Wd S(	   sn  Given a command, mode, and a PATH string, return the path which
    conforms to the given mode on the PATH, or None if there is no such
    file.

    `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result
    of os.environ.get("PATH"), or can be overridden with a custom search
    path.
    
    This is a backport of shutil.which from Python 3.4
    c         S   s5   t  j j |  ƒ o4 t  j |  | ƒ o4 t  j j |  ƒ S(   N(   t   ost   patht   existst   accesst   isdir(   t   fnt   mode(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   _access_check`   s    $t   PATHt   win32i    t   PATHEXTt    c         3   s*   |  ]  } ˆ  j  ƒ  j | j  ƒ  ƒ Vq d  S(   N(   t   lowert   endswith(   t   .0t   ext(   t   cmd(    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pys	   <genexpr>}   s    N(   R#   R$   t   dirnameR   t   environt   gett   defpatht   splitt   pathsept   syst   platformt   curdirt   insertt   anyt   sett   normcaset   addt   join(   R3   R)   R$   R*   t   pathextt   filesR2   t   seent   dirt   normdirt   thefilet   name(    (   R3   sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   _shutil_whichR   s8    	! 		i    i   R.   c         C   s   t  j |  ƒ S(   N(   t   builtin_modt   input(   t   prompt(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRL   –   s    t   builtinsc         C   s-   | r# t  d „  |  j d ƒ Dƒ ƒ S|  j ƒ  S(   Nc         s   s   |  ] } t  | ƒ Vq d  S(   N(   t   isidentifier(   R1   t   a(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pys	   <genexpr>«   s    t   .(   t   allR8   RO   (   R   t   dotted(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRO   ©   s    c         C   s   t  |  j ƒ  ƒ S(   N(   t   itert   items(   t   d(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt	   iteritems¯   s    c         C   s   t  |  j ƒ  ƒ S(   N(   RT   t   values(   RV   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt
   itervalues°   s    c      	   B   sc   | d  k	 r | n | } e |  d ƒ 6 } | p3 e } | | j ƒ  |  d ƒ | | f d  UWd  QXd  S(   Nt   rbt   exec(   R   t   opent   compilet   read(   t   fnamet   globt   loct   compilert   f(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   execfileµ   s    s   \bprint (?P<expr>.*)$c         C   s   |  j  d ƒ } d | S(   Nt   exprs	   print(%s)(   t   groups(   t   matchRe   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   _print_statement_sub½   s    c         C   s   t  j t |  ƒ S(   sÏ   Refactor 'print x' statements in a doctest to print(x) style. 2to3
        unfortunately doesn't pick up on our doctests.
        
        Can accept a string or a function, so it can be used as a decorator.(   t   _print_statement_ret   subRh   (   R   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   doctest_refactor_printÁ   s    c         C   s   |  j  d d ƒ S(   st   "{u}'abc'" --> "'abc'" (Python 3)
        
        Accepts a string or a function, so it can be used as a decorator.R   R.   (   t   format(   R   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   u_formatÊ   s    c         C   s   |  j  S(   s"   Get a function's closure attribute(   t   __closure__(   Rc   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   get_closureÑ   s    c         C   s   t  j |  ƒ S(   N(   RK   t	   raw_input(   RM   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRL   Ú   s    t   __builtin__s   [a-zA-Z_][a-zA-Z0-9_]*$c         C   s6   | r# t  d „  |  j d ƒ Dƒ ƒ St t j |  ƒ ƒ S(   Nc         s   s   |  ] } t  | ƒ Vq d  S(   N(   RO   (   R1   RP   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pys	   <genexpr>ï   s    RQ   (   RR   R8   t   boolt   _name_reRg   (   R   RS   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRO   í   s    c         C   s
   |  j  ƒ  S(   N(   RW   (   RV   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRW   ó   s    c         C   s
   |  j  ƒ  S(   N(   RY   (   RV   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRY   ô   s    c         C   s   t  j |  | t | ƒ ƒ S(   N(   t   typest
   MethodTypet   type(   R   t   instance(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRu   ÷   s    c         C   s   |  S(   N(    (   R   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRk   ú   s    c         C   s   |  j  S(   s"   Get a function's closure attribute(   t   func_closure(   Rc   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRo   ý   s    c         C   s   |  j  d d ƒ S(   su   "{u}'abc'" --> "u'abc'" (Python 2)
        
        Accepts a string or a function, so it can be used as a decorator.R   (   Rl   (   R   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRm     s    R,   c         B   s‚   | d  k	 r | n | } e j |  ƒ j ƒ  d } e |  e ƒ rO e |  ƒ } n |  } | p^ e } | | | d ƒ | | f d  Ud  S(   Ns   
R[   (   R   RK   R\   R^   R	   t   unicodet   unicode_to_strR]   (   R_   R`   Ra   Rb   t
   scripttextt   filename(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRd     s    c         B   s·   e  |  e ƒ r' |  j e j ƒ  ƒ } n |  } g  | | g D] } | d  k	 r: | ^ q: } | d  k rw e j | | Œ n< e j |  ƒ j	 ƒ  j
 ƒ  d } | | | d ƒ | | f d  Ud  S(   Ns   
R[   (   R	   Ry   R   R:   t   getfilesystemencodingR   RK   Rd   R\   R^   t   rstrip(   R_   R`   Ra   Rb   R|   t   nst   whereR{   (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyRd     s    +c             s(   ˆ  s t  d ƒ ‚ n  ‡  f d †  } | S(   s5   Python 3 compatible function annotation for Python 2.s1   annotations must be provided as keyword argumentsc            sI   t  |  d ƒ r< x3 ˆ  j ƒ  D] \ } } | |  j | <q Wn	 ˆ  |  _ |  S(   Nt   __annotations__(   t   hasattrRU   R   (   Rc   t   kt   v(   t   kwargs(    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   dec*  s
    	(   t
   ValueError(   R…   R†   (    (   R…   sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   annotate&  s    c         G   s   |  d | i  ƒ S(   s%   Create a base class with a metaclass.t   _NewBase(    (   t   metat   bases(    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   with_metaclassI  s    (>   R   R   R#   R:   t   ret   shutilRt   R   R    R   R   R   R   R   R   R   R   R"   t   F_OKt   X_OKRJ   t   version_infot   Truet   PY3RL   t   builtin_mod_nameRN   RK   R   Rz   t   str_to_bytest   bytes_to_strt   cast_bytes_py2t   cast_unicode_py2t   buffer_to_bytes_py2R   R   R   t   whicht   FalseRO   t   ranget   xrangeRW   RY   t   getcwdRu   Rd   R]   t	   MULTILINERi   Rh   Rk   Rm   Ro   Rq   Ry   Rs   t   getcwduR;   Rˆ   RŒ   (    (    (    sR   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/ipython_genutils/py3compat.pyt   <module>   s’   			?															#