
    c                    v   d dl mZ d dlZd dlZd dlmZmZ ej        rd dlm	Z	 d dlm
Z
  G d d          Z G d d	e          Z G d
 de          Z G d de          Z G d d          Z G d de          Z G d de          Z G d de          Z G d de          Zd Zd Z G d d          ZdS )    )annotationsN)
exceptionsutils)Union)pyobjectsdefc                      e Zd ZdZd Zd ZdS )PyNamez/References to `PyObject` inside python programsc                    dS )z8Return the `PyObject` object referenced by this `PyName`N selfs    1lib/python3.11/site-packages/rope/base/pynames.py
get_objectzPyName.get_object             c                    dS )zReturn a (module, lineno) tupleNr   r   s    r   get_definition_locationzPyName.get_definition_location   r   r   N)__name__
__module____qualname____doc__r   r   r   r   r   r	   r	      s;        99G G G. . . . .r   r	   c                       e Zd Zd Zd Zd ZdS )DefinedNamec                    || _         d S Npyobjectr   r   s     r   __init__zDefinedName.__init__   s     r   c                    | j         S r   r   r   s    r   r   zDefinedName.get_object   
    }r   c                    t          j        | j                                        | j                                                  }| j                                        |fS r   )r   guess_def_linenor   
get_moduleget_ast)r   linenos     r   r   z#DefinedName.get_definition_location   sP    'M$$&&(=(=(?(?
 
 ((**F33r   Nr   r   r   r   r   r   r   r   r   r   r      sA        ! ! !  4 4 4 4 4r   r   c                      e Zd ZdS )AssignedNameNr   r   r   r   r   r   r)   r)   &           Dr   r)   c                  "    e Zd ZddZd Zd ZdS )UnboundNameNc                v    || _         | j         *t          j        j                                        | _         d S d S r   )r   ropebase	pyobjectsget_unknownr   s     r   r   zUnboundName.__init__+   s9     = 	> I/;;==DMMM	> 	>r   c                    | j         S r   r   r   s    r   r   zUnboundName.get_object0   r!   r   c                    dS NNNr   r   s    r   r   z#UnboundName.get_definition_location3   s    |r   r   r'   r   r   r   r-   r-   *   sF        > > > >
      r   r-   c                  "    e Zd ZdZ	 ddZd ZdS )AssignmentValuezAn assigned expressionN Fc                `    || _         |g | _        n|| _        || _        || _        || _        dS )zThe `level` is `None` for simple assignments and is
        a list of numbers for tuple assignments for example in::

           a, (b, c) = x

        The levels for for `a` is ``[0]``, for `b` is ``[1, 0]`` and for
        `c` is ``[1, 1]``.

        N)ast_nodelevels
evaluationassign_type	type_hint)r   r;   r<   r=   r>   r?   s         r   r   zAssignmentValue.__init__:   s=     ! 	!DKK DK$&"r   c                    | j         j        S r   )r;   r&   r   s    r   
get_linenozAssignmentValue.get_linenoO   s    }##r   )Nr9   FN)r   r   r   r   r   rA   r   r   r   r8   r8   7   sD           RV# # # #*$ $ $ $ $r   r8   c                  ,    e Zd ZdZddZd Zd Zd ZdS )EvaluatedNamez+A name whose object will be evaluated laterNc                t    || _         || _        || _        t          |t	          |                    | _        d S r   )moduler&   callback	_Inferred_get_concluded_datar   )r   rF   rE   r&   s       r   r   zEvaluatedName.__init__V   s5     !(,?,G,GHHr   c                4    | j                                         S r   )r   getr   s    r   r   zEvaluatedName.get_object\   s    }  """r   c                    | j         | j        fS r   )rE   r&   r   s    r   r   z%EvaluatedName.get_definition_location_   s    T[))r   c                :    | j                             d           dS )z)Forget the `PyObject` this `PyName` holdsN)r   setr   s    r   
invalidatezEvaluatedName.invalidateb   s    $r   r6   )r   r   r   r   r   r   r   rN   r   r   r   rC   rC   S   s_        55I I I I# # #* * *         r   rC   c                      e Zd ZdS )ParameterNameNr*   r   r   r   rP   rP   g   r+   r   rP   c                  6    e Zd Z	 	 	 d
ddZd Zd Zd Zd	 ZdS )ImportedModuleNr   importing_module4Union[pyobjectsdef.PyModule, pyobjectsdef.PyPackage]c                    ||
J d            || _         || _        || _        || _        t	          | j                   | _        d S )Nz3At least one of module_name or resource must be set)rS   module_namelevelresourcerH   pymodule)r   rS   rV   rW   rX   s        r   r   zImportedModule.__init__l   sg     	A'/	A 	A@	A 	A 	A !1&
 +D,ABBr   c                n    | j                                                                         }|d S |j        S r   )rS   r$   get_resourceparent)r   rX   s     r   _current_folderzImportedModule._current_folder   s7    (3355BBDD 	4r   c                J   | j                                         | j        j        }| j        8| j                             |j                            | j                             n	 | j        dk    r3|j        	                    | j
        |                                           }n8|j                            | j
        |                                 | j                  }| j                             |           n# t          j        $ r Y nw xY w| j                                         S )Nr   )rY   rJ   rS   pycorerX   rM   projectget_pymodulerW   r$   rV   r]   get_relative_moduler   ModuleNotFoundError)r   r_   rY   s      r   _get_pymodulezImportedModule._get_pymodule   s   = 	*1F} !!&."="=dm"L"LMMMMzQ #)>#<#< ,d.B.B.D.D$ $ $*>#E#E ,d.B.B.D.Ddj$ $ M%%h////!5   D}  """s   &BC7 7D	D	c                    |                                  #t          j        j                                        S |                                  S r   )rd   r/   r0   r1   r2   r   s    r   r   zImportedModule.get_object   s?     	59&22444!!###r   c                    |                                  }t          |t          j        j        j                  sdS |                                dfS )Nr6      )rd   
