
    f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( Z8y))*    )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                   0    e Zd ZdZdZd Zed        Zd Zy)
LambdaNamez<lambda>functionc                 4    || _         |j                  | _        y N)_lambda_valueparent_context)selflambda_values     X/var/www/cvtools/html/venv/lib/python3.12/site-packages/jedi/inference/value/function.py__init__zLambdaName.__init__   s    )*99    c                 B    | j                   j                  j                  S r(   )r)   	tree_node	start_posr+   s    r-   r2   zLambdaName.start_pos"   s    !!++555r/   c                 .    t        | j                  g      S r(   )r   r)   r3   s    r-   inferzLambdaName.infer&   s    ++,--r/   N)	__name__
__module____qualname__string_nameapi_typer.   propertyr2   r5    r/   r-   r%   r%      s*    KH: 6 6.r/   r%   c                       e Zd Zd Zy)FunctionAndClassBasec                     | j                   j                         r1| j                   j                         }|y || j                         fz   S | j                   j	                         r| j                         fS y r(   )r*   is_classget_qualified_names
py__name__	is_module)r+   ns     r-   rA   z(FunctionAndClassBase.get_qualified_names+   sj    '')##779Ay)+++  **,OO%''r/   N)r6   r7   r8   rA   r<   r/   r-   r>   r>   *   s    
r/   r>   c                   \    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y)FunctionMixinr&   Nc              #      K   | j                         }|j                         D ]  }|j                  |      E d {     y 7 w)N)origin_scope)py__class__execute_with_valuesget_filters)r+   rH   clsinstances       r-   rK   zFunctionMixin.get_filters;   sH      //1 	GH+++FFF	GFs   9AAAc                 n    ddl m} |t        | g      S t         |||j                         |       g      S )Nr   )BoundMethod)jedi.inference.value.instancerO   r   
as_context)r+   rM   class_valuerO   s       r-   	py__get__zFunctionMixin.py__get__@   s8    =TF##X{/E/E/GNOPPr/   c                     | j                   j                         D cg c]  }t        | |j                         c}S c c}w r(   )r1   
get_paramsr   namer+   params     r-   get_param_nameszFunctionMixin.get_param_namesG   s:    !^^668: #44 : 	: :s   =c                     | j                   j                  dk(  rt        |       S t        | | j                   j                        S )Nlambdef)r1   typer%   r   rV   r3   s    r-   rV   zFunctionMixin.nameK   s6    >>)+d##t~~2233r/   c                      y)NTr<   r3   s    r-   is_functionzFunctionMixin.is_functionQ   s    r/   c                 .    | j                   j                  S r(   )rV   r9   r3   s    r-   rB   zFunctionMixin.py__name__T   s    yy$$$r/   c           
         | j                   j                  }|~d }| j                         }|j                         }|j	                         }| j                         ddj                  |j                         D cg c]
  } ||       c}      z  z   }|N|S |j                  d      }| j                         | j                   j                  d   j                  d      z   }|dz   |z   S c c}w )Nc                     | j                   }| j                         j                         }||d|z   z  }| j                  "|d| j                  j	                  d      z   z  }|S )Nz: =Finclude_prefix)r9   r5   get_type_hintdefault_nodeget_code)rD   s
