
    ^hW                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJrJr  S S	KJrJrJrJr  S S
KJrJrJrJrJr  S SKJrJr  S SKJ r   S SK!J"r"J#r#  S SK$J%r%J&r&J'r'J(r(J)r)J*r*  S SK+J,r,  S SK-J.r.  S SK/J0r0J1r1   " S S\5      r2 " S S\5      r3 " S S\(5      r4 " S S\)5      r5 " S S\5      r6 " S S\65      r7 " S S\65      r8 " S  S!\85      r9 " S" S#\85      r: " S$ S%\5      r; " S& S'\5      r< " S( S)\&\5      r= " S* S+\5      r> " S, S-\5      r? " S. S/\5      r@ " S0 S1\5      rA " S2 S3\,5      rB " S4 S5\#5      rCg6)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                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )InstanceExecutedParamName   c                 .   > [         TU ]  X#S S9  Xl        g )N)	argumentssuper__init__	_instance)selfinstancefunction_value	tree_name	__class__s       W/home/james-whalen/.local/lib/python3.13/site-packages/jedi/inference/value/instance.pyr,   "InstanceExecutedParamName.__init__   s     	 	7!    c                 .    [        U R                  /5      $ N)r   r-   r.   s    r3   inferInstanceExecutedParamName.infer    s    ())r5   c                     gNT r8   s    r3   matches_signature+InstanceExecutedParamName.matches_signature#       r5   r-   )	__name__
__module____qualname____firstlineno__r,   r9   r>   __static_attributes____classcell__r2   s   @r3   r&   r&      s    "
* r5   r&   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )AnonymousMethodExecutionFilter'   c                 2   > [         TU ]  " U0 UD6  Xl        g r7   r*   r.   r/   argskwargsr2   s       r3   r,   'AnonymousMethodExecutionFilter.__init__(   s    $)&)!r5   c                 r  > UR                   S:X  a  [        U R                  R                  5      (       a/  [	        U R
                  R                  5       U R                  U5      $ [        U R                  R                  5      (       d!  [	        U R
                  U R                  U5      $ [        TU ]%  X5      $ Nr   )
position_indexr$   _function_value	tree_noder&   r-   py__class__r#   r+   _convert_param)r.   paramnamer2   s      r3   rW   -AnonymousMethodExecutionFilter._convert_param,   s    1$&t';';'E'EFF0NN..0(( 
 .d.B.B.L.LMM0NN(( 
 w%e22r5   rA   )rB   rC   rD   rE   r,   rW   rF   rG   rH   s   @r3   rJ   rJ   '   s    "3 3r5   rJ   c                   8   ^  \ rS rSrU 4S jrSS jrS rSrU =r$ )AnonymousMethodExecutionContext=   c                 0   > [         TU ]  U5        Xl        g r7   r+   r,   r/   )r.   r/   valuer2   s      r3   r,   (AnonymousMethodExecutionContext.__init__>   s     r5   c              #   P   #    [        U R                  X R                  UUS9v   g 7f)N)until_positionorigin_scope)rJ   r/   _value)r.   rc   rd   s      r3   get_filters+AnonymousMethodExecutionContext.get_filtersB   s%     ,MM4)%
 	
s   $&c                     [        U R                  R                  5       5      n[        U R                  U R                  US   R
                  5      US'   U$ rR   )listre   get_param_namesr&   r/   r1   )r.   param_namess     r3   rj   /AnonymousMethodExecutionContext.get_param_namesI   sJ    4;;66892MMKKN$$
A
 r5   r/   )NN)	rB   rC   rD   rE   r,   rf   rj   rF   rG   rH   s   @r3   r\   r\   =   s    !
 r5   r\   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )MethodExecutionContextT   c                 2   > [         TU ]  " U0 UD6  Xl        g r7   r_   rM   s       r3   r,   MethodExecutionContext.__init__U   s    $)&) r5   rm   )rB   rC   rD   rE   r,   rF   rG   rH   s   @r3   ro   ro   T   s    ! !r5   ro   c                      ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
\S	 5       rS
 rS rS rSS jrU 4S jrSU 4S jjrS rSrU =r$ )AbstractInstanceValueZ   r/   c                 0   > [         TU ]  X5        X0l        g r7   )r+   r,   class_value)r.   inference_stateparent_contextrw   r2   s       r3   r,   AbstractInstanceValue.__init__]   s    9 'r5   c                     gr<   r=   r8   s    r3   is_instance!AbstractInstanceValue.is_instancec   r@   r5   c                 6    U R                   R                  5       $ r7   )rw   get_qualified_namesr8   s    r3   r   )AbstractInstanceValue.get_qualified_namesf   s    3355r5   c                     U R                   $ r7   rw   r8   s    r3   get_annotated_class_object0AbstractInstanceValue.get_annotated_class_objecti       r5   c                     U R                   $ r7   r   r8   s    r3   rV   !AbstractInstanceValue.py__class__l   r   r5   c                     g r7   r=   r8   s    r3   
py__bool__ AbstractInstanceValue.py__bool__o   s    r5   c                     [         er7   )NotImplementedErrorr8   s    r3   rY   AbstractInstanceValue.names   s    !!r5   c                     U R                  S5      R                  X R                  5      nUR                  5        Vs/ s H  o"R	                  U 5      PM     sn$ s  snf )N__call__)py__getattribute__	py__get__rw   get_signaturesbind)r.   
call_funcsss      r3   r   $AbstractInstanceValue.get_signaturesw   sL    ,,Z8BB4IYIYZ
&0&?&?&AB&At&ABBBs   Ac                 j    U R                  SS9 H  nUR                  U5      nU(       d  M  Us  $    / $ )NF)include_self_names)rf   get)r.   rY   filternamess       r3   get_function_slot_names-AbstractInstanceValue.get_function_slot_names{   s<     &&%&@FJJt$Eu A 	r5   c                 D   ^ [         R                  " U4S jU 5       5      $ )Nc              3   ^   >#    U  H"  nUR                  5       R                  " T6 v   M$     g 7fr7   )r9   execute_with_values).0rY   inferred_argss     r3   	<genexpr>?AbstractInstanceValue.execute_function_slots.<locals>.<genexpr>   s)      "
 JJL,,m<s   *-)r   	from_sets)r.   r   r   s     `r3   execute_function_slots,AbstractInstanceValue.execute_function_slots   s#    !! "
"
 
 	
r5   c                 "    U R                  5       $ r7   )
py__name__)r.   add_class_infos     r3   get_type_hint#AbstractInstanceValue.get_type_hint   s      r5   c                    >^ U R                  S5      nU(       d  [        TU ]	  UU5      $ [        U/5      m[        R
                  " U4S jU 5       5      $ )N__getitem__c              3   `   >#    U  H#  oR                  5       R                  T5      v   M%     g 7fr7   r9   execute)r   rY   rN   s     r3   r   6AbstractInstanceValue.py__getitem__.<locals>.<genexpr>   s#     !O**,"6"6t"<"<   +.)r   r+   py__getitem__r   r   r   )r.   index_value_setcontextualized_noder   rN   r2   s       @r3   r   #AbstractInstanceValue.py__getitem__   sT    ,,];7(# 
 01!!!O!OOOr5   c                 v   >^ ^^ T R                  S5      mT(       d  [        TT ]	  T5      $ UUU 4S jnU" 5       $ )N__iter__c               3   t   >#    TR                  T5       H  n U R                  T5       S h  vN   M     g  N	7fr7   )r   
py__next__)	generatorr   iter_slot_namesr.   s    r3   iterate1AbstractInstanceValue.py__iter__.<locals>.iterate   s4     !88I	$//0CDDD JDs   )86
8)r   r+   
py__iter__)r.   r   r   r   r2   s   `` @r3   r    AbstractInstanceValue.py__iter__   s7    66zB7%&9::	E yr5   c                 T    SU R                   R                  < SU R                  < S3$ )N< of >)r2   rB   rw   r8   s    r3   __repr__AbstractInstanceValue.__repr__   s    #~~668H8HIIr5   r   )Tr7   )rB   rC   rD   rE   api_typer,   r|   r   r   rV   r   r   rY   r   r   r   r   r   r   r   rF   rG   rH   s   @r3   rt   rt   Z   sf    H'6   " "C
!	PJ Jr5   rt   c                   H   ^  \ rS rSrU 4S jrSS jr\S 5       rS rSr	U =r
$ )CompiledInstance   c                 2   > [         TU ]  XU5        X@l        g r7   )r+   r,   
_argumentsr.   rx   ry   rw   r)   r2   s        r3   r,   CompiledInstance.__init__   s    +F#r5   c              #   x   #    U R                  5       nUR                  USS9nU H  n[        X5      v   M     g 7fNT)rd   r|   )r   rf   CompiledInstanceClassFilter)r.   rd   r   rw   class_filtersfs         r3   rf   CompiledInstance.get_filters   sE     557#//% 0 
 A-d66 s   8:c                 j    [         R                  " X R                  R                  R                  5      $ r7   )r   CompiledValueNamerw   rY   string_namer8   s    r3   rY   CompiledInstance.name   s%    ))$0@0@0E0E0Q0QRRr5   c                     g)NFr=   r8   s    r3   is_stubCompiledInstance.is_stub   s    r5   )r   r<   )rB   rC   rD   rE   r,   rf   propertyrY   r   rF   rG   rH   s   @r3   r   r      s-    $7 S S r5   r   c                      ^  \ rS rSr\S 5       r\S 5       rSS jr\" 5       S 5       r	S r
SS jrU 4S jrS	 rS
rU =r$ )_BaseTreeInstance   c                     U R                   R                  5       nUS;   a/  U R                  R                  5       R	                  5       (       a  U$ g )N)ri   setdict)rw   r   ry   get_root_contextis_builtins_moduler.   rY   s     r3   
array_type_BaseTreeInstance.array_type   sE    **,**''88:MMOOKr5   c                 T    [        X R                  R                  R                  5      $ r7   )r   rw   rY   r1   r8   s    r3   rY   _BaseTreeInstance.name   s    //44>>??r5   c              #     #    U R                  5       nU(       aK  UR                  5        H7  nUR                  5       (       a  M  [        XUR	                  5       U5      v   M9     UR                  USS9nU HO  n[        U[        5      (       a  [        X5      v   M'  [        U[        5      (       a  [        X5      v   MK  Uv   MQ     g 7fr   )r   	py__mro__is_compiledSelfAttributeFilter
as_contextrf   
isinstancer!   InstanceClassFilterr   r   )r.   rd   r   rw   clsr   r   s          r3   rf   _BaseTreeInstance.get_filters   s     557",,.(( .dAQS_`` / $//% 0 
 A![)))$22A2331$::  s   >CBCc                 <   Un Un[        USS5      nUR                  UL ai  [        R                  " X5      n[	        XU5      nUR
                  R                  S:X  a  UR                  U R                  5      nOUR                  5       nOM  UR                  U5      $ )Nfuncdefclassdefr,   )
