o
    ˷e
H                     @   s  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/Z0ee0d Z1e/ Z2ej3ej4ej5ej6ej7ej8ej9ej:dZ;ej<ej=d	Z>e>?e; ejej ej"ee,e1e@eAfZBe2fd
dZCeddZDdd ZEdd ZFdd ZGG dd dZHdd ZIdd ZJG dd dZKdd ZLdS )    N)
namedtuple)Path)Optional)getattr_static__dict____subclasshook__)z==z!=iszis not<z<=>z>=)+-c                 C   sL   z	t | |\}}W n ty   |tu r | Y S w t|tr$t| |S |S N)r   AttributeError	_sentinel
isinstanceALLOWED_DESCRIPTOR_ACCESSgetattr)objnamedefaultattris_get_descriptor r   U/var/www/ideatree/venv/lib/python3.10/site-packages/jedi/inference/compiled/access.pysafe_getattrN   s   

r   SignatureParamz]name has_default default default_string has_annotation annotation annotation_string kind_namec                    s    fdd}|S )Nc                    s(    | }t |dkr|d d d }|S )N2   z..)len)selfrfuncr   r   wrapperi   s   zshorten_repr.<locals>.wrapperr   )r!   r"   r   r    r   shorten_reprh   s   r#   c                 C   s   | j |S r   )compiled_subprocessget_or_create_access_handle)inference_stater   r   r   r   create_accessq      r'   c                 C   s   t j|}t _z?zt| W n3 ty(   tjd||f tdd Y W |t _d S  tyA   tjdt	  tdd Y W |t _d S w W |t _n|t _w t j
| }t| |S )Nz$Module %s not importable in path %s.   )
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moduler   r   r   load_moduleu   s,   

	


r;   c                   @   s   e Zd Zdd ZdS )
AccessPathc                 C   s
   || _ d S r   )accessesr   r=   r   r   r   __init__      
zAccessPath.__init__N)__name__
__module____qualname__r?   r   r   r   r   r<      s    r<   c                 C   s   t | |}t| S r   )r'   r<   get_access_path_tuples)r&   r   accessr   r   r   r6      s   
r6   c                 C   sL   t | rdS t | rdS t | s"t | s"t | s"t | r$dS dS )Nclassr:   functioninstance)inspectisclassismodule	isbuiltinismethodismethoddescriptor
isfunctionr   r   r   r   get_api_type   s   

rQ   c                   @   sh  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdee	 fddZ
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zed d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 ZdVd3d4Zefd5d6Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%dAdB Z&dCdD Z'dEdF Z(dGdH Z)dIdJ Z*dKdL Z+dMdN Z,dOdP Z-dQdR Z.dSdT Z/dUS )WDirectObjectAccessc                 C   s   || _ || _d S r   )_inference_state_obj)r   r&   r   r   r   r   r?      s   
zDirectObjectAccess.__init__c                 C   s   d| j j|  f S )Nz%s(%s))	__class__rA   get_reprr   r   r   r   __repr__      zDirectObjectAccess.__repr__c                 C      t | j|S r   r'   rS   r   r   r   r   r   _create_access   r(   z!DirectObjectAccess._create_accessc                 C   rZ   r   )r6   rS   r\   r   r   r   _create_access_path   r(   z&DirectObjectAccess._create_access_pathc                 C   
   t | jS r   )boolrT   rW   r   r   r   
py__bool__   r@   zDirectObjectAccess.py__bool__returnc                 C   s$   zt | jjW S  ty   Y d S w r   )r   rT   __file__r   rW   r   r   r   
py__file__   s
   zDirectObjectAccess.py__file__c                 C   s   t | jpdS )N )rI   getdocrT   rW   r   r   r   	py__doc__   s   zDirectObjectAccess.py__doc__c                 C   s^   t | jrt| jr| j}nz| jj}W n
 ty   Y d S w z|jW S  ty.   Y d S w r   )_is_class_instancerT   rI   rN   rU   r   rA   )r   clsr   r   r   
py__name__   s   

zDirectObjectAccess.py__name__c                    s"   t  fdd jjdd  D S )Nc                 3       | ]}  |V  qd S r   r^   ).0ri   rW   r   r   	<genexpr>       z7DirectObjectAccess.py__mro__accesses.<locals>.<genexpr>   )tuplerT   __mro__rW   r   rW   r   py__mro__accesses   s   "z$DirectObjectAccess.py__mro__accessesc                    s   t  jtr fdd j D S t  jttfr$ fdd jD S   r4t j jj	}|
 S z jj}W n
 tyD   Y d S w t j| }|d urT|gS d S )Nc                       g | ]}  |qS r   rl   rm   vrW   r   r   
