
    ^h<                     x   S SK Jr  S SKJrJrJrJrJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJr   " S
 S\5      r " S S5      r " S S\5      r " S S\5      r " S S\\5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r!g )!    )inference_state_method_cache)ValueSet	NO_VALUESValueiterator_to_value_setLazyValueWrapperValueWrapper)builtin_from_nameClassFilter)
ClassMixin)to_list)AbstractNameDefinition	ValueName)ClassContext)TupleGenericManagerc                   0    \ rS rSrSrS rS rS rS rSr	g)	_BoundTypeVarName   z6
This type var was bound to a certain type, e.g. int.
c                 >    Xl         UR                  U l        X l        g N)	_type_varparent_context
_value_set)selftype_var	value_sets      U/home/james-whalen/.local/lib/python3.13/site-packages/jedi/inference/gradual/base.py__init___BoundTypeVarName.__init__   s    !&55#    c                 0   ^  U 4S jn[        U" 5       5      $ )Nc               3      >#    TR                    H=  n SSKJn  [        X5      (       a   TR                  R
                   S h  vN   M9  U v   M?     g  N7f)Nr   )AnyClass)r   jedi.inference.gradual.typingr$   
isinstancer   constraints)valuer$   r   s     r   iter_&_BoundTypeVarName.infer.<locals>.iter_   s?     Be..#~~9999K ) :s   ?AAA)r   )r   r)   s   ` r   infer_BoundTypeVarName.infer   s    	    r!   c                 6    U R                   R                  5       $ r   )r   
py__name__r   s    r   r.   _BoundTypeVarName.py__name__!   s    ~~((**r!   c                 x    SU R                   R                  < SU R                  5       < SU R                  < S3$ )N< z -> >)	__class____name__r.   r   r/   s    r   __repr___BoundTypeVarName.__repr__$   s$    "&.."9"94??;Ldoo^^r!   )r   r   r   N)
r6   
__module____qualname____firstlineno____doc__r   r+   r.   r7   __static_attributes__ r!   r   r   r      s    $
	!+_r!   r   c                   *    \ rS rSrSrS rS rS rSrg)_TypeVarFilter(   z
A filter for all given variables in a class.

    A = TypeVar('A')
    B = TypeVar('B')
    class Foo(Mapping[A, B]):
        ...

In this example we would have two type vars given: A and B
c                     Xl         X l        g r   	_generics
_type_vars)r   generics	type_varss      r   r   _TypeVarFilter.__init__3   s    !#r!   c                     [        U R                  5       H5  u  p#UR                  5       U:X  d  M   [        X0R                  U   5      /s  $    / $ ! [
         a    UR                  /s s  $ f = fr   )	enumeraterE   r.   r   rD   
IndexErrorname)r   rL   ir   s       r   get_TypeVarFilter.get7   sh    $T__5KA""$,+-hq8IJKK 6 	 " +$MM?*+s   AA-,A-c                     / $ r   r>   r/   s    r   values_TypeVarFilter.values@   s	     	r!   rC   N)	r6   r9   r:   r;   r<   r   rN   rQ   r=   r>   r!   r   r@   r@   (   s    	$r!   r@   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )_AnnotatedClassContextF   c              /   ~   >#    [         TU ]  " U0 UD6nU S h  vN   U R                  R                  5       v   g  N!7fr   )superget_filters_valueget_type_var_filter)r   argskwargsfiltersr5   s       r   rX   "_AnnotatedClassContext.get_filtersG   sE     '%

  kk--//	 	s   =;"=r>   )r6   r9   r:   r;   rX   r=   __classcell__r5   s   @r   rT   rT   F   s    0 0r!   rT   c                   R    \ rS rSrS rS r\" 5       S 5       rS rS r	S r
