
    MhW                        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#          ZCd6S )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                 ^    t                                          ||d            || _        d S )N)	argumentssuper__init__	_instance)selfinstancefunction_value	tree_name	__class__s       ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/value/instance.pyr+   z"InstanceExecutedParamName.__init__   s6    I 	 	7 	7 	7!    c                 ,    t          | j        g          S N)r   r,   r-   s    r2   inferzInstanceExecutedParamName.infer    s    ()))r3   c                     dS NT r6   s    r2   matches_signaturez+InstanceExecutedParamName.matches_signature#       tr3   )__name__
__module____qualname__r+   r7   r;   __classcell__r1   s   @r2   r&   r&      sV        " " " " "
* * *      r3   r&   c                   (     e Zd Z fdZ fdZ xZS )AnonymousMethodExecutionFilterc                 H     t                      j        |i | || _        d S r5   r)   r-   r.   argskwargsr1   s       r2   r+   z'AnonymousMethodExecutionFilter.__init__(   s*    $)&)))!r3   c                 R   |j         dk    rzt          | j        j                  r-t	          | 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FF 0N..00(  
 .d.B.LMM 0N(  
 ww%%eT222r3   )r=   r>   r?   r+   rN   r@   rA   s   @r2   rC   rC   '   sQ        " " " " "3 3 3 3 3 3 3 3 3r3   rC   c                   ,     e Zd Z fdZddZd Z xZS )AnonymousMethodExecutionContextc                 X    t                                          |           || _        d S r5   r*   r+   r.   )r-   r.   valuer1   s      r2   r+   z(AnonymousMethodExecutionContext.__init__>   s&     r3   Nc              #   J   K   t          | j        | | j        ||          V  d S )N)until_positionorigin_scope)rC   r.   _value)r-   rW   rX   s      r2   get_filtersz+AnonymousMethodExecutionContext.get_filtersB   sB      ,M4)%
 
 
 	
 	
 	
 	
 	
r3   c                     t          | 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   sL    4;6688992MK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                 H     t                      j        |i | || _        d S r5   rT   rE   s       r2   r+   zMethodExecutionContext.__init__U   s*    $)&))) r3   )r=   r>   r?   r+   r@   rA   s   @r2   r`   r`   T   s8        ! ! ! ! ! ! ! ! !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                 Z    t                                          ||           || _        d S r5   )r*   r+   class_value)r-   inference_stateparent_contextre   r1   s       r2   r+   zAbstractInstanceValue.__init__]   s-    .999 'r3   c                     dS r9   r:   r6   s    r2   is_instancez!AbstractInstanceValue.is_instancec   r<   r3   c                 4    | j                                         S r5   )re   get_qualified_namesr6   s    r2   rk   z)AbstractInstanceValue.get_qualified_namesf   s    335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                     d S r5   r:   r6   s    r2   
py__bool__z AbstractInstanceValue.py__bool__o   s    tr3   c                     t           r5   )NotImplementedErrorr6   s    r2   rP   zAbstractInstanceValue.names   s    !!r3   c                                            d                                j                  } fd|                                D             S )N__call__c                 :    g | ]}|                               S r:   bind).0sr-   s     r2   
<listcomp>z8AbstractInstanceValue.get_signatures.<locals>.<listcomp>y   s#    BBBtBBBr3   )py__getattribute__	py__get__re   get_signatures)r-   
call_funcss   ` r2   r   z$AbstractInstanceValue.get_signaturesw   sO    ,,Z88BB4IYZZ
BBBBj&?&?&A&ABBBBr3   c                 n    |                      d          D ]}|                    |          }|r|c S g S )NF)include_self_names)rZ   get)r-   rP   filternamess       r2   get_function_slot_namesz-AbstractInstanceValue.get_function_slot_names{   sP     &&%&@@ 	 	FJJt$$E 	r3   c                 D    t          j        fd|D                       S )Nc              3   P   K   | ] } |                                 j         V  !d S r5   )r7   execute_with_values)rz   rP   inferred_argss     r2   	<genexpr>z?AbstractInstanceValue.execute_function_slots.<locals>.<genexpr>   sI       "
 "
 -DJJLL,m<"
 "
 "
 "
 "
 "
r3   )r   	from_sets)r-   r   r   s     `r2   execute_function_slotsz,AbstractInstanceValue.execute_function_slots   s>    ! "
 "
 "
 "
"
 "
 "
 
 
 	