r   rU   r   from_contextBoundMethodrY   r`   r   r   create_context)r.   class_contextnodenew	func_nodefuncbound_methodcontexts           r3   create_instance_context)_BaseTreeInstance.create_instance_context   s    I!#y*=C&&#-$11-K*4E>>'':5*55dooFG*557G  %%d++r5   c                 .   U R                  5       (       a  [        $ [        R                  " U R                  U5      n[        U R                  5      (       a  [        $ U R                  S5      =(       d    U R                  S5      nU R                  X25      $ )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_objectrx   r
   ry   r   r   )r.   r   rY   r   s       r3   py__getattribute__alternatives0_BaseTreeInstance.py__getattribute__alternatives   s     <<>>,,T-A-A;O #4#6#677--m< E001CD 	**577r5   c              #      #    SnU R                  U5      nU(       a  [        U R                  U5      5      v   g [        R                  " SU 5        g 7f)N__next__z(Instance has no __next__ function in %s.)r   r   r   r   warning)r.   r   rY   next_slot_namess       r3   r   _BaseTreeInstance.py__next__  sI     66t<!++O<  MMDdKs   AAc                    >^ U R                  S5      nU(       d  [        TU ]	  T5      $ [        R                  " U4S jU 5       5      $ )Nr   c              3   `   >#    U  H#  oR                  5       R                  T5      v   M%     g 7fr7   r   )r   rY   r)   s     r3   r   /_BaseTreeInstance.py__call__.<locals>.<genexpr>  s#     !Ted**,"6"6y"A"Aer   )r   r+   
