o
    ï›hû  ã                   @   s‚   d dl mZ d dlmZ d dlmZ d dlmZ G dd„ dƒZG dd„ deƒZG d	d
„ d
eƒZ	G dd„ deƒZ
G dd„ deƒZdS )é    )Ú	Parameter)Úmemoize_method)Údebug)Úparser_utilsc                   @   s   e Zd Zdd„ ZdS )Ú_SignatureMixinc                    sB   ‡ fdd„}ˆ j jd d |ƒ ¡ d }ˆ j}|r|d| 7 }|S )Nc                  3   sŽ   � d} d}ˆ j dd�D ]2}| ¡ }| |tjkO } | r$|tjkr$dV  d} |tjkr,d}n|tjkr8|s8dV  d}| ¡ V  q| rEdV  d S d S )NFT)Úresolve_starsú/Ú*)Úget_param_namesZget_kindr   ÚPOSITIONAL_ONLYÚVAR_POSITIONALÚKEYWORD_ONLYÚ	to_string)Zis_positionalZ
is_kw_onlyÚnÚkind©Úself© úNc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/inference/signature.pyÚparam_strings
   s$   €

ÿz0_SignatureMixin.to_string.<locals>.param_stringsú(z, ú)z -> )ÚnameZstring_nameÚjoinÚannotation_string)r   r   ÚsÚ
annotationr   r   r   r   	   s   z_SignatureMixin.to_stringN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s    r   c                   @   sP   e Zd Zddd„Zedd„ ƒZedd„ ƒZddd	„Zd
d„ Zdd„ Z	dd„ Z
dS )ÚAbstractSignatureFc                 C   s   || _ || _d S ©N)ÚvalueÚis_bound)r   r"   r#   r   r   r   Ú__init__'   s   
zAbstractSignature.__init__c                 C   s   | j jS r!   )r"   r   r   r   r   r   r   +   s   zAbstractSignature.namec                 C   ó   dS )NÚ r   r   r   r   r   r   /   s   z#AbstractSignature.annotation_stringc                 C   s    | j  ¡ }| jr|dd … S |S )Né   )Ú_function_valuer
   r#   )r   r   Zparam_namesr   r   r   r
   3   s   
z!AbstractSignature.get_param_namesc                 C   s   t ‚r!   )ÚNotImplementedError©r   r"   r   r   r   Úbind9   ó   zAbstractSignature.bindc                 C   r%   )NTr   )r   Ú	argumentsr   r   r   Úmatches_signature<   r,   z#AbstractSignature.matches_signaturec                 C   s4   | j | ju rd| jj| j f S d| jj| j | jf S )Nz<%s: %s>z<%s: %s, %s>)r"   r(   Ú	__class__r   r   r   r   r   Ú__repr__?   s   zAbstractSignature.__repr__N©F)r   r   r   r$   Úpropertyr   r   r
   r+   r.   r0   r   r   r   r   r    &   s    



r    c                       sT   e Zd Zd‡ fdd„	Zdd„ Zedd„ ƒZed	d
„ ƒZeddd„ƒZ	dd„ Z
‡  ZS )ÚTreeSignatureNFc                    s   t ƒ  ||¡ |p
|| _d S r!   )Úsuperr$   r(   )r   r"   Úfunction_valuer#   ©r/   r   r   r$   F   s   zTreeSignature.__init__c                 C   s   t || jdd�S )NT)r#   )r3   r(   r*   r   r   r   r+   J   s   zTreeSignature.bindc                 C   s   | j  ¡ rd S | jjjS r!   )r"   Úis_classr(   Ú	tree_noder   r   r   r   r   Ú_annotationM   s   

zTreeSignature._annotationc                 C   s   | j }|d u r	dS |jdd�S )Nr&   F)Zinclude_prefix)r9   Úget_code)r   Úar   r   r   r   U   s   zTreeSignature.annotation_stringc                 C   s8   | j  ¡ }|rddlm} ||ƒ}| jr|dd … S |S )Nr   )Úprocess_paramsr'   )r(   r
   Zjedi.inference.star_argsr<   r#   )r   r   Úparamsr<   r   r   r   r
   \   s   
zTreeSignature.get_param_namesc                 C   sŽ   ddl m} || j|ƒ\}}|rdS tdd„ |D ƒƒ}tjrE| jj}t |¡}|r8tj	d||j
d |dd� |S tj	d	||j
d |dd� |S )
Nr   )Ú#get_executed_param_names_and_issuesFc                 s   s   � | ]}|  ¡ V  qd S r!   )r.   )Ú.0Zexecuted_param_namer   r   r   Ú	<genexpr>m   s   € ÿz2TreeSignature.matches_signature.<locals>.<genexpr>zOverloading match: %s@%s (%s)ZBLUE)Úcolorz Overloading no match: %s@%s (%s))Zjedi.inference.paramr>   r(   Úallr   Zenable_noticer8   r   Zget_signatureZdbgÚ	start_pos)r   r-   r>   Zexecuted_param_namesZissuesÚmatchesr8   Ú	signaturer   r   r   r.   f   s(   
ÿÿ
ÿþÿzTreeSignature.matches_signature©NFr1   )r   r   r   r$   r+   r2   r9   r   r   r
   r.   Ú__classcell__r   r   r6   r   r3   E   s    

	r3   c                       s>   e Zd Zd‡ fdd„	Zedd„ ƒZedd„ ƒZd	d
„ Z‡  ZS )ÚBuiltinSignatureNFc                    s   t ƒ  ||¡ || _|| _d S r!   )r4   r$   Ú_return_stringÚ!_BuiltinSignature__function_value)r   r"   Zreturn_stringr5   r#   r6   r   r   r$   |   s   
zBuiltinSignature.__init__c                 C   s   | j S r!   )rI   r   r   r   r   r   �   s   z"BuiltinSignature.annotation_stringc                 C   s   | j d u r| jS | j S r!   )rJ   r"   r   r   r   r   r(   …   s   
z BuiltinSignature._function_valuec                 C   s   t || j| jdd�S )NT)r5   r#   )rH   rI   r"   r*   r   r   r   r+   ‹   s
   ýzBuiltinSignature.bindrF   )	r   r   r   r$   r2   r   r(   r+   rG   r   r   r6   r   rH   {   s    

rH   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚSignatureWrapperc                 C   s
   || _ d S r!   )Ú_wrapped_signature)r   Zwrapped_signaturer   r   r   r$   ”   s   
zSignatureWrapper.__init__c                 C   s   t | j|ƒS r!   )ÚgetattrrL   )r   r   r   r   r   Ú__getattr__—   s   zSignatureWrapper.__getattr__N)r   r   r   r$   rN   r   r   r   r   rK   “   s    rK   N)Úinspectr   Z
jedi.cacher   Zjedir   r   r   r    r3   rH   rK   r   r   r   r   Ú<module>   s    6