B
    /d                 @   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}xt j ddD ]d}| }| |tjkO } | rH|tjkrHdV  d} |tjkrXd}n|tjkrp|spdV  d}| V  qW | rdV  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 e/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/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 )N)r    r   )r   r   r   r   r   +   s    zAbstractSignature.namec             C   s   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 d S )N)NotImplementedError)r   r    r   r   r   bind9   s    zAbstractSignature.bindc             C   s   dS )NTr   )r   	argumentsr   r   r   matches_signature<   s    z#AbstractSignature.matches_signaturec             C   s4   | j | jk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)F)r   r   r   r"   propertyr   r   r
   r'   r)   r+   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 )N)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!   )r-   r%   )r   r    r   r   r   r'   J   s    zTreeSignature.bindc             C   s   | j  rd S | jjjS )N)r    Zis_classr%   	tree_noder   )r   r   r   r   _annotationM   s    
zTreeSignature._annotationc             C   s   | j }|d krdS |jddS )Nr#   F)Zinclude_prefix)r1   get_code)r   ar   r   r   r   U   s    zTreeSignature.annotation_stringc             C   s8   | j  }|r"ddlm} ||}| jr4|dd  S |S )Nr   )process_paramsr$   )r%   r
   Zjedi.inference.star_argsr4   r!   )r   r   paramsr4   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r| jj}t|}|rntj	d||j
d |dd ntj	d	||j
d |dd |S )
Nr   )#get_executed_param_names_and_issuesFc             s   s   | ]}|  V  qd S )N)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.paramr6   r%   allr   Zenable_noticer0   r   Zget_signatureZdbg	start_pos)r   r(   r6   Zexecuted_param_namesZissuesmatchesr0   	signaturer   r   r   r)   f   s    

zTreeSignature.matches_signature)NF)F)r   r   r   r"   r'   r,   r1   r   r   r
   r)   __classcell__r   r   )r*   r   r-   E   s   	r-   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 )N)r.   r"   _return_string!_BuiltinSignature__function_value)r   r    Zreturn_stringr/   r!   )r*   r   r   r"   |   s    zBuiltinSignature.__init__c             C   s   | j S )N)r@   )r   r   r   r   r      s    z"BuiltinSignature.annotation_stringc             C   s   | j d kr| jS | j S )N)rA   r    )r   r   r   r   r%      s    
z BuiltinSignature._function_valuec             C   s   t || j| jddS )NT)r/   r!   )r?   r@   r    )r   r    r   r   r   r'      s    zBuiltinSignature.bind)NF)	r   r   r   r"   r,   r   r%   r'   r>   r   r   )r*   r   r?   {   s   r?   c               @   s   e Zd Zdd Zdd ZdS )SignatureWrapperc             C   s
   || _ d S )N)_wrapped_signature)r   Zwrapped_signaturer   r   r   r"      s    zSignatureWrapper.__init__c             C   s   t | j|S )N)getattrrC   )r   r   r   r   r   __getattr__   s    zSignatureWrapper.__getattr__N)r   r   r   r"   rE   r   r   r   r   rB      s   rB   N)inspectr   Z
jedi.cacher   Zjedir   r   r   r   r-   r?   rB   r   r   r   r   <module>   s   6