
    Dd
H                     l   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ eeeeeefZ eej                  Zej        ej        ej        ej        ej        ej         ej!        ej"        ej#        ej$        ej%        eej&        ej'        ej(        fZ) eej                  Z ee*j+                  Z,ej-        d         .                    e/          Z0 ee0d                   Z1 e/            Z2ej3        ej4        ej5        ej6        ej7        ej8        ej9        ej:        dZ;ej<        ej=        d	Z>e>?                    e;           ej        ej         ej"        ee,e1e@eAfZBe2fd
ZC edd          ZDd ZEd ZFd ZG G d d          ZHd ZId ZJ G d d          ZKd ZLdS )    N)
namedtuple)Path)Optional)getattr_static__dict____subclasshook__)z==z!=iszis not<z<=>z>=)+-c                     	 t          | |          \  }}t          |t                    rt          | |          S n# t          $ r |t
          u r |cY S w xY w|S N)r   
isinstanceALLOWED_DESCRIPTOR_ACCESSgetattrAttributeError	_sentinel)objnamedefaultattris_get_descriptors        >lib/python3.11/site-packages/jedi/inference/compiled/access.pysafe_getattrr   N   s    &"0d";"; d566 	& 3%%%	&    i 	 Ks   ; AASignatureParamz]name has_default default default_string has_annotation annotation annotation_string kind_namec                       fd}|S )Nc                 ^     |           }t          |          dk    r|d d         dz   }|S )N2   z..)len)selfrfuncs     r   wrapperzshorten_repr.<locals>.wrapperi   s8    DJJq66B; 	#2#A     )r#   r$   s   ` r   shorten_reprr'   h   s#        
 Nr%   c                 6    | j                             |          S r   )compiled_subprocessget_or_create_access_handle)inference_stater   s     r   create_accessr,   q   s    .JJ3OOOr%   c                    t           j        |c}t           _        	 t          |           n# t          $ r3 t	          j        d|d|dt          d           Y |t           _        d S t          $ r@ t	          j        dt          j	                    z  t          d           Y |t           _        d S w xY w	 |t           _        n# |t           _        w xY wt           j
        |         }t          | |          S )NzModule z not importable in path .   )
stacklevelzCannot import:
%s)syspath
__import__ImportErrorwarningswarnUserWarning	Exception	traceback
format_excmodulescreate_access_path)r+   dotted_namesys_pathtempmodules        r   load_modulerA   u   s   XxND#(;   6Akk888L	
 	
 	
 	

       	 9#7#9#99;ST	
 	
 	
 	
  	 " 4 [%Fov666s2   + C -B0C '9B0 C /B00C Cc                       e Zd Zd ZdS )
AccessPathc                     || _         d S r   )accessesr!   rE   s     r   __init__zAccessPath.__init__   s     r%   N)__name__
__module____qualname__rG   r&   r%   r   rC   rC      s#        ! ! ! ! !r%   rC   c                 d    t          | |          }t          |                                          S r   )r,   rC   get_access_path_tuples)r+   r   accesss      r   r<   r<      s+    ?C00Ff3355666r%   c                    t          j        |           rdS t          j        |           rdS t          j        |           s<t          j        |           s(t          j        |           st          j        |           rdS dS )Nclassr@   functioninstance)inspectisclassismodule	isbuiltinismethodismethoddescriptor
isfunctionr   s    r   get_api_typerZ      s    s w		#		 x		3		 7#3C#8#8 )#..292DS2I2Iz:r%   c                   ,   e Zd Zd Zd Zd Zd Zd Zdee	         fdZ
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd-dZefdZ d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d,S ).DirectObjectAccessc                 "    || _         || _        d S r   )_inference_state_obj)r!   r+   r   s      r   rG   zDirectObjectAccess.__init__   s     /			r%   c                 J    | j         j        d|                                 dS )N())	__class__rH   get_reprr!   s    r   __repr__zDirectObjectAccess.__repr__   s$    >222DMMOOOODDr%   c                 ,    t          | j        |          S r   r,   r^   r!   r   s     r   _create_accessz!DirectObjectAccess._create_access   s    T2C888r%   c                 ,    t          | j        |          S r   )r<   r^   ri   s     r   _create_access_pathz&DirectObjectAccess._create_access_path   s    !$"7===r%   c                 *    t          | j                  S r   )boolr_   re   s    r   
py__bool__zDirectObjectAccess.py__bool__   s    DIr%   returnc                 X    	 t          | j        j                  S # t          $ r Y d S w xY wr   )r   r_   __file__r   re   s    r   
py__file__zDirectObjectAccess.py__file__   s<    		*+++ 	 	 	44	s    
))c                 8    t          j        | j                  pdS )N )rR   getdocr_   re   s    r   	py__doc__zDirectObjectAccess.py__doc__   s    ~di((.B.r%   c                     t          | j                  rt          j        | j                  r| j        }n	 | j        j        }n# t
          $ r Y d S w xY w	 |j        S # t
          $ r Y d S w xY wr   )_is_class_instancer_   rR   rW   rc   r   rH   )r!   clss     r   
