o
    ï›hâI  ã                   @   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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  /e0¡Z1ee1d ƒZ2e0ƒ Z3ej4ej5ej6ej7ej8ej9ej:ej;dœZ<ej=ej>d	œZ?e? @e<¡ ejej!ej#ee-e2eAeBfZCe3fd
d„ZDeddƒZEdd„ ZFdd„ ZGdd„ ZHG dd„ dƒZIdeIfdd„ZJdd„ ZKG dd„ dƒZLdd„ ZMdS )é    N)Ú
namedtuple)ÚPath)ÚOptionalÚTuple)Ú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   úTc:\Users\shubh\Videos\agent\nova\Lib\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 )Né2   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   ó   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%   Zdotted_nameÚsys_pathÚtempÚmoduler   r   r   Úload_moduleu   s,   
ý
	øÿ
ø÷

r9   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:   Úreturnc                 C   s   t | |ƒ}t| ¡ ƒS r   )r&   r:   Úget_access_path_tuples)r%   r   Úaccessr   r   r   r5   –   s   
r5   c                 C   sL   t  | ¡rdS t  | ¡rdS t  | ¡s"t  | ¡s"t  | ¡s"t  | ¡r$dS dS )NÚclassr8   ÚfunctionÚinstance)ÚinspectÚisclassÚismoduleÚ	isbuiltinÚismethodÚismethoddescriptorÚ
isfunction©r   r   r   r   Úget_api_type›   s   

ÿÿrP   c                   @   s’  e Zd Zdd„ Zdd„ Zdd„ Zdef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œ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d0d1„ Zd2d3„ ZdWdee e e	e f fd4d5„Z!e"fd6d7„Z#d8d9„ Z$d:d;„ Z%d<d=„ Z&d>d?„ Z'd@dA„ Z(dBdC„ Z)dDdE„ Z*dFdG„ Z+dHdI„ Z,dJdK„ Z-dLdM„ Z.dNdO„ Z/de	e fdPdQ„Z0dRdS„ Z1dTdU„ Z2dVS )XÚ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__¬   ó   zDirectObjectAccess.__repr__c                 C   ó   t | j|ƒS r   ©r&   rR   ©r   r   r   r   r   Ú_create_access¯   r'   z!DirectObjectAccess._create_accessrB   c                 C   rY   r   )r5   rR   r[   r   r   r   Ú_create_access_path²   r'   z&DirectObjectAccess._create_access_pathc                 C   ó
   t | jƒS r   )ÚboolrS   rV   r   r   r   Ú
py__bool__µ   r>   zDirectObjectAccess.py__bool__c                 C   s$   zt | jjƒW S  ty   Y d S w r   )r   rS   Ú__file__r   rV   r   r   r   Ú
py__file__¸   s
   ÿzDirectObjectAccess.py__file__c                 C   s   t  | j¡pdS )NÚ )rH   ÚgetdocrS   rV   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_instancerS   rH   rM   rT   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   ó   � | ]}ˆ   |¡V  qd S r   ©r]   )Ú.0rg   rV   r   r   Ú	<genexpr>Ó   ó   € z7DirectObjectAccess.py__mro__accesses.<locals>.<genexpr>é   )ÚtuplerS   Ú__mro__rV   r   rV   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   rj   ©rk   ÚvrV   r   r   Ú