r3   Tc                 *    |                                  S r5   )
py__name__)r-   add_class_infos     r2   get_type_hintz#AbstractInstanceValue.get_type_hint   s       r3   c                     |                      d          }|s"t                                          ||          S t          |g          t	          j        fd|D                       S )N__getitem__c              3   f   K   | ]+}|                                                               V  ,d S r5   r7   execute)rz   rP   rF   s     r2   r   z6AbstractInstanceValue.py__getitem__.<locals>.<genexpr>   s9      !O!O$**,,"6"6t"<"<!O!O!O!O!O!Or3   )r   r*   py__getitem__r   r   r   )r-   index_value_setcontextualized_noder   rF   r1   s       @r2   r   z#AbstractInstanceValue.py__getitem__   sy    ,,];; 	77((#  
 011!!O!O!O!O!O!O!OOOOr3   Nc                                            d          s!t                                                    S  fd} |            S )N__iter__c               3   r   K                                  D ]} |                               E d {V  d S r5   )r   
py__next__)	generatorr   iter_slot_namesr-   s    r2   iteratez1AbstractInstanceValue.py__iter__.<locals>.iterate   s\      !88II E E	$//0CDDDDDDDDDDE Er3   )r   r*   
py__iter__)r-   r   r   r   r1   s   `` @r2   r   z AbstractInstanceValue.py__iter__   sr    66zBB 	;77%%&9:::	E 	E 	E 	E 	E 	E 	E wyyr3   c                 2    d| j         j        d| j        dS )N< of >)r1   r=   re   r6   s    r2   __repr__zAbstractInstanceValue.__repr__   s#     #~6668H8H8HIIr3   )Tr5   )r=   r>   r?   api_typer+   ri   rk   rn   rM   rr   r   rP   r   r   r   r   r   r   r   r@   rA   s   @r2   rc   rc   Z   s:       H' ' ' ' '  6 6 6             " " "C C C  
 
 
! ! ! !	P 	P 	P 	P 	P     J J J J J J Jr3   rc   c                   B     e Zd Z fdZddZed             Zd Z xZS )CompiledInstancec                 \    t                                          |||           || _        d S r5   )r*   r+   
_argumentsr-   rf   rg   re   r(   r1   s        r2   r+   zCompiledInstance.__init__   s*    .+FFF#r3   NTc              #      K   |                                  }|                    |d          }|D ]}t          | |          V  d S NT)rX   ri   )rn   rZ   CompiledInstanceClassFilter)r-   rX   r   re   class_filtersfs         r2   rZ   zCompiledInstance.get_filters   sk      5577#//% 0 
 
  	7 	7A-dA666666	7 	7r3   c                 J    t          j        | | j        j        j                  S r5   )r   CompiledValueNamere   rP   string_namer6   s    r2   rP   zCompiledInstance.name   s    )$0@0E0QRRRr3   c                     dS )NFr:   r6   s    r2   is_stubzCompiledInstance.is_stub   s    ur3   r9   )	r=   r>   r?   r+   rZ   propertyrP   r   r@   rA   s   @r2   r   r      sy        $ $ $ $ $7 7 7 7 S S XS      r3   r   c                        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                                         }|dv r-| j                                                                        r|S d S )N)r\   setdict)re   r   rg   get_root_contextis_builtins_moduler-   rP   s     r2   
array_typez_BaseTreeInstance.array_type   sO    **,,***'88::MMOO +Ktr3   c                 @    t          | | j        j        j                  S r5   )r   re   rP   r0   r6   s    r2   rP   z_BaseTreeInstance.name   s    t/4>???r3   NTc              #     K   |                                  }|rQ|                                D ]<}|                                s&t          | ||                                |          V  =|                    |d          }|D ]V}t          |t                    rt          | |          V  *t          |t                    rt          | |          V  R|V  Wd S 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7 	a",,.. a a(( a .dKAQAQS_`````#//% 0 
 
  	 	A![)) )$222222A233 1$:::::: 	 	r3   c                 8   |}	 |}t          |dd          }|j        |u rft          j        ||          }t	          | ||          }|j        j        dk    r|                    | j                  }n|                                }n|	                    |          S )NT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-KK*4EE>':55*55doFFGG*5577G
	 %%d+++r3   c                 "   |                                  rt          S t          j        | j        |          }t          | j                  rt          S |                     d          p|                     d          }|                     ||          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;OO #4#677 	--m<< E001CDD 	**5$777r3   c              #      K   d}|                      |          }|r&t          |                     |                    V  d S t          j        d|            d S )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__  sy      66t<< 	L!++O<<       MDdKKKKKr3   c                     |                      d          }|s!t                                                    S t          j        fd|D                       S )Nrv   c              3   f   K   | ]+}|                                                               V  ,d S r5   r   )rz   rP   r(   s     r2   r   z/_BaseTreeInstance.py__call__.<locals>.<genexpr>  s9      !T!Td$**,,"6"6y"A"A!T!T!T!T!T!Tr3   )r   r*   
