
    MhD                     <   d dl mZ d dlmZ d dlmZ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mZ d d
lmZ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 m!Z! d dl"m#Z#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-  G d de          Z. G d de          Z/ G d d          Z0 G d de0e/e          Z1 G d de          Z2 G d de1          Z3 G d  d!e#e$          Z4 G d" d#e4          Z5 G d$ d%e4          Z6 G d& d'e0e          Z7d( Z8d)S )*    )tree)debug)inference_state_method_cacheCachedMetaClass)compiled)	recursion)
docstrings)flow_analysisTreeSignature)ParserTreeFilterFunctionExecutionFilter AnonymousFunctionExecutionFilter)	ValueNameAbstractNameDefinitionAnonymousParamName	ParamNameNameWrapper)ContextualizedNode	NO_VALUESValueSet	TreeValueValueWrapper)LazyKnownValuesLazyKnownValueLazyTreeValue)ValueContextTreeContextMixin)iterable)parser_utils)get_yield_exprs)values_from_qualified_namesTupleGenericManagerc                   8    e Zd ZdZdZd Zed             Zd ZdS )
LambdaNamez<lambda>functionc                 ,    || _         |j        | _        d S N)_lambda_valueparent_context)selflambda_values     ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/value/function.py__init__zLambdaName.__init__   s    )*9    c                 $    | j         j        j        S r)   )r*   	tree_node	start_posr,   s    r.   r3   zLambdaName.start_pos"   s    !+55r0   c                 ,    t          | j        g          S r)   )r   r*   r4   s    r.   inferzLambdaName.infer&   s    +,---r0   N)	__name__
__module____qualname__string_nameapi_typer/   propertyr3   r6    r0   r.   r&   r&      sW        KH: : : 6 6 X6. . . . .r0   r&   c                       e Zd Zd ZdS )FunctionAndClassBasec                     | j                                         r5| j                                         }|d S ||                                 fz   S | j                                         r|                                 fS d S r)   )r+   is_classget_qualified_names
py__name__	is_module)r,   ns     r.   rB   z(FunctionAndClassBase.get_qualified_names+   s~    '')) 		#7799Ayt))+++ **,, 	OO%%''4r0   N)r7   r8   r9   rB   r=   r0   r.   r?   r?   *   s#        
 
 
 
 
r0   r?   c                   d    e Zd ZdZddZd Zd Zed             Zd Z	d Z
dd
Zd ZddZd ZdS )FunctionMixinr'   Nc              #      K   |                                  }|                                D ]}|                    |          E d {V  d S )N)origin_scope)py__class__execute_with_valuesget_filters)r,   rI   clsinstances       r.   rL   zFunctionMixin.get_filters;   sl        //11 	G 	GH+++FFFFFFFFFF	G 	Gr0   c                     ddl m} |t          | g          S t           |||                                |           g          S )Nr   )BoundMethod)jedi.inference.value.instancerP   r   
as_context)r,   rN   class_valuerP   s       r.   	py__get__zFunctionMixin.py__get__@   sU    ======TF###X{/E/E/G/GNNOPPPr0   c                 N      fd j                                         D             S )Nc                 :    g | ]}t          |j                  S r=   )r   name.0paramr,   s     r.   
<listcomp>z1FunctionMixin.get_param_names.<locals>.<listcomp>H   s5     : : : #444 : : :r0   )r2   
get_paramsr4   s   `r.   get_param_nameszFunctionMixin.get_param_namesG   s<    : : : :!^6688: : : 	:r0   c                 t    | j         j        dk    rt          |           S t          | | j         j                  S )Nlambdef)r2   typer&   r   rW   r4   s    r.   rW   zFunctionMixin.nameK   s5    >)++d###t~2333r0   c                     dS )NTr=   r4   s    r.   is_functionzFunctionMixin.is_functionQ   s    tr0   c                     | j         j        S r)   )rW   r:   r4   s    r.   rC   zFunctionMixin.py__name__T   s    y$$r0   Tc                    | j         j        }|d |                                 }|                                }|                                }|                                 dd                    fd|                                D                       z  z   }||S nQ|                    d          }|                                 | j         j	        d                             d          z   }|dz   |z   S )	Nc                     | j         }|                                                                 }||d|z   z  }| j        !|d| j                            d          z   z  }|S )Nz: =Finclude_prefix)r:   r6   get_type_hintdefault_nodeget_code)rE   s
annotations      r.   param_name_to_strz6FunctionMixin.get_type_hint.<locals>.param_name_to_strZ   sf    MWWYY4466
)
**A>-q~66e6LLLLAr0   z(%s), c                 &    g | ]} |          S r=   r=   )rY   rE   rn   s     r.   r[   z/FunctionMixin.get_type_hint.<locals>.<listcomp>f   s4     ; ; ; "!!$$; ; ;r0   Frg      z -> )
r2   rm   rR   r6   ri   rC   joinr]   rk   children)r,   add_class_inforeturn_annotationfunction_executionresultreturn_hintbodyrn   s          @r.   ri   zFunctionMixin.get_type_hintW   s    N5$   "&!2!2'--//F ..00K??$$v		 ; ; ; ;+;;==; ; ; 1 1 ( D " # ,44E4JJK??$$t~'>q'A'J'JZ_'J'`'``Df}{**r0   c                 T    |                      |          }|                                S r)   )rR   r6   )r,   	argumentsrv   s      r.   
py__call__zFunctionMixin.py__call__r   s&    !__Y77!'')))r0   c                 D    |t          |           S t          | |          S r)   )AnonymousFunctionExecutionFunctionExecutionContext)r,   r{   s     r.   _as_contextzFunctionMixin._as_contextv   s&    -d333'i888r0   c                 >    d |                                  D             S )Nc                 ,    g | ]}t          |          S r=   r   rY   fs     r.   r[   z0FunctionMixin.get_signatures.<locals>.<listcomp>|   s     IIIQa  IIIr0   )get_signature_functionsr4   s    r.   get_signatureszFunctionMixin.get_signatures{   s"    II$*F*F*H*HIIIIr0   r)   T)r7   r8   r9   r;   rL   rT   r]   r<   rW   rb   rC   ri   r|   r   r   r=   r0   r.   rG   rG   8   s        HG G G G
Q Q Q: : : 4 4 X4
  % % %+ + + +6* * *9 9 9 9
J J J J Jr0   rG   c                   6    e Zd Zed             Zd Zd Zd ZdS )FunctionValuec           	           fdt          t          |                    }                                s                                r/j                                                                        / |          }|r6t          |t          t          fd|D                                           S |S )Nc                                                      rt          j        |           S  j        |           S )N)r+   r2   )rA   MethodValueinference_state)r2   rM   contextr+   s    r.   createz*FunctionValue.from_context.<locals>.create   sd    !! "+#1'	    s+#1'   r0   c                 &    g | ]} |          S r=   r=   )rY   r   r   s     r.   r[   z.FunctionValue.from_context.<locals>.<listcomp>   s!    CCCQvvayyCCCr0   )list_find_overload_functionsrA   is_instancer+   OverloadedFunctionValuereversed)rM   r   r2   overloaded_funcsr'   r   r+   s   ``   @@r.   from_contextzFunctionValue.from_context   s    	 	 	 	 	 	 	   8) L LMM %%'' 	;>+E+E+G+G 	;+:N %%'' 	;>+E+E+G+G 	; 6)$$ 	*XCCCC2BCCCDDEE  
 r0   c                 6    t          | j        dd          \  }|S )NtypesFunctionType)r"   r   )r,   cs     r.   rJ   zFunctionValue.py__class__   s    ()=wWWr0   c                     | j         S r)   )r+   r4   s    r.   get_default_param_contextz'FunctionValue.get_default_param_context   s    ""r0   c                     | gS r)   r=   r4   s    r.   r   z%FunctionValue.get_signature_functions   s	    vr0   N)r7   r8   r9   classmethodr   rJ   r   r   r=   r0   r.   r   r      s[          [@  # # #    r0   r   )	metaclassc                   $     e Zd Z fdZd Z xZS )FunctionNameInClassc                 X    t                                          |           || _        d S r)   )superr/   _class_context)r,   class_contextrW   	__class__s      r.   r/   zFunctionNameInClass.__init__   s)    +r0   c                 4    | j                                         S r)   )r   	get_valuer4   s    r.   get_defining_qualified_valuez0FunctionNameInClass.get_defining_qualified_value   s    ",,...r0   )r7   r8   r9   r/   r   __classcell__r   s   @r.   r   r      sG        , , , , ,/ / / / / / /r0   r   c                   D     e Zd Z fdZd Zd Ze fd            Z xZS )r   c                 P     t                      j        |g|R i | || _        d S r)   )r   r/   r   )r,   r   r   argskwargsr   s        r.   r/   zMethodValue.__init__   s8    :4:::6:::*r0   c                     | j         S r)   )r   r4   s    r.   r   z%MethodValue.get_default_param_context   s    !!r0   c                 l    | j                                         }|d S ||                                 fz   S r)   )r   rB   rC   )r,   namess     r.   rB   zMethodValue.get_qualified_names   s:     "6688=4))+++r0   c                 P    t          | j        t                      j                  S r)   )r   r   r   rW   )r,   r   s    r.   rW   zMethodValue.name   s    "4#5uww|DDDr0   )	r7   r8   r9   r/   r   rB   r<   rW   r   r   s   @r.   r   r      s        + + + + +" " ", , , E E E E XE E E E Er0   r   c                       e Zd Zd Z ee           ej                    dd                        Zd Z	 ej         e
