
    f<                     x   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!y )!    )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y)_BoundTypeVarNamez>
    This type var was bound to a certain type, e.g. int.
    c                 B    || _         |j                  | _        || _        y N)	_type_varparent_context
_value_set)selftype_var	value_sets      V/var/www/cvtools/html/venv/lib/python3.12/site-packages/jedi/inference/gradual/base.py__init__z_BoundTypeVarName.__init__   s    !&55#    c                 .      fd}t         |             S )Nc               3      K   j                   D ]7  } ddlm} t        | |      rj                  j
                  E d {    4|  9 y 7 w)Nr   )AnyClass)r   jedi.inference.gradual.typingr"   
isinstancer   constraints)valuer"   r   s     r   iter_z&_BoundTypeVarName.infer.<locals>.iter_   sD       BeX.#~~9999K  :s   ;AAA)r   )r   r'   s   ` r   inferz_BoundTypeVarName.infer   s    	    r   c                 6    | j                   j                         S r   )r   
py__name__r   s    r   r*   z_BoundTypeVarName.py__name__!   s    ~~((**r   c                 r    d| j                   j                  d| j                         d| j                  dS )N< z -> >)	__class____name__r*   r   r+   s    r   __repr__z_BoundTypeVarName.__repr__$   s$    "&.."9"94??;Ldoo^^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y)_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                      || _         || _        y r   )	_generics
_type_vars)r   generics	type_varss      r   r   z_TypeVarFilter.__init__3   s    !#r   c                     t        | j                        D ]5  \  }}|j                         |k(  s	 t        || j                  |         gc S  g S # t
        $ r |j                  gcY c S w xY wr   )	enumerater;   r*   r   r:   
IndexErrorname)r   rA   ir   s       r   getz_TypeVarFilter.get7   sq    $T__5 	+KAx""$,+-hq8IJKK	+ 	 " +$MM?*+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   (   s    	$r   r8   c                        e Zd Z fdZ xZS )_AnnotatedClassContextc              /   |   K   t        |   |i |}|E d {    | j                  j                          y 7 !wr   )superget_filters_valueget_type_var_filter)r   argskwargsfiltersr0   s       r   rJ   z"_AnnotatedClassContext.get_filtersG   sF     '%

  kk--//	 	s   <:"<)r1   r3   r4   rJ   __classcell__r0   s   @r   rG   rG   F   s    0 0r   rG   c                   J    e Zd Zd Zd Z e       d        Zd Zd Zd Z	d Z
y)	DefineGenericBaseClassc                     || _         y 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                 6    | j                   j                         S r   )rU   to_tupler+   s    r   get_genericsz#DefineGenericBaseClass.get_genericsY   s    %%..00r   c           	         ddl m} d}g }| j                         D ]j  }t        }|D ]L  }t	        |t
        |f      r)|j                  |      }||z  }|t        |h      k7  s;d}>|t        |g      z  }N |j                  |       l |st        | g      S t        | j                  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g(>'HI$44]CFf$F7)!44"&hy11F2 '
	(  TF##<<l 34
   	r   c                     t        |t              sy| j                  |j                  k7  ry| j                         }|j                         }t	        |      t	        |      k7  ryt        d t        ||      D              S )NFc              3   h   K   | ])  \  }t        fd |j                         D               + yw)c              3   j   K   | ]*  }j                         D ]  }|j                  |        , y wr   )gather_annotation_classesis_same_class).0cls1cls2
class_set2s      r   	<genexpr>zADefineGenericBaseClass.is_same_class.<locals>.<genexpr>.<genexpr>   sD      
 &@@B
  ""4(
(
s   03N)anyrn   )rp   
class_set1rs   s     @r   rt   z7DefineGenericBaseClass.is_same_class.<locals>.<genexpr>   s<      
 )*j  
 '@@B
 

s   /2)r$   rS   	tree_noder]   lenallzip)r   othergiven_params1given_params2s       r   ro   z$DefineGenericBaseClass.is_same_classw   s{    %!78>>U__,))+**,}]!33   
 -0},M
 
 	
