
    ^jX                        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 d dl	m
Z
 d dlmZmZ d dlmZmZ d d	lmZmZmZmZ d d
lmZmZmZmZmZ d dlmZ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)m*Z* d dl+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2  G d de      Z3 G d de      Z4 G d de(      Z5 G d de)      Z6 G d de      Z7 G d de7      Z8 G d de7      Z9 G d  d!e9      Z: G d" d#e9      Z; G d$ d%e      Z< G d& d'e      Z= G d( d)e&e      Z> G d* d+e      Z? G d, d-e      Z@ G d. d/e      ZA G d0 d1e      ZB G d2 d3e,      ZC G d4 d5e#      ZDy6)7    )abstractproperty)Any)debug)settings)compiled)CompiledValueFilter)values_from_qualified_namesis_big_annoying_library)AbstractFilter AnonymousFunctionExecutionFilter)	ValueNameTreeNameDefinition	ParamNameNameWrapper)Value	NO_VALUESValueSetiterator_to_value_setValueWrapper)LazyKnownValueLazyKnownValues)inference_state_method_cache)ValuesArgumentsTreeArgumentsWrapper)FunctionValueFunctionMixinOverloadedFunctionValueBaseFunctionExecutionContextFunctionExecutionContextFunctionNameInClass)ClassFilterinit_or_new_func)get_dynamic_array_instance)function_is_staticmethodfunction_is_classmethodc                   *     e Zd Z fdZd Zd Z xZS )InstanceExecutedParamNamec                 8    t         |   ||d        || _        y )N)	argumentssuper__init__	_instance)selfinstancefunction_value	tree_name	__class__s       V/opt/ringagent/.cad-venv/lib/python3.12/site-packages/jedi/inference/value/instance.pyr,   z"InstanceExecutedParamName.__init__   s#    I 	 	7!    c                 .    t        | j                  g      S N)r   r-   r.   s    r3   inferzInstanceExecutedParamName.infer   s    ())r4   c                      yNT r7   s    r3   matches_signaturez+InstanceExecutedParamName.matches_signature"       r4   )__name__
__module____qualname__r,   r8   r<   __classcell__r2   s   @r3   r'   r'      s    "
*r4   r'   c                   (     e Zd Z fdZ fdZ xZS )AnonymousMethodExecutionFilterc                 2    t        |   |i | || _        y r6   r*   r.   r/   argskwargsr2   s       r3   r,   z'AnonymousMethodExecutionFilter.__init__'   s    $)&)!r4   c                 ^   |j                   dk(  rt        | j                  j                        r/t	        | j
                  j                         | j                  |      S t        | j                  j                        s!t	        | j
                  | j                  |      S t        | %  ||      S Nr   )
position_indexr%   _function_value	tree_noder'   r-   py__class__r$   r+   _convert_param)r.   paramnamer2   s      r3   rO   z-AnonymousMethodExecutionFilter._convert_param+   s    1$&t';';'E'EF0NN..0(( 
 .d.B.B.L.LM0NN(( 
 w%eT22r4   )r>   r?   r@   r,   rO   rA   rB   s   @r3   rD   rD   &   s    "3 3r4   rD   c                   ,     e Zd Z fdZddZd Z xZS )AnonymousMethodExecutionContextc                 2    t         |   |       || _        y r6   r+   r,   r/   )r.   r/   valuer2   s      r3   r,   z(AnonymousMethodExecutionContext.__init__=   s     r4   c              #   X   K   t        | j                  | | j                  ||       y w)N)until_positionorigin_scope)rD   r/   _value)r.   rX   rY   s      r3   get_filtersz+AnonymousMethodExecutionContext.get_filtersA   s(     ,MM4)%
 	
s   (*c                     t        | j                  j                               }t        | j                  | j                  |d   j
                        |d<   |S rJ   )listrZ   get_param_namesr'   r/   r1   )r.   param_namess     r3   r^   z/AnonymousMethodExecutionContext.get_param_namesH   sJ    4;;66892MMKKN$$
