
    FhE                         S r SSKrSSKrSSK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
\5      rSS jrS rS rS rS rS rg)ae  
This module contains a Jupyter Server extension that attempts to
make classic server and notebook extensions work in the new server.

Unfortunately, you'll notice that requires some major monkey-patching.
The goal is that this extension will only be used as a temporary
patch to transition extension authors from classic notebook server to jupyter_server.
    N)wraps)jupyter_config_path)is_trait)ConfigManager   )NotebookAppTraitsc                       \ rS rSrSrg)ClassProxyError    N)__name__
__module____qualname____firstlineno____static_attributes__r       iC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\notebook_shim/nbserver.pyr
   r
      s    r   r
   c                   ^^^ [        U T5      (       a3  USL a.  [        SR                  TU R                  TR                  S95      e[	        TT5      m[	        TR                  T5      n[        U5      (       d  [        T5      [        :X  a  [        UU4S j5      nO6[        T[        R                  5      (       a  [        T5      U4S j5       nOTn[        U R                  TU5        g)zARedirects a method, property, or trait from object 1 to object 2.FzZCannot proxy the attribute '{name}' from {cls2} because {cls1} already has this attribute.)namecls1cls2c                    > [        TT5      $ N)getattr)selfr   obj2s    r   <lambda>proxy.<locals>.<lambda>)   s    gdD&9r   c                    > T" U0 UD6$ r   r   )r   argskwargsattrs      r   thingproxy.<locals>.thing,   s    (((r   N)hasattrr
   format	__class__r   r   typeproperty
isinstancetypes
MethodTyper   setattr)obj1r   r   	overwritecls_attrr#   r"   s    ``   @r   proxyr1      s    tTyE1117^^^^ 28 2
 	
 4D t~~t,HT$Z839:	D%**	+	+	t	) 
	)
 DNND%(r   c                     [         R                  " U 5      nU VVs/ s H  u  p#UR                  S5      (       a  M  UPM!     snn$ s  snnf )N_)inspect
getmembers
startswith)objmembersmr3   s       r   public_membersr:   7   s7      %G!;'$!c):A';;;s
   AAc                 b    [        U 5      n[        U5      n[        U5      R                  U5      $ )z5Return all attribute names found in obj2 but not obj1)r:   set
difference)r.   r   m1m2s       r   diff_membersr@   <   s+    		B		Br7b!!r   c                 ~    [        U S9nUR                  S5      nUR                  S0 5      R                  S0 5      nU$ )N)read_config_pathjupyter_notebook_configNotebookAppnbserver_extensions)r   get)config_dirscmsection
extensionss       r   get_nbserver_extensionsrK   C   s?    		4Bff./G]B/334I2NJr   c                    U R                   nU R                  nS n[        U5      UR                  l         UR
                  S   nUR                  SU 5        UR                  S   nUR                  n[        X5      nU H  n[        XU5        M     [        5       n	XR                  /-   n
[        U
5      nUR!                  5        H]  u  pXR
                  ;  d  M  UR#                  XS9nU(       d  M.  UR%                  SR'                  US95        UR)                  U5        M_     g ! [         a    [        5       n Nf = f)Nc                     [        U R                  R                  5       5      nUR                  S5        S/U-   nU Vs0 s H  o"U R                  U   _M     sn$ s  snf )z[Dictionary with extension package names as keys
and an ExtensionPackage objects as values.
notebook_shim)sortedrJ   keysremove)r   rP   keys      r   sorted_extensions9_link_jupyter_server_extension.<locals>.sorted_extensionsT   sX    
 doo**,-O$ 4'59:TcT__S))T:::s   ArN   )enabledz}{name} | extension was found and enabled by notebook_shim. Consider moving the extension to Jupyter Server's extension paths.)r   )extension_managerlogr)   r'   rS   rJ   
link_pointextension_pointsapp	Exceptionr   r@   r1   r   
config_dirrK   itemsadd_extensioninfor&   link_extension)	serverappmanagerloggerrS   pkgpointnbappr8   r9   jupyter_pathsrG   rE   r   rU   
successfuls                  r   _link_jupyter_server_extensionri   J   s6   ))G]]F; +33D*EG'$  1	2$$_5		
 9,Gi"  ()M#7#7"88K1+> -224 ))) ..t.EJz''-v4v'8
 &&t, 5  $!#$s   <D) )E ?E c                     U R                   nUR                  nU[        5        Vs/ s H#  n[        R                  R                  US5      PM%     sn-  nX!l        g s  snf )Nnbconfig)config_managerrB   r   ospathjoin)ra   rl   rB   ps       r   _load_jupyter_server_extensionrq      s^     --N%66"5"79"7Q a4"79 9&6#9s   *A)F)__doc__rm   r+   r4   	functoolsr   jupyter_core.pathsr   traitlets.traitletsr   &jupyter_server.services.config.managerr   traitsr   r[   r
   r1   r:   r@   rK   ri   rq   r   r   r   <module>rx      sR    
    2 ( A %	i 	)<<
":-x7r   