o
    ï›h®Z  ã                   @   sì  d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZ dd„ ZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZ G dd„ de eƒZ!G dd„ deƒZ"G dd„ dƒZ#G dd„ de#ƒZ$G dd „ d e$eƒZ%G d!d"„ d"e%ƒZ&G d#d$„ d$e&ƒZ'G d%d&„ d&e&ƒZ(G d'd(„ d(e#ƒZ)G d)d*„ d*eƒZ*G d+d,„ d,e*ƒZ+G d-d.„ d.ƒZ,G d/d0„ d0ƒZ-G d1d2„ d2e-e"ƒZ.G d3d4„ d4e eƒZ/G d5d6„ d6e-e/ƒZ0d7S )8é    )Úabstractmethod)Ú	Parameter)ÚOptionalÚTuple)Úsearch_ancestor)Úfind_statement_documentationÚclean_scope_docstring)Úunite)ÚValueSetÚ	NO_VALUES)Úinference_state_method_cache)Ú
docstrings)Úmemoize_method)Údeep_ast_copyÚinfer_call_of_leaf)Úplugin_managerc                 C   s*   d}| D ]}|r|d7 }||  ¡ 7 }q|S )NÚ z 
------------------------------
)Ú	py__doc__)ÚnamesÚdocÚname© r   úJc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/inference/names.pyÚ_merge_name_docs   s   r   c                   @   s¢   e Zd ZU dZeeeef  ed< eed< dZ	dZ
dZ	 edd„ ƒZedd„ ƒZdd
d„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zedd„ ƒZdd„ ZdS )ÚAbstractNameDefinitionNÚ	start_posÚstring_nameTc                 C   ó   t ‚©N©ÚNotImplementedError©Úselfr   r   r   Úinfer&   ó   zAbstractNameDefinition.inferc                 C   s   | hS r   r   r!   r   r   r   Úgoto*   s   zAbstractNameDefinition.gotoFc                 C   s6   |   ¡ }|d u s
|s|S |  ¡ j}|d u rd S || S r   )Ú_get_qualified_namesÚget_root_contextÚstring_names)r"   Úinclude_module_namesZqualified_namesÚmodule_namesr   r   r   Úget_qualified_names0   s   
z*AbstractNameDefinition.get_qualified_namesc                 C   ó   d S r   r   r!   r   r   r   r&   :   r$   z+AbstractNameDefinition._get_qualified_namesc                 C   ó
   | j  ¡ S r   )Úparent_contextr'   r!   r   r   r   r'   >   ó   
z'AbstractNameDefinition.get_root_contextc                 C   ó   | j S r   )r   r!   r   r   r   Úget_public_nameA   ó   z&AbstractNameDefinition.get_public_namec                 C   s2   | j d u rd| jj| jf S d| jj| j| j f S )Nz<%s: string_name=%s>z!<%s: string_name=%s start_pos=%s>)r   Ú	__class__Ú__name__r   r!   r   r   r   Ú__repr__D   s
   
ÿzAbstractNameDefinition.__repr__c                 C   ó   dS )NFr   r!   r   r   r   Ú	is_importJ   ó   z AbstractNameDefinition.is_importc                 C   r6   )Nr   r   r!   r   r   r   r   M   r8   z AbstractNameDefinition.py__doc__c                 C   ó   | j jS r   )r.   Úapi_typer!   r   r   r   r:   P   ó   zAbstractNameDefinition.api_typec                 C   r6   )zŸ
        Returns either None or the value that is public and qualified. Won't
        return a function, because a name in a function is never public.
        Nr   r!   r   r   r   Úget_defining_qualified_valueT   s   z3AbstractNameDefinition.get_defining_qualified_value©F)r4   Ú
__module__Ú__qualname__r   r   r   ÚintÚ__annotations__Ústrr.   Ú	tree_nameÚis_value_namer   r#   r%   r+   r&   r'   r1   r5   r7   r   Úpropertyr:   r<   r   r   r   r   r      s*   
 