g                     dd            ZddZd Zd	 Zd
S )BaseFunctionExecutionContextc                     t           r)   )NotImplementedErrorr4   s    r.   infer_annotationsz.BaseFunctionExecutionContext.infer_annotations   s    !!r0   )defaultFc                 6   | j         }|j        dk    r |                     |j        d                   S |rt          }t          | j        |          }nH|                                 }|r|S |t          j	        | j
                  z  }|                                }|D ]}|r5|t          j        d |                     |          D                       z  }9t          j        | ||          }|t          j        u rt%          j        d|           nd	 |j        }||                     |d                   z  }n=# t(          $ r0 t+          j        | j        d          }|t          |g          z  }Y nw xY w|t          j        u rt%          j        d|            n|S )Nr_   c              3   >   K   | ]}|                                 V  d S r)   r6   rY   
lazy_values     r.   	<genexpr>zABaseFunctionExecutionContext.get_return_values.<locals>.<genexpr>   sB       0 0" $$&&0 0 0 0 0 0r0   zReturn unreachable: %s   NonezReturn reachable: %s)r2   r`   
infer_noders   r   r!   r   r   r	   infer_return_types_valueiter_return_stmtsr   	from_sets_get_yield_lazy_valuer
   reachability_checkUNREACHABLEr   dbgAttributeErrorr   builtin_from_name	REACHABLE)	r,   check_yieldsfuncdef	value_setreturnsrcheckrs   ctxs	            r.   get_return_valuesz.BaseFunctionExecutionContext.get_return_values   s    .<9$$??7#3B#7888 
	2!I%d&:GDDGG..00I ! ! 6t{CCCI//11G 	 	A X/ 0 0&*&@&@&C&C0 0 0   		
 &8wJJM555I6::::B#$:
 "T__Xa[%A%AA			 * 5 5 5&89MvVV!Xse__4			5
 M333I4a888E 4 s   D667E0/E0c              #   b  K   |j         dk    r-t          j        | j        d          }t	          |          V  d S |j        d         }|j         dk    rJt          | |j        d                   }|                                                    |          E d {V  d S t          | |          V  d S )Nkeywordr   r   	yield_arg)
r`   r   r   r   r   rs   r   r6   iterater   )r,   
yield_exprr   nodecns        r.   r   z2BaseFunctionExecutionContext._get_yield_lazy_value   s      ?i'',T-A6JJC %%%%%F"1%9###D$-*:;;Bxxzz))"-----------d+++++++r0   c              #   R  K   d t          | j        | j                  D             }g }d }|D ]\  }}|j        }|j        dk    r|j        }|j        dk    r`|| j        k    rUt          j        |          rA||k    r"|d         d                             |           ny|                    ||gf           n`|| j        k    r|                    d |gf           n<|                     d          }|r!t          |dt          d	          
          V   d S |}|D ]
