
    ^jJ[                     N   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	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 Z G d d      Z G d de      Z G d de      Z G d d      Z G d dee      Z G d de      Z G d d      Z  G d de       Z! G d de!e      Z" G d de"      Z# G d  d!e#      Z$ G d" d#e#      Z% G d$ d%e       Z& G d& d'e      Z' G d( d)e'      Z( G d* d+      Z) G d, d-      Z* G d. d/e*e      Z+ G d0 d1ee      Z, G d2 d3e*e,      Z-y4)5    )abstractmethod)	Parameter)OptionalTupleAny)find_statement_documentationclean_scope_docstring)ValueSet	NO_VALUES)inference_state_method_cache)
docstrings)memoize_method)deep_ast_copyinfer_call_of_leaf)plugin_managerc                 L    d}| D ]  }|r|dz  }||j                         z  } |S )N z 
------------------------------
)	py__doc__)namesdocnames      M/opt/ringagent/.cad-venv/lib/python3.12/site-packages/jedi/inference/names.py_merge_name_docsr      s>    
C   ))Ct~~  J    c                       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        Zd ZddZd Zd	 Zd
 Zd Zd Zd Zed        Zd Zy)AbstractNameDefinitionN	start_posstring_nameTc                     t         NNotImplementedErrorselfs    r   inferzAbstractNameDefinition.infer#   s    !!r   c                     | hS r     r#   s    r   gotozAbstractNameDefinition.goto'   s     vr   c                 r    | j                         }||s|S | j                         j                  }|y ||z   S r    )_get_qualified_namesget_root_contextstring_names)r$   include_module_namesqualified_namesmodule_namess       r   get_qualified_namesz*AbstractNameDefinition.get_qualified_names,   sG    335"*>"",,.;;o--r   c                      y r    r'   r#   s    r   r*   z+AbstractNameDefinition._get_qualified_names6   s    r   c                 6    | j                   j                         S r    )parent_contextr+   r#   s    r   r+   z'AbstractNameDefinition.get_root_context:   s    ""3355r   c                     | j                   S r    )r   r#   s    r   get_public_namez&AbstractNameDefinition.get_public_name=   s    r   c                     | j                   'd| j                  j                  d| j                  dS d| j                  j                  d| j                  d| j                   dS )N<z: string_name=>z start_pos=)r   	__class____name__r   r#   s    r   __repr__zAbstractNameDefinition.__repr__@   sT    >>!-1^^-D-DdFVFVWW "6:nn6M6M6:6F6FX 	Xr   c                      y)NFr'   r#   s    r   	is_importz AbstractNameDefinition.is_importF   s    r   c                      y)Nr   r'   r#   s    r   r   z AbstractNameDefinition.py__doc__I   s    r   c                 .    | j                   j                  S r    )r3   api_typer#   s    r   r@   zAbstractNameDefinition.api_typeL   s    ""+++r   c                      y)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#   s    r   get_defining_qualified_valuez3AbstractNameDefinition.get_defining_qualified_valueP   s    
 r   F)r:   
__module____qualname__r   r   r   int__annotations__strr3   	tree_nameis_value_namer   r%   r(   r0   r*   r+   r5   r;   r=   r   propertyr@   rB   r'   r   r   r   r      s    +/Ixc3h(/NIM " "
.6 X , ,r   r   c                        e Zd ZdZdZd Zd Zy)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                 B    || _         || _        |j                  | _        y r    )inference_stater   builtins_moduler3   )r$   rO   strings      r   __init__zAbstractArbitraryName.__init__`   s     .!-==r   c                     t         S r    r   r#   s    r   r%   zAbstractArbitraryName.infere       r   N)r:   rD   rE   __doc__rJ   rR   r%   r'   r   r   rM   rM   X   s    
 M>
r   rM   c                   t     e Zd ZU eed<   eed<   d Zd fd	Zd Zd Zd Z	d Z
ed	        Zed
        Z xZS )AbstractTreeNamerI   r3   c                      || _         || _        y r    )r3   rI   )r$   r3   rI   s      r   rR   zAbstractTreeName.__init__m   s    ,"r   c                 H   | j                   j                  dd      }|u|j                  dk(  r,| j                         j	                         j                         s:|r7|j                  s+t        d |j                  | j                         D              S y t        | %  |      S )Nimport_nameimport_from   c              3   4   K   | ]  }|j                     y wr    )value).0ns     r   	<genexpr>z7AbstractTreeName.get_qualified_names.<locals>.<genexpr>{   s     \QWW\s   )
rI   search_ancestorlevelr+   	get_value
is_packagetupleget_path_for_namesuperr0   )r$   r-   import_noder9   s      r   r0   z$AbstractTreeName.get_qualified_namesq   s    nn44]MR
 "K,=,=,B040E0E0G0Q0Q0S0^0^0`#K,=,=\k.K.KDNN.[\\\w*+?@@r   c                 p    | j                   j                         }|y || j                  j                  fz   S r    )r3   r0   rI   r_   )r$   parent_namess     r   r*   z%AbstractTreeName._get_qualified_names   s7    **>>@t~~33555r   c                     | j                         rt        d      | j                  r| j                  j                         S y )Nz&Shouldn't really happen, please report)r=   r"   r3   re   r#   s    r   rB   z-AbstractTreeName.get_defining_qualified_value   s9    >>%&NOO  &&0022r   c                 `   | j                   }| j                  }|j                  d      }|F|j                  }|dk(  r|j                  j                  dv}|rF| gS |dv rddlm}  |||      }|S | gS ddlm}  |||      }	|	|	D 