r   c                   @   s$   e Zd ZdZdZdd„ Zdd„ ZdS )ÚAbstractArbitraryNamezÉ
    When you e.g. want to complete dicts keys, you probably want to complete
    string literals, which is not really a name, but for Jedi we use this
    concept of Name for completions as well.
    Fc                 C   s   || _ || _|j| _d S r   )Úinference_stater   Zbuiltins_moduler.   )r"   rG   Ústringr   r   r   Ú__init__d   s   zAbstractArbitraryName.__init__c                 C   ó   t S r   ©r   r!   r   r   r   r#   i   r8   zAbstractArbitraryName.inferN)r4   r>   r?   Ú__doc__rD   rI   r#   r   r   r   r   rF   \   s
    rF   c                       s^   e Zd Zdd„ Zd‡ fdd„	Zdd„ Zdd	„ Zd
d„ Zdd„ Ze	dd„ ƒZ
e	dd„ ƒZ‡  ZS )ÚAbstractTreeNamec                 C   ó   || _ || _d S r   )r.   rC   )r"   r.   rC   r   r   r   rI   n   ó   
zAbstractTreeName.__init__Fc                    sd   t | jddƒ}|d ur,|jdkr|  ¡  ¡  ¡ s,|r*|js*tdd„ | | j¡D ƒƒS d S tƒ  	|¡S )NÚimport_nameÚimport_fromé   c                 s   s   � | ]}|j V  qd S r   )Úvalue)Ú.0Únr   r   r   Ú	<genexpr>|   s   € z7AbstractTreeName.get_qualified_names.<locals>.<genexpr>)
r   rC   Úlevelr'   Ú	get_valueÚ
is_packageÚtupleZget_path_for_nameÚsuperr+   )r"   r)   Zimport_node©r3   r   r   r+   r   s   ÿ
z$AbstractTreeName.get_qualified_namesc                 C   s$   | j  ¡ }|d u rd S || jjf S r   )r.   r+   rC   rS   )r"   Zparent_namesr   r   r   r&   ‚   s   
z%AbstractTreeName._get_qualified_namesc                 C   s$   |   ¡ rtdƒ‚| jr| j ¡ S d S )Nz&Shouldn't really happen, please report)r7   r    r.   rX   r!   r   r   r   r<   ˆ   s
   
z-AbstractTreeName.get_defining_qualified_valuec                    s|  | j ‰ | j‰ˆjdd�}|d ur7|j}|dkr#ˆjjdv}|r"| gS n*|dv r4ddlm} |ˆ ˆƒ}|S | gS ddlm} |ˆ ˆƒ}|d urMd	d
„ |D ƒS ˆj}|j}	|	dkrÜ|jd dkrÜ|jd ˆkrÜ|j}
|
jdkrp|
j}
|
jdkrÛ|
jdkrƒˆ  	|
jd ¡}n6|
jj 
|
¡}|
jjd |… }|d dkr�| d¡ ˆ  	|d ¡}ddlm} |dd … D ]}
|ˆ ||
ƒ}q°g }|D ]}| ¡ D ]}| ¡ D ]}|jˆjkrÖ| |¡ qÉqÃq½|S n.|	dk�r
|j 
ˆ¡}|dk�r
t|ƒ}g |j|d d …< ˆ  	|¡}t‡ ‡fdd„|D ƒƒS |	dk�r%|jd dk�r%tˆ ˆdd�}|jˆˆ d�S tˆddƒ�p-ˆ}|jdk�r6ˆ}ˆ jˆ|jd�S )NT©Zimport_name_alwaysÚ	expr_stmt)ÚpowerÚtrailer)rQ   rP   r   )Úgoto_import)Ú%follow_error_node_imports_if_possiblec                 S   ó   g | ]}|j ‘qS r   ©r   ©rT   rS   r   r   r   Ú
<listcomp>¥   ó    z)AbstractTreeName.goto.<locals>.<listcomp>ZargumentrR   ú=ZarglistÚclassdefÚ	decoratorÚawait)Úinfer_trailerZdotted_namec                 3   s   � | ]
}|j ˆˆ d �V  qdS )©Zname_contextN)r%   re   ©Úcontextr   r   r   rV   Ç   s
   € ÿ