py__name__zDirectObjectAccess.py__name__   s    !$),, 		*4955		)CCi)!    tt
	< 	 	 	44	s#   A 
AAA 
A+*A+c                 ^     t           fd j        j        dd          D                       S )Nc              3   B   K   | ]}                     |          V  d S r   rl   ).0rz   r!   s     r   	<genexpr>z7DirectObjectAccess.py__mro__accesses.<locals>.<genexpr>   s1      TTsT--c22TTTTTTr%      )tupler_   __mro__re   s   `r   py__mro__accessesz$DirectObjectAccess.py__mro__accesses   s7    TTTTdi>OPQPRPR>STTTTTTr%   c                     t           j        t                    r% fd j                                        D             S t           j        t          t
          f          r fd j        D             S                                  r3t           j         j        j	                  }|
                                S 	  j        j        }t           j        |                                          }||gS n# t          $ r Y nw xY wd S )Nc                 :    g | ]}                     |          S r&   r~   r   vr!   s     r   
<listcomp>z>DirectObjectAccess.py__getitem__all_values.<locals>.<listcomp>   s'    LLLAD,,Q//LLLr%   c                 :    g | ]}                     |          S r&   r~   r   s     r   r   z>DirectObjectAccess.py__getitem__all_values.<locals>.<listcomp>   s'    CCCAD,,Q//CCCr%   )r   r_   dictvalueslistr   is_instancer\   r^   rc   py__getitem__all_values__getitem__get_return_annotationr   )r!   rz   getitem
annotations   `   r   r   z*DirectObjectAccess.py__getitem__all_values   s   di&& 	MLLLL9I9I9K9KLLLLdi$// 	DCCCCCCCC 	1$T%:DI<OPPC..000	$i+G ,D,A7KKaaccJ $"|#$	  	 	 	D	 ts   =C6 6
DDc                 |    t          | j                  t          vrd S |                     | j        |                   S r   )typer_   ALLOWED_GETITEM_TYPESrl   )r!   indexs     r   py__simple_getitem__z'DirectObjectAccess.py__simple_getitem__   s8    	??"77 	4''	%(8999r%   c                 n   	 | j         j        }t          | j        |                                          }||gS n# t
          $ r Y d S w xY wt          | j                   t          vrg S g }t          | j                   D ]5\  }}|dk    r n)|	                    | 
                    |                     6|S )N   )r_   __iter__r\   r^   r   r   r   r   	enumerateappendrl   )r!   iter_methodplstiparts         r   py__iter__listz!DirectObjectAccess.py__iter__list   s    	),K #4#8+FF\\^^A s
	  	 	 	44	 	??"77 	I ++ 	7 	7GAt2v JJt//556666
s   ; 
A	A	c                 @    |                      | j        j                  S r   )rl   r_   rc   re   s    r   py__class__zDirectObjectAccess.py__class__  s    ''	(;<<<r%   c                 4      fd j         j        D             S )Nc                 :    g | ]}                     |          S r&   r~   )r   baser!   s     r   r   z2DirectObjectAccess.py__bases__.<locals>.<listcomp>
  s'    OOO4((..OOOr%   )r_   	__bases__re   s   `r   py__bases__zDirectObjectAccess.py__bases__	  s"    OOOO49;NOOOOr%   c                     t          | j        dd           }t          |t                    rt	          d |D                       sd S |S )N__path__c              3   @   K   | ]}t          |t                    V  d S r   )r   str)r   r   s     r   r   z0DirectObjectAccess.py__path__.<locals>.<genexpr>  s,      ==!:a--======r%   )r   r_   r   r   all)r!   pathss     r   