py__call__r   r   )r-   r(   r   r1   s    ` r2   r   z_BaseTreeInstance.py__call__  s]    ,,Z88 	177%%i000!!T!T!T!Te!T!T!TTTTr3   c                 6   | j                                         D ]&}|                    | ||          }|t          ur|c S '|                     d          }|r3|t          j        | j        d          }|                     |||          S t          | g          S )z"
        obj may be None.
        __get__NNone)
re   r   py__get__on_classNotImplementedr   r   builtin_from_namerf   r   r   )r-   r.   re   r   resultr   s         r2   r~   z_BaseTreeInstance.py__get__  s     #--// 	 	C**4;GGF^++ , ,,Y77 	$#5d6JFSS..uhLLLTF###r3   r9   r5   )r=   r>   r?   r   r   rP   rZ   r   r   r   r   r   r~   r@   rA   s   @r2   r   r      s          X @ @ X@   . "!##, , $#,8 8 80L L L LU U U U U$ $ $ $ $ $ $r3   r   c                   d     e Zd Z fdZ ed          d             Zd Zd Z fdZd Z	 xZ
S )	TreeInstancec                 $   |                                 dv rB|                                                                rt          j        rt          | |          }t                                          |||           || _        |j	        | _	        d S )N)r\   r   )
r   r   r   r   dynamic_array_additionsr"   r*   r+   r   rL   r   s        r2   r+   zTreeInstance.__init__2  s     !!##66"3355HHJJ 7 / H6tYGG	.+FFF#$.r3   N)defaultc                    ddl m}m} t          | | j                  }| j                            d                                          D ]}|j        j	        }| |j
        dk    s|                    |          s1t          | | j                                        |j                  } ||          } ||||          }|rG| j                             ||j        ||                    \  }	t          j        d|	d           |	c S d S )Nr   )py__annotations__infer_type_vars_for_executionr+   r   zInferred instance value as %sBLUE)color)!jedi.inference.gradual.annotationr   r   InstanceArgumentsr   re   r}   r   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  sL   	* 	* 	* 	* 	* 	* 	* 	* !t77)<<ZHHWWYY 	 	I  o/G',)";";$66t<< #< &tT-=-H-H-J-JIO\\L//88O99,o^^M +;;11)/4YY  	97&QQQQ tr3   c                 8    |                                  p| j        S r5   )r   re   r6   s    r2   rn   z'TreeInstance.get_annotated_class_object[  s    //11ET5EEr3   c                 X   t           }| j        dk    rt          | j                                                  D ]p\  }\  }}|9|dk    r3|t          j        d |                                D                       z  }|r+|t          t          j	        | j
        |          g          z  }q|S )Nr   r   c              3   T   K   | ]#}|j         d k    |                                V  $dS r   N)r   get_key_values)rz   vs     r2   r   z.TreeInstance.get_key_values.<locals>.<genexpr>c  sG       1 1<611 ((**11111 1r3   )r   r   	enumerater   unpackr   r   r7   r   r   rf   )r-   valuesikeyr.   s        r2   r  zTreeInstance.get_key_values^  s    ?f$$&/0F0F0H0H&I&I  "?C;166h0 1 1!)!1!11 1 1   F
  h(E,) ) (   F
 r3   c                 ~   | j         dk    rt          t          | j                                                            D ]\\  }}|9t          j        fd|                                D                       }|r|c S @|k    r|                                c S ]t                      	                              S )Nr   c              3   X   K   | ]$}|j         d k    |                              V  %dS r  )r   py__simple_getitem__)rz   	dct_valueindexs     r2   r   z4TreeInstance.py__simple_getitem__.<locals>.<genexpr>{  sK       0 0%$/699 "66u==99990 0r3   )
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?3I3I3K3K.L.L%M%M 4 4!\;%/ 0 0 0 0)5););)=)=0 0 0  F
  &%& e||+1133333 $ww++E222r3   c                 B    d| j         j        d| j        d| j        dS )Nr   r   (z)>)r1   r=   re   r   r6   s    r2   r   zTreeInstance.__repr__  s0     #'>#:#:#:D<L<L<L#'???4 	4r3   )r=   r>   r?   r+   r   r   rn   r  r  r   r@   rA   s   @r2   r   r   1  s        / / / / / "!$///  0/2F F F  $3 3 3 3 3.4 4 4 4 4 4 4r3   r   c                       e Zd ZdZdS )AnonymousInstanceN)r=   r>   r?   r   r:   r3   r2   r  r    s        JJJr3   r  c                   $    e Zd Zed             ZdS )CompiledInstanceNamec              #      K   | j                                         D ]#}|j        dk    rt          |          V  |V  $d S )Nfunction)_wrapped_namer7   r   CompiledBoundMethodr-   result_values     r2   r7   zCompiledInstanceName.infer  sb       .4466 	# 	#L$
22),777777"""""		# 	#r3   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dS )r   c                 "    || _         || _        d S r5   r,   _class_filter)r-   r.   r   s      r2   r+   z$CompiledInstanceClassFilter.__init__  s    !r3   c                 \    |                      | j                            |                    S r5   _convertr   r   r   s     r2   r   zCompiledInstanceClassFilter.get  %    }}T/33D99:::r3   c                 Z    |                      | j                                                  S r5   r#  r   r  r6   s    r2   r  z"CompiledInstanceClassFilter.values  #    }}T/6688999r3   c                     d |D             S )Nc                 ,    g | ]}t          |          S r:   )r  )rz   ns     r2   r|   z8CompiledInstanceClassFilter._convert.<locals>.<listcomp>  s!    777A$Q''777r3   r:   r-   r   s     r2   r#  z$CompiledInstanceClassFilter._convert  s    777777r3   N)r=   r>   r?   r+   r   r  r#  r:   r3   r2   r   r     sP          ; ; ;: : :8 8 8 8 8r3   r   c                   n     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                 f    t                                          |           || _        || _        d S r5   )r*   r+   r.   _class_context)r-   r.   r   r  r1   s       r2   r+   zBoundMethod.__init__  s0    """ +r3   c                     dS r9   r:   r6   s    r2   is_bound_methodzBoundMethod.is_bound_method  r<   r3   c                 P    t          | j        t                      j                  S r5   )r    r.  r*   rP   r-   r1   s    r2   rP   zBoundMethod.name  s$    "GGL
 
 	
r3   c                 6    t          | j        dd          \  }|S )Ntypes
MethodType)r	   rf   )r-   cs     r2   rM   zBoundMethod.py__class__  s    ()=wUUr3   c                 4    |J t          | j        |          S r5   )r   r.   r-   r(   s     r2   _get_argumentszBoundMethod._get_arguments  s     $$$ 	:::r3   Nc                     |t          | j        |           S |                     |          }t          | j        | |          S r5   )rR   r.   r9  r`   r8  s     r2   _as_contextzBoundMethod._as_context  sA    24=$GGG''	22	%dmT9EEEr3   c                     t          | j        t                    r-| j                            |                     |                    S |                     |          }|                                S r5   )r   _wrapped_valuer   r   r9  r   r7   )r-   r(   function_executions      r2   r   zBoundMethod.py__call__  sb    d)+BCC 	R&11$2E2Ei2P2PQQQ!__Y77!'')))r3   c                 N      fd j                                         D             S )Nc                 F    g | ]}t          j        j        |          S r:   )r   r.   r.  )rz   r   r-   s     r2   r|   z7BoundMethod.get_signature_functions.<locals>.<listcomp>  s:     
 
 
 t':A>>
 
 