\  }}	|!|	D ]}|                     |          E d {V  )|                                }
t          | |
          }|                                                    |          }t!          |          }|D ]}t#          |j        d         j                  |                                i}|                     ||          5  |	D ]}|                     |          E d {V  	 d d d            n# 1 swxY w Y   d S )Nc           
      B    g | ]}|t          j        |d ddd          fS )for_stmtr   
while_stmtif_stmt)r   search_ancestor)rY   ys     r.   r[   zFBaseFunctionExecutionContext.get_yield_lazy_values.<locals>.<listcomp>	  sP     W W W 4/:y0<iI I J W W Wr0   suiter   r   r   T)r   r   inf)minmax)r!   r   r2   parentr`   r    for_stmt_defines_one_nameappendr   r   floatr   get_testlistr   r6   r   r   strrs   valuepredefine_names)r,   is_asyncfor_parentsyields_orderlast_for_stmtyield_r   r   r   yields
input_noder   orderedr   dctyield_in_same_for_stmts                   r.   get_yield_lazy_valuesz2BaseFunctionExecutionContext.get_yield_lazy_values  s     W W /0Ddn U UW W W
  + 	% 	%FH _F{g%%}
**v/G/G$>xHH 0H},, $Q'..v6666 ''F8(<====T^++##TF8$45555..D.AA J)%QE%LLIIIIII$MM , 	Z 	ZHf$ B BF#99&AAAAAAAAAAB &2244
'j99((**,,R00w--") Z ZJx039::J<L<L<N<NOC--h<< Z Z6< Z Z2'+'A'ABX'Y'YYYYYYYYYZZ Z Z Z Z Z Z Z Z Z Z Z Z Z ZZ	Z 	Zs   +!HH Hc                 b    t          j        d |                                 D                       S )Nc              3   >   K   | ]}|                                 V  d S r)   r   r   s     r.   r   zBBaseFunctionExecutionContext.merge_yield_values.<locals>.<genexpr>6  sB       "
 "
 "
 "
 "
 "
 "
 "
r0   )r   r   r   )r,   r   s     r.   merge_yield_valuesz/BaseFunctionExecutionContext.merge_yield_values5  s?    ! "
 "
"88::"
 "
 "
 
 
 	
r0   c                 P    t          t          | j        | j                            S r)   )boolr!   r   r2   r4   s    r.   is_generatorz)BaseFunctionExecutionContext.is_generator;  s    OD$8$.IIJJJr0   c                    | j         }| j        j        j        dv }ddlm |r
|                                 ry|j                            d          }| 	                    d          }|
                                t          ft          fd|D                                                       S |j                            d          }|                                 }|
                                t          t          ft          fd	|D                                                       S |                                 r7|                                 s#t          t!          j        ||           g          S |                                 S )
z4
        Created to be used by inheritance.
        )
async_stmtasync_funcdefr   )GenericClassAsyncGeneratorT)r   c              3   J   K   | ]} |t                              V  d S r)   r#   rY   r   r  genericss     r.   r   z5BaseFunctionExecutionContext.infer.<locals>.<genexpr>N  sL           !L$7$A$ABB           r0   	Coroutinec              3   J   K   | ]} |t                              V  d S r)   r#   r	  s     r.   r   z5BaseFunctionExecutionContext.infer.<locals>.<genexpr>W  sI          GHLL$7$A$ABB           r0   )r   r2   r   r`   jedi.inference.gradual.baser  r  typing_modulepy__getattribute__r   rJ   r   r   execute_annotationr   r   r   	Generator)	r,   r   is_coroutineasync_generator_classesyield_valuesasync_classesreturn_valuesr  r
  s	          @@r.   r6   z"BaseFunctionExecutionContext.infer>  s    .~,15TT<<<<<< 	0  "" '*9*G''(899 (  $666EE(4466	B          4        %$&&'
 !0 = P PQ\ ] ] $ 6 6 8 8)5577IN          LY       $$&&'
   "" 04+A+A+C+C 0!3OT!J!J KLLL--///r0   N)F)r7   r8   r9   r   r   r   r   execution_recursion_decoratorr   r   iterr   r   r  r6   r=   r0   r.   r   r      s        " " " "!)444,Y,..& & & /. 54&P, , , -Y,TT"XX>>>,Z ,Z ,Z ?>,Z\
 
 
 
