
    Je                     J   d 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
 ddlmZmZ ddlmZ ddlmZ  ej$                  ed	      Z ee      Zej-                  ed	       eD  ch c]  } | j/                          c} Z ej0                  e      Z G d
 de      Zyc c} w )z'Custom text snippets completion plugin.    N)on_conf_change)_running_under_pytest)SNIPPETS)SpyderCompletionProviderSUPPORTED_LANGUAGES)SnippetsActor)SnippetsConfigTabPythonc                       e Zd ZdZdZeD  cg c]  }|t
        |   f c}}} ZdZegZ	d Z
d Zd Zd Zd Zd	 ZddZed        Zy
c c}}} w )SnippetsProvidersnippets   z0.1.0c                 ,    t        j                   ||       t                _         j                  j                  j                   j                          j                  j                  j                   fd       d _        i  _	        | _
        y )Nc                 R    j                   j                  j                  | |      S N)sig_response_readyemitCOMPLETION_PROVIDER_NAME)_idrespselfs     W/usr/lib/python3/dist-packages/spyder/plugins/completion/providers/snippets/provider.py<lambda>z+SnippetsProvider.__init__.<locals>.<lambda>.   s%    d55::--sD:     F)r   __init__r	   snippets_actorsig_snippets_readyconnectsignal_provider_readysig_snippets_responsestartedrequestsconfig)r   parentr$   s   `  r   r   zSnippetsProvider.__init__(   s{     ))$?+D1..66&&	(1199:	; r   c                     t        d      S )NzText snippets)r   r   s    r   get_namezSnippetsProvider.get_name4   s    !!r   c                     | j                   S r   )r"   )r   languages     r   &start_completion_services_for_languagez7SnippetsProvider.start_completion_services_for_language7   s    ||r   c                 `    | j                   s"| j                  j                          d| _         y y )NT)r"   r   startr'   s    r   r-   zSnippetsProvider.start:   s'    ||%%'DL r   c                     | j                  | j                         | j                  j                  | j                         y r   )update_snippetsr$   sig_provider_readyr   r   r'   s    r   r    z&SnippetsProvider.signal_provider_ready?   s.    T[[)$$T%B%BCr   c                 `    | j                   r"| j                  j                          d| _         y y )NF)r"   r   stopr'   s    r   shutdownzSnippetsProvider.shutdownC   s'    <<$$& DL r   Nc                 l    ||d   ||d}||d<   | j                   j                  j                  |       y )Nfile)typer5   idmsgr*   )r   sig_mailboxr   )r   r*   req_typereqreq_idrequests         r   send_requestzSnippetsProvider.send_requestH   s>    K	
 #J'',,W5r   c                     t               r t        j                  j                  d      sy || _        i }t
        D ]  }|j                  |i       ||<    | j                  j                  j                  |       y )NSPY_TEST_USE_INTROSPECTION)	r   osenvirongetr$   SUPPORTED_LANGUAGES_PYr   sig_update_snippetsr   )r   r   snippet_infor*   s       r   r/   z SnippetsProvider.update_snippetsR   sh    !::>>">?. 	@H%-\\(B%?L"	@//44\Br   r   )__name__
__module____qualname__r   DEFAULT_ORDERr   CONF_DEFAULTSCONF_VERSIONr
   	CONF_TABSr   r(   r+   r-   r    r3   r>   r   r/   ).0langr   s   000r   r   r   !   sw    )M8@AAdHTN+AML"#I
" 
D!
6 	C 	C_ Bs   A
r   )__doc__rA   bisectloggingspyder.api.config.decoratorsr   spyder.config.baser   r   spyder.config.snippetsr   spyder.plugins.completion.apir   r   2spyder.plugins.completion.providers.snippets.actorr	   5spyder.plugins.completion.providers.snippets.conftabsr
   bisect_left
PYTHON_POSlistrD   insertlower	getLoggerrG   loggerr   )xs   0r   <module>ra      s    . 
   8 6 +@ L  V 3X>
12    j( 3-CD!'')D 			8	$;C/ ;C Es   (B 