
    Fh0*                        S r SSKrSSKrSSKrSSKrSSKJrJrJrJ	r	  \R                  S:  a  SSKJr  OSSKJr  SSKJr  SSKJr   SSKJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJrJr  SSKJrJ r J!r!J"r"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)J*r*  SSK+J,r,J-r-J.r.J/r/J0r0   " S S\-5      r1\1Rd                  r3g! \ a	    SS	KJr   Nvf = f)z9A configurable frontend for stdio-based Language Servers
    N)DictTextTuplecast)   
   )entry_points)jupyter_config_path)ConfigManager)_i18n)_)Bool)r   )Instance)List)Unicodedefault   )APP_CONFIG_D_SECTIONSEP_LISTENER_ALL_V1EP_LISTENER_CLIENT_V1EP_LISTENER_SERVER_V1
EP_SPEC_V1)LANGUAGE_SERVER_SPEC_MAP)LanguageServerSession)LoadableCallableSchema)KeyedLanguageServerSpecsLanguageServerManagerAPIMessageScopeSpecBase	SpecMakerc                   T  ^  \ rS rSr% Sr\" \\" S5      S9r\" \\" S5      S9R                  SS9r
\" S\" S5      S	9R                  SS9r\\S
'   \" \" \5      0 SS9r\\\   \4   \S'   \" SS	9R                  SS9r\" SSS9r\" \S9R                  SS9r\" \S9R                  SS9r\" \S9R                  SS9r\" S5      S 5       r\" S5      S 5       r \" S5      S\!4S j5       r"S\4U 4S jjr#S r$S r%S)S jr&S\S\!4S  jr'S! r(S" r)S# r*S$ r+S% r,S& r-S\4S' jr.S(r/U =r0$ )*LanguageServerManager2   zManage language serverszAextra language server specs, keyed by implementation, from conf.d)	validatorhelpz8a dict of language server specs, keyed by implementationT)configz@try to find known language servers in sys.prefix (and elsewhere))r&   
autodetectz&sessions keyed by language server name)traitdefault_valuer&   sessionszPath to virtual documents relative to the content manager root
        directory.

        Its default value can be set with JP_LSP_VIRTUAL_DIR and fallback to
        '.virtual_documents'.
        z(Whether the manager has been initializedF)r&   r*   )r)   language_serversc                     0 $ N selfs    fC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jupyter_lsp/manager.py_default_language_servers/LanguageServerManager._default_language_serversd   s    	    virtual_documents_dirc                 B    [         R                  " SS 5      =(       d    S$ )NJP_LSP_VIRTUAL_DIRz.virtual_documents)osgetenvr0   s    r2   _default_virtual_documents_dir4LanguageServerManager._default_virtual_documents_dirh   s    yy-t4L8LLr5   conf_d_language_serversreturnc           
          0 n[        [        5       S9n[         H\  nUR                  " S0 UR	                  SU S35      R	                  U R
                  R                  0 5      R	                  S0 5      D6  M^     U$ )N)read_config_pathjupyterr'   r,   r/   )r   r
   r   updateget	__class____name__)r1   r,   managerapps       r2    _default_conf_d_language_servers6LanguageServerManager._default_conf_d_language_serversl   ss    571D1FG(C## ++uF34T^^,,b1', )  r5   kwargsc                 B   > 0 U l         0 U l        [        TU ]  " S0 UD6  g)z4Before starting, perform all necessary configurationNr/   )all_language_servers_language_servers_from_configsuper__init__)r1   rJ   rD   s     r2   rO   LanguageServerManager.__init__{   s#    >@!GI*"6"r5   c                 r    U R                  5         U R                  5         U R                  5         SU l        g )NT)init_language_serversinit_listenersinit_sessions_ready)r1   argsrJ   s      r2   
initialize LanguageServerManager.initialize   s-    ""$r5   c                    #    U R                   (       d1  [        R                  " S5      I S h  vN   U R                   (       d  M1  g N7f)Ng?T)rU   asynciosleepr0   s    r2   readyLanguageServerManager.ready   s1     ++--$$$ +++ %s   +AAAAc                     [        U R                  5      U l        U R                  SS9U l        U R                  SS9U l        g)z2determine the final language server configuration.Tonly_installedFN)dictr,   rM   _collect_language_serversrL   r0   s    r2   rR   +LanguageServerManager.init_language_servers   sD     .2$2G2G-H* $ > >d > S$($B$BRW$B$X!r5   r`   c                 l   0 n[        U R                  5      nUR                  U R                  5        U R                  (       a  UR                  U R                  US95        UR                  U5        UR                  5        VVs0 s H  u  pEUR                  S5      (       d  M  XE_M!     snn$ s  snnf )Nr_   argv)ra   rM   rB   r=   r(   _autodetect_language_serversitemsrC   )r1   r`   r,   language_servers_from_configkeyspecs         r2   rb   /LanguageServerManager._collect_language_servers   s     68'+D,N,N'O$$++D,H,HI??##111P
 	 <= ,<+A+A+CX+CictxxPVGW		+CXXXs   B0&B0c                 r    0 nU R                   R                  5        H  u  p#[        X#U S9X'   M     Xl        g)z*create, but do not initialize all sessions)language_serverrj   parentN)r,   rg   r   r+   )r1   r+   rm   rj   s       r2   rT   #LanguageServerManager.init_sessions   s=    %)%:%:%@%@%B!O(= /4)H% &C !r5   c                 D   [         R                  U R                  [        /[         R                  U R
                  [        /[         R                  U R                  [        /0nUR                  5        Hk  u  p#Uu  pE[        US9 H#  n UR                  UR                  5       5        M%     U H,  nU R$                  R'                  UR(                  S9" U5        M.     Mm     g! [         a2  nU R                  R!                  SUR"                  U5         SnAM  SnAff = f)z'register traitlets-configured listenersgroupz!Failed to load entry point %s: %sN)scope)r   ALLall_listenersr   CLIENTclient_listenersr   SERVERserver_listenersr   rg   r	   appendload	ExceptionlogwarningnamerD   register_message_listenervalue)	r1   scopesrs   trt_ep	listenersentry_pointepterrlisteners	            r2   rS   $LanguageServerManager.init_listeners   s     t113EF$"7"79N!O$"7"79N!O

 $\\^ME%+"I#+6Y$$SXXZ0 7 &88u{{8KHU & , ! YHH$$%H#((TWXXYs   	C##
D-'DDc                     U R                   R                  UR                  5      nUc5  U R                  R	                  SR                  UR                  5      5        g[        U/5      UR                  -  Ul        g)z&subscribe a handler to session, or staNz,[{}] no session: handler subscription failed)r+   rC   rm   r}   errorformatsethandlers)r1   handlersessions      r2   	subscribeLanguageServerManager.subscribe   sf    --##G$;$;<?HHNN>EE++
 y>G,<,<<r5   c                 P  #    U R                  [        R                  XR                  5      I S h  vN   U R                  R                  UR                  5      nUc5  U R                  R                  SR                  UR                  5      5        g UR                  U5        g  Ns7f)Nz'[{}] no session: client message dropped)
wait_for_listenersr   rv   rm   r+   rC   r}   r   r   write)r1   messager   r   s       r2   on_client_message'LanguageServerManager.on_client_message   s     %%*A*A
 	
 	
 --##G$;$;<?HHNN9@@++
 g	
s   .B&B$A4B&c                 0  #    U R                   R                  5        VVs/ s H  u  p4XB:X  d  M  UPM     nnnU H+  nU R                  [        R                  X5      I S h  vN   M-     UR
                   H  nUR                  U5        M     g s  snnf  N37fr.   )r+   rg   r   r   rx   r   write_message)r1   r   r   ls_keysessr,   r   s          r2   on_server_message'LanguageServerManager.on_server_message   s     '+}}':':'<