S rS	rg
)DefineGenericBaseClassR   c                     Xl         g r   _generics_managerr   generics_managers     r   r   DefineGenericBaseClass.__init__S   s    !1r!   c                     [         er   )NotImplementedErrorrg   s     r   _create_instance_with_generics5DefineGenericBaseClass._create_instance_with_genericsV   s    !!r!   c                 6    U R                   R                  5       $ r   )rf   to_tupler/   s    r   get_generics#DefineGenericBaseClass.get_genericsY   s    %%..00r!   c           	         SSK Jn  Sn/ nU R                  5        Ht  n[        nU HT  n[	        U[
        U45      (       a+  UR                  U5      nXh-  nU[        U15      :w  a  SnMC  ME  U[        U/5      -  nMV     UR                  U5        Mv     U(       d  [        U /5      $ [        U R                  [        [        U5      5      5      /5      $ )Nr   TypeVarFT)jedi.inference.gradual.type_varrt   rp   r   r&   rb   define_genericsr   appendrl   r   tuple)	r   type_var_dictrt   changednew_genericsgeneric_setrQ   genericresults	            r   rv   &DefineGenericBaseClass.define_generics]   s    ;,,.KF&g(>'HII$44]CF$F7)!44"& 5 hy11F ' ' /  TF##<<l 34
   	r!   c                    [        U[        5      (       d  gU R                  UR                  :w  a  gU R                  5       nUR                  5       n[	        U5      [	        U5      :w  a  g[        S [        X#5       5       5      $ )NFc              3   p   ^#    U  H+  u  nm[        U4S  jUR                  5        5       5      v   M-     g7f)c              3   v   >#    U  H.  nTR                  5         H  nUR                  U5      v   M     M0     g 7fr   )gather_annotation_classesis_same_class).0cls1cls2
class_set2s      r   	<genexpr>ADefineGenericBaseClass.is_same_class.<locals>.<genexpr>.<genexpr>   sE      
 CD&@@BD ""4(( C ) Cs   69N)anyr   )r   
class_set1r   s     @r   r   7DefineGenericBaseClass.is_same_class.<locals>.<genexpr>   sE      
 -N(*j  
 '@@B
 
 
 -Ns   36)r&   rb   	tree_noderp   lenallzip)r   othergiven_params1given_params2s       r   r   $DefineGenericBaseClass.is_same_classw   s|    %!788>>U__,))+**,}]!33   
 -0,M
 
 	
r!   c                     / $ r   r>   r/   s    r   get_signatures%DefineGenericBaseClass.get_signatures   s    	r!   c                     SU R                   R                  < SU R                  < [        U R	                  5       5      < S3$ Nr2   z: r4   )r5   r6   _wrapped_valuelistrp   r/   s    r   r7   DefineGenericBaseClass.__repr__   s3    NN##""$%
 	
r!   re   N)r6   r9   r:   r;   r   rl   r   rp   rv   r   r   r7   r=   r>   r!   r   rb   rb   R   s7    2" "#1 $14
<
r!   rb   c                      ^  \ rS rSrSrU 4S jrS rSS jrS rU 4S jr	S r
\S	 5       rS
 rU 4S jrS rS rSrU =r$ )GenericClass   z
A class that is defined with generics, might be something simple like:

    class Foo(Generic[T]): ...
    my_foo_int_cls = Foo[int]
c                 0   > [         TU ]  U5        Xl        g r   )rW   r   _class_value)r   class_valuerh   r5   s      r   r   GenericClass.__init__   s    )*'r!   c                     U R                   $ r   r   r/   s    r   _get_wrapped_valueGenericClass._get_wrapped_value          r!   c                     U R                  5       n[        SSSSS9R                  X"5      nX R                  R	                  5       -   nU(       a  SU-  $ U$ )NListDictSetTuple)r   dictsetrx   zType[%s])r.   r   rN   rf   get_type_hint)r   add_class_infonss       r   r   GenericClass.get_type_hint   sT    OO
 f6uGDHHN&&4466>!r!   c                 R    [        U R                  5       U R                  5       5      $ r   )r@   rp   list_type_varsr/   s    r   rZ    GenericClass.get_type_var_filter   s!    d//143F3F3HIIr!   c                 P   > [         TU ]  U5      u  n[        [        U5      /5      $ r   )rW   
py__call__r   _GenericInstanceWrapper)r   	argumentsinstancer5   s      r   r   GenericClass.py__call__   s(    G&y1	0:;<<r!   c                     [        U 5      $ r   )rT   r/   s    r   _as_contextGenericClass._as_context   s    %d++r!   c              #   ~   #    U R                   R                  5        H  n[        XU R                  5      v   M     g 7fr   )r   py__bases___LazyGenericBaseClassrf   r   bases     r   r   GenericClass.py__bases__   s1     ''335D'D4J4JKK 6s   ;=c                 .    [        U R                  U5      $ r   )r   r   rg   s     r   rl   +GenericClass._create_instance_with_generics   s    D--/?@@r!   c                 d   > [         TU ]  U5      (       a  gU R                  R                  U5      $ )NT)rW   is_sub_class_ofr   )r   r   r5   s     r   r   GenericClass.is_sub_class_of   s-    7";//  00==r!   c                 8    U R                   R                  U5      $ r   )r   with_generics)r   generics_tuples     r   r   GenericClass.with_generics   s      ..~>>r!   c           	         SSK JnJn  U R                  5       n0 nUS:X  a<  U R	                  5       nU(       a"  US   R                  UR                  5       5      $  U$ U H  nUR                  5       (       a&  UR                  5       (       d  UR                  5       nOM@  UR                  S:w  a  MR  UR                  5        H*  nUR                  5       n	XI:X  d  M  U" UU" X5      5          M     M     U$ )Nr   )merge_pairwise_genericsmerge_type_var_dictsIterableclass)!jedi.inference.gradual.annotationr   r   r.   rp   infer_type_varsmerge_types_of_iterateis_instanceis_compiledget_annotated_class_objectapi_type	py__mro__)
r   r   r   r   annotation_namery   annotation_genericspy_classparent_class
class_names
             r   r   GenericClass.infer_type_vars   s    c//+j("&"3"3"5"*1-==446  #: + &''))(2F2F2H2H'BBDH$$/ $,$6$6$8L!-!8!8!:J&4,)3DG  %9 &* r!   r   T)r6   r9   r:   r;   r<   r   r   r   rZ   r   r   r   r   rl   r   r   r   r=   r_   r`   s   @r   r   r      sW    (!
J=, L LA>
?% %r!   r   c                   6    \ rS rSrS r\S 5       rS rS rSr	g)r      c                 (    Xl         X l        X0l        g r   )r   _lazy_base_classrf   )r   r   lazy_base_classrh   s       r   r   _LazyGenericBaseClass.__init__   s    ' /!1r!   c              #     #    U R                   R                  5        H  n[        U[        5      (       aP  [        R	                  UR
                  UR                  [        [        U R                  U5      5      5      5      v   Mh  UR                  5       (       a/  [        R	                  UR
                  UU R                  5      v   M  Uv   M     g 7fr   )r   r+   r&   r   create_cachedinference_stater   r   rx   _remap_type_varsis_class_mixinrf   r   s     r   r+   _LazyGenericBaseClass.infer  s     ))//1D$--"00(('''d.C.CD.I(JK  &&(( '44,,..  J' 2s   CCc              #   `  #    SSK Jn  U R                  R                  5       nUR	                  5        Hv  n[
        nU Hc  n[        Xb5      (       aA  UR                  UR                  5       5      nU[        R                  " S U 5       5      -  nMT  U[        U/5      -  nMe     Uv   Mx     g 7f)Nr   rs   c              3   @   #    U  H  oR                  5       v   M     g 7fr   )r+   )r   rL   s     r   r   9_LazyGenericBaseClass._remap_type_vars.<locals>.<genexpr>!  s      .16

s   )ru   rt   r   rZ   rp   r   r&   rN   r.   r   	from_sets)r   r   rt   filtertype_var_setnewr   namess           r   r   &_LazyGenericBaseClass._remap_type_vars  s     ;""668 --/LC(h00"JJx':':'<=E8-- .16.  C 8XJ//C ) I 0s   B,B.c                 T    SU R                   R                  < SU R                  < S3$ r   )r5   r6   r   r/   s    r   r7   _LazyGenericBaseClass.__repr__+  s    !^^44d6K6KLLr!   )r   rf   r   N)
r6   r9   r:   r;   r   r   r+   r   r7   r=   r>   r!   r   r   r      s&    2
  ,$Mr!   r   c                   $    \ rS rSrS rSS jrSrg)r   i/  c                    U R                   R                  R                  5        Hs  nUR                  5       S:X  a&  UR	                  5       n US   R                  5       s  $ UR                  5       S:X  d  MS  [        [        U R                  S5      /5      s  $    U R                   R                  5       $ ! [         a     M  f = f)N	Generator   IteratorNone)r   r   r   r.   rp   execute_annotationrK   r   r
   r   py__stop_iteration_returns)r   clsrF   s      r   r  2_GenericInstanceWrapper.py__stop_iteration_returns0  s    &&22<<>C~~;.++-#A;99;; !Z/!243G3G!P QRR ? ""==??	 " s   B66
CCc                 H    U R                   R                  R                  SS9$ )NF)r   )r   r   r   )r   r   s     r   r   %_GenericInstanceWrapper.get_type_hint<  s"    ""..<<E<RRr!   r>   Nr   )r6   r9   r:   r;   r  r   r=   r>   r!   r   r   r   /  s    
@Sr!   r   c                   h   ^  \ rS rSrSrSrU 4S jr\S 5       rS r	S r
\S 5       rS	 rS
 rSrU =r$ )_PseudoTreeNameClassi@  a  
