ó
ĊZc           @   sU   d  Z  d d l m Z m Z d e f d     YZ d e f d     YZ d   Z d S(	   s   This module can be used for performing cross-project refactorings

See the "cross-project refactorings" section of ``docs/library.rst``
file.

i˙˙˙˙(   t	   resourcest   libutilst   MultiProjectRefactoringc           B   s   e  Z e d   Z d   Z RS(   c         C   s   | |  _  | |  _ | |  _ d S(   se   Create a multiproject proxy for the main refactoring

        `projects` are other project.

        N(   t   refactoringt   projectst   addpath(   t   selfR   R   R   (    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyt   __init__   s    		c         O   s"   t  |  j |  j |  j | | |  S(   s   Create the refactoring(   t   _MultiRefactoringR   R   R   (   R   t   projectt   argst   kwds(    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyt   __call__   s    (   t   __name__t
   __module__t   TrueR   R   (    (    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyR      s   
R   c           B   sS   e  Z d    Z d   Z d   Z d   Z d   Z e d    Z e d    Z	 RS(   c   
      O   s¸   | |  _  | g | |  _ xA | D]9 } x0 |  j j   D] } | j   j d | j  q6 Wq  Wg  |  _ xK |  j D]@ }	 |  j |	 | |  \ } } |  j j	 |  j  |	 | |   qp Wd  S(   Nt   python_path(
   R   R   R	   t   get_source_folderst	   get_prefst   addt	   real_patht   refactoringst   _resources_for_argst   append(
   R   R   t   other_projectsR   R	   R
   R   t   other_projectt   foldert   other(    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyR      s    	!		c         O   sj   g  } x] t  |  j |  j  D]F \ } } |  j | | |  \ } } | j | | j | |   f  q W| S(   s   Get a project to changes dict(   t   zipR   R   R   R   t   get_changes(   R   R
   R   t   resultR	   R   (    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyt   get_all_changes,   s
    "#c         C   s   t  |  j |  S(   N(   t   getattrt   main_refactoring(   R   t   name(    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyt   __getattr__4   s    c            sT   g  | D] }  j    |  ^ q } t    f d   | j   D  } | | f S(   Nc         3   s-   |  ]# \ } } |  j    |  f Vq d  S(   N(   t   _change_project_resource(   t   .0R"   t   value(   R	   R   (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pys	   <genexpr>9   s   (   R$   t   dictt   items(   R   R	   R
   R   t   argt   newargst   newkwds(    (   R	   R   s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyR   7   s    %c         C   s8   t  | t j  r4 | j | k r4 t j | | j  S| S(   N(   t
   isinstanceR    t   ResourceR	   R   t   path_to_resourceR   (   R   R	   t   obj(    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyR$   =   s    c         C   s   |  j  d S(   Ni    (   R   (   R   (    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyR	   C   s    c         C   s   |  j  d S(   Ni    (   R   (   R   (    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyR!   G   s    (
   R   R   R   R   R#   R   R$   t   propertyR	   R!   (    (    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyR      s   					c         C   s(   x! |  D] \ } } | j  |  q Wd  S(   N(   t   do(   t   project_changesR	   t   changes(    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyt   performL   s    N(   t   __doc__t	   rope.baseR    R   t   objectR   R   R4   (    (    (    s9   lib/python2.7/site-packages/rope/refactor/multiproject.pyt   <module>   s   /