r3   )r=  get_signature_functionsr6   s   `r2   rA  z#BoundMethod.get_signature_functions  s=    
 
 
 
(@@BB
 
 
 	
r3   c                 ^      fdt                                                      D             S )Nc                 :    g | ]}|                               S r:   rx   rz   sigr-   s     r2   r|   z.BoundMethod.get_signatures.<locals>.<listcomp>  s#    CCC3CCCr3   )r*   r   r2  s   `r2   r   zBoundMethod.get_signatures  s.    CCCC%''*@*@*B*BCCCCr3   c                 2    d| j         j        d| j        dS )Nr   z: r   )r1   r=   r=  r6   s    r2   r   zBoundMethod.__repr__  s#     !^444d6I6I6IJJr3   r5   )r=   r>   r?   r+   r0  r   rP   rM   r9  r;  r   rA  r   r   r@   rA   s   @r2   r   r     s        , , , , ,
   
 
 
 
 X
  ; ; ;F F F F* * *
 
 
D D D D DK K K K K K Kr3   r   c                       e Zd Zd Zd ZdS )r  c                     dS r9   r:   r6   s    r2   r0  z#CompiledBoundMethod.is_bound_method  r<   r3   c                 N      fd j                                         D             S )Nc                 :    g | ]}|                               S r:   rx   rD  s     r2   r|   z6CompiledBoundMethod.get_signatures.<locals>.<listcomp>  s#    OOO3OOOr3   )r=  r   r6   s   `r2   r   z"CompiledBoundMethod.get_signatures  s,    OOOO$*=*L*L*N*NOOOOr3   N)r=   r>   r?   r0  r   r:   r3   r2   r  r    s7          P P P P Pr3   r  c                   D     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                 0    || _         || _        || _        d S r5   )r,   r   r0   )r-   r.   r   r0   s       r2   r+   zSelfName.__init__  s    !*"r3   c                 L    | j                             | j        | j                  S r5   )r,   r   r   r0   r6   s    r2   rg   zSelfName.parent_context  s    ~55d6H$.YYYr3   c                     | j         S r5   r,   r6   s    r2   get_defining_qualified_valuez%SelfName.get_defining_qualified_value  
    ~r3   c                 $   t          | j        d          }|Y|j        d         j        dk    rCddlm}  || j        |j        d         j        d                                                   }|r|S t                      	                                S )N	expr_stmt   	annassignr   )infer_annotation)