py__path__zDirectObjectAccess.py__path__  sR    	:t44 %&& 	==u=====	4r%   c                    t          j        | j                  rt          | j                  S t	          | j        dd          dk    rt          | j                  S t          | j                  }|t
          k    rt
                              | j                  S t	          |dd          dk    rt          | j                  S t                              | j                  S )NrI   ru   r   builtins)rR   rT   r_   reprr   r   rf   object)r!   type_s     r   rd   zDirectObjectAccess.get_repr  s    DI&& 	#	??"	<<<<
J 	#	??"TYD= 	,==+++|R888JF 	#	??"ty)))r%   c                 4    t          j        | j                  S r   )rR   rS   r_   re   s    r   is_classzDirectObjectAccess.is_class&  s    ty)))r%   c                 f    t          j        | j                  pt          j        | j                  S r   )rR   rX   r_   rV   re   s    r   is_functionzDirectObjectAccess.is_function)  s'    !$),,K0@0K0KKr%   c                 4    t          j        | j                  S r   )rR   rT   r_   re   s    r   	is_modulezDirectObjectAccess.is_module,  s    	***r%   c                 *    t          | j                  S r   )ry   r_   re   s    r   r   zDirectObjectAccess.is_instance/  s    !$),,,r%   c                 4    t          j        | j                  S r   )rR   rW   r_   re   s    r   rW   z%DirectObjectAccess.ismethoddescriptor2  s    )$)444r%   c                     d }|                                  rdS  || j                  }|! |t          | j                            }|dS t          |                    d                    S )Nc           	      B    t          | dt          | dd                     S )NrJ   rH   )r   rY   s    r   try_to_get_namez?DirectObjectAccess.get_qualified_names.<locals>.try_to_get_name6  s     3Z0N0NOOOr%   r&   r.   )r   r_   r   r   split)r!   r   r   s      r   get_qualified_namesz&DirectObjectAccess.get_qualified_names5  s    	P 	P 	P >> 	2ty)) 	"?4	??33D rTZZ__%%%r%   c                 *    t          | j                  S r   )dirr_   re   s    r   r   zDirectObjectAccess.dirB  s    49~~r%   c                 R    	 t          | j                   dS # t          $ r Y dS w xY w)NTF)iterr_   	TypeErrorre   s    r   has_iterzDirectObjectAccess.has_iterE  s;    	OOO4 	 	 	55	s    
&&Tc                 ~   |sut          j        d          5  t          j        d           	 t          | j        |          dfcd d d            S # t
          $ r Y d d d            dS w xY w# 1 swxY w Y   	 t          | j        |          \  }}|rt          |          t          vrdS n# t          $ r Y dS w xY wdS )NTrecordalwaysF)FF)TT)TF)
r5   catch_warningssimplefilterhasattrr_   r8   r   r   r   r   )r!   r   safer   r   s        r   is_allowed_getattrz%DirectObjectAccess.is_allowed_getattrL  sZ    	( (555 ( (%h///("49d33U:( ( ( ( ( ( ( ( ! ( ( ( (( ( ( ( ( ( ( ((	( ( ( ( ( ( ( (	"&4TY&E&E#D# ! "T$ZZ7P%P " "z  	  	  	 <<	  {s@   A-A
A*A-)A**A--A14A19B, ,
B:9B:c                    	 t          j        d          5  t          j        d           t          | j        |          }d d d            n# 1 swxY w Y   n?# t
          $ r2}|t          u rt          |t                    r t          |}Y d }~nd }~ww xY w| 	                    |          }t          j        |          r|gS 	 |j        }|6t          |t                    r!	 t          |           n!# t          $ r Y nw xY wn# t          $ r Y nw xY wt          j        |          }|*t          j        t#          |                    }|t$          }| 	                    |          |gS )NTr   r   )r5   r   r   r   r_   r8   r   r   r   rj   rR   rT   rI   r   r3   r4   	getmoduler   r   )r!   r   r   
return_objerM   r@   s          r   getattr_pathsz DirectObjectAccess.getattr_pathsh  s   	! (555 6 6%h///$TY55
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6  
	! 
	! 
	!)# %a00   %$ JJJJJJ
	! $$Z00J'' 	8O	*F  	j&=&= 	v&&&& #   D  	 	 	D	 ":.. 	"&tJ'7'788F "!##F++V44s^   A *AA AA AA 
B#(BBD $C4 4
D D
DDc                     t          | j                  t          t          t          t
          t          t          fv s| j        | j        S t          dt          | j                  z            )Nz Object is type %s and not simple)	r   r_   rn   bytesfloatintr   slice