A
 r4   )NN)r>   r?   r@   r,   r[   r^   rA   rB   s   @r3   rS   rS   <   s    !
r4   rS   c                        e Zd Z fdZ xZS )MethodExecutionContextc                 2    t        |   |i | || _        y r6   rU   rF   s       r3   r,   zMethodExecutionContext.__init__T   s    $)&) r4   )r>   r?   r@   r,   rA   rB   s   @r3   ra   ra   S   s    ! !r4   ra   c                        e Zd ZdZ fdZd Zd Zd Zd Zd Z	e
d        Zd	 Zd
 Zd ZddZ fdZd fd	Zd Z xZS )AbstractInstanceValuer/   c                 4    t         |   ||       || _        y r6   )r+   r,   class_value)r.   inference_stateparent_contextrf   r2   s       r3   r,   zAbstractInstanceValue.__init__\   s    .9 'r4   c                      yr:   r;   r7   s    r3   is_instancez!AbstractInstanceValue.is_instanceb   r=   r4   c                 6    | j                   j                         S r6   )rf   get_qualified_namesr7   s    r3   rl   z)AbstractInstanceValue.get_qualified_namese   s    3355r4   c                     | j                   S r6   rf   r7   s    r3   get_annotated_class_objectz0AbstractInstanceValue.get_annotated_class_objecth       r4   c                     | j                   S r6   rn   r7   s    r3   rN   z!AbstractInstanceValue.py__class__k   rp   r4   c                      y r6   r;   r7   s    r3   
py__bool__z AbstractInstanceValue.py__bool__n   s    r4   c                     t         r6   )NotImplementedErrorr7   s    r3   rQ   zAbstractInstanceValue.namer   s    !!r4   c                     | j                  d      j                  | | j                        }|j                         D cg c]  }|j	                  |        c}S c c}w )N__call__)py__getattribute__	py__get__rf   get_signaturesbind)r.   
call_funcsss      r3   rz   z$AbstractInstanceValue.get_signaturesv   sJ    ,,Z8BB4IYIYZ
&0&?&?&ABtBBBs   Ac                 b    | j                  d      D ]  }|j                  |      }|s|c S  g S )NF)include_self_names)r[   get)r.   rQ   filternamess       r3   get_function_slot_namesz-AbstractInstanceValue.get_function_slot_namesz   s>     &&%&@ 	FJJt$E	 	r4   c                 @    t        j                  fd|D              S )Nc              3   X   K   | ]!  } |j                         j                    # y wr6   )r8   execute_with_values).0rQ   inferred_argss     r3   	<genexpr>z?AbstractInstanceValue.execute_function_slots.<locals>.<genexpr>   s,      "
 -DJJL,,m<"
s   '*)r   	from_sets)r.   r   r   s     `r3   execute_function_slotsz,AbstractInstanceValue.execute_function_slots   s#    !! "
"
 
 	
r4   c                 "    | j                         S r6   )
py__name__)r.   add_class_infos     r3   get_type_hintz#AbstractInstanceValue.get_type_hint   s      r4   c                     | j                  d      }|st        | 	  ||      S t        |g      t	        j
                  fd|D              S )N__getitem__c              3   \   K   | ]#  }|j                         j                         % y wr6   r8   execute)r   rQ   rG   s     r3   r   z6AbstractInstanceValue.py__getitem__.<locals>.<genexpr>   s"     !O$**,"6"6t"<!O   ),)r   r+   py__getitem__r   r   r   )r.   index_value_setcontextualized_noder   rG   r2   s       @r3   r   z#AbstractInstanceValue.py__getitem__   sT    ,,];7(# 
 01!!!O!OOOr4   c                 j      j                  d      st         	        S  fd} |       S )N__iter__c               3      K   t        j                        j                         j                                y wr6   )r   r   
