
    c	                     T    d Z ddlmZmZ  G d d          Z G d d          Zd ZdS )	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dS )MultiProjectRefactoringTc                 0    || _         || _        || _        dS )zeCreate a multiproject proxy for the main refactoring

        `projects` are other project.

        N)refactoringprojectsaddpath)selfr   r	   r
   s       :lib/python3.11/site-packages/rope/refactor/multiproject.py__init__z MultiProjectRefactoring.__init__   s     '     c                 F    t          | j        | j        | j        |g|R i |S )zCreate the refactoring)_MultiRefactoringr   r	   r
   )r   projectargskwdss       r   __call__z MultiProjectRefactoring.__call__   s>     dmT\7
EI
 
 
MQ
 
 	
r   N)T)__name__
__module____qualname__r   r    r   r   r   r      s7           
 
 
 
 
r   r   c                   X    e Zd Zd Zd Zd Zd Zd Zed             Z	ed             Z
dS )	r   c                 n   || _         |g|z   | _        |D ]K}| j                                        D ]/}|                                                    d|j                   0Lg | _        | j        D ]E}	|                     |	||          \  }}| j        	                     | j         |	g|R i |           Fd S )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 	OM,99;; O O''))--mV=MNNNNO] 	M 	ME11%tDDJD$$$%5T%5e%Kd%K%K%Kd%K%KLLLL	M 	Mr   c           	          g }t          | j        | j                  D ]A\  }}|                     |||          \  }}|                    | |j        |i |f           B|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)   sy    $'t7H$I$I 	M 	M G[11'4FFJD$MM7$;K$;T$JT$J$JKLLLLr   c                 ,    t          | j        |          S N)getattrmain_refactoring)r   names     r   __getattr__z_MultiRefactoring.__getattr__1   s    t,d333r   c                 n      fd|D             } fd|                                 D             }||fS )Nc                 <    g | ]}                     |          S r   _change_project_resource).0argr   r   s     r   
<listcomp>z9_MultiRefactoring._resources_for_args.<locals>.<listcomp>5   s)    OOO3400#>>OOOr   c                 D    i | ]\  }}|                     |          S r   r4   )r6   r0   valuer   r   s      r   
<dictcomp>z9_MultiRefactoring._resources_for_args.<locals>.<dictcomp>6   s?     
 
 
e $//??
 
 
r   )items)r   r   r   r   newargsnewkwdss   ``    r   r!   z%_MultiRefactoring._resources_for_args4   sb    OOOOO$OOO
 
 
 
 
#zz||
 
 
 r   c                     t          |t          j                  r%|j        |k    rt	          j        ||j                  S |S r-   )
isinstancer   Resourcer   r   path_to_resourcer   )r   r   objs      r   r5   z*_MultiRefactoring._change_project_resource<   sA    c9-.. 	E3;'3I 	E,WcmDDD
r   c                     | j         d         S Nr   )r	   r   s    r   r   z_MultiRefactoring.projectA   s    }Qr   c                     | j         d         S rE   )r    rF   s    r   r/   z"_MultiRefactoring.main_refactoringE   s     ##r   N)r   r   r   r   r+   r1   r!   r5   propertyr   r/   r   r   r   r   r      s        	M 	M 	M  4 4 4       
     X  $ $ X$ $ $r   r   c                 @    | D ]\  }}|                     |           d S r-   )do)project_changesr   changess      r   performrM   J   s5    +  

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