a
    lc
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y2   |tu r* | Y S 0 t|trHt| |S |S N)r   AttributeError	_sentinel
isinstanceALLOWED_DESCRIPTOR_ACCESSgetattr)objnamedefaultattris_get_descriptor r   Z/var/www/html/django/DPS/env/lib/python3.9/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   )Zcompiled_subprocessZget_or_create_access_handle)inference_stater   r   r   r   create_accessq   s    r%   c                 C   s   t j| }t _z~zt| W nf tyP   tjd||f tdd Y W |t _d S  ty   tjdt	  tdd Y W |t _d S 0 W |t _n|t _0 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$   Zdotted_namesys_pathtempmoduler   r   r   load_moduleu   s,    
	
r7   c                   @   s   e Zd Zdd ZdS )
AccessPathc                 C   s
   || _ d S r   )accessesr   r9   r   r   r   __init__   s    zAccessPath.__init__N)__name__
__module____qualname__r;   r   r   r   r   r8      s   r8   c                 C   s   t | |}t| S r   )r%   r8   get_access_path_tuples)r$   r   accessr   r   r   r3      s    
r3   c                 C   sL   t | rdS t | rdS t | sDt | sDt | sDt | rHdS dS )Nclassr6   functioninstance)inspectisclassismodule	isbuiltinismethodismethoddescriptor
isfunctionr   r   r   r   get_api_type   s    

rL   c                   @   sh  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zee	 d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__r<   get_reprr   r   r   r   __repr__   s    zDirectObjectAccess.__repr__c                 C   s   t | j|S r   r%   rN   r   r   r   r   r   _create_access   s    z!DirectObjectAccess._create_accessc                 C   s   t | j|S r   )r3   rN   rU   r   r   r   _create_access_path   s    z&DirectObjectAccess._create_access_pathc                 C   s
   t | jS r   )boolrO   rR   r   r   r   
py__bool__   s    zDirectObjectAccess.py__bool__)returnc                 C   s(   zt | jjW S  ty"   Y d S 0 d S r   )r   rO   __file__r   rR   r   r   r   
py__file__   s    zDirectObjectAccess.py__file__c                 C   s   t | jpdS )N )rD   getdocrO   rR   r   r   r   	py__doc__   s    zDirectObjectAccess.py__doc__c                 C   sb   t | jrt| jr| j}n"z| jj}W n ty>   Y d S 0 z|jW S  ty\   Y d S 0 d S r   )_is_class_instancerO   rD   rI   rP   r   r<   )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   s   | ]}  |V  qd S r   rW   ).0ra   rR   r   r   	<genexpr>       z7DirectObjectAccess.py__mro__accesses.<locals>.<genexpr>   )tuplerO   __mro__rR   r   rR   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rH fdd jD S   rht j jj	}|
 S z jj}W n ty   Y n 0 t j| }|d ur|gS d S )Nc                    s   g | ]}  |qS r   rc   rd   vrR   r   r   
<listcomp>   rf   z>DirectObjectAccess.py__getitem__all_values.<locals>.<listcomp>c                    s   g | ]}  |qS r   rc   rk   rR   r   r   rm      rf   )r   rO   dictvalueslistrh   is_instancerM   rN   rP   py__getitem__all_values__getitem__r   get_return_annotation)r   ra   getitem
annotationr   rR   r   rr      s    z*DirectObjectAccess.py__getitem__all_valuesc                 C   s"   t | jtvrd S | | j| S r   )typerO   ALLOWED_GETITEM_TYPESrW   )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 0 t| j| }|d ur@|gS t| j tvrRg S g }t| j D ]$\}}|dkrt q|	| 
| q`|S )N   )rO   __iter__r   rM   rN   rt   rw   rx   	enumerateappendrW   )r   Ziter_methodplstipartr   r   r   py__iter__list   s    z!DirectObjectAccess.py__iter__listc                 C   s   |  | jjS r   )rW   rO   rP   rR   r   r   r   py__class__  s    zDirectObjectAccess.py__class__c                    s    fdd j jD S )Nc                    s   g | ]}  |qS r   rc   )rd   baserR   r   r   rm   
  rf   z2DirectObjectAccess.py__bases__.<locals>.<listcomp>)rO   	__bases__rR   r   rR   r   py__bases__	  s    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rd   r   r   r   r   re     rf   z0DirectObjectAccess.py__path__.<locals>.<genexpr>)r   rO   r   rp   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r4t| jS t| j}|tkrRt| jS t|ddddkrnt| jS t| jS )Nr=   r]   r   builtins)rD   rF   rO   reprr   rw   rS   object)r   type_r   r   r   rQ     s    



zDirectObjectAccess.get_reprc                 C   s   t | jS r   )rD   rE   rO   rR   r   r   r   is_class&  s    zDirectObjectAccess.is_classc                 C   s   t | jpt | jS r   )rD   rJ   rO   rH   rR   r   r   r   is_function)  s    zDirectObjectAccess.is_functionc                 C   s   t | jS r   )rD   rF   rO   rR   r   r   r   	is_module,  s    zDirectObjectAccess.is_modulec                 C   s
   t | jS r   )r`   rO   rR   r   r   r   rq   /  s    zDirectObjectAccess.is_instancec                 C   s   t | jS r   )rD   rI   rO   rR   r   r   r   rI   2  s    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 )Nr>   r<   )r   rK   r   r   r   try_to_get_name6  s    z?DirectObjectAccess.get_qualified_names.<locals>.try_to_get_namer   .)r   rO   rw   rh   split)r   r   r   r   r   r   get_qualified_names5  s    
