
    fZ                     b   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 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 d0 d1e-e"      Z. G d2 d3e e      Z/ G d4 d5e-e/      Z0y6)7    )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                 L    d}| D ]  }|r|dz  }||j                         z  } |S )N z 
------------------------------
)	py__doc__)namesdocnames      O/var/www/cvtools/html/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e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_names0   sG    335"*>"",,.;;o--r   c                      y r!   r(   r$   s    r   r+   z+AbstractNameDefinition._get_qualified_names:   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_nameA   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__D   sT    >>!-1^^-D-DdFVFVWW "6:nn6M6M6:6F6FX 	Xr   c                      y)NFr(   r$   s    r   	is_importz AbstractNameDefinition.is_importJ   s    r   c                      y)Nr   r(   r$   s    r   r   z AbstractNameDefinition.py__doc__M   s    r   c                 .    | j                   j                  S r!   )r4   api_typer$   s    r   rA   zAbstractNameDefinition.api_typeP   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_valueT   s    
 r   F)r;   
__module____qualname__r   r   r   int__annotations__strr4   	tree_nameis_value_namer   r&   r)   r1   r+   r,   r6   r<   r>   r   propertyrA   rC   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_moduler4   )r%   rP   strings      r   __init__zAbstractArbitraryName.__init__d   s     .!-==r   c                     t         S r!   r   r$   s    r   r&   zAbstractArbitraryName.inferi       r   N)r;   rE   rF   __doc__rK   rS   r&   r(   r   r   rN   rN   \   s    
 M>
r   rN   c                   ^     e Zd Zd Zd	 fd	Zd Zd Zd Zd Ze	d        Z
e	d        Z xZS )
AbstractTreeNamec                      || _         || _        y r!   )r4   rJ   )r%   r4   rJ   s      r   rS   zAbstractTreeName.__init__n   s    ,"r   c                 >   t        | 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   )
r   rJ   levelr,   	get_value
is_packagetupleget_path_for_namesuperr1   )r%   r.   import_noder:   s      r   r1   z$AbstractTreeName.get_qualified_namesr   s    %dnnm]S
 "K,=,=,B040E0E0G0Q0Q0S0^0^0`#K,=,=\k.K.KDNN.[\\\w*+?@@r   c                 p    | j                   j                         }|y || j                  j                  fz   S r!   )r4   r1   rJ   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#   r4   re   r$   s    r   rC   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(  rc|	j                  j                        }|dkD  rCt)        |	      }g |j                  |d
z
  d  j                  |      }t+        fd|D              S |
dk(  r3|	j                  d   dk(  r!t-        d      }|j/                        S t1        dd      xs }|j                  dk(  r}j/                  |j2                        S 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_namec              3   D   K   | ]  }|j                           yw)name_contextN)r)   )ra   r`   contextr   s     r   rc   z(AbstractTreeName.goto.<locals>.<genexpr>   s&       JJt'J:s    rs   .)cut_own_trailerr   lambdef)position)r4   rJ   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   r)   r   r   )r%   
definitiontype_is_simple_namert   r0   ru   valuesr`   par	node_typers   	value_setito_inferr|   param_names	signature
param_namer   
new_dottedstmtr   r   s                         @@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 !'  
 	!cll1o&<'tLF;;t';::"k9   yyI%<<t~~<>>a 8s   