ÿz(AbstractTreeName.goto.<locals>.<genexpr>r`   Ú.)Zcut_own_trailerrm   Zlambdef)Úposition)r.   rC   Úget_definitionÚtypeÚparentÚjedi.inference.importsra   rb   ÚchildrenÚ
infer_nodeÚindexÚpopÚjedi.inference.syntax_treerl   Zget_signaturesZget_param_namesr   rS   Úappendr   r	   r   r%   r   r   )r"   Ú
definitionÚtype_Zis_simple_namera   r*   rb   ÚvaluesÚparZ	node_typer`   Z	value_setÚiZto_inferrl   Zparam_namesrS   Ú	signatureÚ
param_namerx   Z
new_dottedÚstmtr   rn   r   r%   �   s†   ÿ

$




€þÿî


þÿþzAbstractTreeName.gotoc                 C   s   t | jddƒ}|d uS )NrQ   rP   ©r   rC   )r"   Úimpr   r   r   r7   ×   s   zAbstractTreeName.is_importc                 C   r9   r   )rC   rS   r!   r   r   r   r   Û   r;   zAbstractTreeName.string_namec                 C   r9   r   )rC   r   r!   r   r   r   r   ß   r;   zAbstractTreeName.start_posr=   )r4   r>   r?   rI   r+   r&   r<   r%   r7   rE   r   r   Ú__classcell__r   r   r\   r   rM   m   s    H
rM   c                       sH   e Zd Zdd„ Zdd„ Zdd„ Z‡ fdd„Zd	d
„ Zedd„ ƒZ	‡  Z
S )ÚValueNameMixinc                 C   s   t | jgƒS r   )r
   Ú_valuer!   r   r   r   r#   å   ó   zValueNameMixin.inferc                 C   sF   | j  ¡ }|s!| j  ¡ r!ddlm} || gdd�}| |vr!t|ƒS |S )Nr   ©Úconvert_namesF©Zprefer_stub_to_compiled)rˆ   r   Úis_stubÚ!jedi.inference.gradual.conversionr‹   r   )r"   r   r‹   r   r   r   r   r   è   s   
zValueNameMixin.py__doc__c                 C   r-   r   )rˆ   r+   r!   r   r   r   r&   ñ   r/   z#ValueNameMixin._get_qualified_namesc                    s   | j d u r
| j ¡ S tƒ  ¡ S r   )r.   rˆ   Ú
as_contextr[   r'   r!   r\   r   r   r'   ô   s   


zValueNameMixin.get_root_contextc                 C   s,   | j }|d ur| ¡ s| ¡ r| j  ¡ S d S r   )r.   Z	is_moduleÚis_classrX   )r"   ro   r   r   r   r<   ù   s   
z+ValueNameMixin.get_defining_qualified_valuec                 C   r9   r   )rˆ   r:   r!   r   r   r   r:   ÿ   r;   zValueNameMixin.api_type)r4   r>   r?   r#   r   r&   r'   r<   rE   r:   r†   r   r   r\   r   r‡   ä   s    	r‡   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )Ú	ValueNamec                    s   t ƒ  |j|¡ || _d S r   )r[   rI   r.   rˆ   )r"   rS   rC   r\   r   r   rI     s   
zValueName.__init__c                 C   s   t | jjgƒS r   )r
   rˆ   r   r!   r   r   r   r%   	  s   zValueName.goto)r4   r>   r?   rI   r%   r†   r   r   r\   r   r‘     s    r‘   c                   @   sX   e Zd Zedddddd�Zdd„ Zedd	„ ƒZd
