
    ^jE              	          d Z ddlZddlmZ ddlmZ ddlmZmZ ddl	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mZ ddlmZ ddlmZmZmZ ddlmZ ddl m!Z!m"Z" djG                         Z$dddddddddZ%g dZ&g 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, G d% d&e*e,      Z- G d' d(e+e,      Z. G d) d*e      Z/ G d+ d,e      Z0 G d- d.e      Z1 G d/ d0e      Z2 G d1 d2e      Z3 G d3 d4e      Z4 G d5 d6e      Z5 G d7 d8e      Z6 G d9 d:e      Z7 G d; d<e      Z8 G d= d>e      Z9 G d? d@e      Z: G dA dBe      Z;y)Cz
We need to somehow work with the typing objects. Since the typing objects are
pretty bare we need to add all the Jedi customizations to make them work as
values.

This file deals with all the typing.py cases.
    N)Any)debug)builtin_from_namecreate_simple_object)ValueSet	NO_VALUESValueLazyValueWrapperValueWrapper)LazyKnownValues)repack_with_argument_clinic)FilterWrapper)NameWrapper	ValueName)
ClassMixin)BaseTypingValueBaseTypingClassWithGenericsBaseTypingInstance)TypeVarClass)LazyGenericManagerTupleGenericManagerz$Tuple Generic Protocol Callable Typezbuiltins.listzbuiltins.dictzbuiltins.setzbuiltins.frozensetzcollections.ChainMapzcollections.Counterzcollections.defaultdictzcollections.deque)ListDictSet	FrozenSetChainMapCounterDefaultDictDeque)OptionalUnionClassVar	AnnotatedFinal)r"   r#   r$   c                       e Zd Zd Zd Zy)TypingModuleNamec                 4    t        | j                               S N)r   _remapselfs    V/opt/ringagent/.cad-venv/lib/python3.12/site-packages/jedi/inference/gradual/typing.pyinferzTypingModuleName.infer)   s    &&    c              #   &  K   | j                   }| j                  j                  }	 t        |   }t        j                  || j                  | j                  |       y # t        $ r Y nw xY w|t        v r.t        j                  || j                  | j                         y |t        v r.t        j                  || j                  | j                         y |dk(  ry |dk(  r5| j                  j                         \  }t        j
                  ||       y |dk(  r.t        j                  || j                  | j                         y |dk(  rt!        |d       y |dk(  r.t"        j                  || j                  | j                         y |dk(  r5| j                  j                         \  }t$        j                  ||       y |dk(  r5| j                  j                         \  }t&        j                  ||       y |d	k(  r.t(        j                  || j                  | j                         y |d
k(  r.t*        j                  || j                  | j                         y | j                  j                         E d {  7   y w)NruntimeTypeVarr   TYPE_CHECKINGTrueoverloadNewTypecastSelf	TypedDict)string_nameparent_contextinference_state_TYPE_ALIAS_TYPES	TypeAliascreate_cached	tree_nameKeyError_PROXY_CLASS_TYPESProxyTypingClassValue_PROXY_TYPESProxyTypingValue_wrapped_namer-   r   AnyClassr   OverloadFunctionNewTypeFunctionCastFunction	SelfClassTypedDictClass)r+   namer;   actualclsvcast_fns          r,   r)   zTypingModuleName._remap,   sY    --==	&t,F ))!4!4dnnfN N  		 %%'55!4!4dnnF F\!"00!4!4dnnF FY Y%%++-DC,,_cBBU]((!4!4dnnF F_$ $OV<<Z"00!4!4dnnF FY##))+BA!//CCV^))//1HG,,_gFFV^))!4!4dnnF F[  !..!4!4dnnF F ))//111s4   #J	A /J	A*'J)A**H J
JJN)__name__
__module____qualname__r-   r)    r.   r,   r&   r&   (   s    '62r.   r&   c                       e Zd ZeZy)TypingModuleFilterWrapperN)rQ   rR   rS   r&   name_wrapper_classrT   r.   r,   rV   rV   e   s    )r.   rV   c                   $    e Zd Zd Zd Zd Zd Zy)ProxyWithGenericsc                    | j                   j                  }|dk(  r| j                         j                  |      S |dk(  r@| j                         j                  |      t	        t        | j                  d      g      z  S |dk(  r| j                  d   S |t        v r| j                  d   j                  |      S t        t        t        t        d}||   }t	         || j                  | | j                   | j                        g      S )Nr!   r    NoneTyper   )TupleGenericProtocolCallablegenerics_manager)
_tree_namevaluegather_annotation_classesexecute_annotationr   r   r;   _generics_managerIGNORE_ANNOTATION_PARTSr]   r^   r_   r`   r:   )r+   contextr9   mappedrN   s        r,   rf   z$ProxyWithGenerics.execute_annotationj   s   oo++'! 113FFwOOJ& 113FFwO-d.B.BFKLMN NF"))!,,33))!,??HH   	
 [!OO!33	
   	r.   c                 \    t        j                  | j                  j                               S r(   )r   	from_setsrg   to_tupler*   s    r,   re   z+ProxyWithGenerics.gather_annotation_classes   s"    !!$"8"8"A"A"CDDr.   c                 D    t        | j                  | j                  |      S r(   )rY   r:   rc   r+   rb   s     r,   _create_instance_with_genericsz0ProxyWithGenerics._create_instance_with_generics   s"     OO
 	
r.   c                     | j                         }|si S | j                         }|dk(  r<t        | j                  d      |d   j	                  |j                  fd            S i S )Nr    r[   r   c                     | k7  S r(   rT   )xnones    r,   <lambda>z3ProxyWithGenerics.infer_type_vars.<locals>.<lambda>   s    19 r.   )get_generics
py__name__r   r;   infer_type_varsfilter)r+   	value_setannotation_genericsannotation_namert   s       @r,   rx   z!ProxyWithGenerics.infer_type_vars   sp    "//1"I//+j( %T%9%96BD&q)99  !45  	r.   N)rQ   rR   rS   rf   re   rp   rx   rT   r.   r,   rY   rY   i   s    BE
r.   rY   c                       e Zd ZeZd Zd Zy)rD   c                     | j                   j                  | j                  | j                  | j                  t        |            S )Nra   )index_classr>   r;   r:   rc   r   )r+   generics_tuples     r,   with_genericszProxyTypingValue.with_generics   sA    --  OO0@	 . 
 	
r.   c                 0     t         fd|D              S )Nc           
   3      K   | ]V  }j                   j                  j                  j                  j                  t        j                  |              X yw))context_of_indexindex_valuera   N)r   r>   r;   r:   rc   r   ri   ).0r   contextualized_noder+   s     r,   	<genexpr>z1ProxyTypingValue.py__getitem__.<locals>.<genexpr>   s^      

  **$$##!3%8%@%@ +"	 + 

s   AAr   r+   index_value_setr   s   ` `r,   py__getitem__zProxyTypingValue.py__getitem__   s     

 "1

 

 
	
r.   N)rQ   rR   rS   rY   r   r   r   rT   r.   r,   rD   rD      s    #K

r.   rD   c                   4    e Zd ZU eed<   d Zd Zed        Zy)_TypingClassMixinrc   c                 `    t        | j                  j                  j                  d            gS )Nobject)r   r;   builtins_modulepy__getattribute__r*   s    r,   py__bases__z_TypingClassMixin.py__bases__   s.      00CCHM
  	r.   c                     g S r(   rT   r*   s    r,   get_metaclassesz!_TypingClassMixin.get_metaclasses       	r.   c                 .    t        | | j                        S r(   )r   rc   r*   s    r,   rL   z_TypingClassMixin.name   s    t//r.   N)	rQ   rR   rS   r   __annotations__r   r   propertyrL   rT   r.   r,   r   r      s%    O
 0 0r.   r   c                       e Zd Zd Zd Zy)TypingClassWithGenericsc                 d   i }| j                         }|s|S | j                         }|dk(  r#|d   j                  |j                  d             S |dk(  r3t	        |      dk(  r#|d   j                  |j                  d             S |S |dk(  r$| j                  d       \  }|j                  |      S |S )Nr\   r   r`         r]   )rv   rw   rx   rf   len)r+   rz   type_var_dictr{   r|   tuple_annotations         r,   rx   z'TypingClassWithGenerics.infer_type_vars   s    "//1"  //+f$&q)99 ,,T2	  
*&'1,*1-==006  	 ' $ 7 7 =#33I>>r.   c                 D    t        | j                  | j                  |      S r(   )r   r:   rc   ro   s     r,   rp   z6TypingClassWithGenerics._create_instance_with_generics   s"    &OO
 	
r.   N)rQ   rR   rS   rx   rp   rT   r.   r,   r   r      s    8
r.   r   c                       e Zd ZeZy)rB   N)rQ   rR   rS   r   r   rT   r.   r,   rB   rB      s    )Kr.   rB   c                   @    e Zd Zd Zed        Zd Zd Zd Zd Z	d Z
y)	r=   c                 P    |j                   | _         || _        || _        || _        y r(   )r;   r:   _origin_tree_name_actual)r+   r:   origin_tree_namerM   s       r,   __init__zTypeAlias.__init__   s'    -==,!1r.   c                 .    t        | | j                        S r(   )r   r   r*   s    r,   rL   zTypeAlias.name  s    t5566r.   c                 .    | j                   j                  S r(   )rL   r9   r*   s    r,   rw   zTypeAlias.py__name__  s    yy$$$r.   c                 P    d| j                   j                  d| j                  dS )N<z: >)	__class__rQ   r   r*   s    r,   __repr__zTypeAlias.__repr__  s    !^^44dllCCr.   c                 4   | j                   j                  d      \  }}ddlm}  || j                  |g| j                  j
                        j                         \  }|j                  |      }t        |      dk(  sJ |       t        t        |            }|S )N.r   )Importerr   )r   splitjedi.inference.importsr   r;   r   followr   r   nextiter)r+   module_name