annotations      r-   param_name_to_strz6FunctionMixin.get_type_hint.<locals>.param_name_to_strZ   sd    MMWWY446
)
**A>>-q~~66e6LLLAr/   z(%s), Frc      z -> )
r1   ri   rQ   r5   re   rB   joinrY   rg   children)	r+   add_class_inforeturn_annotationrj   function_executionresultreturn_hintrD   bodys	            r-   re   zFunctionMixin.get_type_hintW   s     NN55$ "&!2'--/F ..0K??$v		+;;=; "!$; 1 ( D "+44E4JK??$t~~'>'>q'A'J'JZ_'J'``Df}{**;s   9C+c                 D    | j                  |      }|j                         S r(   )rQ   r5   )r+   	argumentsrq   s      r-   
py__call__zFunctionMixin.py__call__r   s     !__Y7!''))r/   c                 4    |t        |       S t        | |      S r(   )AnonymousFunctionExecutionFunctionExecutionContext)r+   rv   s     r-   _as_contextzFunctionMixin._as_contextv   s     -d33'i88r/   c                 Z    | j                         D cg c]  }t        |       c}S c c}w r(   )get_signature_functionsr   )r+   fs     r-   get_signatureszFunctionMixin.get_signatures{   s$    *.*F*F*HIQa IIIs   (r(   T)r6   r7   r8   r:   rK   rS   rY   r;   rV   r^   rB   re   rw   r{   r   r<   r/   r-   rF   rF   8   sK    HG
Q: 4 4
%+6*9
Jr/   rF   c                   .    e Zd Zed        Zd Zd Zd Zy)FunctionValuec                 f     fd}t        t        |            }j                         sj                         r.j                  j                         rj                         r. ||      }|r2t        |t        t        |D cg c]
  } ||       c}                  S |S c c}w )Nc                     j                         rt        j                  |       S  j                  |       S )N)r*   r1   )r@   MethodValueinference_state)r1   rL   contextr*   s    r-   createz*FunctionValue.from_context.<locals>.create   sL    !"++#1'	  ++#1' r/   )list_find_overload_functionsr@   is_instancer*   OverloadedFunctionValuereversed)rL   r   r1   r   overloaded_funcsr&   r~   r*   s   ``     @r-   from_contextzFunctionValue.from_context   s    	   8) LM %%'>+E+E+G+::N %%'>+E+E+G )$*X2BCQvayCDE 
  Ds   B.c                 8    t        | j                  dd      \  }|S )NtypesFunctionType)r!   r   )r+   cs     r-   rI   zFunctionValue.py__class__   s    ()=)=wWr/   c                     | j                   S r(   )r*   r3   s    r-   get_default_param_contextz'FunctionValue.get_default_param_context   s    """r/   c                     | gS r(   r<   r3   s    r-   r}   z%FunctionValue.get_signature_functions   s	    vr/   N)r6   r7   r8   classmethodr   rI   r   r}   r<   r/   r-   r   r      s$     @#r/   r   )	metaclassc                   $     e Zd Z fdZd Z xZS )FunctionNameInClassc                 2    t         |   |       || _        y r(   )superr.   _class_context)r+   class_contextrV   	__class__s      r-   r.   zFunctionNameInClass.__init__   s    +r/   c                 6    | j                   j                         S r(   )r   	get_valuer3   s    r-   get_defining_qualified_valuez0FunctionNameInClass.get_defining_qualified_value   s    "",,..r/   )r6   r7   r8   r.   r   __classcell__r   s   @r-   r   r      s    ,/r/   r   c                   >     e Zd Z fdZd Zd Ze fd       Z xZS )r   c                 :    t        |   |g|i | || _        y r(   )r   r.   r   )r+   r   r   argskwargsr   s        r-   r.   zMethodValue.__init__   s"    :4:6:*r/   c                     | j                   S r(   )r   r3   s    r-   r   z%MethodValue.get_default_param_context   s    !!!r/   c                 d    | j                   j                         }|y || j                         fz   S r(   )r   rA   rB   )r+   namess     r-   rA   zMethodValue.get_qualified_names   s5     ""668=)+++r/   c                 @    t        | j                  t        |         S r(   )r   r   r   rV   )r+   r   s    r-   rV   zMethodValue.name   s    "4#5#5uw|DDr/   )	r6   r7   r8   r.   r   rA   r;   rV   r   r   s   @r-   r   r      s(    +", E Er/   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y	)BaseFunctionExecutionContextc                     t         r(   )NotImplementedErrorr3   s    r-   infer_annotationsz.BaseFunctionExecutionContext.infer_annotations   s    !!r/   )defaultc                 L   | j                   }|j                  dk(  r| j                  |j                  d         S |rt        }t        | j                  |      }nF| j                         }|r|S |t        j                  | j                        z  }|j                         }|D ]  }|r/|t        j                  d | j                  |      D              z  }4t        j                   | ||      }|t        j"                  u rt%        j&                  d|       n$	 |j                  }|| j                  |d         z  }|t        j.                  u st%        j&                  d|        |S  |S # t(        $ r2 t+        j,                  | j                  d      }|t        |g      z  }Y iw xY w)Nr[   c              3   <   K   | ]  }|j                           y wr(   r5   .0
lazy_values     r-   	<genexpr>zABaseFunctionExecutionContext.get_return_values.<locals>.<genexpr>   s!      0" $$&0   zReturn unreachable: %s   NonezReturn reachable: %s)r1   r\   
infer_nodern   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checkrn   ctxs	            r-   get_return_valuesz.BaseFunctionExecutionContext.get_return_values   s    ..<<9$??7#3#3B#788!I%d&:&:GDG..0I ! 66t{{CCI//1G 	AX// 0&*&@&@&C0  	
 &88wJM555II6:B#$::
 "T__Xa[%AA	M333II4a8+	*  * 5&889M9MvV!Xse_4	5s   E((8F#"F#c              #   d  K   |j                   dk(  r.t        j                  | j                  d      }t	        |       y |j
                  d   }|j                   dk(  rAt        | |j
                  d         }|j                         j                  |      E d {    y t        | |       y 7 w)Nkeywordr   r   	yield_arg)
