
    fW                        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, d dl-m.Z. d dl/m0Z0m1Z1  G d de      Z2 G d de      Z3 G d de(      Z4 G d de)      Z5 G d de      Z6 G d de6      Z7 G d de6      Z8 G d  d!e8      Z9 G d" d#e8      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      Z@ G d0 d1e      ZA G d2 d3e,      ZB G d4 d5e#      ZCy6)7    )abstractproperty)search_ancestor)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)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       X/var/www/cvtools/html/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    r2   inferzInstanceExecutedParamName.infer    s    ())r3   c                      yNT r6   s    r2   matches_signaturez+InstanceExecutedParamName.matches_signature#       r3   )__name__
__module____qualname__r+   r7   r;   __classcell__r1   s   @r2   r&   r&      s    "
*r3   r&   c                   (     e Zd Z fdZ fdZ xZS )AnonymousMethodExecutionFilterc                 2    t        |   |i | || _        y r5   r)   r-   r.   argskwargsr1   s       r2   r+   z'AnonymousMethodExecutionFilter.__init__(   s    $)&)!r3   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namer1   s      r2   rN   z-AnonymousMethodExecutionFilter._convert_param,   s    1$&t';';'E'EF0NN..0(( 
 .d.B.B.L.LM0NN(( 
 w%eT22r3   )r=   r>   r?   r+   rN   r@   rA   s   @r2   rC   rC   '   s    "3 3r3   rC   c                   ,     e Zd Z fdZddZd Z xZS )AnonymousMethodExecutionContextc                 2    t         |   |       || _        y r5   r*   r+   r.   )r-   r.   valuer1   s      r2   r+   z(AnonymousMethodExecutionContext.__init__>   s     r3   c              #   X   K   t        | j                  | | j                  ||       y w)N)until_positionorigin_scope)rC   r.   _value)r-   rW   rX   s      r2   get_filtersz+AnonymousMethodExecutionContext.get_filtersB   s(     ,MM4)%
 	
s   (*c                     t        | j                  j                               }t        | j                  | j                  |d   j
                        |d<   |S rI   )listrY   get_param_namesr&   r.   r0   )r-   param_namess     r2   r]   z/AnonymousMethodExecutionContext.get_param_namesI   sJ    4;;66892MMKKN$$
A
 r3   )NN)r=   r>   r?   r+   rZ   r]   r@   rA   s   @r2   rR   rR   =   s    !
r3   rR   c                        e Zd Z fdZ xZS )MethodExecutionContextc                 2    t        |   |i | || _        y r5   rT   rE   s       r2   r+   zMethodExecutionContext.__init__U   s    $)&) r3   )r=   r>   r?   r+   r@   rA   s   @r2   r`   r`   T   s    ! !r3   r`   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 r5   )r*   r+   class_value)r-   inference_stateparent_contextre   r1   s       r2   r+   zAbstractInstanceValue.__init__]   s    .9 'r3   c                      yr9   r:   r6   s    r2   is_instancez!AbstractInstanceValue.is_instancec   r<   r3   c                 6    | j                   j                         S r5   )re   get_qualified_namesr6   s    r2   rk   z)AbstractInstanceValue.get_qualified_namesf   s    3355r3   c                     | j                   S r5   re   r6   s    r2   get_annotated_class_objectz0AbstractInstanceValue.get_annotated_class_objecti       r3   c                     | j                   S r5   rm   r6   s    r2   rM   z!AbstractInstanceValue.py__class__l   ro   r3   c                      y r5   r:   r6   s    r2   
py__bool__z AbstractInstanceValue.py__bool__o   s    r3   c                     t         r5   )NotImplementedErrorr6   s    r2   rP   zAbstractInstanceValue.names   s    !!r3   c                     | j                  d      j                  | | j                        }|j                         D cg c]  }|j	                  |        c}S c c}w )N__call__)py__getattribute__	py__get__re   get_signaturesbind)r-   
call_funcsss      r2   ry   z$AbstractInstanceValue.get_signaturesw   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)rZ   get)r-   rP   filternamess       r2   get_function_slot_namesz-AbstractInstanceValue.get_function_slot_names{   s>     &&%&@ 	FJJt$E	 	r3   c                 @    t        j                  fd|D              S )Nc              3   X   K   | ]!  } |j                         j                    # y wr5   )r7   execute_with_values).0rP   inferred_argss     r2   	<genexpr>z?AbstractInstanceValue.execute_function_slots.<locals>.<genexpr>   s,      "
 -DJJL,,m<"
s   '*)r   	from_sets)r-   r   r   s     `r2   execute_function_slotsz,AbstractInstanceValue.execute_function_slots   s#    !! "
"
 
 	
r3   c                 "    | j                         S r5   )
py__name__)r-   add_class_infos     r2   get_type_hintz#AbstractInstanceValue.get_type_hint   s      r3   c                     | j                  d      }|st        | 	  ||      S t        |g      t	        j
                  fd|D              S )N__getitem__c              3   \   K   | ]#  }|j                         j                         % y wr5   r7   execute)r   rP   rF   s     r2   r   z6AbstractInstanceValue.py__getitem__.<locals>.<genexpr>   s"     !O$**,"6"6t"<!O   ),)r   r*   py__getitem__r   r   r   )r-   index_value_setcontextualized_noder   rF   r1   s       @r2   r   z#AbstractInstanceValue.py__getitem__   sT    ,,];7(# 
 01!!!O!OOOr3   c                 j      j                  d      st         	        S  fd} |       S )N__iter__c               3   p   K   j                        D ]  } | j                        E d {     y 7 wr5   )r   