r   c                     g S r   r6   r+   s    r   get_signaturesz%DefineGenericBaseClass.get_signatures   s    	r   c                     d| j                   j                  d| j                  t        | j	                               dS Nr-   z: r/   )r0   r1   _wrapped_valuelistr]   r+   s    r   r2   zDefineGenericBaseClass.__repr__   s3    NN##""$%
 	
r   N)r1   r3   r4   r   rZ   r   r]   rb   ro   r   r2   r6   r   r   rS   rS   R   s7    2" "#1 $14
<
r   rS   c                   r     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                 2    t         |   |       || _        y 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   c                     | j                         }t        dddd      j                  ||      }|| j                  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   sX    OO
 f6uGDHHAN&&4466>!r   c                 R    t        | j                         | j                               S r   )r8   r]   list_type_varsr+   s    r   rL   z GenericClass.get_type_var_filter   s!    d//143F3F3HIIr   c                 P    t         |   |      \  }t        t        |      g      S r   )rI   
py__call__r   _GenericInstanceWrapper)r   	argumentsinstancer0   s      r   r   zGenericClass.py__call__   s(    G&y1	0:;<<r   c                     t        |       S r   )rG   r+   s    r   _as_contextzGenericClass._as_context   s    %d++r   c              #   |   K   | j                   j                         D ]  }t        | || j                          y wr   )r   py__bases___LazyGenericBaseClassrU   r   bases     r   r   zGenericClass.py__bases__   s;     ''335 	LD'dD4J4JKK	Ls   :<c                 .    t        | j                  |      S r   )r   r   rV   s     r   rZ   z+GenericClass._create_instance_with_generics   s    D--/?@@r   c                 Z    t         |   |      ry| j                  j                  |      S )NT)rI   is_sub_class_ofr   )r   r   r0   s     r   r   zGenericClass.is_sub_class_of   s*    7";/  00==r   c                 8    | j                   j                  |      S r   )r   with_generics)r   generics_tuples     r   r   zGenericClass.with_generics   s      ..~>>r   c           	         ddl m}m} | j                         }i }|dk(  r6| j	                         }|r"|d   j                  |j                               S |S |D ]  }|j                         r!|j                         s|j                         }n5|j                  dk7  rE|j                         D ])  }|j                         }	||	k(  s || || |                |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   s    c//+j("&"3"3"5"*1-==446 8 + & '')(2F2F2H'BBDH$$/ $,$6$6$8 L!-!8!8!:J&*4,)3D,G * r   T)r1   r3   r4   r5   r   r   r   rL   r   r   r   r   rZ   r   r   r   rP   rQ   s   @r   r   r      sR    (!
J=, L LA>
?%r   r   c                   .    e Zd Zd Zed        Zd Zd Zy)r   c                 .    || _         || _        || _        y r   )r   _lazy_base_classrU   )r   r   lazy_base_classrW   s       r   r   z_LazyGenericBaseClass.__init__   s    ' /!1r   c              #     K   | j                   j                         D ]  }t        |t              rOt        j	                  |j
                  |j                  t        t        | j                  |                         b|j                         r.t        j	                  |j
                  || j                         |  y w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 	D$-"00(('''d.C.CD.I(JK  &&( '44,,..  J'	s   CCc              #   L  K   ddl m} | j                  j                         }|j	                         D ]m  }t
        }|D ]\  }t        ||      r?|j                  |j                               }|t        j                  d |D              z  }N|t        |g      z  }^ | o y w)Nr   r_   c              3   <   K   | ]  }|j                           y wr   )r(   )rp   rA   s     r   rt   z9_LazyGenericBaseClass._remap_type_vars.<locals>.<genexpr>!  s      .)-

