Format: application/x-python-code
⬇ Download File (15.4 KB)
   1  o
   2  
   3  �h�<�@s6ddlmZddlmZmZmZmZmZmZddl	m
   4  Z
   5  ddlmZddlm
   6  Z
   7  ddlmZddlmZmZddlmZdd	lmZGd
   8  d�de�ZGdd
   9  �d
  10  �ZGdd�de�ZGdd�de�ZGdd�dee
  11  �ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!d S)!�)�inference_state_method_cache)�ValueSet�	NO_VALUES�Value�iterator_to_value_set�LazyValueWrapper�ValueWrapper)�builtin_from_name��ClassFilter)�
  12  ClassMixin)�to_list)�AbstractNameDefinition�	ValueName)�ClassContext)�TupleGenericManagerc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
  13  S)�_BoundTypeVarNamez>
  14      This type var was bound to a certain type, e.g. int.
  15      cCs||_|j|_||_dS�N)�	_type_var�parent_context�
  16  _value_set)�self�type_var�	value_set�r�Qc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/inference/gradual/base.py�__init__s
  17  z_BoundTypeVarName.__init__cs�fdd�}t|��S)Nc3s>��jD]}ddlm}t||�r�jjEdHq|VqdS)Nr)�AnyClass)rZjedi.inference.gradual.typingr�
  18  isinstancer�constraints)�valuer�rrr�iter_s�
  19  
  20  �z&_BoundTypeVarName.infer.<locals>.iter_)r)rr"rr!r�infers
  21  z_BoundTypeVarName.infercC�
  22  |j��Sr)r�
  23  py__name__r!rrrr%!�
  24  z_BoundTypeVarName.py__name__cCsd|jj|��|jfS)Nz
  25  <%s %s -> %s>)�	__class__�__name__r%rr!rrr�__repr__$sz_BoundTypeVarName.__repr__N)r(�
  26  __module__�__qualname__�__doc__rr#r%r)rrrrr
  27  src@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_TypeVarFilterz�
  28      A filter for all given variables in a class.
  29  
  30          A = TypeVar('A')
  31          B = TypeVar('B')
  32          class Foo(Mapping[A, B]):
  33              ...
  34  
  35      In this example we would have two type vars given: A and B
  36      cCs||_||_dSr)�	_generics�
  37  _type_vars)r�genericsZ	type_varsrrrr3s
  38  z_TypeVarFilter.__init__c	Cs\t|j�D]&\}}|��|kr+zt||j|�gWSty*|jgYSwqgSr)�	enumerater/r%rr.�
  39  IndexError�name)rr3�irrrr�get7s��z_TypeVarFilter.getcC�gSrrr!rrr�values@sz_TypeVarFilter.valuesN)r(r*r+r,rr5r7rrrrr-(s
  40  
  41  	r-cseZdZ�fdd�Z�ZS)�_AnnotatedClassContextc/s.�t�j|i|��}|EdH|j��VdSr)�super�get_filters�_value�get_type_var_filter)r�args�kwargs�filters�r'rrr:Gs���
  42  z"_AnnotatedClassContext.get_filters)r(r*r+r:�
  43  __classcell__rrr@rr8Fsr8c@sJeZdZdd�Zdd�Ze�dd��Zdd�Zd	d
  44  �Zdd�Z	d
  45  d�Z
  46  dS)�DefineGenericBaseClasscCs
  47  ||_dSr)�_generics_manager�r�generics_managerrrrrSr&zDefineGenericBaseClass.__init__cCst�r)�NotImplementedErrorrDrrr�_create_instance_with_genericsV�z5DefineGenericBaseClass._create_instance_with_genericscCr$r)rCZto_tupler!rrr�get_genericsYs
  48  z#DefineGenericBaseClass.get_genericsc	Cs�ddlm}d}g}|��D]/}t}|D]#}t|t|f�r0|�|�}||O}|t|h�kr/d}q|t|g�O}q|�|�q|sEt|g�St|�	t
  49  t|���g�S)Nr��TypeVarFT)�jedi.inference.gradual.type_varrKrIrrrB�define_genericsr�appendrGr�tuple)	r�
  50  type_var_dictrK�changedZnew_genericsZgeneric_setr7Zgeneric�resultrrrrM]s&
  51  �
  52  
  53  �z&DefineGenericBaseClass.define_genericscCsZt|t�sdS|j|jkrdS|��}|��}t|�t|�kr!dStdd�t||�D��S)NFc3s.�|]\}�t�fdd�|��D��VqdS)c3s(�|]}���D]}|�|�VqqdSr)�gather_annotation_classes�
  54  is_same_class)�.0Zcls1Zcls2�Z
  55  class_set2rr�	<genexpr>�s��	��zADefineGenericBaseClass.is_same_class.<locals>.<genexpr>.<genexpr>N)�anyrS)rUZ
  56  class_set1rrVrrW�s���
  57  �z7DefineGenericBaseClass.is_same_class.<locals>.<genexpr>)rrB�	tree_noderI�len�all�zip)r�otherZ
  58  given_params1Z
  59  given_params2rrrrTws
  60  �z$DefineGenericBaseClass.is_same_classcCr6rrr!rrr�get_signatures�rHz%DefineGenericBaseClass.get_signaturescCsd|jj|jt|���fS)Nz
  61  <%s: %s%s>)r'r(�_wrapped_value�listrIr!rrrr)�s
  62  
  63  �zDefineGenericBaseClass.__repr__N)r(r*r+rrGrrIrMrTr^r)rrrrrBRs
  64  rBcs~eZdZdZ�fdd�Zdd�Zddd�Zd	d
  65  �Z�fdd�Zd
  66  d�Z	e
  67  dd��Zdd�Z�fdd�Z
  68  dd�Zdd�Z�ZS)�GenericClassz�
  69      A class that is defined with generics, might be something simple like:
  70  
  71          class Foo(Generic[T]): ...
  72          my_foo_int_cls = Foo[int]
  73      cst��|�||_dSr)r9r�_class_value)r�class_valuerEr@rrr�s
  74  zGenericClass.__init__cC�|jSr�rbr!rrr�_get_wrapped_value��zGenericClass._get_wrapped_valueTcCs>|��}tddddd��||�}||j��}|rd|S|S)N�List�Dict�Set�Tuple)r`�dict�setrOzType[%s])r%rlr5rC�
  75  get_type_hint)r�add_class_info�n�srrrrn�szGenericClass.get_type_hintcCst|��|���Sr)r-rIZlist_type_varsr!rrrr<��z GenericClass.get_type_var_filtercst��|�\}tt|�g�Sr)r9�
  76  py__call__r�_GenericInstanceWrapper)r�	arguments�instancer@rrrs�szGenericClass.py__call__cCst|�Sr)r8r!rrr�_as_context�szGenericClass._as_contextccs&�|j��D]
  77  }t|||j�VqdSr)r_�py__bases__�_LazyGenericBaseClassrC�r�baserrrrx�s��zGenericClass.py__bases__cCst|j|�Sr)rarbrDrrrrG��z+GenericClass._create_instance_with_genericscst��|�rdS|j�|�S)NT)r9�is_sub_class_ofrb)rrcr@rrr}�szGenericClass.is_sub_class_ofcCs|j�|�Sr)rb�
  78  with_generics)rZgenerics_tuplerrrr~�r|zGenericClass.with_genericsc
  79  Cs�ddlm}m}|��}i}|dkr#|��}|r!|d�|���S|S|D]/}|��r4|��s4|�	�}nq%|j
  80  dkr;q%|��D]}|��}	||	krS|||||��nq?q%|S)Nr)�merge_pairwise_generics�merge_type_var_dicts�Iterable�class)Z!jedi.inference.gradual.annotationrr�r%rI�infer_type_varsZmerge_types_of_iterateZis_instanceZis_compiled�get_annotated_class_object�api_type�	py__mro__)
  81  rrrr�Zannotation_namerPZannotation_genericsZpy_classZparent_class�
  82  class_namerrrr��s6��
  83  
  84  ���zGenericClass.infer_type_vars�T)r(r*r+r,rrfrnr<rsrwr
  85  rxrGr}r~r�rArrr@rra�s
  86  
  87  rac@s0eZdZdd�Zedd��Zdd�Zdd�Zd	S)
  88  rycCs||_||_||_dSr)rb�_lazy_base_classrC)rrcZlazy_base_classrErrrr�s
  89  z_LazyGenericBaseClass.__init__c
  90  csh�|j��D]+}t|t�rt�|j|jtt|�	|����Vq|�
  91  �r.t�|j||j�Vq|VqdSr)r�r#rraZ
  92  create_cached�inference_stater_rrO�_remap_type_varsZis_class_mixinrCrzrrrr#s �
  93  ���z_LazyGenericBaseClass.inferccs~�ddlm}|j��}|��D],}t}|D]"}t||�r1|�|���}|t	�
  94  dd�|D��O}q|t	|g�O}q|VqdS)NrrJcss�|]}|��VqdSr)r#)rUr3rrrrW!s�
  95  �z9_LazyGenericBaseClass._remap_type_vars.<locals>.<genexpr>)rLrKrbr<rIrrr5r%rZ	from_sets)rr{rK�filterZtype_var_set�newr�namesrrrr�s�
  96  
  97  ��z&_LazyGenericBaseClass._remap_type_varscC�d|jj|jfS�Nz<%s: %s>)r'r(r�r!rrrr)+rrz_LazyGenericBaseClass.__repr__N)r(r*r+rrr#r�r)rrrrry�s
  98  ryc@seZdZdd�Zddd�ZdS)rtc	Csx|jj��D]0}|��dkr%|��}z	|d��WSty$Yqw|��dkr6tt|j	d�g�Sq|j�
  99  �S)N�	Generator��Iterator�None)r_rcr�r%rI�execute_annotationr2rr	r��py__stop_iteration_returns)r�clsr0rrrr�0s��
 100  z2_GenericInstanceWrapper.py__stop_iteration_returnsTcCs|jjjdd�S)NF)ro)r_rcrn)rrorrrrn<sz%_GenericInstanceWrapper.get_type_hintNr�)r(r*r+r�rnrrrrrt/srtcs\eZdZdZdZ�fdd�Zedd��Zdd�Zd	d
 101  �Z	edd��Z
 102  d
 103  d�Zdd�Z�Z
 104  S)�_PseudoTreeNameClassa2
 105      In typeshed, some classes are defined like this:
 106  
 107          Tuple: _SpecialForm = ...
 108  
 109      Now this is not a real class, therefore we have to do some workarounds like
 110      this class. Essentially this class makes it possible to goto that `Tuple`
 111      name, without affecting anything else negatively.
 112      r�cst��|j|�||_dSr)r9rr��
 113  _tree_name�rr�	tree_namer@rrrLs
 114  �
 115  z_PseudoTreeNameClass.__init__cCrdr)r�r!rrrrYSsz_PseudoTreeNameClass.tree_nodecos�Gdd�dt�}|�VdS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z5_PseudoTreeNameClass.get_filters.<locals>.EmptyFiltercSsdSrrr!rrrrZrHz>_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.__init__c[r6rr)rr3r>rrrr5]rHz9_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.getc[r6rr)rr>rrrr7`rHz<_PseudoTreeNameClass.get_filters.<locals>.EmptyFilter.valuesN)r(r*r+rr5r7rrrr�EmptyFilterYsr�r
 116  )rr=r>r�rrrr:Ws�
 117  z _PseudoTreeNameClass.get_filterscCst|jd�S)N�type)r	r�r!rrr�py__class__esz _PseudoTreeNameClass.py__class__cC�t||j�Sr�rr�r!rrrr3j�z_PseudoTreeNameClass.namecCs
 118  |jjfSr)r�r r!rrr�get_qualified_namesnr&z(_PseudoTreeNameClass.get_qualified_namescC�d|jj|jjfS�Nz%s(%s)�r'r(r�r r!rrrr)q�z_PseudoTreeNameClass.__repr__)r(r*r+r,r�r�propertyrYr:r�r3r�r)rArrr@rr�@s	
 119  
 120  r�c@s8eZdZdd�Zedd��Zdd�Zdd�Zd	d
 121  �ZdS)�BaseTypingValuecCs|j|_||_||_dSr)r�rr�r�rrrrvs
 122  zBaseTypingValue.__init__cCr�rr�r!rrrr3{r�zBaseTypingValue.namecC�t|j|j�Sr�r�rr�r!rrrrf�z"BaseTypingValue._get_wrapped_valuecCr$r)r_r^r!rrrr^�r&zBaseTypingValue.get_signaturescCr�r�r�r!rrrr)�r�zBaseTypingValue.__repr__N)	r(r*r+rr�r3rfr^r)rrrrr�us
 123  r�cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�BaseTypingClassWithGenericscs$t��|�|j|_||_||_dSr)r9rr�rr�)rrr�rEr@rrr�s
 124  z$BaseTypingClassWithGenerics.__init__cCr�rr�r!rrrrf�r�z.BaseTypingClassWithGenerics._get_wrapped_valuecCsd|jj|jj|jfS)Nz%s(%s%s))r'r(r�r rCr!rrrr)�s�z$BaseTypingClassWithGenerics.__repr__)r(r*r+rrfr)rArrr@rr��sr�c@sHeZdZdd�Zdd�Zdd�Zdd�Zed	d
 125  ��Zdd�Z	d
 126  d�Z
 127  dS)�BaseTypingInstancecCs$|j|_||_||_||_||_dSr)r�rrbr�rC)rrrcr�rErrrr�s
 128  
 129  zBaseTypingInstance.__init__cCrdrrer!rrrr��rgzBaseTypingInstance.py__class__cCrdrrer!rrrr��rgz-BaseTypingInstance.get_annotated_class_objectcCs
 130  |��fSr)r%r!rrrr��r&z&BaseTypingInstance.get_qualified_namescCr�rr�r!rrrr3�r�zBaseTypingInstance.namecCst|jd���\}|S)N�object)r	r�r�)rZobject_rrrrf�sz%BaseTypingInstance._get_wrapped_valuecCr�r�)r'r(rCr!rrrr)�rrzBaseTypingInstance.__repr__N)r(r*r+rr�r�r�r�r3rfr)rrrrr��s
 131  r�N)"Zjedi.inference.cacherZjedi.inference.base_valuerrrrrrZjedi.inference.compiledr	Zjedi.inference.value.klassrrZjedi.inference.utilsr
 132  Zjedi.inference.namesrrZjedi.inference.contextrZjedi.inference.gradual.genericsrrr-r8rBraryrtr�r�r�r�rrrr�<module>s( N\35