K K K!0 !0 !0 !0 !0r0   r   c                   2     e Zd Z fdZddZd Zd Z xZS )r   c                 X    t                                          |           || _        d S r)   )r   r/   
_arguments)r,   function_valuer{   r   s      r.   r/   z!FunctionExecutionContext.__init__c  s&    (((#r0   Nc              #   J   K   t          | | j        ||| j                  V  d S )N)until_positionrI   r{   )r   r   r  r,   r  rI   s      r.   rL   z$FunctionExecutionContext.get_filtersg  sC      %$+)%o	
 
 
 	
 	
 	
 	
 	
r0   c                 :    ddl m}  || j        | j                  S )Nr   )r   )!jedi.inference.gradual.annotationr   r   r  )r,   r   s     r.   r   z*FunctionExecutionContext.infer_annotationso  s+    HHHHHH!!$+t???r0   c                 X      fd j         j                                        D             S )Nc                 P    g | ]"}t          j        |j        j                  #S r=   )r   r   rW   r  rX   s     r.   r[   z<FunctionExecutionContext.get_param_names.<locals>.<listcomp>t  s;     
 
 
 dk5:t??
 
 
r0   )r   r2   r\   r4   s   `r.   r]   z(FunctionExecutionContext.get_param_namess  s?    
 
 
 
.99;;
 
 
 	
r0   NN)r7   r8   r9   r/   rL   r   r]   r   r   s   @r.   r   r   b  sm        $ $ $ $ $
 
 
 
@ @ @
 
 
 
 
 
 
r0   r   c                   "    e Zd Zd ZddZd ZdS )r~   c                     t           S r)   )r   r4   s    r.   r   z,AnonymousFunctionExecution.infer_annotations{  s
     r0   Nc              #   >   K   t          | | j        ||          V  d S )N)r  rI   )r   r   r  s      r.   rL   z&AnonymousFunctionExecution.get_filters  s>      .$+)%
 
 
 	
 	
 	
 	
 	
r0   c                 4    | j                                         S r)   )r   r]   r4   s    r.   r]   z*AnonymousFunctionExecution.get_param_names  s    {**,,,r0   r$  )r7   r8   r9   r   rL   r]   r=   r0   r.   r~   r~   z  sF          

 
 
 
- - - - -r0   r~   c                   2     e Zd Z fdZd Zd ZddZ xZS )r   c                 X    t                                          |           || _        d S r)   )r   r/   _overloaded_functions)r,   r'   overloaded_functionsr   s      r.   r/   z OverloadedFunctionValue.__init__  s)    """%9"""r0   c                    t          j        d| j        d           g }|                                 D ]\}|j                            |          }|                    |           |                    |          r|                                c S ]| j	        j
        rt          S t          j        d |D                       S )NzExecute overloaded function %sBLUE)colorc              3   >   K   | ]}|                                 V  d S r)   r   )rY   fes     r.   r   z5OverloadedFunctionValue.py__call__.<locals>.<genexpr>  s*      !K!K"((**!K!K!K!K!K!Kr0   )r   r   _wrapped_valuer   r   rR   r   matches_signaturer6   r   is_analysisr   r   r   )r,   r{   function_executions	signaturerv   s        r.   r|   z"OverloadedFunctionValue.py__call__  s    	2D4GvVVVV ,,.. 	2 	2I!*!;!;I!F!F&&'9:::**955 2)//111112 + 	!!K!K7J!K!K!KKKKr0   c                     | j         S r)   )r+  r4   s    r.   r   z/OverloadedFunctionValue.get_signature_functions  s    ))r0   Tc                 P    dd                     d | j        D                       z  S )Nz	Union[%s]ro   c              3   >   K   | ]}|                                 V  d S r)   )ri   r   s     r.   r   z8OverloadedFunctionValue.get_type_hint.<locals>.<genexpr>  s,      &]&]Qq'8'8&]&]&]&]&]&]r0   )rr   r+  )r,   rt   s     r.   ri   z%OverloadedFunctionValue.get_type_hint  s+    TYY&]&]$B\&]&]&]]]]]r0   r   )r7   r8   r9   r/   r|   r   ri   r   r   s   @r.   r   r     su        : : : : :L L L* * *^ ^ ^ ^ ^ ^ ^ ^r0   r   c              #   R  K   d }|j         dk    rd S  ||          r|V  	 t          | |j                  }|                    |j        j                  }t          |t                    sJ |sd S d}|D ],}|j        j	        }|j         dk    r ||          r|}d}|V  -|sd S )Nc                     | j         j        dk    rS| j         j        d         }|j        dk    r|g}n|j        }|D ](}|j        d         }|j        dk    r|j        dk    r dS )dS )	N	decoratedr   	decoratorr   rW   overloadTF)r   r`   rs   r   )r   