<listcomp>×   ó    z>DirectObjectAccess.py__getitem__all_values.<locals>.<listcomp>c                    rr   r   rj   rs   rV   r   r   ru   Ù   rv   )r   rS   ÚdictÚvaluesÚlistro   Úis_instancerQ   rR   rT   Úpy__getitem__all_valuesÚ__getitem__r   Úget_return_annotation)r   rg   ÚgetitemÚ
annotationr   rV   r   r{   Õ   s"   úz*DirectObjectAccess.py__getitem__all_valuesT)Úsafec                C   s&   |rt | jƒtvrd S |  | j| ¡S r   )ÚtyperS   ÚALLOWED_GETITEM_TYPESr]   )r   Úindexr€   r   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é   )rS   Ú__iter__r   rQ   rR   r}   r�   r‚   Ú	enumerateÚappendr]   )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   )r]   rS   rT   rV   r   r   r   Úpy__class__  ó   zDirectObjectAccess.py__class__c                    s   ‡ fdd„ˆ j jD ƒS )Nc                    rr   r   rj   )rk   ÚbaserV   r   r   ru   
  rv   z2DirectObjectAccess.py__bases__.<locals>.<listcomp>)rS   Ú	__bases__rV   r   rV   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©rk   r‰   r   r   r   rl     rm   z0DirectObjectAccess.py__path__.<locals>.<genexpr>)r   rS   r   ry   Ú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 )Nr@   rc   ©r   Úbuiltins)rH   rJ   rS   Úreprr   r�   rW   Úobject)r   Útype_r   r   r   rU     s   



zDirectObjectAccess.get_reprc                 C   ó   t  | j¡S r   )rH   rI   rS   rV   r   r   r   Úis_class&  r'   zDirectObjectAccess.is_classc                 C   s   t  | j¡pt  | j¡S r   )rH   rN   rS   rL   rV   r   r   r   Úis_function)  s   zDirectObjectAccess.is_functionc                 C   rŸ   r   )rH   rJ   rS   rV   r   r   r   Ú	is_module,  r'   zDirectObjectAccess.is_modulec                 C   r^   r   )rf   rS   rV   r   r   r   rz   /  r>   zDirectObjectAccess.is_instancec                 C   rŸ   r   )rH   rM   rS   rV   r   r   r   rM   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 )NrA   r?   )r   rO   r   r   r   Útry_to_get_name6  rX   z?DirectObjectAccess.get_qualified_names.<locals>.try_to_get_namer   Ú.)r¢   rS   r�   ro   Úsplit)r   r£   r   r   r   r   Úget_qualified_names5  s   
z&DirectObjectAccess.get_qualified_namesc                 C   r^   r   )ÚdirrS   rV   r   r   r   r§   B  r>   zDirectObjectAccess.dirc                 C   s&   zt | jƒ W dS  ty   Y dS w )NTF)ÚiterrS   Ú	TypeErrorrV   r   r   r   Úhas_iterE  s   
ÿzDirectObjectAccess.has_iterc                 C   sì   z
t | j|ƒ\}}W nF tyP   |sMtjdd��, t d¡ zt| j|ƒdd fW W  d   ƒ  Y S  ty;   Y nw W d   ƒ Y dS 1 sHw   Y  Y dS w |rtt|ƒt	vrtt
|tƒrrt|jdƒrrt| j|jƒ}dd| ¡ fS dS dS )	NT©ÚrecordÚalwaysF)FFNÚ__annotations__)TTN)TFN)r   rS   r   r.   Úcatch_warningsÚsimplefilterÚhasattrr1   r�   r   r   ÚpropertyÚfgetrQ   rR   r}   )r   r   r€   r   r   Úar   r   r   Úis_allowed_getattrL  s2   
ýý
ùøð
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 r�t
 t|ƒ¡}|d u r�t}|  	|¡|gS )NTr«   r­   )r.   r¯   r°   r   rS   r1   r   r   r   r\   rH   rJ   r@   r•   r,   r-   Ú	getmoduler�   r›   )r   r   r   Z
return_objÚerD   r8   r   r   r   Úgetattr_pathsl  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�   rS   r_   ÚbytesÚfloatÚintr•   ÚsliceÚ
ValueErrorrV   r   r   r   Úget_safe_value™  s   $z!DirectObjectAccess.get_safe_valuec                 C   r^   r   )rP   rS   rV   r   r   r   rP   ž  r>   zDirectObjectAccess.get_api_typec                 C   s   t | jtƒrdS d S )Nrw   )r   rS   rw   rV   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‡   rS   Úkeys)r‹   ÚkrV   r   r   Úiter_partial_keys§  s   €ûz;DirectObjectAccess.get_key_paths.<locals>.iter_partial_keysc                    rr   r   rj   )rk   rÁ   rV   r   r   ru   °  rv   z4DirectObjectAccess.get_key_paths.<locals>.<listcomp>r   )r   rÂ   r   rV   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   rZ   )rk   ÚorV   r   r   ru   ³  ó    z=DirectObjectAccess.get_access_path_tuples.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ |f‘qS r   )rh   )rk   rD   r   r   r   ru   ´  rÅ   )Ú_get_objects_pathr<   r   rV   r   rC   ²  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   )
rS   Ú__objclass__r   r@   rH   rJ   r›   r*   r4   ÚKeyError)r   Zimp_plzrV   r   r   Úget·  s.   €
ÿ