isinstancer/   r0   r1   PyDefinedObjectr$   )r   rY   s     r   r   z&ImportedModule.get_definition_location   sI    %%''(DI$7$GHH 	 <##%%q))r   )Nr   N)rS   rT   )r   r   r   r   r]   rd   r   r   r   r   r   rR   rR   k   sy         C C C C C&  # # #($ $ $
* * * * *r   rR   c                      e Zd Zd Zd Z ej        ej        j	        j
                  d             Z ej        d           d             ZdS )ImportedNamec                "    || _         || _        d S r   )imported_moduleimported_name)r   rm   rn   s      r   r   zImportedName.__init__   s    .*r   c                    	 | j                                         | j                 }|| k    r|S n# t          j        $ r Y nw xY wt                      S r   )rm   r   rn   r   AttributeNotFoundErrorr-   )r   results     r   _get_imported_pynamez!ImportedName._get_imported_pyname   sf    	)4466t7IJF~ 0 	 	 	D	}}s   +/ A Ac                N    |                                                                  S r   )rr   r   r   s    r   r   zImportedName.get_object   s     ((**55777r   c                     dS r5   r   r   r   r   <lambda>zImportedName.<lambda>   s    \ r   c                N    |                                                                  S r   )rr   r   r   s    r   r   z$ImportedName.get_definition_location   s     ((**BBDDDr   N)r   r   r   r   rr   r   prevent_recursionr/   r0   r1   r2   r   r   r   r   r   rk   rk      s        + + +   UTY0<==8 8 >=8 U1122E E 32E E Er   rk   c                t    | #t           j        j                                        S |                                 S r   )r/   r0   r1   _ConcludedDatarH   )rE   s    r   rH   rH      s3     4y"11333%%'''r   c                 J    t           j        j                            d          )NzCircular Object Inference)r/   r0   r1   IsBeingInferredErrorr   r   r   _circular_inferencer|      s    
)

2
23N
O
OOr   c                  T    e Zd ZddZ ej        e          d             Zd Zd Z	dS )rG   Nc                B    || _         || _        | j        	d | _        d S d S r   )get_inferred	concludedtemp)r   r   r   s      r   r   z_Inferred.__init__   s0    ("> 	DIII	 	r   c                >   | j         | j                                          |                      | j        |i |           |                                 6|                     t
          j        j                                                   |                                 S r   )	r   rJ   rM   r   _getr/   r0   r1   r2   )r   argskwdss      r   rJ   z_Inferred.get   s    > 	7T^%7%7%9%9 	7HH&T&55566699;; 	8HHTY(4466777yy{{r   c                V    | j         | j                             |           || _        d S r   )r   rM   r   r   s     r   rM   z_Inferred.set   s-    > 	)Nx(((			r   c                P    | j         | j                                         S | j        S r   )r   rJ   r   r   s    r   r   z_Inferred._get   s(    > 	(>%%'''yr   r   )
r   r   r   r   r   rw   r|   rJ   rM   r   r   r   r   rG   rG      sp            U011  21  
    r   rG   )
__future__r   typingrope.base.pyobjectsr/   	rope.baser   r   TYPE_CHECKINGr   r   r	   r   r)   r-   r8   rC   rP   rR   rk   rH   r|   rG   r   r   r   <module>r      sE   " " " " " "      ' ' ' ' ' ' ' '	 '&&&&&&. . . . . . . .4 4 4 4 4& 4 4 4	 	 	 	 	6 	 	 	
 
 
 
 
& 
 
 
$ $ $ $ $ $ $ $8         F      (	 	 	 	 	F 	 	 	7* 7* 7* 7* 7*V 7* 7* 7*tE E E E E6 E E E.( ( (P P P         r   