py__next__)	generatorr   iter_slot_namesr-   s    r2   iteratez1AbstractInstanceValue.py__iter__.<locals>.iterate   s;     !88I E	$//0CDDDEDs   )646)r   r*   
py__iter__)r-   r   r   r   r1   s   `` @r2   r   z AbstractInstanceValue.py__iter__   s7    66zB7%&9::	E yr3   c                 P    d| j                   j                  d| j                  dS )N< of >)r1   r=   re   r6   s    r2   __repr__zAbstractInstanceValue.__repr__   s    #~~668H8HIIr3   )Tr5   )r=   r>   r?   api_typer+   ri   rk   rn   rM   rr   r   rP   ry   r   r   r   r   r   r   r@   rA   s   @r2   rc   rc   Z   s`    H'6   " "C
!	PJr3   rc   c                   <     e Zd Z fdZddZed        Zd Z xZS )CompiledInstancec                 6    t         |   |||       || _        y r5   )r*   r+   
_argumentsr-   rf   rg   re   r(   r1   s        r2   r+   zCompiledInstance.__init__   s    .+F#r3   c              #   |   K   | j                         }|j                  |d      }|D ]  }t        | |        y wNT)rX   ri   )rn   rZ   CompiledInstanceClassFilter)r-   rX   r~   re   class_filtersfs         r2   rZ   zCompiledInstance.get_filters   sM     557#//% 0 
  	7A-dA66	7s   :<c                 j    t        j                  | | j                  j                  j                        S r5   )r   CompiledValueNamere   rP   string_namer6   s    r2   rP   zCompiledInstance.name   s'    ))$0@0@0E0E0Q0QRRr3   c                      y)NFr:   r6   s    r2   is_stubzCompiledInstance.is_stub   s    r3   r9   )	r=   r>   r?   r+   rZ   propertyrP   r   r@   rA   s   @r2   r   r      s(    $7 S Sr3   r   c                   t     e Zd Z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 )_BaseTreeInstancec                     | j                   j                         }|dv r*| j                  j                         j	                         r|S y )N)r\   setdict)re   r   rg   get_root_contextis_builtins_moduler-   rP   s     r2   
array_typez_BaseTreeInstance.array_type   sB    **,**''88:MMOKr3   c                 V    t        | | j                  j                  j                        S r5   )r   re   rP   r0   r6   s    r2   rP   z_BaseTreeInstance.name   s!    t//44>>??r3   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   )rn   	py__mro__is_compiledSelfAttributeFilter
as_contextrZ   
isinstancer!   InstanceClassFilterr   r   )r-   rX   r~   re   clsr   r   s          r2   rZ   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                 8   |}	 |}t        |dd      }|j                  |u rit        j                  ||      }t	        | ||      }|j
                  j                  dk(  r|j                  | j                        }n|j                         }n|j                  |      S )Nfuncdefclassdefr+   )