py__next__r8   )r   iter_slot_namesr.   s   r3   iteratez1AbstractInstanceValue.py__iter__.<locals>.iterate   s7     !++O<GGH[\bbd s   ;>)r   r+   
py__iter__)r.   r   r   r   r2   s   `` @r3   r   z AbstractInstanceValue.py__iter__   s6    66zB7%&9::	 yr4   c                 P    d| j                   j                  d| j                  dS )N< of >)r2   r>   rf   r7   s    r3   __repr__zAbstractInstanceValue.__repr__   s    #~~668H8HIIr4   )Tr6   )r>   r?   r@   api_typer,   rj   rl   ro   rN   rs   r   rQ   rz   r   r   r   r   r   r   rA   rB   s   @r3   rd   rd   Y   s`    H'6   " "C
!	P	Jr4   rd   c                   <     e Zd Z fdZddZed        Zd Z xZS )CompiledInstancec                 6    t         |   |||       || _        y r6   )r+   r,   
_argumentsr.   rg   rh   rf   r)   r2   s        r3   r,   zCompiledInstance.__init__   s    .+F#r4   c              #   |   K   | j                         }|j                  |d      }|D ]  }t        | |        y wNT)rY   rj   )ro   r[   CompiledInstanceClassFilter)r.   rY   r   rf   class_filtersfs         r3   r[   zCompiledInstance.get_filters   sM     557#//% 0 
  	7A-dA66	7s   :<c                 j    t        j                  | | j                  j                  j                        S r6   )r   CompiledValueNamerf   rQ   string_namer7   s    r3   rQ   zCompiledInstance.name   s'    ))$0@0@0E0E0Q0QRRr4   c                      y)NFr;   r7   s    r3   is_stubzCompiledInstance.is_stub   s    r4   r:   )	r>   r?   r@   r,   r[   propertyrQ   r   rA   rB   s   @r3   r   r      s(    $7 S Sr4   r   c                        e Zd ZU eed<   eed<   ed        Zed        ZddZ e	       d        Z
d ZddZ fd	Zd
 Z xZS )_BaseTreeInstanceget_defined_namesr   c                     | j                   j                         }|dv r*| j                  j                         j	                         r|S y )N)r]   setdict)rf   r   rh   get_root_contextis_builtins_moduler.   rQ   s     r3   
array_typez_BaseTreeInstance.array_type   sB    **,**''88:MMOKr4   c                 V    t        | | j                  j                  j                        S r6   )r   rf   rQ   r1   r7   s    r3   rQ   z_BaseTreeInstance.name   s!    t//44>>??r4   c              #   p  K   | j                         }|rD|j                         D ]1  }|j                         rt        | ||j	                         |       3 |j                  |d      }|D ]D  }t        |t              rt        | |       "t        |t              rt        | |       A| F y wr   )ro   	py__mro__is_compiledSelfAttributeFilter
as_contextr[   
isinstancer!   InstanceClassFilterr   r   )r.   rY   r   rf   clsr   r   s          r3   r[   z_BaseTreeInstance.get_filters   s     557",,. a( .dKAQS_``a $//% 0 
  	A![))$22A231$:: 	s   6B6A=B6c                 B   |}	 |}|j                  dd      }|j                  |u rit        j                  ||      }t	        | ||      }|j
                  j                  dk(  r|j                  | j                        }n|j                         }n|j                  |      S )Nfuncdefclassdefr,   )
search_ancestorrM   r   from_contextBoundMethodrQ   rV   r   r   create_context)r.   class_contextnodenew	func_nodefuncbound_methodcontexts           r3   create_instance_contextz)_BaseTreeInstance.create_instance_context   s    I%%i<C&&#-$11-K*4E>>'':5*55dooFG*557G  %%d++r4   c                    | j                         rt        S t        j                  | j                  |      }t        | j                        rt        S | j                  d      xs | j                  d      }| j                  ||      S )z
        Since nothing was inferred, now check the __getattr__ and
        __getattribute__ methods. Stubs don't need to be checked, because
        they don't contain any logic.
        __getattr____getattribute__)	r   r   r   create_simple_objectrg   r
   rh   r   r   )r.   r   rQ   r   s       r3   py__getattribute__alternativesz0_BaseTreeInstance.py__getattribute__alternatives   s|     <<>,,T-A-A;O #4#6#67--m< E001CD 	**5$77r4   c              #      K   d}| j                  |      }|rt        | j                  |             y t        j                  d|        y w)N__next__z(Instance has no __next__ function in %s.)r   r   r   r   warning)r.   r   rQ   next_slot_namess       r3   r   z_BaseTreeInstance.py__next__  sJ     66t<!++O<  MMDdKs   A
