
    Æe	                     F    d Z ddlmZmZ  G d d      Z G d d      Zd Zy)	zThis module can be used for performing cross-project refactorings

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

    )libutils	resourcesc                       e Zd ZddZd Zy)MultiProjectRefactoringc                 .    || _         || _        || _        y)zeCreate a multiproject proxy for the main refactoring

        `projects` are other project.

        N)refactoringprojectsaddpath)selfr   r	   r
   s       </usr/lib/python3/dist-packages/rope/refactor/multiproject.py__init__z MultiProjectRefactoring.__init__   s     '     c                 b    t        | j                  | j                  | j                  |g|i |S )zCreate the refactoring)_MultiRefactoringr   r	   r
   )r   projectargskwdss       r   __call__z MultiProjectRefactoring.__call__   s6     dmmT\\7
EI
MQ
 	
r   N)T)__name__
__module____qualname__r   r    r   r   r   r      s    
r   r   c                   J    e Zd Zd Zd Zd Zd Zd Zed        Z	ed        Z
y)	r   c                    || _         |g|z   | _        |D ]K  }| j                  j                         D ],  }|j	                         j                  d|j                         . M g | _        | j                  D ]G  }	| j                  |	||      \  }}| j                  j                   | j                   |	g|i |       I y )Npython_path)
r   r	   r   get_source_folders	get_prefsadd	real_pathrefactorings_resources_for_argsappend)
r   r   other_projectsr
   r   r   r   other_projectfolderothers
             r   r   z_MultiRefactoring.__init__   s    & 	N2+ 	OM,,99; O'')--mV=M=MNO	O ]] 	ME11%tDJD$$$%5T%5%5e%Kd%Kd%KL	Mr   c           	          g }t        | j                  | j                        D ]>  \  }}| j                  |||      \  }}|j	                  | |j
                  |i |f       @ |S )zGet a project to changes dict)zipr	   r    r!   r"   get_changes)r   r   r   resultr   r   s         r   get_all_changesz!_MultiRefactoring.get_all_changes)   sq    $'t7H7H$I 	M G[11'4FJD$MM7$;K$;$;T$JT$JKL	M r   c                 .    t        | j                  |      S N)getattrmain_refactoring)r   names     r   __getattr__z_MultiRefactoring.__getattr__1   s    t,,d33r   c           	          |D cg c]  }| j                  ||       }}|j                         D ci c]  \  }}|| j                  ||       }}}||fS c c}w c c}}w r-   )_change_project_resourceitems)	r   r   r   r   argnewargsr0   valuenewkwdss	            r   r!   z%_MultiRefactoring._resources_for_args4   su    JNO3400#>OO  $zz|
e $//??
 
  P
s
   AAc                     t        |t        j                        r/|j                  |k7  r t	        j
                  ||j                        S |S r-   )
isinstancer   Resourcer   r   path_to_resourcer   )r   r   objs      r   r3   z*_MultiRefactoring._change_project_resource<   s9    c9--.3;;'3I,,WcmmDD
r   c                      | j                   d   S Nr   )r	   r   s    r   r   z_MultiRefactoring.projectA   s    }}Qr   c                      | j                   d   S r?   )r    r@   s    r   r/   z"_MultiRefactoring.main_refactoringE   s      ##r   N)r   r   r   r   r+   r1   r!   r3   propertyr   r/   r   r   r   r   r      sD    	M4 
     $ $r   r   c                 :    | D ]  \  }}|j                  |        y r-   )do)project_changesr   changess      r   performrG   J   s"    + 

7r   N)__doc__	rope.baser   r   r   r   rG   r   r   r   <module>rJ      s)    *
 
$*$ *$Zr   