ValueErrorre   s    r   get_safe_valuez!DirectObjectAccess.get_safe_value  sQ    	??tUE3UCC 	ty 	9;d49ooMNNNr%   c                 *    t          | j                  S r   )rZ   r_   re   s    r   rZ   zDirectObjectAccess.get_api_type  s    DI&&&r%   c                 >    t          | j        t                    rdS d S )Nr   )r   r_   r   re   s    r   get_array_typez!DirectObjectAccess.get_array_type  s     di&& 	6tr%   c                 :      fd} fd |            D             S )Nc               3   ~   K   t          j                                                  D ]\  } }| dk    r d S |V  d S )Nr   )r   r_   keys)r   kr!   s     r   iter_partial_keysz;DirectObjectAccess.get_key_paths.<locals>.iter_partial_keys  sX      #DINN$4$455  A r6 EE r%   c                 :    g | ]}                     |          S r&   r~   )r   r   r!   s     r   r   z4DirectObjectAccess.get_key_paths.<locals>.<listcomp>  s'    III((++IIIr%   r&   )r!   r   s   ` r   get_key_pathsz DirectObjectAccess.get_key_paths  sC    	 	 	 	 	 JIII5F5F5H5HIIIIr%   c                 \      fd                                  D             }d |D             S )Nc                 :    g | ]}t          j        |          S r&   rh   )r   or!   s     r   r   z=DirectObjectAccess.get_access_path_tuples.<locals>.<listcomp>  s&    ^^^M$"7;;^^^r%   c                 :    g | ]}|                                 |fS r&   )r{   )r   rM   s     r   r   z=DirectObjectAccess.get_access_path_tuples.<locals>.<listcomp>  s)    EEE&""$$f-EEEr%   )_get_objects_pathrF   s   ` r   rL   z)DirectObjectAccess.get_access_path_tuples  s<    ^^^^TE[E[E]E]^^^EEHEEEEr%   c                 p      fd}t          t          t           |                                          S )Nc               3   F  K   j         } | V  	 | j        } | V  n# t          $ r Y nw xY w	 | j        }|t          V  d S 	 t
          j        |         V  d S # t          $ r t          V  Y d S w xY w# t          $ r$ t          j	        |           st          V  Y d S Y d S w xY wr   )
r_   __objclass__r   rI   r   r1   r;   KeyErrorrR   rT   )r   imp_plzr!   s     r   getz1DirectObjectAccess._get_objects_path.<locals>.get  s     )CIII& 				 "   
'.  '"NNNNN'!k'222222# ' ' '&' " # # #',, #"NNNNNN# # ##s/    
))A2 A A/.A/2'B B )r   reversed)r!   r   s   ` r   r   z$DirectObjectAccess._get_objects_path  s@    	' 	' 	' 	' 	'8 HT##%%[[))***r%   c                 |    |j         }t          |         }|                      || j        |j                            S r   )rM   
_OPERATORSrl   r_   )r!   other_access_handleoperatorother_accessops        r   execute_operationz$DirectObjectAccess.execute_operation  s9    *1!''49l6G(H(HIIIr%   c                 z    d}d}t           j        dd          dk    rt          j        dt	           j                            }|V|                    d          }d	dl}t          j        d
k    r |j	         j                  }nt           j        dd          }|t           fd|D                       fS )zF
        Returns Tuple[Optional[str], Tuple[AccessPath, ...]]
        Nr&   rI   ru   r   typingztyping.(\w+)\[r   r   )      __args__c              3   B   K   | ]}                     |          V  d S r   r~   )r   argr!   s     r   r   zBDirectObjectAccess.get_annotation_name_and_args.<locals>.<genexpr>  s1      IIS433C88IIIIIIr%   )r   r_   rematchr   groupr   r1   version_infoget_argsr   )r!   r   argsmr   s   `    r   get_annotation_name_and_argsz/DirectObjectAccess.get_annotation_name_and_args  s     	<<<<H 		M*DOO<<A Mwwqzz#v- M*6?4955DD'	:tLLLDUIIIIDIIIIIIIr%   c                 T    t          j        | j                  o| j        t          k    S r   )rR   rS   r_   r   re   s    r   needs_type_completionsz)DirectObjectAccess.needs_type_completions  s     ty))?di4.??r%   c                 *    t          j        |          S r   )rR   formatannotation)r!   r   s     r   _annotation_to_strz%DirectObjectAccess._annotation_to_str  s    '
333r%   c                 r      fd                                  j                                        D             S )Nc                 P   g | ]}t          |j        |j        |j        u                    |j                  t          |j                  |j        |j        u                    |j                                      |j                  t          |j	                             S ))r   has_defaultr   default_stringhas_annotationr   annotation_string	kind_name)
r   r   r   emptyrl   r   r   r  r   kind)r   r   r!   s     r   r   z;DirectObjectAccess.get_signature_params.<locals>.<listcomp>  s     
 
 
  VIQW400;;#AI |17:33ALAA"&"9"9!,"G"Gaf++	 	 	
 
 
r%   )_get_signature
parametersr   re   s   `r   get_signature_paramsz'DirectObjectAccess.get_signature_params  sK    
 
 
 
 **,,7>>@@
 
 
 	