r\   r   r   r   r   rn   r   r5   iterater   )r+   
yield_exprr   nodecns        r-   r   z2BaseFunctionExecutionContext._get_yield_lazy_value   s     ??i',,T-A-A6JC %%""1%99##D$--*:;Bxxz))"---d++ .s   BB0B.B0c              #   p  K   t        | j                  | j                        D cg c]  }|t        j                  |dddd      f }}g }d }|D ]  \  }}|j
                  }|j                  dk(  r|j
                  }|j                  dk(  rV|| j                  k(  rGt        j                  |      r2||k(  r|d   d   j                  |       nh|j                  ||gf       nS|| j                  k(  r|j                  d |gf       n/| j                  d	      }	|	rt        |	d
t        d              y |} |D ]  \  }}
|!|
D ]  }| j                  |      E d {     )|j                         }t        | |      }|j!                         j#                  |      }t%        |      }|D ]p  }t'        |j(                  d   j*                        |j!                         i}| j-                  ||      5  |
D ]  }| j                  |      E d {     	 d d d        r  y c c}w 7 7 # 1 sw Y   xY ww)Nfor_stmtr   
while_stmtif_stmtsuiter   r   T)r   r   inf)minmax)r    r   r1   r   search_ancestorparentr\   r   for_stmt_defines_one_nameappendr   r   floatr   get_testlistr   r5   r   r   strrn   valuepredefine_names)r+   is_asyncy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  sf    
 !00D0Ddnn UW 4//:y0<iI J W W
  + 	%FH __F{{g%}}
*v/G$>>xH}, $Q'..v6 ''F8(<=T^^+##TF8$45..D.A)%QE%LII$M'	%* !- 	ZHf$ BF#99&AAAB &224
'j9((*,,R0w-") ZJx00399:J<L<L<NOC--h< Z6< Z2'+'A'ABX'YYYZZ ZZ	Z9W@ B ZZ ZsH   #H6"H!DH6H&BH62H*H(H*H6(H**H3/H6c                 V    t        j                  d | j                         D              S )Nc              3   <   K   | ]  }|j                           y wr(   r   r   s     r-   r   zBBaseFunctionExecutionContext.merge_yield_values.<locals>.<genexpr>6  s!      "
 "
r   )r   r   r   )r+   r   s     r-   merge_yield_valuesz/BaseFunctionExecutionContext.merge_yield_values5  s+    !! "
"88:"
 
 	
r/   c                 T    t        t        | j                  | j                              S r(   )boolr    r   r1   r3   s    r-   is_generatorz)BaseFunctionExecutionContext.is_generator;  s    OD$8$8$..IJJr/   c                    | j                   }| j                  j                  j                  dv }ddlm |r| j                         rf|j                  j                  d      }| j                  d      }|j                         t        ft        fd|D              j                         S |j                  j                  d      }| j                         }|j                         t        t        ft        fd	|D              j                         S | j                         r0| j                         s t        t!        j"                  ||       g      S | j                         S )
z4
        Created to be used by inheritance.
        )
async_stmtasync_funcdefr   )GenericClassAsyncGeneratorT)r   c              3   B   K   | ]  } |t                      y wr(   r"   r   r   r   genericss     r-   r   z5BaseFunctionExecutionContext.infer.<locals>.<genexpr>N  s&        !$7$AB    	Coroutinec              3   B   K   | ]  } |t                      y wr(   r"   r  s     r-   r   z5BaseFunctionExecutionContext.infer.<locals>.<genexpr>W  s#       GHL$7$AB r  )r   r1   r   r\   jedi.inference.gradual.baser   r   typing_modulepy__getattribute__r   rI   r   r   execute_annotationr   r   r   	Generator)	r+   r   is_coroutineasync_generator_classesyield_valuesasync_classesreturn_valuesr   r  s	          @@r-   r5   z"BaseFunctionExecutionContext.infer>  sF    ..~~,,115TT<  "*9*G*G''(89 (  $666E(446	B  4   %$&'
 !0 = = P PQ\ ] $ 6 6 8)557IN  LY  $$&'
   "4+A+A+C!3!3OT!J KLL--//r/   N)F)r6   r7   r8   r   r   r   r   execution_recursion_decoratorr   r   iterr   r   r   r5   r<   r/   r-   r   r      sq    " ")4,Y,,.& / 5&P, -Y,,T"X>,Z ?,Z\