decoratorsr=  dotted_names       r.   _is_overload_decoratedz8_find_overload_functions.<locals>._is_overload_decorated  s    >+-- 03J+--(\

'0
'    	'03#v--+2Cz2Q2Q44ur0   r_   T)r  Fr   )
r`   r   r3   getrW   r   
isinstancer   	tree_namer   )r   r2   rA  filterr   foundrW   r   s           r.   r   r     s        ~""i(( !$.
 
 
 

9>/00%&&&&& 	E 	 	Dn+G|y((-C-CG-L-L(#	 	E'r0   N)9parso.pythonr   jedir   jedi.inference.cacher   r   jedi.inferencer   r   r	   r
   jedi.inference.signaturer   jedi.inference.filtersr   r   r   jedi.inference.namesr   r   r   r   r   jedi.inference.base_valuer   r   r   r   r   jedi.inference.lazy_valuer   r   r   jedi.inference.contextr   r   jedi.inference.valuer   r    jedi.inference.parser_cacher!   jedi.inference.helpersr"   jedi.inference.gradual.genericsr$   r&   r?   rG   r   r   r   r   r   r~   r   r   r=   r0   r.   <module>rU     s               N N N N N N N N # # # # # # $ $ $ $ $ $ % % % % % % ( ( ( ( ( ( 2 2 2 2 2 2% % % % % % % % % %/ / / / / / / / / / / / / /& & & & & & & & & & & & & &          A A A A A A A A ) ) ) ) ) )       7 7 7 7 7 7 > > > > > > ? ? ? ? ? ?. . . . .' . . .     9   DJ DJ DJ DJ DJ DJ DJ DJN* * * * *M#7? * * * *Z/ / / / /+ / / /E E E E E- E E E*U0 U0 U0 U0 U0<1A U0 U0 U0p
 
 
 
 
; 
 
 
0- - - - -!= - - -"^ ^ ^ ^ ^m\ ^ ^ ^4( ( ( ( (r0   