z&DirectObjectAccess.get_qualified_namesc                 C   s
   t | jS r   )dirrO   rR   r   r   r   r   B  s    zDirectObjectAccess.dirc                 C   s*   zt | j W dS  ty$   Y dS 0 d S )NTF)iterrO   	TypeErrorrR   r   r   r   has_iterE  s
    
zDirectObjectAccess.has_iterTc              	   C   s   |s|t jdd\ t d z t| j|dfW W  d    S  ty\   Y W d    dS 0 W d    n1 sr0    Y  zt| j|\}}W n ty   Y dS 0 |rt|t	vrdS dS )NTrecordalwaysF)FF)TT)TF)
r,   catch_warningssimplefilterhasattrrO   r/   r   r   rw   r   )r   r   safer   r   r   r   r   is_allowed_getattrL  s    
 2z%DirectObjectAccess.is_allowed_getattrc              
   C   s0  zFt jdd& t d t| j|}W d    n1 s:0    Y  W n@ ty } z(|tu rnt|trj t|}W Y d }~n
d }~0 0 | 	|}t
|r|gS z
|j}W n ty   Y n40 |d urt|trzt| W n ty   Y n0 t
|}|d u r"t
t|}|d u r"t}| 	||gS )NTr   r   )r,   r   r   r   rO   r/   r   r   r   rV   rD   rF   r=   r   r*   r+   	getmodulerw   r   )r   r   r   Z
return_objer@   r6   r   r   r   getattr_pathsh  s8    
.






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 d S )Nz Object is type %s and not simple)	rw   rO   rX   bytesfloatintr   slice
ValueErrorrR   r   r   r   get_safe_value  s    $z!DirectObjectAccess.get_safe_valuec                 C   s
   t | jS r   )rL   rO   rR   r   r   r   rL     s    zDirectObjectAccess.get_api_typec                 C   s   t | jtrdS d S )Nrn   )r   rO   rn   rR   r   r   r   get_array_type  s    z!DirectObjectAccess.get_array_typec                    s     fdd} fdd| D S )Nc                  3   s.   t  j D ]\} }| dkr" q*|V  qd S )Nr   )r}   rO   keys)r   krR   r   r   iter_partial_keys  s    z;DirectObjectAccess.get_key_paths.<locals>.iter_partial_keysc                    s   g | ]}  |qS r   rc   )rd   r   rR   r   r   rm     rf   z4DirectObjectAccess.get_key_paths.<locals>.<listcomp>r   )r   r   r   rR   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   rT   )rd   orR   r   r   rm     rf   z=DirectObjectAccess.get_access_path_tuples.<locals>.<listcomp>c                 S   s   g | ]}|  |fqS r   )rb   )rd   r@   r   r   r   rm     rf   )_get_objects_pathr:   r   rR   r   r?     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0 | V  z
| j}W n" ty\   t| sXtV  Y n<0 |d u rntV  n*ztj| V  W n t	y   tV  Y n0 d S r   )
rO   __objclass__r   r=   rD   rF   r   r(   r2   KeyError)r   Zimp_plzrR   r   r   get  s$    