d„ Zedd„ ƒZ	e
dd�dd„ ƒZdS )ÚTreeNameDefinitionÚmoduleÚfunctionÚparamÚclass)rP   rQ   Zfuncdefr•   ri   c                 C   s    ddl m} || jj| j| jƒS )Nr   )Útree_name_to_values)rz   r—   r.   rG   rC   )r"   r—   r   r   r   r#     s   ýzTreeNameDefinition.inferc                 C   s*   | j jdd�}|d u rdS | j |jd¡S )NTr]   Ú	statement)rC   rr   Ú
_API_TYPESÚgetrs   )r"   r|   r   r   r   r:     s   zTreeNameDefinition.api_typec           	      C   sÎ   g }d}| j j}| j }|dure|jdv rLt|jƒD ]+\}}||krDt|d ƒ}|r:tt|jƒ| d ƒ}t|| ƒ}| d||f¡  nqt	dƒ‚d}n|jdkrTd}n|jd	v r\	 |S |}|j}|dus|S )
a†  
        Returns an array of tuple(int, node) of the indexes that are used in
        tuple assignments.

        For example if the name is ``y`` in the following code::

            x, (y, z) = 2, ''

        would result in ``[(1, xyz_node), (0, yz_node)]``.

        When searching for b in the case ``a, *b, c = [...]`` it will return::

            [(slice(1, -1), abc_node)]
        FN)ZtestlistZtestlist_compZtestlist_star_exprZexprlisté   r   zCouldn't find the assignment.Z	star_exprT)r^   Zsync_comp_for)
rC   rt   rs   Ú	enumeraterv   r@   ÚlenÚsliceÚinsertÚLookupError)	r"   ZindexesZis_star_exprÚnodeÚcomparer€   Úchildrx   Zfrom_endr   r   r   Úassignment_indexes&  s4   
ú

þíz%TreeNameDefinition.assignment_indexesc                 C   r9   r   )r.   rG   r!   r   r   r   rG   O  s   z"TreeNameDefinition.inference_stater   )Údefaultc                 C   s˜   | j }|dv r*| j ¡  ¡ r#ddlm} || gdd�}| |vr#t|ƒS t| j 	¡ ƒS |dkr:|  
¡ }| |vr:t|ƒS |dkrJ| j ¡ rJt| j 	¡ ƒS dS )	N)r”   r–   rE   r   rŠ   FrŒ   r“   r˜   r   )r:   r.   r'   r�   rŽ   r‹   r   r   rC   rr   r%   Zis_definitionr   )r"   r:   r‹   r   r   r   r   r   T  s   zTreeNameDefinition.py__doc__N)r4   r>   r?   Údictr™   r#   rE   r:   r¤   rG   r   r   r   r   r   r   r’     s     û	
)
r’   c                   @   s2   e Zd Zddd„Zddd„Zdd„ Zdd	d
„ZdS )Ú_ParamMixinTc                 C   ó(   t jt jg}|r| t j¡ |  ¡ |v S r   )r   ÚPOSITIONAL_ONLYÚPOSITIONAL_OR_KEYWORDr{   ÚVAR_POSITIONALÚget_kind)r"   Zinclude_starÚoptionsr   r   r   Úmaybe_positional_argumentl  ó   z%_ParamMixin.maybe_positional_argumentc                 C   r¨   r   )r   ÚKEYWORD_ONLYrª   r{   ÚVAR_KEYWORDr¬   )r"   Zinclude_starsr­   r   r   r   Úmaybe_keyword_argumentr  r¯   z"_ParamMixin.maybe_keyword_argumentc                 C   ó(   |   ¡ }|tjkrdS |tjkrdS dS )NÚ*z**r   ©r¬   r   r«   r±   ©r"   Úkindr   r   r   Ú_kind_stringx  s   

z_ParamMixin._kind_stringFc                 C   r,   r   r   )r"   r)   r   r   r   r+   €  r8   z_ParamMixin.get_qualified_namesN)Tr=   )r4   r>   r?   r®   r²   r¸   r+   r   r   r   r   r§   k  s
    

r§   c                   @   s<   e Zd ZdZdd„ Zdd„ Zdd„ Zedd	„ ƒZd
d„ Z	dS )ÚParamNameInterfacer•   c                 C   r   r   r   r!   r   r   r   r¬   ‡  r8   zParamNameInterface.get_kindc                 C   r   r   r   r!   r   r   r   Ú	to_stringŠ  r8   zParamNameInterface.to_stringc                 C   r6   )as  
        For dealing with type inference and working around the graph, we
        sometimes want to have the param name of the execution. This feels a
        bit strange and we might have to refactor at some point.

        For now however it exists to avoid infering params when we don't really
        need them (e.g. when we can just instead use annotations.
        Nr   r!   r   r   r   Úget_executed_param_name�  s   	z*ParamNameInterface.get_executed_param_namec                 C   r³   )NrR   r›   r   rµ   r¶   r   r   r   Ú