Lc                 8    t        | j                  dd      }|d uS )Nr]   r\   r   rJ   )r%   imps     r   r>   zAbstractTreeName.is_import   s    dnnm]K$r   c                 .    | j                   j                  S r!   )rJ   r`   r$   s    r   r   zAbstractTreeName.string_name   s    ~~###r   c                 .    | j                   j                  S r!   )rJ   r   r$   s    r   r   zAbstractTreeName.start_pos   s    ~~'''r   rD   )r;   rE   rF   rS   r1   r+   rC   r)   r>   rL   r   r   __classcell__r:   s   @r   rY   rY   m   sL    #A 6F?P $ $ ( (r   rY   c                   F     e Zd Zd Zd Zd Z fdZd Zed        Z	 xZ
S )ValueNameMixinc                 .    t        | j                  g      S r!   )r   _valuer$   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   r1   r$   s    r   r+   z#ValueNameMixin._get_qualified_names   s    {{..00r   c                 l    | j                   | j                  j                         S t        |          S r!   )r4   r   
as_contextri   r,   r%   r:   s    r   r,   zValueNameMixin.get_root_context   s0    &;;))++w'))r   c                     | j                   }|:|j                         s|j                         r| j                   j                         S y r!   )r4   	is_moduleis_classre   )r%   r   s     r   rC   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   rA   r$   s    r   rA   zValueNameMixin.api_type   s    {{###r   )r;   rE   rF   r&   r   r+   r,   rC   rL   rA   r   r   s   @r   r   r      s0    '1*
 $ $r   r   c                   $     e Zd Z fdZd Z xZS )	ValueNamec                 H    t         |   |j                  |       || _        y r!   )ri   rS   r4   r   )r%   r`   rJ   r:   s      r   rS   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;   rE   rF   rS   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   r4   rP   rJ   )r%   r   s     r   r&   zTreeNameDefinition.infer  s1    B"//NN
 	
r   c                     | j                   j                  d      }|y| j                  j                  |j                  d      S )NTro   	statement)rJ   r   
_API_TYPESgetr   )r%   r   s     r   rA   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)
rJ   r   r   	enumerater   rG   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!   )r4   rP   r$   s    r   rP   z"TreeNameDefinition.inference_stateO  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   rL   r   r   Fr   r   r   r   )rA   r4   r,   r   r   r   r   r	   rJ   r   r)   is_definitionr   )r%   rA   r   r   s       r   r   zTreeNameDefinition.py__doc__T  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;   rE   rF   dictr   r&   rL   rA   r   rP   r   r   r(   r   r   r   r     si    J
 A A'R 3 3 ""- .r   r   c                   *    e Zd ZddZddZd ZddZy)_ParamMixinc                     t         j                  t         j                  g}|r|j                  t         j                         | j                         |v S r!   )r   POSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr   VAR_POSITIONALget_kind)r%   include_staroptionss      r   maybe_positional_argumentz%_ParamMixin.maybe_positional_argumentl  s>    ,,i.M.MN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_argumentr  s>    ))9+J+JK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_stringx  s2    }}9+++9(((r   c                      y r!   r(   )r%   r.   s     r   r1   z_ParamMixin.get_qualified_names  s    r   N)TrD   )r;   rE   rF   r   r   r   r1   r(   r   r   r   r   k  s    **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!   rU   r$   s    r   infer_defaultz ParamNameInterface.infer_default  rV   r   N)
r;   rE   rF   rA   r   r   r  rL   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   r6   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   r6   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;   rE   rF   r  r  r   r6   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   rS   get_default_param_contextfunction_value)r%   r  rJ   r:   s      r   rS   z_ActualTreeParamName.__init__  s'    446		C,r   c                 .    t        | j                  d      S )Nr   r   r$   s    r   _get_param_nodez$_ActualTreeParamName._get_param_node  s    t~~w77r   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	                         }|S )Nr   )infer_param)ignore_stars)!jedi.inference.gradual.annotationr  r  r  execute_annotation)r%   r"  r   r  r   s        r   infer_annotationz%_ActualTreeParamName.infer_annotation  s>    A!5!5!7%' ..0Fr   c                 `    | j                   }|t        S | j                  j                  |      S r!   )r  r   r4   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;   rE   rF   rS   r  rL   r  r#  r  r  r   r&   r   r   s   @r   r  r    sI    -
8 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_paramsr3  r  r  position_indexr  jedi.inference.value.iterabler4  rP   r5  r   r   r4   r   r   )r%   r   r3  r   r4  r`   r5  r:   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;   rE   rF   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   rS   	arguments)r%   r  rJ   r=  r:   s       r   rS   zParamName.__init__"  s    3"r   c                 d    t         |          }|r|S | j                         j                         S r!   )ri   r&   r  )r%   r   r:   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  r7  )r%   r@  params_namess      r   r  z!ParamName.get_executed_param_name-  s5    A/0C0CT^^TD002AABBr   )r;   rE   rF   rS   r&   r  r   r   s   @r   r;  r;  !  s    #6Cr   r;  c                       e Zd Zd Zd Zd Zy)ParamNameWrapperc                     || _         y r!   )_wrapped_param_name)r%   r   s     r   rS   zParamNameWrapper.__init__4  s
    #- r   c                 .    t        | j                  |      S r!   )getattrrF  r  s     r   __getattr__zParamNameWrapper.__getattr__7  s    t//66r   c                 P    d| j                   j                  d| j                  dS )Nr8   r	  r9   )r:   r;   rF  r$   s    r   r<   zParamNameWrapper.__repr__:  s    !^^44d6N6NOOr   Nr;   rE   rF   rS   rI  r<   r(   r   r   rD  rD  3  s    .7Pr   rD  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%   r4   r   s      r   rS   zImportName.__init__B  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(   )_levelrP  r-   r   )r%   r.   r0   s      r   r1   zImportName.get_qualified_namesF  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!   )rP  r&   nextiterr   )r%   mimport_valuess      r   r4   zImportName.parent_contextQ  s;    %%

