
    c|                          d dl mZmZ d dlmZ  G d d          Z G d d          Z G d d          Z G d	 d
          ZdS )    )	pyobjectsworder)Lambdac                   N    e Zd Zd Zd ZddZed             Zed             ZdS )	DefinitionInfoc                 L    || _         || _        || _        || _        || _        d S N)function_name	is_methodargs_with_defaultsargs_argkeywords_arg)selfr
   r   r   r   r   s         ;lib/python3.11/site-packages/rope/refactor/functionutils.py__init__zDefinitionInfo.__init__   s0     +""4 (    c                 @    | j          d|                                  dS )N())r
   arguments_to_stringr   s    r   	to_stringzDefinitionInfo.to_string   s(    $DDt'?'?'A'ADDDDr   r   c                 N   g }| j         D ]7\  }}||                    | d|            "|                    |           8| j        |                    d| j        z              | j        r|                    d| j        z              d                    ||d                    S )N=***, )r   appendr   r   join)r   
from_indexparamsargdefaults        r   r   z"DefinitionInfo.arguments_to_string   s     3 	# 	#LC #00w001111c""""= 	/MM#-... 	4MM$!22333yy
,---r   c                    |                                  }|dk    }|dk    }t          |||          }|                                \  }}d }d }	|r.|d                             d          r|d         dd          }	|d= |r.|d                             d          r|d         dd          }|d= d |D             }
|
                    |           t          |                                ||
||	          S )	Nmethodlambdar      r      c                     g | ]}|d fS r	    ).0names     r   
<listcomp>z(DefinitionInfo._read.<locals>.<listcomp>.   s    <<<ttTl<<<r   )get_kind_FunctionParserget_parameters
startswithextendr   get_function_name)
pyfunctioncodekindr   	is_lambdainfoargskeywordsr   r   r   s              r   _readzDefinitionInfo._read   s   ""$$H$	H$	tY	::,,..h 	DH''-- 	8ABB<LR 	DH'',, 	Bx|HR<<t<<<!!(+++""$$
 
 	
r   c                 x   |                                  }t          j        |j                  }|                                 j        }|j                            |          }t          | t                    r|
                    |          }n|                    |          }t                              | |          S r	   )
get_moduler   Wordersource_codeget_astlinenolinesget_line_start
isinstancer   get_lambda_and_argsget_function_and_args_in_headerr   r<   )r5   pymoduleword_finderrB   startcalls         r   readzDefinitionInfo.read8   s    ((**mH$899##%%,--f55j&)) 	F22599DD>>uEED##J555r   N)r   )	__name__
__module____qualname__r   r   r   staticmethodr<   rL   r+   r   r   r   r      s        ) ) )E E E. . . . 
 
 \
0 	6 	6 \	6 	6 	6r   r   c                       e Zd Zd Zd Zed             Zed             Zed             Zed             Z	ed             Z
dS )	CallInfoc                 h    || _         || _        || _        || _        || _        || _        || _        d S r	   )r
   r:   r;   r   r   implicit_argconstructor)r   r
   r:   r;   r   r   rT   rU   s           r   r   zCallInfo.__init__F   s?     +	  ((&r   c                    | j         }| j        r| j        d         dz   | j         z   }g }d}| j        s| j        rd}| j        |d          r"|                    | j        |d                     | j        r$|                    d | j        D                        | j        |                    d| j        z              | j        r|                    d| j        z              d	                    |d
                    |                    S )	Nr   .r)   c                 "    g | ]\  }}| d | S )r   r+   )r,   r-   values      r   r.   z&CallInfo.to_string.<locals>.<listcomp>c   s*    NNNud,,U,,NNNr   r   r   z{}({})r   )r
   rT   r:   rU   r3   r;   r   r   r   formatr   )r   functionr!   rJ   s       r   r   zCallInfo.to_stringX   s   % 	?y|c)D,>>H 	 0 	E9UVV 	-MM$)EFF+,,,= 	PMMNNNNNOOO= 	/MM#-... 	4MM$!22333x6):):;;;r   c           	      ^   t                               | |          }t                               |          }t                               |          }t	          ||p|          }|                                \  }}	d }
d }|r.|d                             d          r|d         dd          }|d= |r.|d                             d          r|d         dd          }
|d= |r'|                    d|j        d         d                    t          |	                                ||	|
||p||          S )Nr'   r   r(   r   r)   r   )
rR   _is_method_call	_is_class_is_classmethodr0   r1   r2   insertr   r4   )primarypynamedefinition_infor6   is_method_callis_constructoris_classmethodr9   r:   r;   r   r   s               r   rL   zCallInfo.readj   sD   !11'6BB!++F33!11&99t^%E~FF,,..h 	DH''-- 	8ABB<LR 	DH'',, 	Bx|HR 	EKK?=a@CDDD""$$,n
 
 	
r   c                     | d uoWt          |                                                                 t          j                  ot
                              |          S r	   )rE   
get_objectget_typer   PyClassrR   
_is_method)ra   rb   s     r   r]   zCallInfo._is_method_call   sT     4 ,7--//88::I<MNN,##F++	
r   c                 b    | d uo+t          |                                 t          j                  S r	   )rE   rh   r   rj   rb   s    r   r^   zCallInfo._is_class   s+    T!Xj1B1B1D1DiFW&X&XXr   c                     | Vt          |                                 t          j                  r*|                                                                 dk    S dS )Nr%   FrE   rh   r   
PyFunctionr/   rm   s    r   rk   zCallInfo._is_method   sR     	>*V->->-@-@)BV"W"W 	>$$&&//11X==ur   c                     | Vt          |                                 t          j                  r*|                                                                 dk    S dS )NclassmethodFro   rm   s    r   r_   zCallInfo._is_classmethod   sT     	C*V->->-@-@)BV"W"W 	C$$&&//11]BBur   N)rM   rN   rO   r   r   rP   rL   r]   r^   rk   r_   r+   r   r   rR   rR   E   s        ' ' '$< < <$ 
 
 \
4 
 
 \
 Y Y \Y   \
   \  r   rR   c                       e Zd Zd Zd ZdS )ArgumentMappingc                    || _         i | _        g | _        g | _        t	          |j                  D ]U\  }}|t          |j                  k     r|j        |         d         }|| j        |<   ;| j                            |           V|j	        D ]E\  }}d}|j        D ]}|d         |k    r|| j        |<    n| j                            ||f           Fd S )Nr   r'   )
	call_info
param_dictkeyword_argsr   	enumerater:   lenr   r   r;   )r   rc   rv   indexrY   r-   pairs          r   r   zArgumentMapping.__init__   s	   "%in55 	, 	,LE5s?=>>> ,&9%@C(-%%$$U++++$- 	8 	8KD%E': 8 87d? ,1DOD)E !(($777	8 	8r   c           	         g }g }t          t          |j                            D ]}|j        |         d         }|| j        v r!|                    | j        |                    ?t          |t          |j                            D ]@}|j        |         d         }|| j        v r"|                    || j        |         f           A |                    | j                   |                    | j                   t          | j	        j
        ||| j	        j        | j	        j        | j	        j        | j	        j                  S )Nr   )rangerz   r   rw   r   r3   r   rx   rR   rv   r
   r   rT   rU   )r   rc   r:   r;   r{   r-   is          r   to_call_infozArgumentMapping.to_call_info   s>   3ABBCC 		 		E"5e<Q?Dt& DOD12222uc/*L&M&MNN G GA*=a@CDt. G tt/D(EFFFDM""")***N(N#N'N'N&
 
 	
r   N)rM   rN   rO   r   r   r+   r   r   rt   rt      s2        8 8 8(
 
 
 
 
r   rt   c                   .    e Zd ZddZd Zd Zd Zd ZdS )	r0   Fc                 (   || _         || _        t          j        | j                   | _        |r | j                             d          | _        n| j                             d          | _        | j                            | j                  | _        d S )N:r   )	rK   rT   r   r?   rI   rindexlast_parens_find_parens_startfirst_parens)r   rK   rT   r8   s       r   r   z_FunctionParser.__init__   s    	(!=33 	5#y//44D#y//44D ,??@PQQr   c                 .   | j                             | j        | j                  \  }}|                                 rV| j        d | j                            dd| j                           }|                    d|                                           ||fS )NrW   r   )	rI   r1   r   r   is_called_as_a_methodrK   r   r`   strip)r   r:   r;   instances       r   r1   z_FunctionParser.get_parameters   s    )88t/
 
h %%'' 	-y!N49#3#3CD<M#N#N!NOHKK8>>++,,,X~r   c                     |                                  r<| j                            | j                            dd| j                  dz
            S d S )NrW   r   r)   )r   rI   get_primary_atrK   r   r   r   s    r   get_instancez_FunctionParser.get_instance   sZ    %%'' 	#22	  a):;;a?  	 	r   c                     |                                  r"| j                            | j        dz
            S | j                            | j        dz
            S )Nr)   )r   rI   get_word_atr   r   r   s    r   r4   z!_FunctionParser.get_function_name   sU    %%'' 	J#//0AA0EFFF#2243Dq3HIIIr   c                 <    | j         od| j        d | j                 v S )NrW   )rT   rK   r   r   s    r   r   z%_FunctionParser.is_called_as_a_method   s%     JSDI6I8I6I,J%JJr   N)F)rM   rN   rO   r   r1   r   r4   r   r+   r   r   r0   r0      sp        R R R R    J J JK K K K Kr   r0   N)		rope.baser   r   rope.base.builtinsr   r   rR   rt   r0   r+   r   r   <module>r      s    ' ' ' ' ' ' ' ' % % % % % %=6 =6 =6 =6 =6 =6 =6 =6@V V V V V V V Vr,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
^!K !K !K !K !K !K !K !K !K !Kr   