
    Mh<                        d dl mZ d dlmZmZmZmZmZmZ d dl	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	lmZ  G d
 de          Z G d d          Z G d de          Z G d de          Z G d dee          Z G d d          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z!d S )!    )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                   *    e Zd ZdZd Zd Zd Zd ZdS )_BoundTypeVarNamez>
    This type var was bound to a certain type, e.g. int.
    c                 :    || _         |j        | _        || _        d S N)	_type_varparent_context
_value_set)selftype_var	value_sets      [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/gradual/base.py__init__z_BoundTypeVarName.__init__   s    !&5#    c                 <      fd}t           |                      S )Nc               3   z   K   j         D ]/} ddlm} t          | |          rj        j        E d {V  +| V  0d S )Nr   )AnyClass)r   jedi.inference.gradual.typingr"   
isinstancer   constraints)valuer"   r   s     r   iter_z&_BoundTypeVarName.infer.<locals>.iter_   sq          BBBBBBeX..  #~999999999KKKK   r   )r   )r   r'   s   ` r   inferz_BoundTypeVarName.infer   s2    	  	  	  	  	     r   c                 4    | j                                         S r   )r   
py__name__r   s    r   r*   z_BoundTypeVarName.py__name__!   s    ~((***r   c                 \    d| j         j        d|                                 d| j        dS )N< z -> >)	__class____name__r*   r   r+   s    r   __repr__z_BoundTypeVarName.__repr__$   s2     "&."9"9"94??;L;L;L;Ldooo^^r   N)r1   
__module____qualname____doc__r   r(   r*   r2    r   r   r   r      s_         $ $ $
	! 	! 	!+ + +_ _ _ _ _r   r   c                   $    e Zd ZdZd Zd Zd ZdS )_TypeVarFilterz
    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                 "    || _         || _        d S r   )	_generics
_type_vars)r   generics	type_varss      r   r   z_TypeVarFilter.__init__3   s    !#r   c                     t          | j                  D ]V\  }}|                                |k    r9	 t          || j        |                   gc S # t
          $ r |j        gcY c S w xY wWg S r   )	enumerater;   r*   r   r:   