r   r0   childrenr   r   rW  rg   execute_annotationr*   r7   )r-   stmtrW  r  r1   s       r2   r7   zSelfName.infer  s    t~{;;}Q$33NNNNNN))'q)9)B1)E $$&&   "!Mww}}r3   )
r=   r>   r?   __doc__r+   r   rg   rQ  r7   r@   rA   s   @r2   rL  rL    s~         # # #
 Z Z XZ  
 
 
 
 
 
 
 
 
r3   rL  c                   @     e Zd Z fdZed             Zd Zd Z xZS )LazyInstanceClassNamec                 X    t                                          |           || _        d S r5   r)   )r-   r.   class_member_namer1   s      r2   r+   zLazyInstanceClassName.__init__  s'    *+++!r3   c              #      K   | j                                         D ]:}|                    | j        | j                                                  E d {V  ;d S r5   )r  r7   r~   r,   rM   r  s     r2   r7   zLazyInstanceClassName.infer  sm       .4466 	\ 	\L#--dndn>X>X>Z>Z[[[[[[[[[[	\ 	\r3   c                 N    |                                                                  S r5   )r7   r   r6   s    r2   r   z$LazyInstanceClassName.get_signatures  s    zz||**,,,r3   c                     | j         S r5   rP  r6   s    r2   rQ  z2LazyInstanceClassName.get_defining_qualified_value  rR  r3   )	r=   r>   r?   r+   r   r7   r   rQ  r@   rA   s   @r2   r]  r]    su        " " " " " \ \ \- - -      r3   r]  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )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                 "    || _         || _        d S r5   r  )r-   r.   class_filters      r2   r+   zInstanceClassFilter.__init__  s    !)r3   c                 \    |                      | j                            |                    S r5   r"  r   s     r2   r   zInstanceClassFilter.get  r$  r3   c                 Z    |                      | j                                                  S r5   r&  r6   s    r2   r  zInstanceClassFilter.values  r'  r3   c                        fd|D             S )Nc                 :    g | ]}t          j        |          S r:   )r]  r,   rz   r*  r-   s     r2   r|   z0InstanceClassFilter._convert.<locals>.<listcomp>#  s5     
 
 
 "$.!44
 
 