Ac                     | j                  d      }|st        | 	        S t        j                  fd|D              S )Nrw   c              3   \   K   | ]#  }|j                         j                         % y wr6   r   )r   rQ   r)   s     r3   r   z/_BaseTreeInstance.py__call__.<locals>.<genexpr>  s"     !Td$**,"6"6y"A!Tr   )r   r+   
py__call__r   r   )r.   r)   r   r2   s    ` r3   r   z_BaseTreeInstance.py__call__  s=    ,,Z87%i00!!!Te!TTTr4   c                 &   | j                   j                         D ]!  }|j                  | ||      }|t        us|c S  | j	                  d      }|r5| t        j                  | j                  d      }| j                  |||      S t        | g      S )z"
        obj may be None.
        __get__None)
rf   r   py__get__on_classNotImplementedr   r   builtin_from_namerg   r   r   )r.   r/   rf   r   resultr   s         r3   ry   z_BaseTreeInstance.py__get__   s     ##--/ 	C**4;GF^+	
 ,,Y7#55d6J6JFS..uhLLTF##r4   r:   r6   )r>   r?   r@   r   __annotations__r   r   rQ   r[   r   r   r   r   r   ry   rA   rB   s   @r3   r   r      sh    O  @ @. "#, $,80LU$r4   r   c                   X     e Zd Z fdZ ed      d        Zd Zd Z fdZd Z	 xZ
S )	TreeInstancec                     |j                         dv r:|j                         j                         rt        j                  rt        | |      }t        |   |||       || _        |j                  | _	        y )N)r]   r   )
r   r   r   r   dynamic_array_additionsr#   r+   r,   r   rM   r   s        r3   r,   zTreeInstance.__init__5  se     !!#6"335HHJ//6tYG	.+F#$..r4   N)defaultc                    ddl m}m} t        | | j                        }t        | j                        j                         D ]  }|j                  j                  }| |j                  dk7  s|j                  |      s<t        | | j                  j                         |j                        } ||      } ||||      }|s| j                  j                   ||j                  ||            \  }	t        j                   d|	d       |	c S  y )Nr   )py__annotations__infer_type_vars_for_executionr   zInferred instance value as %sBLUE)color)!jedi.inference.gradual.annotationr   r   InstanceArgumentsr   r"   rf   rz   rV   rM   typer<   r   r   define_genericsr   dbg)
r.   r   r   rG   	signaturer   r   all_annotationstype_var_dictdefineds
             r3   _get_annotated_class_objectz(TreeInstance._get_annotated_class_objectD  s    	* !t7)$*:*:;JJL 	I  oo//G',,)";$66t< &tT-=-=-H-H-JIOO\L/8O9,o^M++;;1)//4Y 		97&Q#	$ r4   c                 >    | j                         xs | j                  S r6   )r   rf   r7   s    r3   ro   z'TreeInstance.get_annotated_class_object^  s    //1ET5E5EEr4   c                 T   t         }| j                  dk(  rt        | j                  j	                               D ]l  \  }\  }}|2|dk(  r-|t        j                  d |j                         D              z  }|s@|t        t        j                  | j                  |      g      z  }n |S )Nr   r   c              3   Z   K   | ]#  }|j                   d k(  r|j                          % ywr   N)r   get_key_values)r   vs     r3   r   z.TreeInstance.get_key_values.<locals>.<genexpr>f  s-      1<<61 ((*1s   )+)r   r   	enumerater   unpackr   r   r8   r   r   rg   )r.   valuesikeyr/   s        r3   r  zTreeInstance.get_key_valuesa  s    ??f$&/0F0F0H&I "?C;16h00 1!)!11  F
 h(E(E,,) (  F r4   c                 B   | j                   dk(  rt        t        | j                  j	                                     D ]Q  \  }}|3t        j                  fd|j                         D              }|s7|c S |k(  sA|j                         c S  t        | %        S )Nr   c              3   ^   K   | ]$  }|j                   d k(  r|j                         & ywr  )r   py__simple_getitem__)r   	dct_valueindexs     r3   r   z4TreeInstance.py__simple_getitem__.<locals>.<genexpr>~  s2      0%$//69 "66u=0s   *-)
r   reversedr]   r   r  r   r   r8   r+   r  )r.   r  r
  lazy_contextr  r2   s    `   r3   r  z!TreeInstance.py__simple_getitem__s  s    ??f$ &.d4??3I3I3K.L%M 4!\;%// 0)5););)=0 F
 %e|+11334 w+E22r4   c                 j    d| j                   j                  d| j                  d| j                  dS )Nr   r   (z)>)r2   r>   rf   r   r7   s    r3   r   zTreeInstance.__repr__  s(    #'>>#:#:D<L<L#'??4 	4r4   )r>   r?   r@   r,   r   r   ro   r  r  r   rA   rB   s   @r3   r   r   4  s6    / "$/ 02F$3.4r4   r   c                       e Zd ZdZy)AnonymousInstanceN)r>   r?   r@   r   r;   r4   r3   r  r    s    Jr4   r  c                       e Zd Zed        Zy)CompiledInstanceNamec              #      K   | j                   j                         D ]#  }|j                  dk(  rt        |        | % y w)Nfunction)_wrapped_namer8   r   CompiledBoundMethodr.   result_values     r3   r8   zCompiledInstanceName.infer  sC      ..446 	#L$$
2),77""		#s   AAN)r>   r?   r@   r   r8   r;   r4   r3   r  r    s    # #r4   r  c                   $    e Zd Zd Zd Zd Zd Zy)r   c                      || _         || _        y r6   r-   _class_filter)r.   r/   r   s      r3   r,   z$CompiledInstanceClassFilter.__init__  s    !r4   c                 V    | j                  | j                  j                  |            S r6   _convertr!  r   r   s     r3   r   zCompiledInstanceClassFilter.get  "    }}T//33D9::r4   c                 T    | j                  | j                  j                               S r6   r$  r!  r  r7   s    r3   r  z"CompiledInstanceClassFilter.values       }}T//66899r4   c                 >    |D cg c]  }t        |       c}S c c}w r6   )r  r.   r   ns      r3   r$  z$CompiledInstanceClassFilter._convert  s    167A$Q'777s   N)r>   r?   r@   r,   r   r  r$  r;   r4   r3   r   r     s    ;:8r4   r   c                   h     e Zd Z fdZd Ze fd       Zd Zd ZddZ	d Z
d Z fd	Zd
 Z xZS )r   c                 @    t         |   |       || _        || _        y r6   )r+   r,   r/   _class_context)r.   r/   r   r  r2   s       r3   r,   zBoundMethod.__init__  s    " +r4   c                      yr:   r;   r7   s    r3   is_bound_methodzBoundMethod.is_bound_method  r=   r4   c                 @    t        | j                  t        |         S r6   )r    r.  r+   rQ   )r.   r2   s    r3   rQ   zBoundMethod.name  s     "GL
 	