'<|vF'< 	 
 !1))##W   !1
 ''G!!'* (

s    BBB+B B!4Bc                    U R                   R                  UR                  5      nUc5  U R                  R	                  SR                  UR                  5      5        g UR                   Vs/ s H  o3U:w  d  M
  UPM     snUl        g s  snf )Nz.[{}] no session: handler unsubscription failed)r+   rC   rm   r}   r   r   r   )r1   r   r   hs       r2   unsubscribe!LanguageServerManager.unsubscribe   ss    --##G$;$;<?HHNN@GG++
 '.'7'7H'7!<A'7HHs   ,	B9Bc              #     #    S n [        [        S9n/ nU=(       d    /  GH  n UR                  5       n U(       aT  [        US5      (       aC  [        [        U5      nUR                  U 5      (       d  UR                  UR                  5        Mq  U" U 5      =(       d    0 n[#        [$        R&                  " U5      5      n	U	(       a@  U R                  R                  [        S5      R                  UR                  U	5      5        M  UR)                  5        H
  u  pX4v   M     GM	     U(       aC  U R                  R+                  [        S5      R                  SR-                  U5      5      5        g g ! [         a    U R                  R	                  S5         GNf = f! [         aJ  nU R                  R                  [        S5      R                  UR                  U5      5         S nAGM  S nAff = f! [         a_  nU R                  R                  [        S5      R                  UR                  U5      5        [        R                   " 5          S nAGM=  S nAff = f7f)	Nrq   zFailed to load entry_pointsz4Failed to load language server spec finder `{}`: 
{}is_installedzBFailed to fetch commands from language server spec finder `{}`:
{}zEFailed to validate commands from language server spec finder `{}`:
{}z#Skipped non-installed server(s): {}z, )r	   r   r|   r}   	exceptionr{   r~   r   r   r   hasattrr   r    r   rz   	traceback	print_exclistr   iter_errorsrg   infojoin)r1   r`   _entry_pointsskipped_serversepspec_finderr   spec_finder_from_basespecserrorsri   rj   s               r2   rf   2LanguageServerManager._autodetect_language_servers   s    	>(z:M %2%B)+!{N;;04X{0K-4AA$GG+22277;$#D)/R 2>>uEFF  % fRWWf-	 "[[]	i +S &X HHMM78??IIo. c  	>HH<=	>    MNUU
    	  % fRWWc*	 ##%	s   I%E6 I%F"AG9I%G9"CI%6%FI%FI%"
G6,>G1*I%1G66I%9
I"AII%I""I%)rM   rU   rL   r,   r+   )r>   N)1rE   
__module____qualname____firstlineno____doc__r   r   r   r=   tagr,   r   r(   bool__annotations__Dict_r   r   r+   r   r   r   r   r6   rU   List_r   ru   ry   rw   r   r3   r;   r   rH   rO   rW   r\   rR   rb   rT   rS   r   r   r   r   rf   __static_attributes____classcell__)rD   s   @r2   r#   r#   2   s   !$*RS
 *IJ 
c 
   1WX	cc  
 	019	
 d5; 556  $ 
cc  ;5F 	cc  	cc  	cc    ! $%M &M &' 2J   ( # #
YY"Y	!Y&!V(= +I;4 ; ;r5   r#   )4r   rZ   r9   sysr   typingr   r   r   r   version_infoimportlib_metadatar	   importlib.metadatajupyter_core.pathsr
   jupyter_server.services.configr   jupyter_server.transutilsr   r   ImportError	traitletsr   r   r   r   r   r   r   	constantsr   r   r   r   r   schemar   r   r   trait_typesr   r   typesr   r   r   r    r!   r#   r   lsp_message_listenerr/   r5   r2   <module>r      s     	 
  * * g// 2 8,4  #  # &  - * 1 D4 DP -FF I	  ,+,s   	B7 7CC