star_count˜  s   

zParamNameInterface.star_countc                 C   rJ   r   rK   r!   r   r   r   Úinfer_default¡  r8   z ParamNameInterface.infer_defaultN)
r4   r>   r?   r:   r¬   rº   r»   rE   r¼   r½   r   r   r   r   r¹   „  s    
r¹   c                   @   s,   e Zd ZdZdZdd„ Zdd„ Zdd„ ZdS )ÚBaseTreeParamNameNc                 C   sX   |   ¡ |  ¡  }| j}| j}|d ur|d|jdd� 7 }|d ur*|d|jdd� 7 }|S )Nz: F)Zinclude_prefixrh   )r¸   r1   Úannotation_nodeÚdefault_nodeÚget_code)r"   ÚoutputÚ
annotationr¥   r   r   r   rº   ©  s   zBaseTreeParamName.to_stringc                 C   s    | j }| d¡r|dd … }|S )NÚ__r›   )r   Ú
startswith©r"   r   r   r   r   r1   ³  s   
z!BaseTreeParamName.get_public_namec                 K   s   | gS r   r   )r"   Úkwargsr   r   r   r%   »  r2   zBaseTreeParamName.goto)r4   r>   r?   r¿   rÀ   rº   r1   r%   r   r   r   r   r¾   ¥  s    
r¾   c                       s^   e Zd Z‡ fdd„Zdd„ Zedd„ ƒZdd	d
„Zdd„ Zedd„ ƒZ	dd„ Z
dd„ Z‡  ZS )Ú_ActualTreeParamNamec                    s   t ƒ  | ¡ |¡ || _d S r   )r[   rI   Zget_default_param_contextÚfunction_value)r"   rÉ   rC   r\   r   r   rI   À  s   ÿ
z_ActualTreeParamName.__init__c                 C   s   t | jdƒS )Nr•   r„   r!   r   r   r   Ú_get_param_nodeÅ  r‰   z$_ActualTreeParamName._get_param_nodec                 C   ó
   |   ¡ jS r   )rÊ   rÃ   r!   r   r   r   r¿   È  ó   
z$_ActualTreeParamName.annotation_nodeTFc                 C   s0   ddl m} || j|  ¡ |d�}|r| ¡ }|S )Nr   )Úinfer_param)Úignore_stars)Z!jedi.inference.gradual.annotationrÍ   rÉ   rÊ   Úexecute_annotation)r"   rÏ   rÎ   rÍ   r~   r   r   r   Úinfer_annotationÌ  s   
þz%_ActualTreeParamName.infer_annotationc                 C   s   | j }|d u r	tS | j |¡S r   )rÀ   r   r.   rw   )r"   r¡   r   r   r   r½   Õ  s   z"_ActualTreeParamName.infer_defaultc                 C   rË   r   )rÊ   r¥   r!   r   r   r   rÀ   Û  rÌ   z!_ActualTreeParamName.default_nodec                 C   s¨   |   ¡ }|jdkrtjS |jdkrtjS |jj d¡rtjS |j	}d}|j
D ]*}|r4|dkr3tj  S q&|dkr=tj  S |jdkrP|jrJtj  S ||krPd}q&tjS )	NrR   r›   rÄ   Fú/r´   r•   T)rÊ   r¼   r   r«   r±   r   rS   rÅ   r©   rt   rv   r°   rs   rª   )r"   Z
tree_paramrt   Zparam_appearedÚpr   r   r   r¬   ß  s.   



ÿ


€z_ActualTreeParamName.get_kindc                 C   s&   |   ¡ }|r|S t | j|  ¡ ¡}|S r   )rÐ   r   rÍ   rÉ   rÊ   )r"   r~   Z
doc_paramsr   r   r   r#   û  s
   z_ActualTreeParamName.infer)TF)r4   r>   r?   rI   rÊ   rE   r¿   rÐ   r½   rÀ   r¬   r#   r†   r   r   r\   r   rÈ   ¿  s    

	