class_namer   moduleclassesrN   s          r,   _get_wrapped_valuezTypeAlias._get_wrapped_value  s    "&,,"4"4S"9Z 	4  ;-1E1E1U1U

&( 	 ++J77|q )') 4=!
r.   c                 6    t        | j                         g      S r(   )r   r   r*   s    r,   re   z#TypeAlias.gather_annotation_classes  s    002344r.   c                     g S r(   rT   r*   s    r,   get_signatureszTypeAlias.get_signatures  r   r.   N)rQ   rR   rS   r   r   rL   rw   r   r   re   r   rT   r.   r,   r=   r=      s5     7 7%D5r.   r=   c                       e Zd Zd Zd Zy)r`   c                     	 | j                   d   }| j                   d   }ddlm}  ||||      S # t        $ r t	        j
                  d       t        cY S w xY w)zG
            def x() -> Callable[[Callable[..., _T]], _T]: ...
        r   r   )infer_return_for_callablez+Callable[...] defined without two arguments)rg   !jedi.inference.gradual.annotationr   
IndexErrorr   warningr   )r+   	argumentsparam_valuesresult_valuesr   s        r,   
py__call__zCallable.py__call__!  sa    
	U11!4L 2215M
 T,YmTT  	MMGH	s   0 $AAc                     t        | g      S r(   r   )r+   instanceclass_values      r,   	py__get__zCallable.py__get__0  s    r.   N)rQ   rR   rS   r   r   rT   r.   r,   r`   r`      s    U r.   r`   c                   B    e Zd Zd Zd Zd	dZd Zd Zed        Z	d Z
y)
r]   c                 6    | j                   j                         S r(   )rg   is_homogenous_tupler*   s    r,   _is_homogenouszTuple._is_homogenous5  s     %%99;;r.   c                     | j                         r| j                  j                  d      S t        |t              r| j                  j                  |      S t        j                  d|z         t        S )Nr   z The getitem type on Tuple was %s)r   rg   get_index_and_execute
isinstanceintr   dbgr   r+   indexs     r,   py__simple_getitem__zTuple.py__simple_getitem__:  s^     ))??BB%%--CCEJJII85@Ar.   Nc              #      K   | j                         r't        | j                  j                  d             y | j                  j	                         D ]  }t        |j                  d                y wNr   )r   r   rg   r   rm   rf   )r+   r   rO   s      r,   
py__iter__zTuple.py__iter__D  sd      !$"8"8"N"Nq"QRR++446 B%a&:&:4&@AABs   A4A6c                     | j                         r| j                  j                  d      S t        j                  | j                  j                               j                  d       S r   )r   rg   r   r   rl   rm   rf   r   s      r,   r   zTuple.py__getitem__K  sU     ))??BB!!""++-


T
"	#r.   c                 r    | j                   j                  j                  d      j                  d       \  }|S Ntuple)r;   r   r   rf   )r+   tuple_s     r,   r   zTuple._get_wrapped_valueS  s3    &&66(););D)A 	r.   c                 .    | j                   j                  S r(   )_wrapped_valuerL   r*   s    r,   rL   z
Tuple.nameX  s    ""'''r.   c                 Z   ddl m}m} |j                  d       }| j	                         r:| j
                  j                         d   j                  |j                               S i }|D ]0  }	 |j                  } |       } || || j
                  |             2 |S # t        $ r Y @w xY w)Nr   )merge_pairwise_genericsmerge_type_var_dictsc                 D    | j                         j                         dk(  S r   )rw   lower)rs   s    r,   ru   z'Tuple.infer_type_vars.<locals>.<lambda>a  s    alln**,7 r.   )r   r   r   ry   r   _class_valuerv   rx   merge_types_of_iterateget_annotated_class_objectAttributeError)r+   rz   r   r   r   elementmethodpy_classs           r,   rx   zTuple.infer_type_vars\  s    c$$7
	   $$113A6FF002  M$ $??F "8$!+D,=,=xH !  &  	s   -B	B*)B*r(   )rQ   rR   rS   r   r   r   r   r   r   rL   rx   rT   r.   r,   r]   r]   4  s5    <
B#
 ( (&!r.   r]   c                       e Zd Zy)r^   NrQ   rR   rS   rT   r.   r,   r^   r^         r.   r^   c                       e Zd Zy)r_   Nr   rT   r.   r,   r_   r_     r   r.   r_   c                       e Zd Zd Zy)rF   c                 8    t        j                  d       t        S )NzUsed Any - returned no results)r   r   r   r+   ri   s     r,   rf   zAnyClass.execute_annotation  s    67r.   NrQ   rR   rS   rf   rT   r.   r,   rF   rF     s    r.   rF   c                       e Zd Zd Zy)rJ   c                 z    t        j                  d       ||j                         j                  d       S t        S )Nz	Used Self)r   r   	get_valuerf   r   r   s     r,   rf   zSelfClass.execute_annotation  s4    k"$$&99$??r.   Nr   rT   r.   r,   rJ   rJ     s    r.   rJ   c                   (    e Zd Z ed      d        Zy)rG   zfunc, /c                     |S r(   rT   )r+   func_value_sets     r,   r   zOverloadFunction.py__call__  s
     r.   NrQ   rR   rS   r   r   rT   r.   r,   rG   rG     s     + ,r.   rG   c                       e Zd Zd Zy)rH   c                      |j                         }t        |d       t        |d      \  }t        S t         fd|j	                         D              S )N)NNc              3      K   | ]>  }t        j                  |j                  |j                  j	                                @ y wr(   )r5   r;   ri   noder-   )r   r   
second_argr+   s     r,   r   z-NewTypeFunction.py__call__.<locals>.<genexpr>  sI      H & $$#++#((  "	Hs   AA)unpackr   r   r   get_calling_nodes)r+   r   ordered_args_r  s   `   @r,   r   zNewTypeFunction.py__call__  s`     '')\<(\<8: H *3)D)D)FH H 	Hr.   N)rQ   rR   rS   r   rT   r.   r,   rH   rH     s    Hr.   rH   c                   F     e Zd Z fdZd Zd Zed        ZdefdZ	 xZ
S )r5   c                 B    t         |   ||       || _        || _        y r(   )superr   _type_value_set	tree_node)r+   r;   r:   r  type_value_setr   s        r,   r   zNewType.__init__  s!    .9-"r.   c                 >    | j                   j                         \  }|S r(   )r  py__class__)r+   cs     r,   r  zNewType.py__class__  s    !!--/r.   c                 L    | j                   j                  |j                        S r(   )r  rf   ri   )r+   r   s     r,   r   zNewType.py__call__  s    ##66y7H7HIIr.   c                      ddl m}  || d      S )Nr   )CompiledValueNamer5   )jedi.inference.compiled.valuer  )r+   r  s     r,   rL   zNewType.name  s    C y11r.   returnc                 :    d| j                   d| j                  S )Nz
<NewType: r   )r  r  r*   s    r,   r   zNewType.__repr__  s    $(NND4H4HIIr.   )rQ   rR   rS   r   r  r   r   rL   strr   __classcell__)r   s   @r,   r5   r5     s5    #
J 2 2J# Jr.   r5   c                   (    e Zd Z ed      d        Zy)rI   ztype, object, /c                 $    |j                  d       S r(   )rf   )r+   r  object_value_sets      r,   r   zCastFunction.py__call__  s    0066r.   Nr   rT   r.   r,   rI   rI     s     !237 47r.   rI   c                       e Zd ZdZy)rK   zr
    This class has no responsibilities and is just here to make sure that typed
    dicts can be identified.
    N)rQ   rR   rS   __doc__rT   r.   r,   rK   rK     s    r.   rK   c                   8    e Zd ZdZd Zed        Zd Zd Zd Z	y)r8   z6Represents the instance version of ``TypedDictClass``.c                 x    |j                   | _         |j                  | _        |j                  | _        || _        y r(   )r;   r:   r  _definition_class)r+   definition_classs     r,   r   zTypedDict.__init__  s3    /??.==)33!1r.   c                 B    t        | | j                  j                        S r(   )r   r  rL   r*   s    r,   rL   zTypedDict.name  s    t~~2233r.   c                     t        t              r8t        j                  fd| j                  j                  d      D              S t        S )Nc              3   j   K   | ]*  }|j                        D ]  }|j                           , y wr(   )getr-   )r   ry   rL   r   s      r,   r   z1TypedDict.py__simple_getitem__.<locals>.<genexpr>  s=      &"JJu-&  

&&s   03Tis_instance)r   r  r   rl   r!  get_filtersr   r   s    `r,   r   zTypedDict.py__simple_getitem__  sI    eS!%% &"44@@T@R&  
 r.   c           	          t         j                  j                  d | j                  j	                  d      D              }t        |D ch c]"  }t        | j                  |j                        $ c}      S c c}w )Nc              3   <   K   | ]  }|j                           y wr(   )values)r   fs     r,   r   z+TypedDict.get_key_values.<locals>.<genexpr>  s      9
 HHJ9