py__call__r   r   )r.   r)   r   r2   s    ` r3   r  _BaseTreeInstance.py__call__  s=    ,,Z87%i00!!!Te!TTTr5   c                 6   U R                   R                  5        H"  nUR                  XU5      nU[        Ld  M   Us  $    U R	                  S5      nU(       a6  Uc!  [
        R                  " U R                  S5      nU R                  XQU5      $ [        U /5      $ )z
obj may be None.
__get__None)
rw   r   py__get__on_classNotImplementedr   r   builtin_from_namerx   r   r   )r.   r/   rw   r   resultr   s         r3   r   _BaseTreeInstance.py__get__  s     ##--/C**4;GF^+ 0
 ,,Y7#55d6J6JFS..uLLTF##r5   r=   r<   r7   )rB   rC   rD   rE   r   r   rY   rf   r   r  r  r   r  r   rF   rG   rH   s   @r3   r   r      sb      @ @. "#, $,80LU$ $r5   r   c                   ^   ^  \ rS rSrU 4S jr\" SS9S 5       rS rS rU 4S jr	S	 r
S
rU =r$ )TreeInstancei1  c                   > UR                  5       S;   aC  UR                  5       R                  5       (       a   [        R                  (       a  [        X5      n[        TU ]  XU5        X@l        UR                  U l	        g )N)ri   r   )
r   r   r   r   dynamic_array_additionsr"   r+   r,   r   rU   r   s        r3   r,   TreeInstance.__init__2  sb     !!#6"335HHJJ//6tG	+F#$..r5   N)defaultc                 <   SSK JnJn  [        X R                  5      nU R
                  R                  S5      R                  5        H  nUR                  R                  nUb&  UR                  S:w  d  UR                  U5      (       d  MD  [        X R
                  R                  5       UR                  5      nU" U5      nU" XcU5      nU(       d  M  U R
                  R                  U" UR                  X75      5      u  n	[        R                   " SU	SS9  U	s  $    g )Nr   )py__annotations__infer_type_vars_for_executionr,   r   zInferred instance value as %sBLUE)color)!jedi.inference.gradual.annotationr"  r#  InstanceArgumentsr   rw   r   r   r`   rU   typer>   r   r   define_genericsr   dbg)