<listcomp>       z>DirectObjectAccess.py__getitem__all_values.<locals>.<listcomp>c                    rt   r   rl   ru   rW   r   r   rw      rx   )r   rT   dictvalueslistrq   is_instancerR   rS   rU   py__getitem__all_values__getitem__r   get_return_annotation)r   ri   getitem
annotationr   rW   r   r}      s"   z*DirectObjectAccess.py__getitem__all_valuesc                 C   s"   t | jtvr	d S | | j| S r   )typerT   ALLOWED_GETITEM_TYPESr^   )r   indexr   r   r   py__simple_getitem__   s   z'DirectObjectAccess.py__simple_getitem__c                 C   s   z| j j}W n
 ty   Y d S w t| j| }|d ur |gS t| j tvr)g S g }t| j D ]\}}|dkr; |S |	| 
| q0|S )N   )rT   __iter__r   rR   rS   r   r   r   	enumerateappendr^   )r   iter_methodplstipartr   r   r   py__iter__list   s"   z!DirectObjectAccess.py__iter__listc                 C   s   |  | jjS r   )r^   rT   rU   rW   r   r   r   py__class__     zDirectObjectAccess.py__class__c                    s    fdd j jD S )Nc                    rt   r   rl   )rm   baserW   r   r   rw   
  rx   z2DirectObjectAccess.py__bases__.<locals>.<listcomp>)rT   	__bases__rW   r   rW   r   py__bases__	     zDirectObjectAccess.py__bases__c                 C   s2   t | jdd }t|trtdd |D sd S |S )N__path__c                 s   s    | ]}t |tV  qd S r   )r   strrm   r   r   r   r   rn     ro   z0DirectObjectAccess.py__path__.<locals>.<genexpr>)r   rT   r   r{   all)r   pathsr   r   r   
py__path__  s   
zDirectObjectAccess.py__path__c                 C   sz   t | jrt| jS t| jddddkrt| jS t| j}|tkr)t| jS t|ddddkr7t| jS t| jS )NrB   re   r   builtins)rI   rK   rT   reprr   r   rX   object)r   type_r   r   r   rV     s   



zDirectObjectAccess.get_reprc                 C      t | jS r   )rI   rJ   rT   rW   r   r   r   is_class&  r(   zDirectObjectAccess.is_classc                 C   s   t | jpt | jS r   )rI   rO   rT   rM   rW   r   r   r   is_function)  s   zDirectObjectAccess.is_functionc                 C   r   r   )rI   rK   rT   rW   r   r   r   	is_module,  r(   zDirectObjectAccess.is_modulec                 C   r_   r   )rh   rT   rW   r   r   r   r|   /  r@   zDirectObjectAccess.is_instancec                 C   r   r   )rI   rN   rT   rW   r   r   r   rN   2  r(   z%DirectObjectAccess.ismethoddescriptorc                 C   sN   dd }|   r
dS || j}|d u r |t| j}|d u r dS t|dS )Nc                 S   s   t | dt | dd S )NrC   rA   )r   rP   r   r   r   try_to_get_name6  rY   z?DirectObjectAccess.get_qualified_names.<locals>.try_to_get_namer   .)r   rT   r   rq   split)r   r   r   r   r   r   get_qualified_names5  s   
z&DirectObjectAccess.get_qualified_namesc                 C   r_   r   )dirrT   rW   r   r   r   r   B  r@   zDirectObjectAccess.dirc                 C   s&   zt | j W dS  ty   Y dS w )NTF)iterrT   	TypeErrorrW   r   r   r   has_iterE  s   
zDirectObjectAccess.has_iterTc              	   C   s   |s7t jdd' t d zt| j|dfW W  d    S  ty.   Y W d    dS w 1 s2w   Y  z
t| j|\}}W n
 tyK   Y dS w |rVt|t	vrVdS dS )NTrecordalwaysF)FF)TT)TF)
r/   catch_warningssimplefilterhasattrrT   r2   r   r   r   r   )r   r   safer   r   r   r   r   is_allowed_getattrL  s&   
z%DirectObjectAccess.is_allowed_getattrc              
   C   s,  z#t jdd t d t| j|}W d    n1 sw   Y  W n  tyC } z|tu r7t|tr5 t|}W Y d }~nd }~ww | 	|}t
|rQ|gS z|j}W n	 ty_   Y nw |d uryt|tryzt| W n	 tyx   Y nw t
|}|d u rt
t|}|d u rt}| 	||gS )NTr   r   )r/   r   r   r   rT   r2   r   r   r   r]   rI   rK   rB   r   r-   r.   	getmoduler   r   )r   r   r   
return_objerE   r:   r   r   r   getattr_pathsh  sD   