In typeshed, some classes are defined like this:

    Tuple: _SpecialForm = ...

Now this is not a real class, therefore we have to do some workarounds like
this class. Essentially this class makes it possible to goto that `Tuple`
name, without affecting anything else negatively.
r   c                 F   > [         TU ]  UR                  U5        X l        g r   )rW   r   r   
_tree_name)r   r   	tree_namer5   s      r   r   _PseudoTreeNameClass.__init__L  s#    **	
 $r!   c                     U R                   $ r   r  r/   s    r   r   _PseudoTreeNameClass.tree_nodeS  s    r!   c              /   <   #     " S S[         5      nU" 5       v   g 7f)Nc                   &    \ rS rSrS rS rS rSrg)5_PseudoTreeNameClass.get_filters.<locals>.EmptyFilteriY  c                     g r   r>   r/   s    r   r   >_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.__init__Z  s    r!   c                     / $ r   r>   )r   rL   r\   s      r   rN   9_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.get]      	r!   c                     / $ r   r>   )r   r\   s     r   rQ   <_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.values`  r  r!   r>   N)r6   r9   r:   r;   r   rN   rQ   r=   r>   r!   r   EmptyFilterr  Y  s    r!   r  r   )r   r[   r\   r  s       r   rX    _PseudoTreeNameClass.get_filtersW  s     	+ 	 ms   c                 .    [        U R                  S5      $ )Ntype)r
   r   r/   s    r   py__class__ _PseudoTreeNameClass.py__class__e  s     !!5!5v>>r!   c                 ,    [        X R                  5      $ r   r   r  r/   s    r   rL   _PseudoTreeNameClass.namej      //r!   c                 0    U R                   R                  4$ r   )r  r(   r/   s    r   get_qualified_names(_PseudoTreeNameClass.get_qualified_namesn  s    %%''r!   c                 f    U R                   R                  < SU R                  R                  < S3$ N()r5   r6   r  r(   r/   s    r   r7   _PseudoTreeNameClass.__repr__q  !    >>22DOO4I4IJJr!   r  )r6   r9   r:   r;   r<   r   r   propertyr   rX   r  rL   r&  r7   r=   r_   r`   s   @r   r	  r	  @  sW     H$  ?
 0 0(K Kr!   r	  c                   <    \ rS rSrS r\S 5       rS rS rS r	Sr
g)	BaseTypingValueiu  c                 >    UR                   U l         Xl        X l        g r   )r   r   r  )r   r   r  s      r   r   BaseTypingValue.__init__v  s    -==,#r!   c                 ,    [        X R                  5      $ r   r"  r/   s    r   rL   BaseTypingValue.name{  r$  r!   c                 B    [        U R                  U R                  5      $ r   r	  r   r  r/   s    r   r   "BaseTypingValue._get_wrapped_value      #D$7$7IIr!   c                 6    U R                   R                  5       $ r   )r   r   r/   s    r   r   BaseTypingValue.get_signatures  s    ""1133r!   c                 f    U R                   R                  < SU R                  R                  < S3$ r)  r,  r/   s    r   r7   BaseTypingValue.__repr__  r.  r!   r  r   r   N)r6   r9   r:   r;   r   r/  rL   r   r   r7   r=   r>   r!   r   r1  r1  u  s,    $
 0 0J4Kr!   r1  c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )BaseTypingClassWithGenericsi  c                 ^   > [         TU ]  U5        UR                  U l        Xl        X l        g r   )rW   r   r   r   r  )r   r   r  rh   r5   s       r   r   $BaseTypingClassWithGenerics.__init__  s*    )*-==,#r!   c                 B    [        U R                  U R                  5      $ r   r7  r/   s    r   r   .BaseTypingClassWithGenerics._get_wrapped_value  r9  r!   c                     U R                   R                  < SU R                  R                  < U R                  < S3$ r)  )r5   r6   r  r(   rf   r/   s    r   r7   $BaseTypingClassWithGenerics.__repr__  s.    !^^44doo6K6K!335 	5r!   r>  )	r6   r9   r:   r;   r   r   r7   r=   r_   r`   s   @r   r@  r@    s    $J5 5r!   r@  c                   H    \ rS rSrS rS rS rS r\S 5       r	S r