r.   r"  r#  rN   	signaturer   r   all_annotationstype_var_dictdefineds
             r3   _get_annotated_class_object(TreeInstance._get_annotated_class_objectA  s    	* !7))<<ZHWWYI  oo//G',,)";$66t<< &t-=-=-H-H-JIOO\L/8O9,o^M}++;;1)//4Y 		97&Q# Z$ r5   c                 H    U R                  5       =(       d    U R                  $ r7   )r/  rw   r8   s    r3   r   'TreeInstance.get_annotated_class_object[  s    //1ET5E5EEr5   c                 l   [         nU R                  S:X  a  [        U R                  R	                  5       5       Hv  u  nu  p4Uc4  US:X  a.  U[
        R                  " S UR                  5        5       5      -  nU(       d  MH  U[        [        R                  " U R                  U5      /5      -  nMx     U$ )Nr   r   c              3   f   #    U  H'  nUR                   S :X  d  M  UR                  5       v   M)     g7fr   N)r   get_key_values)r   vs     r3   r   .TreeInstance.get_key_values.<locals>.<genexpr>c  s1      1!1A<<61 +((**!1s   11)r   r   	enumerater   unpackr   r   r9   r   r  rx   )r.   valuesikeyr/   s        r3   r6  TreeInstance.get_key_values^  s    ??f$&/0F0F0H&I"?C;16h00 1!)!11  F
 3h(E(E,,) (  F 'J r5   c                 Z  >^ U R                   S:X  a  [        [        U R                  R	                  5       5      5       H[  u  p#Uc;  [
        R                  " U4S jUR                  5        5       5      nU(       a  Us  $ MC  UT:X  d  MK  UR                  5       s  $    [        TU ]%  T5      $ )Nr   c              3   j   >#    U  H(  nUR                   S :X  d  M  UR                  T5      v   M*     g7fr5  )r   py__simple_getitem__)r   	dct_valueindexs     r3   r   4TreeInstance.py__simple_getitem__.<locals>.<genexpr>{  s6      0)=I$//69 >	66u==)=s   33)
r   reversedri   r   r:  r   r   r9   r+   rA  )r.   rC  r=  lazy_contextr;  r2   s    `   r3   rA  !TreeInstance.py__simple_getitem__p  s    ??f$ &.d4??3I3I3K.L%M!;%// 0)5););)=0 F
 %  e|+1133 &N w+E22r5   c                 p    SU R                   R                  < SU R                  < SU R                  < S3$ )Nr   r   (z)>)r2   rB   rw   r   r8   s    r3   r   TreeInstance.__repr__  s(    #'>>#:#:D<L<L#'??4 	4r5   )r   rU   )rB   rC   rD   rE   r,   r   r/  r   r6  rA  r   rF   rG   rH   s   @r3   r  r  1  s;    / "$/ 02F$3.4 4r5   r  c                       \ rS rSrSrSrg)AnonymousInstancei  Nr=   )rB   rC   rD   rE   r   rF   r=   r5   r3   rL  rL    s    Jr5   rL  c                   $    \ rS rSr\S 5       rSrg)CompiledInstanceNamei  c              #      #    U R                   R                  5        H&  nUR                  S:X  a  [        U5      v   M"  Uv   M(     g 7f)Nfunction)_wrapped_namer9   r   CompiledBoundMethodr.   result_values     r3   r9   CompiledInstanceName.infer  s=      ..446L$$
2),77""	 7s   AAr=   N)rB   rC   rD   rE   r   r9   rF   r=   r5   r3   rN  rN    s    # #r5   rN  c                   ,    \ rS rSrS rS rS rS rSrg)r   i  c                     Xl         X l        g r7   r-   _class_filter)r.   r/   r   s      r3   r,   $CompiledInstanceClassFilter.__init__  s    !r5   c                 V    U R                  U R                  R                  U5      5      $ r7   _convertrY  r   r   s     r3   r   CompiledInstanceClassFilter.get  "    }}T//33D9::r5   c                 T    U R                  U R                  R                  5       5      $ r7   r]  rY  r;  r8   s    r3   r;  "CompiledInstanceClassFilter.values       }}T//66899r5   c                 D    U Vs/ s H  n[        U5      PM     sn$ s  snf r7   )rN  r.   r   ns      r3   r]  $CompiledInstanceClassFilter._convert  s     167A$Q'777s   rY  r-   N)	rB   rC   rD   rE   r,   r   r;  r]  rF   r=   r5   r3   r   r     s    ;:8r5   r   c                   x   ^  \ rS rSrU 4S jrS r\U 4S j5       rS rS r	SS jr
S rS	 rU 4S
 jrS rSrU =r$ )r   i  c                 <   > [         TU ]  U5        Xl        X l        g r7   )r+   r,   r/   _class_context)r.   r/   r   rP  r2   s       r3   r,   BoundMethod.__init__  s    " +r5   c                     gr<   r=   r8   s    r3   is_bound_methodBoundMethod.is_bound_method  r@   r5   c                 @   > [        U R                  [        TU ]  5      $ r7   )r    rk  r+   rY   )r.   r2   s    r3   rY   BoundMethod.name  s     "GL
 	
r5   c                 8    [        U R                  SS5      u  nU$ )Ntypes
MethodType)r	   rx   )r.   cs     r3   rV   BoundMethod.py__class__  s    ()=)=wUr5   c                 8    Uc   e[        U R                  U5      $ r7   )r'  r/   r.   r)   s     r3   _get_argumentsBoundMethod._get_arguments  s    $$$ 	::r5   c                     Uc  [        U R                  U 5      $ U R                  U5      n[        U R                  X5      $ r7   )r\   r/   ry  ro   rx  s     r3   _as_contextBoundMethod._as_context  s:    24==$GG''	2	%dmmTEEr5   c                     [        U R                  [        5      (       a*  U R                  R                  U R	                  U5      5      $ U R                  U5      nUR                  5       $ r7   )r   _wrapped_valuer   r  ry  r   r9   )r.   r)   function_executions      r3   r  BoundMethod.py__call__  sV    d))+BCC&&11$2E2Ei2PQQ!__Y7!''))r5   c                     U R                   R                  5        Vs/ s H$  n[        U R                  U R                  U5      PM&     sn$ s  snf r7   )r  get_signature_functionsr   r/   rk  )r.   r   s     r3   r  #BoundMethod.get_signature_functions  sK     ((@@B
B t':':A>B
 	
 
s   +Ac                 h   > [         TU ]  5        Vs/ s H  oR                  U 5      PM     sn$ s  snf r7   )r+   r   r   )r.   sigr2   s     r3   r   BoundMethod.get_signatures  s+    */'*@*BC*B3*BCCCs   /c                 T    SU R                   R                  < SU R                  < S3$ )Nr   z: r   )r2   rB   r  r8   s    r3   r   BoundMethod.__repr__  s    !^^44d6I6IJJr5   )rk  r/   r7   )rB   rC   rD   rE   r,   rn  r   rY   rV   ry  r|  r  r  r   r   rF   rG   rH   s   @r3   r   r     sM    ,
 
 
;F*
DK Kr5   r   c                        \ rS rSrS rS rSrg)rR  i  c                     gr<   r=   r8   s    r3   rn  #CompiledBoundMethod.is_bound_method  r@   r5   c                 ~    U R                   R                  5        Vs/ s H  oR                  U 5      PM     sn$ s  snf r7   )r  r   r   )r.   r  s     r3   r   "CompiledBoundMethod.get_signatures  s1    *.*=*=*L*L*NO*N3*NOOOs   :r=   N)rB   rC   rD   rE   rn  r   rF   r=   r5   r3   rR  rR    s    Pr5   rR  c                   H   ^  \ rS rSrSrS r\S 5       rS rU 4S jr	Sr
U =r$ )SelfNamei  z1
This name calculates the parent_context lazily.
c                 (    Xl         X l        X0l        g r7   r-   r   r1   )r.   r/   r   r1   s       r3   r,   SelfName.__init__  s    !*"r5   c                 b    U R                   R                  U R                  U R                  5      $ r7   )r-   r  r   r1   r8   s    r3   ry   SelfName.parent_context  s#    ~~55d6H6H$..YYr5   c                     U R                   $ r7   rA   r8   s    r3   get_defining_qualified_value%SelfName.get_defining_qualified_value      ~~r5   c                    > [        U R                  S5      nUbg  UR                  S   R                  S:X  aJ  SSKJn  U" U R                  UR                  S   R                  S   5      R                  5       nU(       a  U$ [        TU ]%  5       $ )N	expr_stmt   	annassignr   )infer_annotation)
r   r1   childrenr(  r&  r  ry   execute_annotationr+   r9   )r.   stmtr  r;  r2   s       r3   r9   SelfName.infer  s~    t~~{;}}Q$$3N)''q)9)B)B1)E$$&  !Mw}r5   r  )rB   rC   rD   rE   __doc__r,   r   ry   r  r9   rF   rG   rH   s   @r3   r  r    s2    #
 Z Z
 
r5   r  c                   D   ^  \ rS rSrU 4S jr\S 5       rS rS rSr	U =r
$ )LazyInstanceClassNamei  c                 0   > [         TU ]  U5        Xl        g r7   r*   )r.   r/   class_member_namer2   s      r3   r,   LazyInstanceClassName.__init__  s    *+!r5   c              #      #    U R                   R                  5        H?  nUR                  U R                  U R                  R	                  5       5       S h  vN   MA     g  N	7fr7   )rQ  r9   r   r-   rV   rS  s     r3   r9   LazyInstanceClassName.infer  sH      ..446L#--dnndnn>X>X>Z[[[ 7[s   AA#A!
A#c                 >    U R                  5       R                  5       $ r7   )r9   r   r8   s    r3   r   $LazyInstanceClassName.get_signatures  s    zz|**,,r5   c                     U R                   $ r7   rA   r8   s    r3   r  2LazyInstanceClassName.get_defining_qualified_value  r  r5   rA   )rB   rC   rD   rE   r,   r   r9   r   r  rF   rG   rH   s   @r3   r  r    s-    " \ \- r5   r  c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
r   i  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                     Xl         X l        g r7   rX  )r.   r/   class_filters      r3   r,   InstanceClassFilter.__init__  s    !)r5   c                 V    U R                  U R                  R                  U5      5      $ r7   r\  r   s     r3   r   InstanceClassFilter.get  r_  r5   c                 T    U R                  U R                  R                  5       5      $ r7   ra  r8   s    r3   r;  InstanceClassFilter.values  rc  r5   c                 Z    U Vs/ s H  n[        U R                  U5      PM     sn$ s  snf r7   )r  r-   re  s      r3   r]  InstanceClassFilter._convert"  s4     
 "$..!4
 	
 
s    (c                 T    SU R                   R                  < SU R                  < S3$ )Nr   z for r   )r2   rB   rY  r8   s    r3   r   InstanceClassFilter.__repr__(  s     $ 7 79K9KLLr5   rh  N)rB   rC   rD   rE   r  r,   r   r;  r]  r   rF   r=   r5   r3   r   r     s!    
*;:
Mr5   r   c                   J   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	rU =r$ )
r   i,  zM
This class basically filters all the use cases where `self.*` was assigned.
c                 2   > [         TU ]  UUUSS9  Xl        g )NT)rw   node_contextrd   r|   r*   )r.   r/   instance_classr  rd   r2   s        r3   r,   SelfAttributeFilter.__init__0  s(    &%%	 	 	
 "r5   c                     U R                   R                  U R                   R                  p2U Vs/ s H!  oBUR                  s=:  a  U:  d  M  O  M  UPM#     nnU R                  U5      $ s  snf r7   )_parser_scope	start_posend_pos_filter_self_names)r.   r   startendrf  s        r3   _filterSelfAttributeFilter._filter9  s_    ''1143E3E3M3Ms!?EqQ[[%>3%>%>E?&&u-- @s   A+A+A+c              #     #    U H  nUR                   nUR                  S:X  d  M!  [        UR                   R                  5      S:X  d  MF  UR                  S   S:X  d  M[  UR	                  5       (       d  Mr  U R                  U5      (       d  M  U R                  UR                   R                  S   U5      (       d  M  Uv   M     g 7f)Ntrailer   r   .)parentr(  lenr  is_definition_access_possible_is_in_right_scope)r.   r   rY   r  s       r3   r  &SelfAttributeFilter._filter_self_names>  s     DkkG||y(GNN3349((+s2%%''D,A,A$,G,G ..w~~/F/Fq/I4PP"
 s(    C!CC C7C,C?	Cc                    ^  T R                   R                  U5      nUR                  XR                  S9n[	        U 4S jU 5       5      $ )N)positionc              3      >#    U  Hk  nUR                   S :H  =(       aP    UR                  R                  5       R                  S:H  =(       a"    UR                  R
                  TR                  L v   Mm     g7f)rX   r   N)r   r1   get_definitionrS   ry   rU   r  )r   rf  r.   s     r3   r   9SelfAttributeFilter._is_in_right_scope.<locals>.<genexpr>M  sl      
  JJ'! A**,;;q@A  **d.@.@@A s   A3A6)_node_contextr   gotor  any)r.   	self_namerY   self_contextr   s   `    r3   r  &SelfAttributeFilter._is_in_right_scopeJ  sN    ))88C!!)6I6I!J 
 	
 
 	