s   Tr'  )		itertoolschainfrom_iterabler!  r)  r   r   r;   r9   )r+   filtered_valuesrO   s      r,   get_key_valueszTypedDict.get_key_values  sr    #//77 9
++77D7I9
  $
 !!5!5q}}E
  	 
s   
'A8c                 x    | j                   j                  j                  d      \  }|j                         \  }|S )Ndict)r;   r   r   execute_with_values)r+   dresults      r,   r   zTypedDict._get_wrapped_value  s5    !!11DDVL'')r.   N)
rQ   rR   rS   r  r   r   rL   r   r2  r   rT   r.   r,   r8   r8     s-    @2 4 4r.   r8   )<r  r.  typingr   jedir   jedi.inference.compiledr   r   jedi.inference.base_valuer   r   r	   r
   r   jedi.inference.lazy_valuer   jedi.inference.argumentsr   jedi.inference.filtersr   jedi.inference.namesr   r   jedi.inference.value.klassr   jedi.inference.gradual.baser   r   r   jedi.inference.gradual.type_varr   jedi.inference.gradual.genericsr   r   r   rA   r<   rC   rh   r&   rV   rY   rD   r   r   rB   r=   r`   r]   r^   r_   rF   rJ   rG   rH   r5   rI   rK   r8   rT   r.   r,   <module>rD     s      K# # 5 @ 0 7 14 4 8 S;AAC %&$, 	  G< :2{ :2z* *<3 <~
 
20
 0 "
/1B "
J*,.? *#  #L !  (N! N!b	  		! 	   Hl H Je J,7< 7_ "  "r.   