ÿþ
þz1DirectObjectAccess._get_objects_path.<locals>.get)ry   Úreversed)r   rÉ   r   rV   r   rÆ   ¶  s   z$DirectObjectAccess._get_objects_pathc                 C   s"   |j }t| }|  || j|jƒ¡S r   )rD   Ú
_OPERATORSr]   rS   )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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   r@   rc   rš   Útypingztyping.(\w+)\[rn   r   )é   é   Ú__args__c                 3   ri   r   rj   )rk   ÚargrV   r   r   rl   ê  rm   zBDirectObjectAccess.get_annotation_name_and_args.<locals>.<genexpr>)r   rS   ÚreÚmatchrœ   ÚgrouprÏ   r*   Úversion_infoÚget_argsro   )r   r   ÚargsÚmrÏ   r   rV   r   Úget_annotation_name_and_argsÚ  s   

z/DirectObjectAccess.get_annotation_name_and_argsc                 C   s   t  | j¡o
| jtkS r   )rH   rI   rS   r�   rV   r   r   r   Úneeds_type_completionsì  r“   z)DirectObjectAccess.needs_type_completionsc                 C   s
   t  |¡S r   )rH   Ú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   Zhas_defaultr   Zdefault_stringZhas_annotationr   Zannotation_stringZ	kind_name)
r   r   r   Úemptyr]   rœ   r   rÞ   r•   Úkindr–   rV   r   r   ru   ó  s    
÷




øÿz;DirectObjectAccess.get_signature_params.<locals>.<listcomp>)Ú_get_signatureÚ
parametersrx   rV   r   rV   r   Úget_signature_paramsò  s   

öz'DirectObjectAccess.get_signature_paramsc              	   C   s*   | j }zt |¡W S  ttfy   t‚w r   )rS   rH   Ú	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   )rS   r®   rÉ   r   rÏ   Úget_type_hintsr1   r]   )r   rÄ   r   r   r   r}   
  s   ÿÿ
z(DirectObjectAccess.get_return_annotationc                 C   s   |   | j ¡S r   )r]   rS   rV   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µ   )rk   r   rV   r   r   rl   "  s
   € ÿ
ÿz3DirectObjectAccess.get_dir_infos.<locals>.<genexpr>)rw   r§   rÜ   )r   Ztuplesr   rV   r   Úget_dir_infos  s   þz DirectObjectAccess.get_dir_infosN)T)3r?   r@   rA   r=   rW   r\   r:   r]   r`   r   r   rb   re   rh   rq   r{   r„   r�   rŽ   r’   r™   r$   rU   r    r¡   r¢   rz   rM   r¦   r§   rª   r   r_   rµ   r   r¸   r¾   rP   r¿   rÃ   rC   rÆ   rÎ   rÛ   rÜ   rÞ   rã   rá   r}   rç   rè   r   r   r   r   rQ   §   sV    	
 -
rQ   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)rT   r   r�   r   Ú
issubclassÚNOT_CLASS_TYPES)r   rg   r   r   r   rf   )  s   
ÿrf   )NrH   Útypesr2   r*   rÌ   rÍ   Úcollectionsr   r.   rÔ   r›   rÏ   Úpathlibr   r   r   Z&jedi.inference.compiled.getattr_staticr   r•   ry   ro   r¹   Ú	bytearrayrw   r‚   r�   Ú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&   r9   r:   r5   rP   rQ   rf   r   r   r   r   Ú<module>   s”    
ñ

øþ
øþ	   