r3   r:   r+  s   ` r2   r#  zInstanceClassFilter._convert"  s.    
 
 
 

 
 
 	
r3   c                 2    d| j         j        d| j        dS )Nr   z for r   )r1   r=   r   r6   s    r2   r   zInstanceClassFilter.__repr__(  s#      $ 7 7 79K9K9KLLr3   N)	r=   r>   r?   r[  r+   r   r  r#  r   r:   r3   r2   r   r     sn         
* * *; ; ;: : :
 
 
M M M M 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           || _        d S )NT)re   node_contextrX   ri   r)   )r-   r.   instance_classrn  rX   r1   s        r2   r+   zSelfAttributeFilter.__init__0  s=    &%%	 	 	
 	
 	
 "r3   c                     | j         j        | j         j        cfd|D             }|                     |          S )Nc                 >    g | ]}|j         cxk     rk     n n|S r:   )	start_pos)rz   r*  endstarts     r2   r|   z/SelfAttributeFilter._filter.<locals>.<listcomp>;  s<    ???qUQ[%>%>%>%>3%>%>%>%>%>%>%>%>r3   )_parser_scoperr  end_pos_filter_self_names)r-   r   rs  rt  s     @@r2   _filterzSelfAttributeFilter._filter9  sK    '143E3M
s?????E???&&u---r3   c              #   :  K   |D ]}|j         }|j        dk    rt          |j         j                  dk    rd|j        d         dk    rS|                                r?|                     |          r*|                     |j         j        d         |          r|V  d S )Ntrailer   r   .)parentr   lenrX  is_definition_access_possible_is_in_right_scope)r-   r   rP   rz  s       r2   rw  z&SelfAttributeFilter._filter_self_names>  s       		# 		#DkG|y((GN34499(+s22%%'' #D,A,A$,G,G # ..w~/Fq/I4PP #"


		# 		#r3   c                       j                             |          }|                    ||j                  }t	           fd|D                       S )N)positionc              3      K   | ]D}|j         d k    o4|j                                        j        dk    o|j        j        j        u V  EdS )rO   r   N)r   r0   get_definitionrJ   rg   rL   ru  rj  s     r2   r   z9SelfAttributeFilter._is_in_right_scope.<locals>.<genexpr>M  sv       
 
  J'! A**,,;q@A *d.@@
 
 
 
 
 
r3   )_node_contextr   gotorr  any)r-   	self_namerP   self_contextr   s   `    r2   r  z&SelfAttributeFilter._is_in_right_scopeJ  sn    )88CC!!)i6I!JJ 
 
 
 
 	
 
 
 
 
 	
r3   c                        fd|D             S )Nc                 F    g | ]}t          j        j        |          S r:   )rL  r,   r  )rz   rP   r-   s     r2   r|   z6SelfAttributeFilter._convert_names.<locals>.<listcomp>U  s*    UUUt);TBBUUUr3   r:   r+  s   ` r2   _convert_namesz"SelfAttributeFilter._convert_namesT  s    UUUUuUUUUr3   c                     |S r5   r:   r+  s     r2   _check_flowsz SelfAttributeFilter._check_flowsW  s    r3   )r=   r>   r?   r[  r+   rx  rw  r  r  r  r@   rA   s   @r2   r   r   ,  s         " " " " ". . .

# 
# 
#
 
 
V V V      r3   r   c                   &     e Zd Z fdZddZ xZS )r   c                 X    t                                          |           || _        d S r5   rT   )r-   r.   r(   r1   s      r2   r+   zInstanceArguments.__init__\  s&    ### r3   Nc              #   z   K   d t          | j                  fV  | j                            |          E d {V  d S r5   )r   r.   _wrapped_argumentsr  )r-   r   s     r2   r  zInstanceArguments.unpack`  sP      N4=111111*11$77777777777r3   r5   )r=   r>   r?   r+   r  r@   rA   s   @r2   r   r   [  sL        ! ! ! ! !8 8 8 8 8 8 8 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  rL  r]  r   r   r   r:   r3   r2   <module>r     sI               & & & & & &             # # # # # # = = = = = = W W W W W W W W S S S S S S S S           ( ( ( ( ( ( ( ( ( ( ( ( ( ( E E E E E E E E = = = = = = J J J J J J J JP P P P P P P P P P P P P P P P 3 2 2 2 2 2 J J J J J J O O O O O O O O
 
 
 
 
	 
 
 
3 3 3 3 3%E 3 3 3,    &B   .! ! ! ! !5 ! ! !JJ JJ JJ JJ JJE JJ JJ JJZ    ,   0o$ o$ o$ o$ o$- o$ o$ o$dX4 X4 X4 X4 X4$ X4 X4 X4v    )   # # # # #; # # #8 8 8 8 8. 8 8 80K 0K 0K 0K 0K- 0K 0K 0KfP P P P P, P P P    !   :    K   "M M M M M. M M M4, , , , ,+ , , ,^8 8 8 8 8, 8 8 8 8 8r3   