a
     ³Ša‘  ã                   @   sN   d Z ddlZddlmZ ddlmZ ddlmZ e e	¡Z
G dd„ deƒZdS )zp
Fallback completion provider.

Wraps FallbackActor to provide compatibility with SpyderCompletionProvider API.
é    N©Ú_)ÚSpyderCompletionProvider)ÚFallbackActorc                   @   sN   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	ddd„Z
dd„ ZdS )ÚFallbackProviderZfallbacké   c                    sT   t  ˆ ||¡ tˆ ƒˆ _ˆ jj ‡ fdd„¡ ˆ jj ‡ fdd„¡ dˆ _i ˆ _d S )Nc                      s   ˆ j  ˆ j¡S ©N)Zsig_provider_readyÚemitÚCOMPLETION_PROVIDER_NAME© ©Úselfr   úTlib/python3.9/site-packages/spyder/plugins/completion/providers/fallback/provider.pyÚ<lambda>!   s   ÿz+FallbackProvider.__init__.<locals>.<lambda>c                    s   ˆ j  ˆ j| |¡S r   )Zsig_response_readyr	   r
   )Z_idZrespr   r   r   r   $   s   ÿF)	r   Ú__init__r   Úfallback_actorZsig_fallback_readyZconnectZsig_set_tokensÚstartedZrequests)r   ÚparentZconfigr   r   r   r      s    

ÿ
ÿzFallbackProvider.__init__c                 C   s   t dƒS )NZFallbackr   r   r   r   r   Úget_name)   s    zFallbackProvider.get_namec                 C   s   | j S r   )r   )r   Úlanguager   r   r   Ú&start_completion_services_for_language,   s    z7FallbackProvider.start_completion_services_for_languagec                 C   s   | j s| j ¡  d| _ d S ©NT)r   r   Ústartr   r   r   r   r   /   s    
zFallbackProvider.startc                 C   s   | j r| j ¡  d| _ d S )NF)r   r   Ústopr   r   r   r   Úshutdown4   s    
zFallbackProvider.shutdownNc                 C   s,   ||d ||dœ}||d< | j j |¡ d S )NÚfile)Útyper   ÚidÚmsgr   )r   Zsig_mailboxr	   )r   r   Zreq_typeZreqZreq_idZrequestr   r   r   Úsend_request9   s    üzFallbackProvider.send_requestc                 C   s   dS r   r   r   r   r   r   Ú	can_closeC   s    zFallbackProvider.can_close)N)Ú__name__Ú
__module__Ú__qualname__r
   ZDEFAULT_ORDERr   r   r   r   r   r   r    r   r   r   r   r      s   

r   )Ú__doc__ZloggingZspyder.config.baser   Zspyder.plugins.completion.apir   Z2spyder.plugins.completion.providers.fallback.actorr   Z	getLoggerr!   Zloggerr   r   r   r   r   Ú<module>   s   