cg c]  }
|
j                   c}
S |j                  }|j                  }|d	k(  rp|j                  d
   dk(  r]|j                  d   |k(  rJ|j                  }|j                  dk(  r|j                  }|j                  dk7  r|j                  dk(  r|j                  |j                  d
         }n|j                  j                  j                  |      }|j                  j                  d | }|d   dk(  r|j                  d       |j                  |d         }ddlm} |d
d  D ]  } ||||      } g }|D ]W  }
|
j                         D ]B  }|j!                         D ]-  }|j"                  |j$                  k(  s|j'                  |       / D Y |S |dk(  rx|j                  j                  |      }|dkD  rXt)        |      }g |j                  |d
z
  d  |j                  |      }	|	D 
cg c]  }
|
j+                  ||      D ]  }|  c}}
S |dk(  r3|j                  d   dk(  r!t-        ||d      }	|	j+                  ||      S |j/                  dd      xs |}|j                  dk(  r|}|j+                  ||j0                        S c c}
w c c}}
w )NTimport_name_always	expr_stmt)powertrailer)r\   r[   r   )goto_import)%follow_error_node_imports_if_possibleargumentr]   =arglistclassdef	decoratorawait)infer_trailerdotted_name)name_contextrs   .)cut_own_trailerlambdef)position)r3   rI   get_definitiontypeparentjedi.inference.importsrt   ru   r   children
infer_nodeindexpopjedi.inference.syntax_treer|   get_signaturesget_param_namesr   r_   appendr   r(   r   rc   r   )r$   contextr   
definitiontype_is_simple_namert   r/   ru   valuesr_   par	node_typers   	value_setito_inferr|   param_names	signature
param_namer   
new_dottedra   stmts                            r   r(   zAbstractTreeName.goto   s@   %%~~((D(A
!OOE# "&!1!19M!M! 6M88>*7D9##vT:7DIF!067u

77kkHH	
"s||A#'=#,,q/UYBYjjG||y(!..||z)<<;. ' 2 273C3CA3F GI//55g>A&~~66r:H{g- Q ' 2 28A; ?IH#+AB< O$1'9g$N	O & ?E%*%9%9%; ?	*3*C*C*E ?J)55C + 2 2: >???
 #"-'LL&&t,Eqy*3/
24
##EAIJ/ ++J7 "("ZZ7ZC    	!cll1o&<'tLF;;t';::''Y?G4DyyI%<<t~~<>>_ 8Ds   L%!L*c                 B    | j                   j                  dd      }|d uS )Nr\   r[   rI   rc   )r$   imps     r   r=   zAbstractTreeName.is_import   s"    nn,,]MJ$r   c                 .    | j                   j                  S r    )rI   r_   r#   s    r   r   zAbstractTreeName.string_name   s    ~~###r   c                 .    | j                   j                  S r    )rI   r   r#   s    r   r   zAbstractTreeName.start_pos   s    ~~'''r   rC   )r:   rD   rE   r   rG   rR   r0   r*   rB   r(   r=   rK   r   r   __classcell__r9   s   @r   rX   rX   i   sW    N#A 6E?N $ $ ( (r   rX   c                   \     e Zd ZU eed<   eed<   d Zd Zd Z fdZd Z	e
d        Z xZS )	ValueNameMixin_valuer3   c                 .    t        | j                  g      S r    )r
   r   r#   s    r   r%   zValueNameMixin.infer   s    &&r   c                     | j                   j                         }|s:| j                   j                         r ddlm}  || gd      }| |vrt        |      S |S )Nr   convert_namesFprefer_stub_to_compiled)r   r   is_stub!jedi.inference.gradual.conversionr   r   )r$   r   r   r   s       r   r   zValueNameMixin.py__doc__   sO    kk##%t{{**,G!4&%HE5 '..
r   c                 6    | j                   j                         S r    )r   r0   r#   s    r   r*   z#ValueNameMixin._get_qualified_names   s    {{..00r   c                 l    | j                   | j                  j                         S t        |          S r    )r3   r   
as_contextri   r+   r$   r9   s    r   r+   zValueNameMixin.get_root_context   s0    &;;))++w'))r   c                     | j                   }|:|j                         s|j                         r| j                   j                         S y r    )r3   	is_moduleis_classre   )r$   r   s     r   rB   z+ValueNameMixin.get_defining_qualified_value   sA    %%G$5$5$77;K;K;M&&0022r   c                 .    | j                   j                  S r    )r   r@   r#   s    r   r@   zValueNameMixin.api_type   s    {{###r   )r:   rD   rE   r   rG   r%   r   r*   r+   rB   rK   r@   r   r   s   @r   r   r      s;    K'1*
 $ $r   r   c                   $     e Zd Z fdZd Z xZS )	ValueNamec                 H    t         |   |j                  |       || _        y r    )ri   rR   r3   r   )r$   r_   rI   r9   s      r   rR   zValueName.__init__  s    --y9r   c                 B    t        | j                  j                  g      S r    )r
   r   r   r#   s    r   r(   zValueName.goto
  s    ))*++r   )r:   rD   rE   rR   r(   r   r   s   @r   r   r     s    ,r   r   c                   p    e Zd Z eddddd      Zd Zed        Zd Zed	        Z	 e
d
      d        Zy)TreeNameDefinitionmodulefunctionparamclass)r[   r\   funcdefr   ry   c                 r    ddl m}  || j                  j                  | j                  | j                        S )Nr   )tree_name_to_values)r   r   r3   rO   rI   )r$   r   s     r   r%   zTreeNameDefinition.infer  s1    B"//NN
 	