r4   c                 8    t        | j                  dd      \  }|S )Ntypes
MethodType)r	   rg   )r.   cs     r3   rN   zBoundMethod.py__class__  s    ()=)=wUr4   c                 6    |J t        | j                  |      S r6   )r   r/   r.   r)   s     r3   _get_argumentszBoundMethod._get_arguments  s    $$$ 	::r4   c                     |t        | j                  |       S | j                  |      }t        | j                  | |      S r6   )rS   r/   r8  ra   r7  s     r3   _as_contextzBoundMethod._as_context  s<    24==$GG''	2	%dmmT9EEr4   c                     t        | j                  t              r*| j                  j                  | j	                  |            S | j                  |      }|j                         S r6   )r   _wrapped_valuer   r   r8  r   r8   )r.   r)   function_executions      r3   r   zBoundMethod.py__call__  sS    d))+BC&&11$2E2Ei2PQQ!__Y7!''))r4   c                     | j                   j                         D cg c]#  }t        | j                  | j                  |      % c}S c c}w r6   )r<  get_signature_functionsr   r/   r.  )r.   r   s     r3   r?  z#BoundMethod.get_signature_functions  sF     ((@@B
 t':':A>
 	
 
s   (Ac                 d    t         |          D cg c]  }|j                  |        c}S c c}w r6   )r+   rz   r{   )r.   sigr2   s     r3   rz   zBoundMethod.get_signatures  s'    */'*@*BC3CCCs   -c                 P    d| j                   j                  d| j                  dS )Nr   z: r   )r2   r>   r<  r7   s    r3   r   zBoundMethod.__repr__  s    !^^44d6I6IJJr4   r6   )r>   r?   r@   r,   r0  r   rQ   rN   r8  r:  r   r?  rz   r   rA   rB   s   @r3   r   r     sG    ,
 
 
;F*
DKr4   r   c                       e Zd Zd Zd Zy)r  c                      yr:   r;   r7   s    r3   r0  z#CompiledBoundMethod.is_bound_method  r=   r4   c                 z    | j                   j                         D cg c]  }|j                  |        c}S c c}w r6   )r<  rz   r{   )r.   rA  s     r3   rz   z"CompiledBoundMethod.get_signatures  s-    *.*=*=*L*L*NO3OOOs   8N)r>   r?   r@   r0  rz   r;   r4   r3   r  r    s    Pr4   r  c                   >     e Zd ZdZd Zed        Zd Z fdZ xZ	S )SelfNamez9
    This name calculates the parent_context lazily.
    c                 .    || _         || _        || _        y r6   )r-   r   r1   )r.   r/   r   r1   s       r3   r,   zSelfName.__init__  s    !*"r4   c                 b    | j                   j                  | j                  | j                        S r6   )r-   r   r   r1   r7   s    r3   rh   zSelfName.parent_context  s#    ~~55d6H6H$..YYr4   c                     | j                   S r6   r-   r7   s    r3   get_defining_qualified_valuez%SelfName.get_defining_qualified_value      ~~r4   c                    | j                   j                  d      }|b|j                  d   j                  dk(  rFddlm}  || j                  |j                  d   j                  d         j                  d       }|r|S t        | %         S )N	expr_stmt   	annassignr   )infer_annotation)