r5   c                 p    U Vs/ s H$  n[        U R                  U R                  U5      PM&     sn$ s  snf r7   )r  r-   r  )r.   r   rY   s      r3   _convert_names"SelfAttributeFilter._convert_namesT  s-    OTUut););TBuUUUs   +3c                     U$ r7   r=   )r.   r   s     r3   _check_flows SelfAttributeFilter._check_flowsW  s    r5   rA   )rB   rC   rD   rE   r  r,   r  r  r  r  r  rF   rG   rH   s   @r3   r   r   ,  s,    ".

#
V r5   r   c                   2   ^  \ rS rSrU 4S jrSS jrSrU =r$ )r'  i[  c                 0   > [         TU ]  U5        Xl        g r7   r_   )r.   r/   r)   r2   s      r3   r,   InstanceArguments.__init__\  s    # r5   c              #      #    S [        U R                  5      4v   U R                  R                  U5       S h  vN   g  N7fr7   )r   r/   _wrapped_argumentsr:  )r.   r   s     r3   r:  InstanceArguments.unpack`  s3     N4==111**11$777s   8AA Arm   r7   )rB   rC   rD   rE   r,   r:  rF   rG   rH   s   @r3   r'  r'  [  s    !8 8r5   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&   rJ   r\   ro   rt   r   r   r  rL  rN  r   r   rR  r  r  r   r   r'  r=   r5   r3   <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, 8r5   