r   c                     | j                   j                  d      }|y| j                  j                  |j                  d      S )NTro   	statement)rI   r   
_API_TYPESgetr   )r$   r   s     r   r@   zTreeNameDefinition.api_type   s=    ^^22d2K
"":??K@@r   c                    g }d}| j                   j                  }| j                   }||j                  dv rt        |j                        D ]a  \  }}||k(  st        |dz        }|r1t        t        |j                        |z
  dz        }t        ||       }|j                  d||f        n t        d      d}n#|j                  dk(  rd}n|j                  dv r	 |S |}|j                  }||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)]
        F)testlisttestlist_comptestlist_star_exprexprlist   r   zCouldn't find the assignment.	star_exprT)rq   sync_comp_for)
rI   r   r   	enumerater   rF   lensliceinsertLookupError)	r$   indexesis_star_exprnodecomparer   childr   from_ends	            r   assignment_indexesz%TreeNameDefinition.assignment_indexes'  s	    ~~$$..yy[[ )$-- 8 	GHAu' #AE
''*C,>,Ba+G'HH$)%($;Eq5$-8	G &&EFF$k)#<<  G;;D' ( r   c                 .    | j                   j                  S r    )r3   rO   r#   s    r   rO   z"TreeNameDefinition.inference_stateP  s     ""222r   r   )defaultc                    | j                   }|dv rk| j                  j                         j                         r ddlm}  || gd      }| |vrt        |      S t        | j                  j                               S |dk(  r| j                         }| |vrt        |      S |dk(  r=| j                  j                         r#t        | j                  j                               S y)	N)r   r   rK   r   r   Fr   r   r   r   )r@   r3   r+   r   r   r   r   r	   rI   r   r(   is_definitionr   )r$   r@   r   r   s       r   r   zTreeNameDefinition.py__doc__U  s    ==88""335==?K%tfeLu$+E22 ))F)F)HIIxIIKE5 '..{"t~~'C'C'E/0M0M0OPPr   N)r:   rD   rE   dictr   r%   rK   r@   r   rO   r   r   r'   r   r   r   r     si    J
 A A'R 3 3 ""- .r   r   c                   6    e Zd ZU eed<   ddZddZd ZddZy)	_ParamMixinget_kindc                     t         j                  t         j                  g}|r|j                  t         j                         | j                         |v S r    )r   POSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr   VAR_POSITIONALr   )r$   include_staroptionss      r   maybe_positional_argumentz%_ParamMixin.maybe_positional_argumento  s>    '779X9XYNN9334}}'))r   c                     t         j                  t         j                  g}|r|j                  t         j                         | j                         |v S r    )r   KEYWORD_ONLYr   r   VAR_KEYWORDr   )r$   include_starsr   s      r   maybe_keyword_argumentz"_ParamMixin.maybe_keyword_argumentu  s>    '44i6U6UVNN9001}}'))r   c                 t    | j                         }|t        j                  k(  ry|t        j                  k(  ryy)N*z**r   r   r   r   r   r$   kinds     r   _kind_stringz_ParamMixin._kind_string{  s2    }}9+++9(((r   c                      y r    r'   )r$   r-   s     r   r0   z_ParamMixin.get_qualified_names  s    r   N)TrC   )	r:   rD   rE   r   rG   r   r   r   r0   r'   r   r   r   r   l  s    M**r   r   c                   8    e Zd ZdZd Zd Zd Zed        Zd Z	y)ParamNameInterfacer   c                     t         r    r!   r#   s    r   r   zParamNameInterface.get_kind      !!r   c                     t         r    r!   r#   s    r   	to_stringzParamNameInterface.to_string  r   r   c                      y)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#   s    r   get_executed_param_namez*ParamNameInterface.get_executed_param_name  s     r   c                 t    | j                         }|t        j                  k(  ry|t        j                  k(  ryy)Nr]   r   r   r   r   s     r   