r   rL   r   from_contextBoundMethodrP   rU   r   r   create_context)r-   class_contextnodenew	func_nodefuncbound_methodcontexts           r2   create_instance_contextz)_BaseTreeInstance.create_instance_context   s    I!#y*=C&&#-$11-K*4E>>'':5*55dooFG*557G  %%d++r3   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_objectrf   r
   rg   r   r   )r-   r   rP   r   s       r2   py__getattribute__alternativesz0_BaseTreeInstance.py__getattribute__alternatives   s|     <<>,,T-A-A;O #4#6#67--m< E001CD 	**5$77r3   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   rP   next_slot_namess       r2   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 )Nrv   c              3   \   K   | ]#  }|j                         j                         % y wr5   r   )r   rP   r(   s     r2   r   z/_BaseTreeInstance.py__call__.<locals>.<genexpr>  s"     !Td$**,"6"6y"A!Tr   )r   r*   
py__call__r   r   )r-   r(   r   r1   s    ` r2   r   z_BaseTreeInstance.py__call__  s=    ,,Z87%i00!!!Te!TTTr3   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)
re   r   py__get__on_classNotImplementedr   r   builtin_from_namerf   r   r   )r-   r.   re   r   resultr   s         r2   rx   z_BaseTreeInstance.py__get__  s     ##--/ 	C**4;GF^+	
 ,,Y7#55d6J6JFS..uhLLTF##r3   r9   r5   )r=   r>   r?   r   r   rP   rZ   r   r   r   r   r   rx   r@   rA   s   @r2   r   r      s]      @ @. "#, $,80LU$r3   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   rL   r   s        r2   r+   zTreeInstance.__init__2  se     !!#6"335HHJ//6tYG	.+F#$..r3   N)defaultc                 *   ddl m}m} t        | | j                        }| j
                  j                  d      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+   r   zInferred instance value as %sBLUE)color)!jedi.inference.gradual.annotationr   r   InstanceArgumentsr   re   rw   ry   rU   rL   typer;   r   r   define_genericsr   dbg)
r-   r   r   rF   	signaturer   r   all_annotationstype_var_dictdefineds
             r2   _get_annotated_class_objectz(TreeInstance._get_annotated_class_objectA  s    	* !t7))<<ZHWWY 	I  oo//G',,)";$66t< &tT-=-=-H-H-JIOO\L/8O9,o^M++;;1)//4Y 		97&Q#	$ r3   c                 >    | j                         xs | j                  S r5   )r   re   r6   s    r2   rn   z'TreeInstance.get_annotated_class_object[  s    //1ET5E5EEr3   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     r2   r   z.TreeInstance.get_key_values.<locals>.<genexpr>c  s-      1<<61 ((*1s   )+)r   r   	enumerater   unpackr   r   r7   r   r   rf   )r-   valuesikeyr.   s        r2   r  zTreeInstance.get_key_values^  s    ??f$&/0F0F0H&I "?C;16h00 1!)!11  F
 h(E(E,,) (  F r3   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     r2   r   z4TreeInstance.py__simple_getitem__.<locals>.<genexpr>{  s2      0%$//69 "66u=0s   *-)
r   reversedr\   r   r  r   r   r7   r*   r
  )r-   r  r  lazy_contextr  r1   s    `   r2   r
  z!TreeInstance.py__simple_getitem__p  s    ??f$ &.d4??3I3I3K.L%M 4!\;%// 0)5););)=0 F
 %e|+11334 w+E22r3   c                 j    d| j                   j                  d| j                  d| j                  dS )Nr   r   (z)>)r1   r=   re   r   r6   s    r2   r   zTreeInstance.__repr__  s(    #'>>#:#:D<L<L#'??4 	4r3   )r=   r>   r?   r+   r   r   rn   r  r
  r   r@   rA   s   @r2   r   r   1  s6    / "$/ 02F$3.4r3   r   c                       e Zd ZdZy)AnonymousInstanceN)r=   r>   r?   r   r:   r3   r2   r  r    s    Jr3   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_namer7   r   CompiledBoundMethodr-   result_values     r2   r7   zCompiledInstanceName.infer  sC      ..446 	#L$$
2),77""		#s   AAN)r=   r>   r?   r   r7   r:   r3   r2   r  r    s    # #r3   r  c                   $    e Zd Zd Zd Zd Zd Zy)r   c                      || _         || _        y r5   r,   _class_filter)r-   r.   r   s      r2   r+   z$CompiledInstanceClassFilter.__init__  s    !r3   c                 V    | j                  | j                  j                  |            S r5   _convertr  r   r   s     r2   r   zCompiledInstanceClassFilter.get  "    }}T//33D9::r3   c                 T    | j                  | j                  j                               S r5   r!  r  r  r6   s    r2   r  z"CompiledInstanceClassFilter.values       }}T//66899r3   c                 >    |D cg c]  }t        |       c}S c c}w r5   )r  r-   r   ns      r2   r!  z$CompiledInstanceClassFilter._convert  s    167A$Q'777s   N)r=   r>   r?   r+   r   r  r!  r:   r3   r2   r   r     s    ;:8r3   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 r5   )r*   r+   r.   _class_context)r-   r.   r   r  r1   s       r2   r+   zBoundMethod.__init__  s    " +r3   c                      yr9   r:   r6   s    r2   is_bound_methodzBoundMethod.is_bound_method  r<   r3   c                 @    t        | j                  t        |         S r5   )r    r+  r*   rP   )r-   r1   s    r2   rP   zBoundMethod.name  s     "GL
 	