z1DirectObjectAccess._get_objects_path.<locals>.get)rp   reversed)r   r   r   rR   r   r     s    z$DirectObjectAccess._get_objects_pathc                 C   s"   |j }t| }| || j|jS r   )r@   
_OPERATORSrW   rO   )r   Zother_access_handleoperatorZother_accessopr   r   r   execute_operation  s    z$DirectObjectAccess.execute_operationc                    s   d}d}t  jddddkrptdt j}|durp|d}d	dl}tjd
kr`|	 j}nt  jddd}|t
 fdd|D fS )zF
        Returns Tuple[Optional[str], Tuple[AccessPath, ...]]
        Nr   r=   r]   r   typingztyping.(\w+)\[rg   r   )      __args__c                 3   s   | ]}  |V  qd S r   rc   )rd   argrR   r   r   re     rf   zBDirectObjectAccess.get_annotation_name_and_args.<locals>.<genexpr>)r   rO   rematchr   groupr   r(   version_infoget_argsrh   )r   r   argsmr   r   rR   r   get_annotation_name_and_args  s    

z/DirectObjectAccess.get_annotation_name_and_argsc                 C   s   t | jo| jtkS r   )rD   rE   rO   rw   rR   r   r   r   needs_type_completions  s    z)DirectObjectAccess.needs_type_completionsc                 C   s
   t |S r   )rD   formatannotation)r   rv   r   r   r   _annotation_to_str  s    z%DirectObjectAccess._annotation_to_strc                    s    fdd   j D S )Nc                    sZ   g | ]R}t |j|j|ju |jt|j|j|ju |j |jt|j	d qS ))r   Zhas_defaultr   Zdefault_stringZhas_annotationrv   Zannotation_stringZ	kind_name)
r   r   r   emptyrW   r   rv   r   r   kindr   rR   r   r   rm     s   





z;DirectObjectAccess.get_signature_params.<locals>.<listcomp>)_get_signature
parametersro   rR   r   rR   r   get_signature_params  s    

z'DirectObjectAccess.get_signature_paramsc              	   C   s2   | j }zt|W S  ttfy,   tY n0 d S r   )rO   rD   	signatureRuntimeErrorr   r   rU   r   r   r   r     s
    z!DirectObjectAccess._get_signaturec                 C   sh   z| j jd}W n ty&   Y d S 0 |d u r4d S zt| j d}W n ty\   Y n0 | |S )NrZ   )rO   __annotations__r   r   r   get_type_hintsr/   rW   )r   r   r   r   r   rt     s    z(DirectObjectAccess.get_return_annotationc                 C   s   |  | j S r   )rW   rO   rR   r   r   r   negate  s    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   )rd   r   rR   r   r   re     s   z3DirectObjectAccess.get_dir_infos.<locals>.<genexpr>)rn   r   r   )r   Ztuplesr   rR   r   get_dir_infos  s    z DirectObjectAccess.get_dir_infosN)T)0r<   r=   r>   r;   rS   rV   rW   rY   r   r   r\   r_   rb   rj   rr   rz   r   r   r   r   r#   rQ   r   r   r   rq   rI   r   r   r   r   r   r   r   rL   r   r   r?   r   r   r   r   r   r   r   rt   r   r   r   r   r   r   rM      sT   	

-
rM   c                 C   sB   z
| j }W n ty   Y dS 0 |tko<t|to<t|t S dS )zLike inspect.* methods.FN)rP   r   rw   r   
issubclassNOT_CLASS_TYPES)r   ra   r   r   r   r`   %  s
    
r`   )MrD   typesr0   r(   r   r   collectionsr   r,   r   r   r   pathlibr   r   Z&jedi.inference.compiled.getattr_staticr   r   rp   rh   r   	bytearrayrn   rx   rw   replaceMethodDescriptorTypeBuiltinFunctionTypeCodeType	FrameTypeFunctionTypeGeneratorTypeGetSetDescriptorType
LambdaTypeMemberDescriptorType
MethodType
ModuleTypeTracebackTypeMappingProxyTypeSimpleNamespaceDynamicClassAttributer   setr|   WrapperDescriptorTyper   __get__r   Zobject_class_dictClassMethodDescriptorTyper   eqneis_is_notltlegtgeZCOMPARISON_OPERATORSaddsubr   updatestaticmethodclassmethodr   r   r   r#   r%   r7   r8   r3   rL   rM   r`   r   r   r   r   <module>   s   



	   