rÈ   c                       s@   e Zd Zejdd�‡ fdd„ƒZejdd�‡ fdd„ƒZ‡  ZS )ÚAnonymousParamNameZgoto_anonymous_paramrd   c                    s
   t ƒ  ¡ S r   )r[   r%   r!   r\   r   r   r%     rÌ   zAnonymousParamName.gotoZinfer_anonymous_paramc                    s°   t ƒ  ¡ }|r	|S ddlm} |  ¡ }|| j|jƒ}|r|S |jdkr1ddlm	} || jj
g ƒ}n"|jdkrDddlm} || jj
i ƒ}n|jd u rKtS | jj |j¡S t|hƒS )Nr   )Údynamic_param_lookuprR   )Ú	FakeTupler›   )ÚFakeDict)r[   r#   Zjedi.inference.dynamic_paramsrÔ   rÊ   rÉ   Úposition_indexr¼   Zjedi.inference.value.iterablerÕ   rG   rÖ   r¥   r   r.   rw   r
   )r"   r~   rÔ   r•   rÕ   rS   rÖ   r\   r   r   r#   	  s$   




zAnonymousParamName.infer)r4   r>   r?   r   Zdecorater%   r#   r†   r   r   r\   r   rÓ     s
    

rÓ   c                       s0   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Z‡  ZS )Ú	ParamNamec                    s   t ƒ  ||¡ || _d S r   )r[   rI   Ú	arguments)r"   rÉ   rC   rÙ   r\   r   r   rI   "  s   
zParamName.__init__c                    s   t ƒ  ¡ }|r	|S |  ¡  ¡ S r   )r[   r#   r»   )r"   r~   r\   r   r   r#   &  s   
zParamName.inferc                 C   s(   ddl m} || j| jƒ}||  ¡ j S )Nr   )Úget_executed_param_names)Zjedi.inference.paramrÚ   rÉ   rÙ   rÊ   r×   )r"   rÚ   Zparams_namesr   r   r   r»   -  s   z!ParamName.get_executed_param_name)r4   r>   r?   rI   r#   r»   r†   r   r   r\   r   rØ   !  s    rØ   c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚParamNameWrapperc                 C   ó
   || _ d S r   )Ú_wrapped_param_name)r"   r‚   r   r   r   rI   4  r/   zParamNameWrapper.__init__c                 C   ó   t | j|ƒS r   )ÚgetattrrÞ   rÆ   r   r   r   Ú__getattr__7  r‰   zParamNameWrapper.__getattr__c                 C   ó   d| j j| jf S )Nz<%s: %s>)r3   r4   rÞ   r!   r   r   r   r5   :  ó   zParamNameWrapper.__repr__N©r4   r>   r?   rI   rá   r5   r   r   r   r   rÜ   3  ó    rÜ   c                   @   sZ   e Zd ZdZdZdd„ Zddd„Zedd	„ ƒZe	d
d„ ƒZ
dd„ Zedd„ ƒZdd„ ZdS )Ú
ImportName©rR   r   r   c                 C   rN   r   )Ú_from_module_contextr   )r"   r.   r   r   r   r   rI   B  rO   zImportName.__init__Fc                 C   sH   |r"| j r| j dksJ dƒ‚| jj}|d u r|S || jf S | jfS dS )NrR   z(Everything else is not supported for nowr   )Ú_levelrè   r(   r   )r"   r)   r*   r   r   r   r+   F  s   zImportName.get_qualified_namesc                 C   s&   | j }|  ¡ }|s|S tt|ƒƒ ¡ S r   )rè   r#   ÚnextÚiterr�   )r"   ÚmZimport_valuesr   r   r   r.   Q  s
   zImportName.parent_contextc                 C   s.   ddl m} | j}||j| jg|| jd� ¡ S )Nr   )ÚImporter)rW   )ru   rí   rè   rG   r   ré   Úfollow)r"   rí   rì   r   r   r   r#   [  s   zImportName.inferc                 C   s   dd„ |   ¡ D ƒS )Nc                 S   rc   r   rd   )rT   rì   r   r   r   rf   b  rg   z#ImportName.goto.<locals>.<listcomp>)r#   r!   r   r   r   r%   a  rã   zImportName.gotoc                 C   r6   )Nr“   r   r!   r   r   r   r:   d  r$   zImportName.api_typec                 C   s   t |  ¡ ƒS r   )r   r%   r!   r   r   r   r   h  r‰   zImportName.py__doc__Nr=   )r4   r>   r?   r   ré   rI   r+   rE   r.   r   r#   r%   r:   r   r   r   r   r   ræ   >  s    

	