r1   r   childrenr   r   rR  rh   execute_annotationr+   r8   )r.   stmtrR  r  r2   s       r3   r8   zSelfName.infer  s    ~~--k:}}Q$$3N)''q)9)B)B1)E$$T*  !Mw}r4   )
r>   r?   r@   __doc__r,   r   rh   rL  r8   rA   rB   s   @r3   rG  rG    s2    #
 Z Z
 
r4   rG  c                   :     e Zd Z fdZed        Zd Zd Z xZS )LazyInstanceClassNamec                 2    t         |   |       || _        y r6   r*   )r.   r/   class_member_namer2   s      r3   r,   zLazyInstanceClassName.__init__  s    *+!r4   c              #      K   | j                   j                         D ]>  }|j                  | j                  | j                  j	                               E d {    @ y 7 wr6   )r  r8   ry   r-   rN   r  s     r3   r8   zLazyInstanceClassName.infer	  sP      ..446 	\L#--dnndnn>X>X>Z[[[	\[s   AA!AA!c                 >    | j                         j                         S r6   )r8   rz   r7   s    r3   rz   z$LazyInstanceClassName.get_signatures  s    zz|**,,r4   c                     | j                   S r6   rK  r7   s    r3   rL  z2LazyInstanceClassName.get_defining_qualified_value  rM  r4   )	r>   r?   r@   r,   r   r8   rz   rL  rA   rB   s   @r3   rX  rX    s(    " \ \-r4   rX  c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)r   z
    This filter is special in that it uses the class filter and wraps the
    resulting names in LazyInstanceClassName. The idea is that the class name
    filtering can be very flexible and always be reflected in instances.
    c                      || _         || _        y r6   r   )r.   r/   class_filters      r3   r,   zInstanceClassFilter.__init__  s    !)r4   c                 V    | j                  | j                  j                  |            S r6   r#  r   s     r3   r   zInstanceClassFilter.get  r%  r4   c                 T    | j                  | j                  j                               S r6   r'  r7   s    r3   r  zInstanceClassFilter.values"  r(  r4   c                 T    |D cg c]  }t        | j                  |       c}S c c}w r6   )rX  r-   r*  s      r3   r$  zInstanceClassFilter._convert%  s/     
 "$..!4
 	
 
