
    c                     \    d dl Z d dlmZmZmZmZmZmZ d dlm	Z	m
Z
mZ  G d d          ZdS )    N)changecodeanalyzeevaluate
exceptionslibutils	pyobjects)occurrencesrenamesourceutilsc                   :    e Zd Zd Zd Zd	dZd Zd Zd Zd Z	dS )
MethodObjectc                    || _         | j                             |          }t          j        ||          }|,t	          |                                t          j                  st          j	        d          |                                | _
        | j
                                        | _        | j                                        | _        d S )NzPReplace method with method object refactoring should be performed on a function.)projectget_pymoduler   eval_location
isinstance
get_objectr   
PyFunctionr   RefactoringError
pyfunction
get_modulepymoduleget_resourceresource)selfr   r   offsetthis_pymodulepynames         ;lib/python3.11/site-packages/rope/refactor/method_object.py__init__zMethodObject.__init__   s    11(;;'v>> 	F,=,=,?,?AU!V!V 	-+   !++--22442244    c                    t          j        |                                 t          j        | j                  dz            }d                    ||                                 dt          j        | j                  z  |          S )N   z-class {}(object):

{}{}def __call__(self):
{} )r   fix_indentation	_get_body
get_indentr   format	_get_init)r   namebodys      r   get_new_classzMethodObject.get_new_class   sx    *NNk4T\BBQF
 
 BHHNN+(666	
 
 	
r!   Nc                 V   |t          j        dt          d           |}t          j        | j        j                  }t          j        | j	                  \  }}t          j
        | j        j        | j	                                                                                  t          j        | j                  z   }d|z  d                    |d                    |                                                     z   }|                    |||           |                                 }|                    ||d|                     |          z              t-          j        d          }	|	                    t-          j        | j        |                                                     |	S )	Nz5new_class_name parameter is deprecated; use classnamer#   )
stacklevelr$   zreturn {}({})()
z, z

z-Replace method with method object refactoring)warningswarnDeprecationWarningr   ChangeCollectorr   source_coder   get_body_regionr   get_indentslines	get_scope	get_startr'   r   r(   join_get_parameter_names
add_change_get_class_insertion_pointr,   r   	ChangeSetChangeContentsr   get_changed)
r   	classnamenew_class_name	collectorstartendindentsnew_contents	insertionchangess
             r   get_changeszMethodObject.get_changes    s    	'MG"   
 'I/0IJJ	 0AA
s)M!:!:!<!<!F!F!H!H
 
"4<001 W}':'A'AIId//1122(
 (
 
 	UC6663355	y&4+=+=i+H+H"H	
 	
 	
 "#RSS!$-1F1F1H1HII	
 	
 	
 r!   c                 8   | j         }|j        | j        k    r|j        }|j        | j        k    | j        j                            |                                                                          }t          |dz   t          | j        j	                            S )N   )
r   parentr   r6   get_line_endr7   get_endminlenr3   )r   currentrD   s      r   r<   z'MethodObject._get_class_insertion_point<   s    /n- 	%nG n- 	%m!..w/@/@/B/B/J/J/L/LMM37C 9::;;;r!   c                 p   t          j        | j                  }|                                 D ]}|dz   |z   }t	          j        | j        || j                  }||         }t          j	        | j        ||          }t          j        |d|z   |          }||                    d          dz   d          }|S )Nz = None
self.)r   
rK   )r   get_bodyr   r:   r   get_string_moduler   r   r	   create_finderr
   rename_in_moduleindex)r   r+   parampymodr   finderresults          r   r&   zMethodObject._get_bodyC   s    #DO44..00 	4 	4E;&-D.t|T4=QQE5\F .t|UFKKF,VWu_uUUUF&,,t,,q0223DDr!   c                     |                                  }dt          j        | j                  z  }|sdS |dz   }d}|D ]&}|}|dk    rd}|d|z  z  }||dz  d| d	| d
z   z  }'|dz  }| d
| d
S )Nr$    zdef __init__(selfr   hostz, %sr#   rS   z = rT   z):)r:   r   r'   r   )r   paramsrE   headerr+   argnew_names          r   r)   zMethodObject._get_initN   s    **,,.t|<<< 	2.. 	? 	?CHf} "!fx''FGaK">#">">(">">">>>DD$$$D$$$$r!   c                 4    | j                                         S )N)r   get_param_names)r   s    r   r:   z!MethodObject._get_parameter_names^   s    ..000r!   )NN)
__name__
__module____qualname__r    r,   rI   r<   r&   r)   r:    r!   r   r   r      s        5 5 5	
 	
 	
   8< < <	 	 	% % % 1 1 1 1 1r!   r   )r/   	rope.baser   r   r   r   r   r   rope.refactorr	   r
   r   r   rj   r!   r   <module>rm      s     T T T T T T T T T T T T T T T T : : : : : : : : : :X1 X1 X1 X1 X1 X1 X1 X1 X1 X1r!   