star_countzParamNameInterface.star_count  s2    }}9+++9(((r   c                     t         S r    rT   r#   s    r   infer_defaultz ParamNameInterface.infer_default  rU   r   N)
r:   rD   rE   r@   r   r   r   rK   r  r  r'   r   r   r   r     s/    H""	  r   r   c                   &    e Zd ZdZdZd Zd Zd Zy)BaseTreeParamNameNc                     | j                         | j                         z   }| j                  }| j                  }||d|j	                  d      z   z  }||d|j	                  d      z   z  }|S )N: F)include_prefixrw   )r   r5   annotation_nodedefault_nodeget_code)r$   output
annotationr   s       r   r   zBaseTreeParamName.to_string  s    ""$t';';'==))
##!dZ000FFFFcG,,E,BBBFr   c                 J    | j                   }|j                  d      r|dd  }|S )N__r   )r   
startswithr$   r   s     r   r5   z!BaseTreeParamName.get_public_name  s+    ??4  8Dr   c                     | gS r    r'   )r$   kwargss     r   r(   zBaseTreeParamName.goto  s	    vr   )r:   rD   rE   r	  r
  r   r5   r(   r'   r   r   r  r    s    OLr   r  c                   ^     e Zd Z fdZd Zed        Zd	dZd Zed        Z	d Z
d Z xZS )
_ActualTreeParamNamec                 P    t         |   |j                         |       || _        y r    )ri   rR   get_default_param_contextfunction_value)r$   r  rI   r9   s      r   rR   z_ActualTreeParamName.__init__  s'    446		C,r   c                 8    | j                   j                  d      S )Nr   r   r#   s    r   _get_param_nodez$_ActualTreeParamName._get_param_node  s    ~~--g66r   c                 6    | j                         j                  S r    )r  r  r#   s    r   r	  z$_ActualTreeParamName.annotation_node  s    ##%000r   c                     ddl m}  || j                  | j                         |      }|r)|j	                  | j                  j                               }|S )Nr   )infer_param)ignore_stars)!jedi.inference.gradual.annotationr  r  r  execute_annotationr  )r$   r   r  r  r   s        r   infer_annotationz%_ActualTreeParamName.infer_annotation  sO    A!5!5!7%' ..t/B/B/\/\/^_Fr   c                 `    | j                   }|t        S | j                  j                  |      S r    )r
  r   r3   r   )r$   r   s     r   r  z"_ActualTreeParamName.infer_default  s/      <""--d33r   c                 6    | j                         j                  S r    )r  r   r#   s    r   r
  z!_ActualTreeParamName.default_node  s    ##%---r   c                 4   | j                         }|j                  dk(  rt        j                  S |j                  dk(  rt        j                  S |j
                  j                  j                  d      rt        j                  S |j                  }d}|j                  D ]i  }|r|dk(  st        j                  c S |dk(  rt        j                  c S |j                  dk(  sD|j                  rt        j                  c S ||k(  shd}k t        j                  S )	Nr]   r   r  F/r   r   T)r  r  r   r   r   r   r_   r  r   r   r   r   r   r   )r$   
tree_paramr   param_appearedps        r   r   z_ActualTreeParamName.get_kind  s    ))+
  A%+++  A%((( ??  ++D1,,,"" 	.A8$4448$11166W$||(555J)-	. ...r   c                     | j                         }|r|S t        j                  | j                  | j	                               }|S r    )r!  r   r  r  r  )r$   r   
doc_paramss      r   r%   z_ActualTreeParamName.infer  s?    &&(M++D,?,?AUAUAWX
r   )TF)r:   rD   rE   rR   r  rK   r	  r!  r  r
  r   r%   r   r   s   @r   r  r    sI    -
7 1 14 . ./8r   r  c                        e Zd Z ej                  d       fd       Z ej                  d       fd       Z xZS )AnonymousParamNamegoto_anonymous_param)r   c                      t         |          S r    )ri   r(   r   s    r   r(   zAnonymousParamName.goto  s    w|~r   infer_anonymous_paramc                    t         |          }|r|S ddlm} | j	                         } || j
                  |j                        }|r|S |j                  dk(  r$ddlm	}  || j
                  j                  g       }nt|j                  dk(  r$ddlm}  || j
                  j                  i       }nA|j                  t        S | j
                  j                  j                  |j                        S t!        |h      S )Nr   )dynamic_param_lookupr]   )	FakeTupler   )FakeDict)ri   r%   jedi.inference.dynamic_paramsr1  r  r  position_indexr  jedi.inference.value.iterabler2  rO   r3  r   r   r3   r   r
   )r$   r   r1  r   r2  r_   r3  r9   s          r   r%   zAnonymousParamName.infer  s    MF$$&%d&9&95;O;OPMq ?d11AA2FE">T00@@"EE]]"&&55@@OO  r   )r:   rD   rE   r   decorater(   r%   r   r   s   @r   r,  r,    sE    ^"89 : ^"9:! ;!r   r,  c                   .     e Zd Z fdZ fdZd Z xZS )	ParamNamec                 4    t         |   ||       || _        y r    )ri   rR   	arguments)r$   r  rI   r;  r9   s       r   rR   zParamName.__init__%  s    3"r   c                 d    t         |          }|r|S | j                         j                         S r    )ri   r%   r   )r$   r   r9   s     r   r%   zParamName.infer)  s.    M++-3355r   c                     ddl m}  || j                  | j                        }|| j	                         j
                     S )Nr   )get_executed_param_names)jedi.inference.paramr>  r  r;  r  r5  )r$   r>  params_namess      r   r   z!ParamName.get_executed_param_name0  s5    A/0C0CT^^TD002AABBr   )r:   rD   rE   rR   r%   r   r   r   s   @r   r9  r9  $  s    #6Cr   r9  c                       e Zd Zd Zd Zd Zy)ParamNameWrapperc                     || _         y r    )_wrapped_param_name)r$   r   s     r   rR   zParamNameWrapper.__init__7  s
    #- r   c                 .    t        | j                  |      S r    )getattrrD  r  s     r   __getattr__zParamNameWrapper.__getattr__:  s    t//66r   c                 P    d| j                   j                  d| j                  dS )Nr7   r  r8   )r9   r:   rD  r#   s    r   r;   zParamNameWrapper.__repr__=  s    !^^44d6N6NOOr   Nr:   rD   rE   rR   rG  r;   r'   r   r   rB  rB  6  s    .7Pr   rB  c                   ^    e Zd ZdZdZd ZddZed        Ze	d        Z
d Zed        Zd	 Zy
)
ImportNamer]   r   r   c                      || _         || _        y r    )_from_module_contextr   )r$   r3   r   s      r   rR   zImportName.__init__E  s    $2!&r   c                     |rY| j                   r@| j                   dk(  sJ d       | j                  j                  }||S || j                  fz   S | j                  fS y)Nr]   z(Everything else is not supported for nowr'   )_levelrN  r,   r   )r$   r-   r/   s      r   r0   zImportName.get_qualified_namesI  sg    {{{{a'S)SS'#88EE'''#t'7'7&999$$&&r   c                     | j                   }| j                         }|s|S t        t        |            j	                         S r    )rN  r%   nextiterr   )r$   mimport_valuess      r   r3   zImportName.parent_contextT  s;    %%

H D'(3355r   c                     ddl m} | j                  } ||j                  | j                  g|| j
                        j                         S )Nr   )Importer)rd   )r   rW  rN  rO   r   rP  follow)r$   rW  rT  s      r   r%   zImportName.infer^  s=    3%%))D,<,<+=qT[[]]r   c                 \    | j                         D cg c]  }|j                   c}S c c}w r    )r%   r   )r$   rT  s     r   r(   zImportName.gotod  s      $

-1---s   )c                      y)Nr   r'   r#   s    r   r@   zImportName.api_typeg  s    r   c                 4    t        | j                               S r    )r   r(   r#   s    r   r   zImportName.py__doc__k  s    		,,r   NrC   )r:   rD   rE   r   rP  rR   r0   rK   r3   r   r%   r(   r@   r   r'   r   r   rK  rK  A  s^    IF'	 6 6 ^ ^
.  -r   rK  c                       e Zd ZdZy)SubModuleNamer]   N)r:   rD   rE   rP  r'   r   r   r]  r]  o  s    Fr   r]  c                       e Zd Zd Zd Zd Zy)NameWrapperc                     || _         y r    )_wrapped_name)r$   wrapped_names     r   rR   zNameWrapper.__init__t  s
    )r   c                 .    t        | j                  |      S r    )rF  ra  r  s     r   rG  zNameWrapper.__getattr__w  s    t))400r   c                 N    | j                   j                  d| j                  dS )N())r9   r:   ra  r#   s    r   r;   zNameWrapper.__repr__z  s    >>22D4F4FGGr   NrI  r'   r   r   r_  r_  s  s    *1Hr   r_  c                   >     e Zd ZU eed<   eed<   eed<    fdZ xZS )StubNameMixinr@   rI   r%   c                 &   ddl m} | g}| j                  dk(  rMd| j                  j	                         j
                  v r'| j                         D cg c]  }|j                   }} ||d      }| |v rt        | %         S t        |      S c c}w )Nr   r   r   rw   Fr   )r   r   r@   rI   r   r   r%   r   ri   r   r   )r$   r   r   vr9   s       r   r   zStubNameMixin.py__doc__  s    C ==K'C4>>3P3P3R3[3[,[%)ZZ\2QVV2E2eUC5=7$&& $E** 3s   B)r:   rD   rE   rH   rG   r   r   r   r   s   @r   rh  rh  ~  s    MNJ+ +r   rh  c                        e Zd Z fdZ xZS )StubNamec                     t         |          }| j                  dk(  r;| j                         j	                         dk(  rddlm t        fd|D              S |S )Nversion_infosysr   )VersionInfoc              3   .   K   | ]  } |        y wr    r'   )r`   crp  s     r   rb   z!StubName.infer.<locals>.<genexpr>  s     =qKN=s   )ri   r%   r   r+   