s   %c                 P    d| j                   j                  d| j                  dS )Nr   z for r   )r2   r>   r!  r7   s    r3   r   zInstanceClassFilter.__repr__+  s     $ 7 79K9KLLr4   N)	r>   r?   r@   rV  r,   r   r  r$  r   r;   r4   r3   r   r     s!    
*;:
Mr4   r   c                   @     e Zd ZdZ fdZd Zd Zd Zd Zd Z	 xZ
S )r   zU
    This class basically filters all the use cases where `self.*` was assigned.
    c                 :    t         |   |||d       || _        y )NT)rf   node_contextrY   rj   r*   )r.   r/   instance_classrg  rY   r2   s        r3   r,   zSelfAttributeFilter.__init__3  s*    &%%	 	 	
 "r4   c                     | j                   j                  | j                   j                  }}|D cg c]  }||j                  cxk  r|k  sn n| }}| j                  |      S c c}w r6   )_parser_scope	start_posend_pos_filter_self_names)r.   r   startendr+  s        r3   _filterzSelfAttributeFilter._filter<  s]    ''1143E3E3M3Ms!?qUQ[[%>3%>??&&u-- @s   A&A&c              #   `  K   |D ]  }|j                   }|j                  dk(  st        |j                   j                        dk(  sB|j                  d   dk(  sU|j	                         sf| j                  |      sx| j                  |j                   j                  d   |      s|  y w)Ntrailer   r   .)parentr   lenrS  is_definition_access_possible_is_in_right_scope)r.   r   rQ   rr  s       r3   rm  z&SelfAttributeFilter._filter_self_namesA  s      		#DkkG||y(GNN3349((+s2%%'D,A,A$,G ..w~~/F/Fq/I4P"
		#s(   !B."B.B.B.+B.=)B.'B.c                       j                   j                  |      }|j                  ||j                        }t	         fd|D              S )N)positionc              3      K   | ]`  }|j                   d k(  xrK |j                  j                         j                  dk(  xr" |j                  j
                  j                  u  b yw)rP   r   N)r   r1   get_definitionrK   rh   rM   rj  )r   r+  r.   s     r3   r   z9SelfAttributeFilter._is_in_right_scope.<locals>.<genexpr>P  sk      
  JJ'! A**,;;q@A  **d.@.@@A
s   A&A))_node_contextr   gotork  any)r.   	self_namerQ   self_contextr   s   `    r3   ry  z&SelfAttributeFilter._is_in_right_scopeM  sP    ))88C!!)i6I6I!J 
 	
 
 	
r4   c                 j    |D cg c]#  }t        | j                  | j                  |      % c}S c c}w r6   )rG  r-   r~  )r.   r   rQ   s      r3   _convert_namesz"SelfAttributeFilter._convert_namesW  s)    OTUt););TBUUUs   (0c                     |S r6   r;   )r.   r   s     r3   _check_flowsz SelfAttributeFilter._check_flowsZ  s    r4   )r>   r?   r@   rV  r,   rp  rm  ry  r  r  rA   rB   s   @r3   r   r   /  s'    ".

#
Vr4   r   c                   &     e Zd Z fdZddZ xZS )r   c                 2    t         |   |       || _        y r6   rU   )r.   r/   r)   r2   s      r3   r,   zInstanceArguments.__init___  s    # r4   c              #      K   d t        | j                        f | j                  j                  |      E d {    y 7 wr6   )r   r/   _wrapped_argumentsr  )r.   r   s     r3   r  zInstanceArguments.unpackc  s4     N4==111**11$777s   8AA Ar6   )r>   r?   r@   r,   r  rA   rB   s   @r3   r   r   ^  s    !8r4   r   N)Eabcr   typingr   jedir   r   jedi.inferencer   jedi.inference.compiled.valuer   jedi.inference.helpersr	   r
   jedi.inference.filtersr   r   jedi.inference.namesr   r   r   r   jedi.inference.base_valuer   r   r   r   r   jedi.inference.lazy_valuer   r   jedi.inference.cacher   jedi.inference.argumentsr   r   jedi.inference.value.functionr   r   r   r   r   r    jedi.inference.value.klassr!   r"   #jedi.inference.value.dynamic_arraysr#   jedi.parser_utilsr$   r%   r'   rD   rS   ra   rd   r   r   r   r  r  r   r   r  rG  rX  r   r   r   r;   r4   r3   <module>r     sH        # = W S ( ( E = JP P E J O
	 
3%E 3,&B .!5 !KJE KJ\, 0r$- r$jX4$ X4v) #; #8. 80K- 0KfP, P! :K "M. M4,+ ,^8, 8r4   