ó
†Å•Zc           @   s5  d  d l  m Z d  d l  m Z m Z m Z d  d l m Z d  d l m Z d e	 f d „  ƒ  YZ
 d e
 f d „  ƒ  YZ d	 e
 f d
 „  ƒ  YZ d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d „  Z d S(   iÿÿÿÿ(   t   libutils(   t	   pyobjectst
   exceptionst   stdmods(   t   occurrences(   t
   importinfot   ImportInfoVisitorc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sQ   y6 d | j  j j } t |  | ƒ } | | | j  ƒ SWn t j k
 rL n Xd  S(   Nt   visit(   t   import_infot	   __class__t   __name__t   getattrR   t   ModuleNotFoundError(   t   selft   import_t   method_namet   method(    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyt   dispatch	   s    c         C   s   d  S(   N(    (   R   t   import_stmtR   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyt   visitEmptyImport   s    c         C   s   d  S(   N(    (   R   R   R   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyt   visitNormalImport   s    c         C   s   d  S(   N(    (   R   R   R   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyt   visitFromImport   s    (   R
   t
   __module__R   R   R   R   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR      s   			t   RelativeToAbsoluteVisitorc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s4   g  |  _  | |  _ | |  _ t j | | ƒ |  _ d  S(   N(   t   to_be_absolutet   projectt   folderR   t   ImportContextt   context(   R   R   t   current_folder(    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyt   __init__   s    			c         C   sÉ   |  j  j |  j | ƒ ƒ g  } xy | j D]n \ } } |  j j | d |  j ƒ} | d  k ru | j | | f ƒ q) n  t	 j
 | ƒ } | j | | f ƒ q) W| j | | j ƒ sÅ t j | ƒ | _ n  d  S(   NR   (   R   t   extendt   _get_relative_to_absolute_listt   names_and_aliasesR   t   find_moduleR   t   Nonet   appendR    t   modnamet   _are_name_and_alias_lists_equalR   t   NormalImportR   (   R   R   R   t	   new_pairst   namet   aliast   resourcet   absolute_name(    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   #   s    	c         C   s”   g  } x‡ | j  D]| \ } } | d  k	 r. q n  |  j j | d |  j ƒ} | d  k r[ q n  t j | ƒ } | | k r | j | | f ƒ q q W| S(   NR   (   R!   R#   R   R"   R   R    R%   R$   (   R   R   t   resultR)   R*   R+   R,   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR    2   s    c         C   sb   | j  |  j ƒ } | d  k r" d  St j | ƒ } | j | k r^ t j | d | j ƒ | _	 n  d  S(   Ni    (
   t   get_imported_resourceR   R#   R    R%   t   module_nameR   t
   FromImportR!   R   (   R   R   R   R+   R,   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   ?   s    (   R
   R   R   R   R    R   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR      s   			t   FilteringVisitorc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s=   g  |  _  | |  _ |  j | ƒ |  _ t j | | ƒ |  _ d  S(   N(   R   R   t   _transform_can_selectt
   can_selectR   R   R   (   R   R   R   R3   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   K   s    		c            s   ‡  f d †  } | S(   Nc            s%   |  } | d  k	 r | } n  ˆ  | ƒ S(   N(   R#   (   R)   R*   t   imported(   R3   (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyt   can_select_name_and_aliasR   s    	(    (   R   R3   R5   (    (   R3   s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR2   Q   s    c         C   sU   g  } x? | j  D]4 \ } } |  j | | ƒ r | j | | f ƒ q q Wt j | ƒ S(   N(   R!   R3   R$   R   R'   (   R   R   R   R(   R)   R*   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   Y   s
    c         C   sÇ   t  | ƒ r | Sg  } | j ƒ  rl x‰ | j |  j ƒ D]0 } |  j | d  ƒ r5 | j | j d ƒ Pq5 q5 WnB x? | j D]4 \ } } |  j | | ƒ rv | j | | f ƒ qv qv Wt j	 | j
 | j | ƒ S(   Ni    (   t
   _is_futuret   is_star_importt   get_imported_namesR   R3   R#   R$   R!   R   R0   R/   t   level(   R   R   R   R(   R)   R*   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   `   s    (   R
   R   R   R2   R   R   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR1   I   s   			t   RemovingVisitorc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s+   g  |  _  | |  _ t | | | ƒ |  _ d  S(   N(   R   R   R1   t	   filtering(   R   R   R   R3   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   s   s    		c         C   s.   |  j  j | ƒ } | d  k	 r* | | _ n  d  S(   N(   R;   R   R#   R   (   R   R   R-   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   x   s    (   R
   R   R   R   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR:   q   s   	t   AddingVisitorc           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   sÂ   A class for adding imports

    Given a list of `ImportInfo`\s, it tries to add each import to the
    module and returns `True` and gives up when an import can be added
    to older ones.

    c         C   s   | |  _  | |  _ d  |  _ d  S(   N(   R   t   import_listR#   R   (   R   R   R=   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   ‡   s    		c         C   s7   x0 |  j  D]% } | |  _ t j |  | ƒ r
 t Sq
 Wd  S(   N(   R=   R   R   R   t   True(   R   R   R   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   Œ   s    	c         C   s  t  |  j | j ƒ s t St | j ƒ t |  j j ƒ k oE d k n rÛ | j d } |  j j d } | d | d k o† d  k n rÛ | d j | d d ƒ rª t S| d j | d d ƒ rØ |  j | _ t SqÛ n  |  j j	 | j |  j j ƒ rý t Sd  S(   Ni   i    t   .(
   t
   isinstanceR   R	   t   Falset   lenR!   R#   t
   startswithR>   R&   (   R   R   R   t	   imported1t	   imported2(    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   “   s     %$
	c         C   sþ   t  |  j | j ƒ rú | j |  j j k rú | j |  j j k rú | j ƒ  rO t S|  j j ƒ  rn |  j | _ t S|  j j j	 d ƒ r– |  j j
 | j
 k St | j
 ƒ } x0 |  j j
 D]" } | | k r² | j | ƒ q² q² Wt j | j | j | ƒ | _ t Sd  S(   Nt   split_imports(   R@   R   R	   R/   R9   R7   R>   R   t   prefst   getR!   t   listR$   R   R0   (   R   R   R   R(   t   pair(    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   ¨   s$    	
(   R
   R   t   __doc__R   R   R   R   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR<   ~   s
   			t   ExpandStarsVisitorc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s7   | |  _  t | | | ƒ |  _ t j | | ƒ |  _ d  S(   N(   R   R1   R;   R   R   R   (   R   R   R   R3   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   ¿   s    	c         C   s   |  j  j | ƒ d  S(   N(   R;   R   (   R   R   R   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   Ä   s    c         C   sŒ   | j  ƒ  rx g  } x- | j |  j ƒ D] } | j | d  f ƒ q% Wt j | j | j | ƒ } |  j	 j
 d  | ƒ | _ n |  j	 j | ƒ d  S(   N(   R7   R8   R   R$   R#   R   R0   R/   R9   R;   R   R   R   (   R   R   R   R(   R)   t
   new_import(    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   Ç   s    (   R
   R   R   R   R   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyRL   ½   s   		t   SelfImportVisitorc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sL   | |  _  | |  _ | |  _ t ƒ  |  _ t ƒ  |  _ t j | | ƒ |  _ d  S(   N(	   R   R   R+   t   sett   to_be_fixedt   to_be_renamedR   R   R   (   R   R   R   R+   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   Ö   s    			c         C   sÅ   g  } xŽ | j  D]ƒ \ } } |  j j | d |  j ƒ} | d  k	 r€ | |  j k r€ | } | d  k	 rm | } n  |  j j | ƒ q | j | | f ƒ q W| j	 | | j  ƒ sÁ t
 j | ƒ | _ n  d  S(   NR   (   R!   R   R"   R   R#   R+   RP   t   addR$   R&   R   R'   R   (   R   R   R   R(   R)   R*   R+   R4   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   Þ   s    	c   
      C   sW  | j  |  j ƒ } | d  k r" d  S| |  j k rE |  j | | ƒ d  S|  j j | ƒ } g  } x½ | j D]² \ } } y| | | j ƒ  } t	 | t
 j ƒ rÛ | j ƒ  |  j k rÛ | }	 | d  k	 rÈ | }	 n  |  j j |	 ƒ n | j | | f ƒ Wqg t j k
 r| j | | f ƒ qg Xqg W| j | | j ƒ sSt j | j | j | ƒ | _ n  d  S(   N(   R.   R   R#   R+   t   _importing_names_from_selfR   t   get_pymoduleR!   t
   get_objectR@   R   t   PyModulet   get_resourceRP   RR   R$   R   t   AttributeNotFoundErrorR&   R   R0   R/   R9   R   (
   R   R   R   R+   t   pymoduleR(   R)   R*   R-   R4   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   í   s0    	c         C   s\   | j  ƒ  sN x? | j D]1 \ } } | d  k	 r |  j j | | f ƒ q q Wn  | j ƒ  d  S(   N(   R7   R!   R#   RQ   RR   t   empty_import(   R   R   R   R)   R*   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyRS     s
     (   R
   R   R   R   R   RS   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyRN   Ô   s   			t   SortingVisitorc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s[   | |  _  | |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t j | | ƒ |  _	 d  S(   N(
   R   R   RO   t   standardt   third_partyt
   in_projectt   futureR   R   R   (   R   R   R   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR     s    		c         C   sQ   | j  rM | j  d \ } } |  j j | d |  j ƒ} |  j | | | ƒ n  d  S(   Ni    R   (   R!   R   R"   R   t   _check_imported_resource(   R   R   R   R)   R*   R+   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR     s
    		c         C   s,   | j  |  j ƒ } |  j | | | j ƒ d  S(   N(   R.   R   R`   R/   (   R   R   R   R+   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   "  s    c         C   sŸ   | j  } | d  k	 r: | j |  j k r: |  j j | ƒ na t | ƒ rY |  j j | ƒ nB | j d ƒ d t j	 ƒ  k r‹ |  j
 j | ƒ n |  j j | ƒ d  S(   NR?   i    (   R   R#   R   R^   RR   R6   R_   t   splitR   t   standard_modulesR\   R]   (   R   R   R+   t   imported_namet   info(    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR`   '  s    	(   R
   R   R   R   R   R`   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR[     s   				t   LongImportVisitorc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s=   | |  _  | |  _ t ƒ  |  _ | |  _ | |  _ g  |  _ d  S(   N(   t   maxdotst	   maxlengthRO   RQ   R   R   t   new_imports(   R   R   R   Rf   Rg   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   5  s    				c         C   s›   x” | j  D]‰ \ } } | d  k r
 |  j | ƒ r
 |  j j | ƒ | j d ƒ } | |  } | | d } |  j j t j	 | d | d  f f ƒ ƒ q
 q
 Wd  S(   NR?   i   i    (
   R!   R#   t   _is_longRQ   RR   t   rindexRh   R$   R   R0   (   R   R   R   R)   R*   t   last_dott   from_R4   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   =  s    
	c         C   s7   | j  d ƒ |  j k p6 d | k o6 t | ƒ |  j k S(   NR?   (   t   countRf   RB   Rg   (   R   R)   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyRi   G  s    (   R
   R   R   R   Ri   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyRe   3  s   		
t   RemovePyNameVisitorc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s+   | |  _  | |  _ t j | | ƒ |  _ d  S(   N(   RY   t   pynameR   R   R   (   R   R   RY   Ro   R   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   N  s    		c         C   s¤   g  } | j  ƒ  s‹ xv | j D]h \ } } y2 |  j | p: | } t j |  j | ƒ rY w n  Wn t j k
 rp n X| j | | f ƒ q Wn  t	 j
 | j | j | ƒ S(   N(   R7   R!   RY   R   t   same_pynameRo   R   RX   R$   R   R0   R/   R9   (   R   R   R   R(   R)   R*   Ro   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   S  s    
c         C   s.   t  j |  | ƒ } | d  k	 r* | | _ n  d  S(   N(   R   R   R#   R   (   R   R   R-   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR   a  s    (   R
   R   R   R   R   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyRn   L  s   		c         C   s   t  |  t j ƒ o |  j d k S(   Nt
   __future__(   R@   R   R0   R/   (   Rd   (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyR6   g  s    N(   t	   rope.baseR    R   R   R   t   rope.refactorR   t   rope.refactor.importutilsR   t   objectR   R   R1   R:   R<   RL   RN   R[   Re   Rn   R6   (    (    (    s@   lib/python2.7/site-packages/rope/refactor/importutils/actions.pyt   <module>   s   .(?<#