py__name__!jedi.inference.gradual.stub_valuerp  r
   )r$   inferredrp  r9   s     @r   r%   zStubName.infer  sO    7=?~-$2G2G2I2T2T2VZ_2_E=H===r   )r:   rD   rE   r%   r   r   s   @r   rl  rl    s     r   rl  c                   &    e Zd ZdZd Zed        Zy)
ModuleNamerL  c                      || _         || _        y r    )r   _name)r$   r_   r   s      r   rR   zModuleName.__init__  s    
r   c                     | j                   S r    )ry  r#   s    r   r   zModuleName.string_name  s    zzr   N)r:   rD   rE   r   rR   rK   r   r'   r   r   rw  rw    s     I  r   rw  c                       e Zd Zy)StubModuleNameN)r:   rD   rE   r'   r   r   r|  r|    s    r   r|  N).abcr   inspectr   typingr   r   r   jedi.parser_utilsr   r	   jedi.inference.base_valuer
   r   jedi.inference.cacher   jedi.inferencer   
jedi.cacher   jedi.inference.helpersr   r   jedi.pluginsr   r   r   rM   rX   r   r   r   r   r   r  r  r,  r9  rB  rK  r]  r_  rh  rl  rw  r|  r'   r   r   <module>r     s:     ' ' Q 9 = % % D '< <~2 "v(- v(r $  $F, 0 ,[) [| 6 B*,< 4B, BJ!- !:C$ C$P{ P+-' +-\J H H+ +0}0 	!7 		]J 	r   