ræ   c                   @   s   e Zd ZdZdS )ÚSubModuleNamerR   N)r4   r>   r?   ré   r   r   r   r   rï   l  s    rï   c                   @   rÛ   )ÚNameWrapperc                 C   rÝ   r   )Ú_wrapped_name)r"   Zwrapped_namer   r   r   rI   q  r/   zNameWrapper.__init__c                 C   rß   r   )rà   rñ   rÆ   r   r   r   rá   t  r‰   zNameWrapper.__getattr__c                 C   râ   )Nz%s(%s))r3   r4   rñ   r!   r   r   r   r5   w  rã   zNameWrapper.__repr__Nrä   r   r   r   r   rð   p  rå   rð   c                       ó   e Zd Z‡ fdd„Z‡  ZS )ÚStubNameMixinc                    sd   ddl m} | g}| jdkrd| j ¡ jv rdd„ |  ¡ D ƒ}||dd�}| |v r.tƒ  ¡ S t	|ƒS )	Nr   rŠ   r˜   rh   c                 S   rc   r   rd   )rT   Úvr   r   r   rf   ƒ  rg   z+StubNameMixin.py__doc__.<locals>.<listcomp>FrŒ   )
rŽ   r‹   r:   rC   rr   rv   r#   r[   r   r   )r"   r‹   r   r\   r   r   r   |  s   
zStubNameMixin.py__doc__)r4   r>   r?   r   r†   r   r   r\   r   ró   {  ó    ró   c                       rò   )ÚStubNamec                    sJ   t ƒ  ¡ }| jdkr#|  ¡  ¡ dkr#ddlm‰  t‡ fdd„|D ƒƒS |S )NÚversion_infoÚsysr   ©ÚVersionInfoc                 3   s   � | ]}ˆ |ƒV  qd S r   r   )rT   Úcrù   r   r   rV   ”  s   € z!StubName.infer.<locals>.<genexpr>)r[   r#   r   r'   Z
py__name__Z!jedi.inference.gradual.stub_valuerú   r
   )r"   Úinferredr\   rù   r   r#   �  s
   
zStubName.infer)r4   r>   r?   r#   r†   r   r   r\   r   rö   �  rõ   rö   c                   @   s$   e Zd ZdZdd„ Zedd„ ƒZdS )Ú
ModuleNamerç   c                 C   rN   r   )rˆ   Ú_name)r"   rS   r   r   r   r   rI   ›  rO   zModuleName.__init__c                 C   r0   r   )rþ   r!   r   r   r   r   Ÿ  s   zModuleName.string_nameN)r4   r>   r?   r   rI   rE   r   r   r   r   r   rý   ˜  s
    rý   c                   @   s   e Zd ZdS )ÚStubModuleNameN)r4   r>   r?   r   r   r   r   rÿ   ¤  s    rÿ   N)1Úabcr   Úinspectr   Útypingr   r   Z
parso.treer   Zjedi.parser_utilsr   r   Zjedi.inference.utilsr	   Zjedi.inference.base_valuer
   r   Zjedi.inference.cacher   Zjedi.inferencer   Z
jedi.cacher   Zjedi.inference.helpersr   r   Zjedi.pluginsr   r   r   rF   rM   r‡   r‘   r’   r§   r¹   r¾   rÈ   rÓ   rØ   rÜ   ræ   rï   rð   ró   rö   rý   rÿ   r   r   r   r   Ú<module>   sB    @w 	^!E.	