z DirectObjectAccess.getattr_pathsc                 C   s<   t | jttttttfv s| jd u r| jS tdt | j )Nz Object is type %s and not simple)	r   rT   r`   bytesfloatintr   slice
ValueErrorrW   r   r   r   get_safe_value  s   $z!DirectObjectAccess.get_safe_valuec                 C   r_   r   )rQ   rT   rW   r   r   r   rQ     r@   zDirectObjectAccess.get_api_typec                 C   s   t | jtrdS d S )Nry   )r   rT   ry   rW   r   r   r   get_array_type  s   z!DirectObjectAccess.get_array_typec                    s     fdd} fdd| D S )Nc                  3   s2    t  j D ]\} }| dkr d S |V  qd S )Nr   )r   rT   keys)r   krW   r   r   iter_partial_keys  s   z;DirectObjectAccess.get_key_paths.<locals>.iter_partial_keysc                    rt   r   rl   )rm   r   rW   r   r   rw     rx   z4DirectObjectAccess.get_key_paths.<locals>.<listcomp>r   )r   r   r   rW   r   get_key_paths  s   	z DirectObjectAccess.get_key_pathsc                    s$    fdd   D }dd |D S )Nc                    s   g | ]}t  j|qS r   r[   )rm   orW   r   r   rw         z=DirectObjectAccess.get_access_path_tuples.<locals>.<listcomp>c                 S   s   g | ]}|  |fqS r   )rj   )rm   rE   r   r   r   rw     r   )_get_objects_pathr>   r   rW   r   rD     s   z)DirectObjectAccess.get_access_path_tuplesc                    s    fdd}t tt | S )Nc                  3   s     j } | V  z| j} W n	 ty   Y nw | V  z| j}W n ty3   t| s0tV  Y d S Y d S w |d u r=tV  d S z	tj| V  W d S  t	yS   tV  Y d S w r   )
rT   __objclass__r   rB   rI   rK   r   r+   r5   KeyError)r   imp_plzrW   r   r   get  s.   



z1DirectObjectAccess._get_objects_path.<locals>.get)r{   reversed)r   r   r   rW   r   r     s   z$DirectObjectAccess._get_objects_pathc                 C   s"   |j }t| }| || j|jS r   )rE   
_OPERATORSr^   rT   )r   other_access_handleoperatorother_accessopr   r   r   execute_operation  s   z$DirectObjectAccess.execute_operationc                    s   d}d}t  jddddkr8tdt j}|dur8|d}d	dl}tjd
kr0|	 j}nt  jddd}|t
 fdd|D fS )zF
        Returns Tuple[Optional[str], Tuple[AccessPath, ...]]
        Nr   rB   re   r   typingztyping.(\w+)\[rp   r   )      __args__c                 3   rk   r   rl   )rm   argrW   r   r   rn     ro   zBDirectObjectAccess.get_annotation_name_and_args.<locals>.<genexpr>)r   rT   rematchr   groupr   r+   version_infoget_argsrq   )r   r   argsmr   r   rW   r   get_annotation_name_and_args  s   

z/DirectObjectAccess.get_annotation_name_and_argsc                 C   s   t | jo
| jtkS r   )rI   rJ   rT   r   rW   r   r   r   needs_type_completions  r   z)DirectObjectAccess.needs_type_completionsc                 C   s
   t |S r   )rI   formatannotation)r   r   r   r   r   _annotation_to_str  r@   z%DirectObjectAccess._annotation_to_strc                    s    fdd   j D S )Nc                    sZ   g | ])}t |j|j|ju |jt|j|j|ju |j |jt|j	d qS ))r   has_defaultr   default_stringhas_annotationr   annotation_string	kind_name)
r   r   r   emptyr^   r   r   r   r   kindr   rW   r   r   rw     s    





z;DirectObjectAccess.get_signature_params.<locals>.<listcomp>)_get_signature
parametersrz   rW   r   rW   r   get_signature_params  s   

z'DirectObjectAccess.get_signature_paramsc              	   C   s*   | j }zt|W S  ttfy   tw r   )rT   rI   	signatureRuntimeErrorr   r   r\   r   r   r   r     s   z!DirectObjectAccess._get_signaturec                 C   sh   z	| j jd}W n
 ty   Y d S w |d u rd S zt| j d}W n	 ty.   Y nw | |S )Nrb   )rT   __annotations__r   r   r   get_type_hintsr2   r^   )r   r   r   r   r   r     s   
z(DirectObjectAccess.get_return_annotationc                 C   s   |  | j S r   )r^   rT   rW   r   r   r   negate  r   zDirectObjectAccess.negatec                    s&   t  fd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   s    | ]
}|  |fV  qd S r   )r   )rm   r   rW   r   r   rn     s
    
z3DirectObjectAccess.get_dir_infos.<locals>.<genexpr>)ry   r   r   )r   tuplesr   rW   r   get_dir_infos  s   z DirectObjectAccess.get_dir_infosN)T)0rA   rB   rC   r?   rX   r]   r^   ra   r   r   rd   rg   rj   rs   r}   r   r   r   r   r   r#   rV   r   r   r   r|   rN   r   r   r   r   r   r   r   rQ   r   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rR      sV    	

-
rR   c                 C   s>   z| j }W n
 ty   Y dS w |tkot|tot|t S )zLike inspect.* methods.F)rU   r   r   r   
issubclassNOT_CLASS_TYPES)r   ri   r   r   r   rh   %  s   
rh   )MrI   typesr3   r+   r   r   collectionsr   r/   r   r   r   pathlibr   r   &jedi.inference.compiled.getattr_staticr   r   r{   rq   r   	bytearrayry   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'   r;   r<   r6   rQ   rR   rh   r   r   r   r   <module>   s    



	   