S rS	rg
)BaseTypingInstancei  c                 V    UR                   U l         Xl        X l        X0l        X@l        g r   )r   r   r   r  rf   )r   r   r   r  rh   s        r   r   BaseTypingInstance.__init__  s'    *::,'#!1r!   c                     U R                   $ r   r   r/   s    r   r  BaseTypingInstance.py__class__  r   r!   c                     U R                   $ r   r   r/   s    r   r   -BaseTypingInstance.get_annotated_class_object  r   r!   c                 $    U R                  5       4$ r   )r.   r/   s    r   r&  &BaseTypingInstance.get_qualified_names  s    !##r!   c                 ,    [        X R                  5      $ r   r"  r/   s    r   rL   BaseTypingInstance.name  r$  r!   c                 R    [        U R                  S5      R                  5       u  nU$ )Nobject)r
   r   r  )r   object_s     r   r   %BaseTypingInstance._get_wrapped_value  s$    $T%9%98DWWYr!   c                 T    SU R                   R                  < SU R                  < S3$ r   )r5   r6   rf   r/   s    r   r7   BaseTypingInstance.__repr__  s    !^^44d6L6LMMr!   )r   rf   r  r   r   N)r6   r9   r:   r;   r   r  r   r&  r/  rL   r   r7   r=   r>   r!   r   rH  rH    s5    2!!$ 0 0Nr!   rH  N)"jedi.inference.cacher   jedi.inference.base_valuer   r   r   r   r   r	   jedi.inference.compiledr
   jedi.inference.value.klassr   r   jedi.inference.utilsr   jedi.inference.namesr   r   jedi.inference.contextr   jedi.inference.gradual.genericsr   r   r@   rT   rb   r   r   r   r	  r1  r@  rH  r>   r!   r   <module>ra     s    =: : 5 2 1 ( B / ?_. _6 <	0\ 	0K
- K
\Y): Yx0M 0MfSl S"2K5 2KjK& K(5"8 5N) Nr!   