
    c                     D    d dl mZmZmZmZ d dlmZ  G d d          ZdS )    )evaluate
exceptionspynamesworder)Renamec                   ,    e Zd Zd Zd Zd Zd Zd ZdS )LocalToFieldc                 0    || _         || _        || _        d S )N)projectresourceoffset)selfr   r   r   s       :lib/python3.11/site-packages/rope/refactor/localtofield.py__init__zLocalToField.__init__   s         c                 0   t          j        | j        | j                  }| j                            | j                  }t          j        || j                  }|                     |          st          j
        d          |                                \  }}|                                                    |          }|                     |j        |          }t!          | j        | j        | j                                      || j        g          }|S )NzTConvert local variable to field should be performed on a local variable of a method.)	resources)r   get_name_atr   r   r   get_pymoduler   eval_location_is_a_method_localr   RefactoringErrorget_definition_location	get_scopeget_inner_scope_for_line_get_field_namepyobjectr   get_changes)	r   namethis_pymodulepynamepymodulelinenofunction_scopenew_namechangess	            r   r   zLocalToField.get_changes   s   !$-==11$-@@'t{CC&&v.. 	-0  
 "99;;&!++--FFvNN ''(?FFt}dkBBNN O 
 
 r   c                 T    |j         }||j        v rt          j        d|z            d S )NzThe field %s already exists)parentr   r   r   )r   r   r$   class_scopes       r   _check_redefinitionz LocalToField._check_redefinition    s>    $+;'' 	T-.Kd.RSSS	T 	Tr   c                 J    |                                 d         }|dz   |z   }|S )Nr   .)get_param_names)r   
pyfunctionr   	self_namer%   s        r   r   zLocalToField._get_field_name%   s+    ..003	s?T)r   c                 x   |                                 \  }}|                                                    |          }|j        }t	          |t
          j                  o[||                                                                v o3|	                                dk    o|d uo|	                                dk    S )NFunctionClass)
r   r   r   r(   
isinstancer   AssignedName	get_namesvaluesget_kind)r   r!   r"   r#   holding_scoper(   s         r   r   zLocalToField._is_a_method_local*   s    !99;;& **,,EEfMM%vw344 --1133::<<<-&&((J6- d"- !!W,	
r   N)__name__
__module____qualname__r   r   r*   r   r    r   r   r	   r	      sb          
  *T T T
  


 

 

 

 

r   r	   N)	rope.baser   r   r   r   rope.refactor.renamer   r	   r<   r   r   <module>r?      sm    ; ; ; ; ; ; ; ; ; ; ; ; ' ' ' ' ' '/
 /
 /
 /
 /
 /
 /
 /
 /
 /
r   