.   )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 --/ 	LC( 
0h0"JJx':':'<=E8-- .16.  C 8XJ//C
0 I	s   B"B$c                 P    d| j                   j                  d| j                  dS r   )r0   r1   r   r+   s    r   r2   z_LazyGenericBaseClass.__repr__+  s    !^^44d6K6KLLr   N)r1   r3   r4   r   r   r(   r   r2   r6   r   r   r   r      s&    2
  ,$Mr   r   c                       e Zd Zd ZddZy)r   c                    | j                   j                  j                         D ]p  }|j                         dk(  r&|j	                         }	 |d   j                         c S |j                         dk(  sPt        t        | j                  d      g      c S  | j                   j                         S # t        $ r Y w xY w)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2<<> 	SC~~;.++-#A;99;; !Z/!243G3G!P QRR	S ""==??	 " s   B22	B>=B>c                 N    | j                   j                  j                  d      S )NF)r   )r   r   r   )r   r   s     r   r   z%_GenericInstanceWrapper.get_type_hint<  s"    ""..<<E<RRr   Nr   )r1   r3   r4   r   r   r6   r   r   r   r   /  s    
@Sr   r   c                   ^     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                 H    t         |   |j                  |       || _        y r   )rI   r   r   
_tree_name)r   r   	tree_namer0   s      r   r   z_PseudoTreeNameClass.__init__L  s%    **	
 $r   c                     | j                   S r   )r   r+   s    r   rw   z_PseudoTreeNameClass.tree_nodeS  s    r   c              /   <   K    G d dt               } |        y w)Nc                       e Zd Zd Zd Zd Zy)5_PseudoTreeNameClass.get_filters.<locals>.EmptyFilterc                      y 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  s    r   r   r   )r   rM   rN   r   s       r   rJ   z _PseudoTreeNameClass.get_filtersW  s     	+ 	 mr   c                 .    t        | j                  d      S )Ntype)r
   r   r+   s    r   py__class__z _PseudoTreeNameClass.py__class__e  s     !!5!5v>>r   c                 .    t        | | j                        S r   r   r   r+   s    r   rA   z_PseudoTreeNameClass.namej      t//r   c                 0    | j                   j                  fS r   )r   r&   r+   s    r   get_qualified_namesz(_PseudoTreeNameClass.get_qualified_namesn  s    %%''r   c                 b    | j                   j                  d| j                  j                  dS N()r0   r1   r   r&   r+   s    r   r2   z_PseudoTreeNameClass.__repr__q  !    >>22DOO4I4IJJr   )r1   r3   r4   r5   r   r   propertyrw   rJ   r   rA   r   r2   rP   rQ   s   @r   r   r   @  sQ     H$  ?
 0 0(Kr   r   c                   4    e Zd Zd Zed        Zd Zd Zd Zy)BaseTypingValuec                 B    |j                   | _         || _        || _        y 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                 B    t        | j                  | j                        S r   r   r   r   r+   s    r   r   z"BaseTypingValue._get_wrapped_value      #D$7$7IIr   c                 6    | j                   j                         S r   )r   r   r+   s    r   r   zBaseTypingValue.get_signatures  s    ""1133r   c                 b    | 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  s,    $
 0 0J4Kr   r   c                   *     e Zd Z fdZd Zd Z xZS )BaseTypingClassWithGenericsc                 b    t         |   |       |j                  | _        || _        || _        y r   )rI   r   r   r   r   )r   r   r   rW   r0   s       r   r   z$BaseTypingClassWithGenerics.__init__  s.    )*-==,#r   c                 B    t        | j                  | j                        S r   r   r+   s    r   r   z.BaseTypingClassWithGenerics._get_wrapped_value  r   r   c                 z    | j                   j                  d| j                  j                  | j                  dS r   )r0   r1   r   r&   rU   r+   s    r   r2   z$BaseTypingClassWithGenerics.__repr__  s.    !^^44doo6K6K!335 	5r   )r1   r3   r4   r   r   r2   rP   rQ   s   @r   r  r    s    $J5r   r  c                   @    e Zd Zd Zd Zd Zd Zed        Zd Z	d Z
y)	BaseTypingInstancec                 ^    |j                   | _         || _        || _        || _        || _        y r   )r   r   r   r   rU   )r   r   r   r   rW   s        r   r   zBaseTypingInstance.__init__  s/    *::,'#!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                 $    | j                         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                 R    t        | j                  d      j                         \  }|S )Nobject)r
   r   r   )r   object_s     r   r   z%BaseTypingInstance._get_wrapped_value  s$    $T%9%98DWWYr   c                 P    d| j                   j                  d| j                  dS r   )r0   r1   rU   r+   s    r   r2   zBaseTypingInstance.__repr__  s    !^^44d6L6LMMr   N)r1   r3   r4   r   r   r   r   r   rA   r   r2   r6   r   r   r  r    s5    2!!$ 0 0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 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   