r3   c                 8    t        | j                  dd      \  }|S )Ntypes
MethodType)r	   rf   )r-   cs     r2   rM   zBoundMethod.py__class__  s    ()=)=wUr3   c                 6    |J t        | j                  |      S r5   )r   r.   r-   r(   s     r2   _get_argumentszBoundMethod._get_arguments  s    $$$ 	::r3   c                     |t        | j                  |       S | j                  |      }t        | j                  | |      S r5   )rR   r.   r5  r`   r4  s     r2   _as_contextzBoundMethod._as_context  s<    24==$GG''	2	%dmmT9EEr3   c                     t        | j                  t              r*| j                  j                  | j	                  |            S | j                  |      }|j                         S r5   )r   _wrapped_valuer   r   r5  r   r7   )r-   r(   function_executions      r2   r   zBoundMethod.py__call__  sS    d))+BC&&11$2E2Ei2PQQ!__Y7!''))r3   c                     | j                   j                         D cg c]#  }t        | j                  | j                  |      % c}S c c}w r5   )r9  get_signature_functionsr   r.   r+  )r-   r   s     r2   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 r5   )r*   ry   rz   )r-   sigr1   s     r2   ry   zBoundMethod.get_signatures  s'    */'*@*BC3CCCs   -c                 P    d| j                   j                  d| j                  dS )Nr   z: r   )r1   r=   r9  r6   s    r2   r   zBoundMethod.__repr__  s    !^^44d6I6IJJr3   r5   )r=   r>   r?   r+   r-  r   rP   rM   r5  r7  r   r<  ry   r   r@   rA   s   @r2   r   r     sG    ,
 
 
;F*
DKr3   r   c                       e Zd Zd Zd Zy)r  c                      yr9   r:   r6   s    r2   r-  z#CompiledBoundMethod.is_bound_method  r<   r3   c                 z    | j                   j                         D cg c]  }|j                  |        c}S c c}w r5   )r9  ry   rz   )r-   r>  s     r2   ry   z"CompiledBoundMethod.get_signatures  s-    *.*=*=*L*L*NO3OOOs   8N)r=   r>   r?   r-  ry   r:   r3   r2   r  r    s    Pr3   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 r5   )r,   r   r0   )r-   r.   r   r0   s       r2   r+   zSelfName.__init__  s    !*"r3   c                 b    | j                   j                  | j                  | j                        S r5   )r,   r   r   r0   r6   s    r2   rg   zSelfName.parent_context  s#    ~~55d6H6H$..YYr3   c                     | j                   S r5   r,   r6   s    r2   get_defining_qualified_valuez%SelfName.get_defining_qualified_value      ~~r3   c                    t        | j                  d      }|a|j                  d   j                  dk(  rEddlm}  || j                  |j                  d   j                  d         j                         }|r|S t        | %         S )N	expr_stmt   	annassignr   )infer_annotation)
r   r0   childrenr   r   rO  rg   execute_annotationr*   r7   )r-   stmtrO  r  r1   s       r2   r7   zSelfName.infer  s~    t~~{;}}Q$$3N)''q)9)B)B1)E$$&  !Mw}r3   )
r=   r>   r?   __doc__r+   r   rg   rI  r7   r@   rA   s   @r2   rD  rD    s2    #
 Z Z
 
r3   rD  c                   :     e Zd Z fdZed        Zd Zd Z xZS )LazyInstanceClassNamec                 2    t         |   |       || _        y r5   r)   )r-   r.   class_member_namer1   s      r2   r+   zLazyInstanceClassName.__init__  s    *+!r3   c              #      K   | j                   j                         D ]>  }|j                  | j                  | j                  j	                               E d {    @ y 7 wr5   )r  r7   rx   r,   rM   r  s     r2   r7   zLazyInstanceClassName.infer  sP      ..446 	\L#--dnndnn>X>X>Z[[[	\[s   AA!AA!c                 >    | j                         j                         S r5   )r7   ry   r6   s    r2   ry   z$LazyInstanceClassName.get_signatures  s    zz|**,,r3   c                     | j                   S r5   rH  r6   s    r2   rI  z2LazyInstanceClassName.get_defining_qualified_value  rJ  r3   )	r=   r>   r?   r+   r   r7   ry   rI  r@   rA   s   @r2   rU  rU    s(    " \ \-r3   rU  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 r5   r  )r-   r.   class_filters      r2   r+   zInstanceClassFilter.__init__  s    !)r3   c                 V    | j                  | j                  j                  |            S r5   r   r   s     r2   r   zInstanceClassFilter.get  r"  r3   c                 T    | j                  | j                  j                               S r5   r$  r6   s    r2   r  zInstanceClassFilter.values  r%  r3   c                 T    |D cg c]  }t        | j                  |       c}S c c}w r5   )rU  r,   r'  s      r2   r!  zInstanceClassFilter._convert"  s/     
 "$..!4
 	
 
s   %c                 P    d| j                   j                  d| j                  dS )Nr   z for r   )r1   r=   r  r6   s    r2   r   zInstanceClassFilter.__repr__(  s     $ 7 79K9KLLr3   N)	r=   r>   r?   rS  r+   r   r  r!  r   r:   r3   r2   r   r     s!    
*;:
Mr3   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)re   node_contextrX   ri   r)   )r-   r.   instance_classrd  rX   r1   s        r2   r+   zSelfAttributeFilter.__init__0  s*    &%%	 	 	
 "r3   c                     | j                   j                  | j                   j                  }}|D cg c]  }||j                  cxk  r|k  sn n| }}| j                  |      S c c}w r5   )_parser_scope	start_posend_pos_filter_self_names)r-   r   startendr(  s        r2   _filterzSelfAttributeFilter._filter9  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   lenrP  is_definition_access_possible_is_in_right_scope)r-   r   rP   ro  s       r2   rj  z&SelfAttributeFilter._filter_self_names>  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)rO   r   N)r   r0   get_definitionrJ   rg   rL   rg  )r   r(  r-   s     r2   r   z9SelfAttributeFilter._is_in_right_scope.<locals>.<genexpr>M  sk      
  JJ'! A**,;;q@A  **d.@.@@A
s   A&A))_node_contextr   gotorh  any)r-   	self_namerP   self_contextr   s   `    r2   rv  z&SelfAttributeFilter._is_in_right_scopeJ  sP    ))88C!!)i6I6I!J 
 	
 
 	