IndexErrorname)r   rA   ir   s       r   getz_TypeVarFilter.get7   s    $T_55 	+ 	+KAx""$$,,+-hq8IJJKKKK! + + +$M?*****+ -
 	s   AA('A(c                     g S r   r6   r+   s    r   valuesz_TypeVarFilter.values@   s	     	r   N)r1   r3   r4   r5   r   rC   rE   r6   r   r   r8   r8   (   sK        	 	$ $ $      r   r8   c                        e Zd Z fdZ xZS )_AnnotatedClassContextc              /      K    t                      j        |i |}|E d {V  | j                                        V  d S r   )superget_filters_valueget_type_var_filter)r   argskwargsfiltersr0   s       r   rJ   z"_AnnotatedClassContext.get_filtersG   sf      %%''%

 
  k--///////r   )r1   r3   r4   rJ   __classcell__r0   s   @r   rG   rG   F   s8        0 0 0 0 0 0 0 0 0r   rG   c                   X    e Zd Zd Zd Z e            d             Zd Zd Zd Z	d Z
dS )	DefineGenericBaseClassc                     || _         d S r   )_generics_managerr   generics_managers     r   r   zDefineGenericBaseClass.__init__S   s    !1r   c                     t           r   )NotImplementedErrorrV   s     r   _create_instance_with_genericsz5DefineGenericBaseClass._create_instance_with_genericsV   s    !!r   c                 4    | j                                         S r   )rU   to_tupler+   s    r   get_genericsz#DefineGenericBaseClass.get_genericsY   s    %..000r   c           	         ddl m} d}g }|                                 D ]~}t          }|D ]]}t	          |t
          |f          r1|                    |          }||z  }|t          |h          k    rd}J|t          |g          z  }^|                    |           |st          | g          S t          | 	                    t          t          |                              g          S )Nr   TypeVarFT)jedi.inference.gradual.type_varr`   r]   r   r$   rS   define_genericsr   appendrZ   r   tuple)	r   type_var_dictr`   changednew_genericsgeneric_setrE   genericresults	            r   rb   z&DefineGenericBaseClass.define_generics]   s    ;;;;;;,,.. 
	( 
	(KF& 2 2g(>'HII 2$44]CCFf$F7)!4!444"&hy111FF'''' 	$ TF###<<l 3 344
 
    	r   c                 6   t          |t                    sdS | j        |j        k    rdS |                                 }|                                }t	          |          t	          |          k    rdS t          d t          ||          D                       S )NFc              3   x   K   | ]4\  }t          fd |                                D                       V  5dS )c              3   p   K   | ]0}                                 D ]}|                    |          V  1d S r   )gather_annotation_classesis_same_class).0cls1cls2
class_set2s      r   	<genexpr>zADefineGenericBaseClass.is_same_class.<locals>.<genexpr>.<genexpr>   sj       
 
 &@@BB
 
  ""4((
 
 
 
 
 
 
r   N)anyrn   )rp   
class_set1rs   s     @r   rt   z7DefineGenericBaseClass.is_same_class.<locals>.<genexpr>   s{       
 
 )*j  
 
 
 
 '@@BB
 
 
 
 

 
 
 
 
 
r   )r$   rS   	tree_noder]   lenallzip)r   othergiven_params1given_params2s       r   ro   z$DefineGenericBaseClass.is_same_classw   s    %!788 	5>U_,,5))++**,,}]!3!333 5  
 
 -0},M,M
 
 
 
 
 	
r   c                     g S r   r6   r+   s    r   get_signaturesz%DefineGenericBaseClass.get_signatures   s    	r   c                 t    d| j         j        d| j        t          |                                           dS Nr-   z: r/   )r0   r1   _wrapped_valuelistr]   r+   s    r   r2   zDefineGenericBaseClass.__repr__   sB     N###""$$%%%%
 	
r   N)r1   r3   r4   r   rZ   r   r]   rb   ro   r   r2   r6   r   r   rS   rS   R   s        2 2 2" " " "!##1 1 $#1  4
 
 
<  
 
 
 
 
r   rS   c                   x     e Zd ZdZ fdZd ZddZd Z fdZd Z	e
d	             Zd
 Z fdZd Zd Z xZS )GenericClassz
    A class that is defined with generics, might be something simple like:

        class Foo(Generic[T]): ...
        my_foo_int_cls = Foo[int]
    c                 X    t                                          |           || _        d S r   )rI   r   _class_value)r   class_valuerW   r0   s      r   r   zGenericClass.__init__   s*    )***'r   c                     | j         S r   r   r+   s    r   _get_wrapped_valuezGenericClass._get_wrapped_value         r   Tc                     |                                  }t          dddd                              ||          }|| j                                        z   }|rd|z  S |S )NListDictSetTuple)r   dictsetrd   zType[%s])r*   r   rC   rU   get_type_hint)r   add_class_infonss       r   r   zGenericClass.get_type_hint   si    OO
 f6uGDDDHHANN&44666 	">!r   c                 j    t          |                                 |                                           S r   )r8   r]   list_type_varsr+   s    r   rL   z GenericClass.get_type_var_filter   s*    d//1143F3F3H3HIIIr   c                     t                                          |          \  }t          t          |          g          S r   )rI   
py__call__r   _GenericInstanceWrapper)r   	argumentsinstancer0   s      r   r   zGenericClass.py__call__   s6    GG&&y11	0::;<<<r   c                      t          |           S r   )rG   r+   s    r   _as_contextzGenericClass._as_context   s    %d+++r   c              #   r   K   | j                                         D ]}t          | || j                  V  d S r   )r   py__bases___LazyGenericBaseClassrU   r   bases     r   r   zGenericClass.py__bases__   sP      '3355 	L 	LD'dD4JKKKKKK	L 	Lr   c                 ,    t          | j        |          S r   )r   r   rV   s     r   rZ   z+GenericClass._create_instance_with_generics   s    D-/?@@@r   c                 ~    t                                          |          rdS | j                            |          S )NT)rI   is_sub_class_ofr   )r   r   r0   s     r   r   zGenericClass.is_sub_class_of   s9    77"";// 	4 00===r   c                 6    | j                             |          S r   )r   with_generics)r   generics_tuples     r   r   zGenericClass.with_generics   s     ..~>>>r   c           	         ddl m}m} |                                 }i }|dk    rD|                                 }|r-|d                             |                                          S n|D ]}|                                r)|                                s|	                                }n@|j
        dk    rL|                                D ]4}|                                }	||	k    r || || |                      n5|S )Nr   )merge_pairwise_genericsmerge_type_var_dictsIterableclass)!jedi.inference.gradual.annotationr   r   r*   r]   infer_type_varsmerge_types_of_iterateis_instanceis_compiledget_annotated_class_objectapi_type	py__mro__)
r   r   r   r   annotation_namere   annotation_genericspy_classparent_class
class_names
             r   r   zGenericClass.infer_type_vars   sY   cccccccc//++j(("&"3"3"5"5" *1-==4466   &  '')) (2F2F2H2H 'BBDDHH$// $,$6$6$8$8  L!-!8!8!:!:J&*44,,)33D,GG    5 r   T)r1   r3   r4   r5   r   r   r   rL   r   r   r   r   rZ   r   r   r   rP   rQ   s   @r   r   r      s        ( ( ( ( (! ! !
 
 
 
J J J= = = = =, , , L L WLA A A> > > > >
? ? ?% % % % % % %r   r   c                   6    e Zd Zd Zed             Zd Zd ZdS )r   c                 0    || _         || _        || _        d S r   )r   _lazy_base_classrU   )r   r   lazy_base_classrW   s       r   r   z_LazyGenericBaseClass.__init__   s     ' /!1r   c              #     K   | j                                         D ]}t          |t                    rVt                              |j        |j        t          t          | 	                    |                                        V  m|
                                r)t                              |j        || j                  V  |V  d S r   )r   r(   r$   r   create_cachedinference_stater   r   rd   _remap_type_varsis_class_mixinrU   r   s     r   r(   z_LazyGenericBaseClass.infer  s      )//11 	 	D$-- "00(''d.C.CD.I.I(J(JKK      &&(( 
 '44,.      JJJJ'	 	r   c              #   n  K   ddl m} | j                                        }|                                D ]~}t
          }|D ]n}t          ||          rI|                    |                                          }|t          j
        d |D                       z  }[|t          |g          z  }o|V  d S )Nr   r_   c              3   >   K   | ]}|                                 V  d S r   )r(   )rp   rA   s     r   rt   z9_LazyGenericBaseClass._remap_type_vars.<locals>.<genexpr>!  s;       . .)-

. . . . . .r   )ra   r`   r   rL   r]   r   r$   rC   r*   r   	from_sets)r   r   r`   filtertype_var_setnewr   namess           r   r   z&_LazyGenericBaseClass._remap_type_vars  s      ;;;;;;"6688 --// 	 	LC( 
0 
0h00 	0"JJx':':'<'<==E8- . .16. . .   CC 8XJ///CCIIII	 	r   c                 2    d| j         j        d| j        dS r   )r0   r1   r   r+   s    r   r2   z_LazyGenericBaseClass.__repr__+  s#     !^444d6K6K6KLLr   N)r1   r3   r4   r   r   r(   r   r2   r6   r   r   r   r      sb        2 2 2
   ,  $M M M M Mr   r   c                       e Zd Zd ZddZdS )r   c                    | j         j                                        D ]}|                                dk    rA|                                }	 |d                                         c S # t          $ r Y Ww xY w|                                dk    r%t          t          | j	        d          g          c S | j         
                                S )N	Generator   IteratorNone)r   r   r   r*   r]   execute_annotationr@   r   r
   r   py__stop_iteration_returns)r   clsr<   s      r   r   z2_GenericInstanceWrapper.py__stop_iteration_returns0  s    &2<<>> 	S 	SC~~;..++--#A;99;;;;;!   D!!Z//!243G!P!P QRRRRR 0"==???s   A**
A76A7Tc                 B    | j         j                            d          S )NF)r   )r   r   r   )r   r   s     r   r   z%_GenericInstanceWrapper.get_type_hint<  s    ".<<E<RRRr   Nr   )r1   r3   r4   r   r   r6   r   r   r   r   /  s@        
@ 
@ 
@S S S S S Sr   r   c                   j     e Zd ZdZdZ fdZed             Zd Zd Z	ed             Z
d Zd	 Z xZS )
_PseudoTreeNameClassa2  
    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                 d    t                                          |j        |           || _        d S r   )rI   r   r   
_tree_name)r   r   	tree_namer0   s      r   r   z_PseudoTreeNameClass.__init__L  s5    *	
 	
 	
 $r   c                     | j         S r   )r   r+   s    r   rw   z_PseudoTreeNameClass.tree_nodeS  s
    r   c              /   H   K    G d dt                     } |            V  d S )Nc                        e Zd Zd Zd Zd ZdS )5_PseudoTreeNameClass.get_filters.<locals>.EmptyFilterc                     d S r   r6   r+   s    r   r   z>_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.__init__Z  s    r   c                     g S r   r6   )r   rA   rN   s      r   rC   z9_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.get]      	r   c                     g S r   r6   )r   rN   s     r   rE   z<_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.values`  r   r   N)r1   r3   r4   r   rC   rE   r6   r   r   EmptyFilterr   Y  sA                r   r   r   )r   rM   rN   r   s       r   rJ   z _PseudoTreeNameClass.get_filtersW  sJ      	 	 	 	 	+ 	 	 	 kmmr   c                 ,    t          | j        d          S )Ntype)r
   r   r+   s    r   py__class__z _PseudoTreeNameClass.py__class__e  s     !!5v>>>r   c                 ,    t          | | j                  S r   r   r   r+   s    r   rA   z_PseudoTreeNameClass.namej      t///r   c                     | j         j        fS r   )r   r&   r+   s    r   get_qualified_namesz(_PseudoTreeNameClass.get_qualified_namesn  s    %''r   c                 :    | j         j        d| j        j        dS N()r0   r1   r   r&   r+   s    r   r2   z_PseudoTreeNameClass.__repr__q  #    >222DO4I4I4IJJr   )r1   r3   r4   r5   r   r   propertyrw   rJ   r   rA   r   r2   rP   rQ   s   @r   r   r   @  s          H$ $ $ $ $   X  ? ? ?
 0 0 X0( ( (K K K K K K Kr   r   c                   <    e Zd Zd Zed             Zd Zd Zd ZdS )BaseTypingValuec                 :    |j         | _         || _        || _        d S r   )r   r   r   )r   r   r   s      r   r   zBaseTypingValue.__init__v  s     -=,#r   c                 ,    t          | | j                  S r   r   r+   s    r   rA   zBaseTypingValue.name{  r   r   c                 6    t          | j        | j                  S r   r   r   r   r+   s    r   r   z"BaseTypingValue._get_wrapped_value      #D$7IIIr   c                 4    | j                                         S r   )r   r   r+   s    r   r   zBaseTypingValue.get_signatures  s    "11333r   c                 :    | j         j        d| j        j        dS r   r   r+   s    r   r2   zBaseTypingValue.__repr__  r   r   N)	r1   r3   r4   r   r   rA   r   r   r2   r6   r   r   r   r   u  ss        $ $ $
 0 0 X0J J J4 4 4K K K K Kr   r   c                   *     e Zd Z fdZd Zd Z xZS )BaseTypingClassWithGenericsc                 ~    t                                          |           |j        | _        || _        || _        d S r   )rI   r   r   r   r   )r   r   r   rW   r0   s       r   r   z$BaseTypingClassWithGenerics.__init__  s:    )***-=,#r   c                 6    t          | j        | j                  S r   r   r+   s    r   r   z.BaseTypingClassWithGenerics._get_wrapped_value  r   r   c                 H    | j         j        d| j        j        | j        dS r   )r0   r1   r   r&   rU   r+   s    r   r2   z$BaseTypingClassWithGenerics.__repr__  s0    !^444do6K6K!3335 	5r   )r1   r3   r4   r   r   r2   rP   rQ   s   @r   r  r    sY        $ $ $ $ $J J J5 5 5 5 5 5 5r   r  c                   H    e Zd Zd Zd Zd Zd Zed             Zd Z	d Z
dS )	BaseTypingInstancec                 V    |j         | _         || _        || _        || _        || _        d S r   )r   r   r   r   rU   )r   r   r   r   rW   s        r   r   zBaseTypingInstance.__init__  s2    *:,'#!1r   c                     | j         S r   r   r+   s    r   r   zBaseTypingInstance.py__class__  r   r   c                     | j         S r   r   r+   s    r   r   z-BaseTypingInstance.get_annotated_class_object  r   r   c                 ,    |                                  fS r   )r*   r+   s    r   r   z&BaseTypingInstance.get_qualified_names  s    !!##r   c                 ,    t          | | j                  S r   r   r+   s    r   rA   zBaseTypingInstance.name  r   r   c                 X    t          | j        d                                          \  }|S )Nobject)r
   r   r   )r   object_s     r   r   z%BaseTypingInstance._get_wrapped_value  s'    $T%98DDWWYYr   c                 2    d| j         j        d| j        dS r   )r0   r1   rU   r+   s    r   r2   zBaseTypingInstance.__repr__  s#     !^444d6L6L6LMMr   N)r1   r3   r4   r   r   r   r   r   rA   r   r2   r6   r   r   r  r    s        2 2 2! ! !! ! !$ $ $ 0 0 X0  N N N N Nr   r  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   r8   rG   rS   r   r   r   r   r   r  r  r6   r   r   <module>r     s   = = = = = =: : : : : : : : : : : : : : : : 5 5 5 5 5 5 2 2 2 2 2 2 1 1 1 1 1 1 ( ( ( ( ( ( B B B B B B B B / / / / / / ? ? ? ? ? ?_ _ _ _ _. _ _ _6       <	0 	0 	0 	0 	0\ 	0 	0 	0K
 K
 K
 K
 K
- K
 K
 K
\Y Y Y Y Y): Y Y Yx0M 0M 0M 0M 0M 0M 0M 0MfS S S S Sl S S S"2K 2K 2K 2K 2K5 2K 2K 2KjK K K K K& K K K(5 5 5 5 5"8 5 5 5N N N N N) N N N N Nr   