o
    ˷e                     @   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_namesget_kindr   POSITIONAL_ONLYVAR_POSITIONALKEYWORD_ONLY	to_string)is_positional
is_kw_onlynkindself O/var/www/ideatree/venv/lib/python3.10/site-packages/jedi/inference/signature.pyparam_strings
   s$   

z0_SignatureMixin.to_string.<locals>.param_strings(z, )z -> )name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   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<   r1   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
   r0   r3   r5   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'   r4   r   r   r(   F   s   zTreeSignature.__init__c                 C   s   t || jddS )NT)r'   )r8   r,   r/   r   r   r   r0   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)include_prefix)r>   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
   jedi.inference.star_argsrB   r'   )r   r   paramsrB   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%   )r3   ).0executed_param_namer   r   r   	<genexpr>m   s    z2TreeSignature.matches_signature.<locals>.<genexpr>zOverloading match: %s@%s (%s)BLUE)colorz Overloading no match: %s@%s (%s))jedi.inference.paramrE   r,   allr   enable_noticer=   r   get_signaturedbg	start_pos)r   r2   rE   executed_param_namesissuesmatchesr=   	signaturer   r   r   r3   f   s(   

zTreeSignature.matches_signatureNFr6   )r!   r"   r#   r(   r0   r7   r>   r   r   r
   r3   __classcell__r   r   r;   r   r8   E   s    

	r8   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%   )r9   r(   _return_string!_BuiltinSignature__function_value)r   r&   return_stringr:   r'   r;   r   r   r(   |   s   
zBuiltinSignature.__init__c                 C   s   | j S r%   )rX   r   r   r   r   r      s   z"BuiltinSignature.annotation_stringc                 C   s   | j d u r| jS | j S r%   )rY   r&   r   r   r   r   r,      s   
z BuiltinSignature._function_valuec                 C   s   t || j| jddS )NT)r:   r'   )rW   rX   r&   r/   r   r   r   r0      s
   zBuiltinSignature.bindrU   )	r!   r"   r#   r(   r7   r   r,   r0   rV   r   r   r;   r   rW   {   s    

rW   c                   @   s   e Zd Zdd Zdd ZdS )SignatureWrapperc                 C   s
   || _ d S r%   )_wrapped_signature)r   wrapped_signaturer   r   r   r(      s   
zSignatureWrapper.__init__c                 C   s   t | j|S r%   )getattrr\   )r   r   r   r   r   __getattr__   s   zSignatureWrapper.__getattr__N)r!   r"   r#   r(   r_   r   r   r   r   r[      s    r[   N)inspectr   
jedi.cacher   jedir   r   r   r$   r8   rW   r[   r   r   r   r   <module>   s    6