r%   c                 r    | j         }	 t          j        |          S # t          t          f$ r t
          w xY wr   )r_   rR   	signatureRuntimeErrorr   r   ri   s     r   r  z!DirectObjectAccess._get_signature  sG    i	$S)))i( 	 	 	 		s    6c                    	 | j         j                            d          }n# t          $ r Y d S w xY w|d S 	 t	          j        | j                                       d          }n# t          $ r Y nw xY w|                     |          S )Nrp   )r_   __annotations__r   r   r   get_type_hintsr8   rl   )r!   r   s     r   r   z(DirectObjectAccess.get_return_annotation  s    		)--h77AA 	 	 	44	  	4	%di0044X>>AA 	 	 	D	 ''***s   " 
00,A% %
A21A2c                 8    |                      | j                   S r   )rl   r_   re   s    r   negatezDirectObjectAccess.negate  s    ''
333r%   c                      t           fd                                 D                       }                                 |fS )zw
        Used to return a couple of infos that are needed when accessing the sub
        objects of an objects
        c              3   F   K   | ]}|                     |          fV  d S r   )r   )r   r   r!   s     r   r   z3DirectObjectAccess.get_dir_infos.<locals>.<genexpr>  sJ       
 
 4**4001
 
 
 
 
 
r%   )r   r   r  )r!   tupless   ` r   get_dir_infosz DirectObjectAccess.get_dir_infos  s[    
  
 
 
 



 
 
 
 
 **,,f44r%   N)T)0rH   rI   rJ   rG   rf   rj   rl   ro   r   r   rs   rw   r{   r   r   r   r   r   r   r   r'   rd   r   r   r   r   rW   r   r   r   r   r   r   r   rZ   r   r   rL   r   r   r  r  r  r  r  r   r$  r(  r&   r%   r   r\   r\      s         E E E9 9 9> > >  HTN    / / /  "U U U  (: : :  ,= = =P P P   * * \* * * *L L L+ + +- - -5 5 5& & &       8 +4 +5 +5 +5 +5ZO O O
' ' '  

J 
J 
JF F F+ + +>J J J
J J J$@ @ @4 4 4
 
 
  + + + 4 4 4	5 	5 	5 	5 	5r%   r\   c                     	 | j         }|t          k    o*t          |t                    ot          |t                     S # t
          $ r Y dS w xY w)zLike inspect.* methods.F)rc   r   r   
issubclassNOT_CLASS_TYPESr   )r   rz   s     r   ry   ry   %  s`    ^m d{]z#t44]Z_=]=]9]]    uus   ? 
AA)MrR   typesr9   r1   r   r   collectionsr   r5   r  r   r   pathlibr   r   &jedi.inference.compiled.getattr_staticr   r   r   r   r   	bytearrayr   r   r   replaceMethodDescriptorTypeBuiltinFunctionTypeCodeType	FrameTypeFunctionTypeGeneratorTypeGetSetDescriptorType
LambdaTypeMemberDescriptorType
MethodType
ModuleTypeTracebackTypeMappingProxyTypeSimpleNamespaceDynamicClassAttributer+  setr   WrapperDescriptorTyper   __get__r   object_class_dictClassMethodDescriptorTyper   eqneis_is_notltlegtgeCOMPARISON_OPERATORSaddsubr   updatestaticmethodclassmethodr   r   r   r'   r,   rA   rC   r<   rZ   r\   ry   r&   r%   r   <module>rT     s         



     " " " " " "  				               A A A A A AdE5)TB tCK((  
	N	O											& tCK(( S\** M*-55f==  D!23E!FGG FHH	 %
%
&i	
%	
%	 	  
	 
   & ' ' ' 
			  %.    ( c   P P P7 7 78! ! ! ! ! ! ! !
7 7 7
	 	 	{5 {5 {5 {5 {5 {5 {5 {5|	^ 	^ 	^ 	^ 	^r%   