H D'(3355r   c                     ddl m} | j                  } ||j                  | j                  g|| j
                        j                         S )Nr   )Importer)rd   )r   rY  rP  rP   r   rR  follow)r%   rY  rV  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%   rV  s     r   r)   zImportName.gotoa  s      $

-1---s   )c                      y)Nr   r(   r$   s    r   rA   zImportName.api_typed  s    r   c                 4    t        | j                               S r!   )r   r)   r$   s    r   r   zImportName.py__doc__h  s    		,,r   NrD   )r;   rE   rF   r   rR  rS   r1   rL   r4   r   r&   r)   rA   r   r(   r   r   rM  rM  >  s^    IF'	 6 6 ^ ^
.  -r   rM  c                       e Zd ZdZy)SubModuleNamer^   N)r;   rE   rF   rR  r(   r   r   r_  r_  l  s    Fr   r_  c                       e Zd Zd Zd Zd Zy)NameWrapperc                     || _         y r!   )_wrapped_name)r%   wrapped_names     r   rS   zNameWrapper.__init__q  s
    )r   c                 .    t        | j                  |      S r!   )rH  rc  r  s     r   rI  zNameWrapper.__getattr__t  s    t))400r   c                 N    | j                   j                  d| j                  dS )N())r:   r;   rc  r$   s    r   r<   zNameWrapper.__repr__w  s    >>22D4F4FGGr   NrK  r(   r   r   ra  ra  p  s    *1Hr   ra  c                        e Zd Z fdZ xZS )StubNameMixinc                 &   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   rA   rJ   r   r   r&   r   ri   r   r   )r%   r   r   vr:   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;   rE   rF   r   r   r   s   @r   rj  rj  {  s    + +r   rj  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(   )ra   crr  s     r   rc   z!StubName.infer.<locals>.<genexpr>  s     =qKN=s   )ri   r&   r   r,   
py__name__!jedi.inference.gradual.stub_valuerr  r   )r%   inferredrr  r:   s     @r   r&   zStubName.infer  sO    7=?~-$2G2G2I2T2T2VZ_2_E=H===r   )r;   rE   rF   r&   r   r   s   @r   rn  rn    s     r   rn  c                   &    e Zd ZdZd Zed        Zy)
ModuleNamerN  c                      || _         || _        y r!   )r   _name)r%   r`   r   s      r   rS   zModuleName.__init__  s    
r   c                     | j                   S r!   )r{  r$   s    r   r   zModuleName.string_name  s    zzr   N)r;   rE   rF   r   rS   rL   r   r(   r   r   ry  ry    s     I  r   ry  c                       e Zd Zy)StubModuleNameN)r;   rE   rF   r(   r   r   r~  r~    s    r   r~  N)1abcr   inspectr   typingr   r   
parso.treer   jedi.parser_utilsr   r	   jedi.inference.utilsr
   jedi.inference.base_valuer   r   jedi.inference.cacher   jedi.inferencer   
jedi.cacher   jedi.inference.helpersr   r   jedi.pluginsr   r   r   rN   rY   r   r   r   r   r   r  r  r.  r;  rD  rM  r_  ra  rj  rn  ry  r~  r(   r   r   <module>r     s=     " & Q & 9 = % % D '= =@2 "t(- t(n$ $@, 0 ,[) [| 2 B*,< 4B, BJ!- !:C$ C$P{ P+-' +-\J H H+ +(}0 	!7 		]J 	r   