K!0r/   r   c                   2     e Zd Z fdZddZd Zd Z xZS )rz   c                 2    t         |   |       || _        y r(   )r   r.   
_arguments)r+   function_valuerv   r   s      r-   r.   z!FunctionExecutionContext.__init__c  s    (#r/   c              #   X   K   t        | | j                  ||| j                         y w)N)until_positionrH   rv   )r   r   r  r+   r  rH   s      r-   rK   z$FunctionExecutionContext.get_filtersg  s)     %$++)%oo	
 	
s   (*c                 H    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!$++t??r/   c                     | j                   j                  j                         D cg c]-  }t        | j                   |j                  | j
                        / c}S c c}w r(   )r   r1   rU   r   rV   r  rW   s     r-   rY   z(FunctionExecutionContext.get_param_namess  sL     ..99;
 dkk5::t?
 	
 
s   2ANN)r6   r7   r8   r.   rK   r   rY   r   r   s   @r-   rz   rz   b  s    $
@
r/   rz   c                        e Zd Zd ZddZd Zy)ry   c                     t         S r(   )r   r3   s    r-   r   z,AnonymousFunctionExecution.infer_annotations{  s
     r/   Nc              #   B   K   t        | | j                  ||       y w)N)r  rH   )r   r   r  s      r-   rK   z&AnonymousFunctionExecution.get_filters  s"     .$++)%
 	
s   c                 6    | j                   j                         S r(   )r   rY   r3   s    r-   rY   z*AnonymousFunctionExecution.get_param_names  s    {{**,,r/   r  )r6   r7   r8   r   rK   rY   r<   r/   r-   ry   ry   z  s    

-r/   ry   c                   2     e Zd Z fdZd Zd ZddZ xZS )r   c                 2    t         |   |       || _        y r(   )r   r.   _overloaded_functions)r+   r&   overloaded_functionsr   s      r-   r.   z OverloadedFunctionValue.__init__  s    "%9"r/   c                    t        j                  d| j                  d       g }| j                         D ]Q  }|j                  j                  |      }|j                  |       |j                  |      sA|j                         c S  | j                  j                  rt        S t        j                  d |D              S )NzExecute overloaded function %sBLUE)colorc              3   <   K   | ]  }|j                           y wr(   r   )r   fes     r-   r   z5OverloadedFunctionValue.py__call__.<locals>.<genexpr>  s     !K"((*!Kr   )r   r   _wrapped_valuer   r   rQ   r   matches_signaturer5   r   is_analysisr   r   r   )r+   rv   function_executions	signaturerq   s        r-   rw   z"OverloadedFunctionValue.py__call__  s    		2D4G4GvV ,,. 	2I!*!;!;I!F&&'9:**95)//11		2 ++!!!K7J!KKKr/   c                     | j                   S r(   )r$  r3   s    r-   r}   z/OverloadedFunctionValue.get_signature_functions  s    )))r/   c                 L    ddj                  d | j                  D              z  S )Nz	Union[%s]rk   c              3   <   K   | ]  }|j                           y wr(   )re   )r   r~   s     r-   r   z8OverloadedFunctionValue.get_type_hint.<locals>.<genexpr>  s     &]Qq'8&]r   )rm   r$  )r+   ro   s     r-   re   z%OverloadedFunctionValue.get_type_hint  s"    TYY&]$B\B\&]]]]r/   r   )r6   r7   r8   r.   rw   r}   re   r   r   s   @r-   r   r     s    :L*^r/   r   c              #   t  K   d }|j                   dk(  ry  ||      r| 	 t        | |j                        }|j                  |j                  j
                        }t        |t              sJ |sy d}|D ]9  }|j                  j                  }|j                   dk(  s) ||      s2|}d}| ; |sy w)Nc                    | j                   j                  dk(  ro| j                   j                  d   }|j                  dk(  r|g}n|j                  }|D ]2  }|j                  d   }|j                  dk(  s"|j                  dk(  s2 y y)	N	decoratedr   	decoratorr   rV   overloadTF)r   r\   rn   r   )r   
decoratorsr6  dotted_names       r-   _is_overload_decoratedz8_find_overload_functions.<locals>._is_overload_decorated  s    >>+- 003J+-(\
'00
'  	'003##v-+2C2Cz2Q	 
 r/   r[   T)r  Fr   )
r\   r   r2   getrV   r   
isinstancer   	tree_namer   )r   r1   r:  filterr   foundrV   r   s           r-   r   r     s      ~~"i(
!$..
 

9>>//0%&&& 	Dnn++G||y(-CG-L#		 ' s   BB8!B8*B8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>   rF   r   r   r   r   rz   ry   r   r   r<   r/   r-   <module>rN     s      N # $ % ( 2% %/ /& &  A )  7 > ?.' . 9 DJ DJN*M#7? *Z/+ /E- E*U0<1A U0p
; 
0-!= -"^m\ ^4(r/   