r3   c                 j    |D cg c]#  }t        | j                  | j                  |      % c}S c c}w r5   )rD  r,   r{  )r-   r   rP   s      r2   _convert_namesz"SelfAttributeFilter._convert_namesT  s)    OTUt););TBUUUs   (0c                     |S r5   r:   )r-   r   s     r2   _check_flowsz SelfAttributeFilter._check_flowsW  s    r3   )r=   r>   r?   rS  r+   rm  rj  rv  r  r  r@   rA   s   @r2   r   r   ,  s'    ".

#
Vr3   r   c                   &     e Zd Z fdZddZ xZS )r   c                 2    t         |   |       || _        y r5   rT   )r-   r.   r(   r1   s      r2   r+   zInstanceArguments.__init__\  s    # r3   c              #      K   d t        | j                        f | j                  j                  |      E d {    y 7 wr5   )r   r.   _wrapped_argumentsr  )r-   r   s     r2   r  zInstanceArguments.unpack`  s4     N4==111**11$777s   8AA Ar5   )r=   r>   r?   r+   r  r@   rA   s   @r2   r   r   [  s    !8r3   r   N)Dabcr   
parso.treer   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!   #jedi.inference.value.dynamic_arraysr"   jedi.parser_utilsr#   r$   r&   rC   rR   r`   rc   r   r   r   r  r  r   r   r  rD  rU  r   r   r   r:   r3   r2   <module>r     sG     &   # = W S ( ( E = JP P 3 J O
	 
3%E 3,&B .!5 !JJE JJZ, 0o$- o$dX4$ X4v) #; #8. 80K- 0KfP, P! :K "M. M4,+ ,^8, 8r3   