Ë
    :vžjE  ã                   ó˜   — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ  G d	„ d
e«      Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)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                   ó   — e Zd Zy)ÚClassProxyErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úg/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/notebook_shim/nbserver.pyr
   r
      s   „ Ør   r
   c                 ó¸  ‡‡‡— t        | ‰«      r5|du r1t        dj                  ‰| j                  ‰j                  ¬«      «      ‚t	        ‰‰«      Št	        ‰j                  ‰«      }t        |«      st        ‰«      t        k(  rt        ˆˆfd„«      }n0t        ‰t        j                  «      rt        ‰«      ˆfd„«       }n‰}t        | j                  ‰|«       y)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        ‰‰«      S ©N)Úgetattr)Úselfr   Úobj2s    €€r   Ú<lambda>zproxy.<locals>.<lambda>)   s   ø€ ¤g¨d°DÔ&9r   c                 ó   •—  ‰|i |¤ŽS r   r   )r   ÚargsÚkwargsÚattrs      €r   Úthingz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   Úproxyr,      sÁ   ú€ äˆt�TÔ˜y¨EÑ1Üð1ß17±ØØ—^‘^Ø—^‘^ð 28ó 2ó
ð 	
ô �4˜Ó€Dô �t—~‘~ tÓ,€HÜ�ÔœT $›Z¬8Ò3ÜÔ9Ó:‰ä	�Dœ%×*Ñ*Ô	+Ü	ˆt‹ó	)ó 
ñ	)ð
 ˆäˆD�N‰N˜D %Õ(r   c                 ó†   — t        j                  | «      }|D ��cg c]  \  }}|j                  d«      rŒ|‘Œ c}}S c c}}w )NÚ_)ÚinspectÚ
getmembersÚ
startswith)ÚobjÚmembersÚmr.   s       r   Úpublic_membersr5   7   s9   € Ü× Ñ  Ó%€GÙ!Ô;™'‘$�!�Q¨¯©°cÕ):ŠA˜'Ò;Ð;ùÓ;s   ›=µ=c                 ób   — t        | «      }t        |«      }t        |«      j                  |«      S )z5Return all attribute names found in obj2 but not obj1)r5   ÚsetÚ
difference)r)   r   Úm1Úm2s       r   Údiff_membersr;   <   s+   € ä	˜Ó	€BÜ	˜Ó	€BÜˆr‹7×Ñ˜bÓ!Ð!r   c                 ó„   — t        | ¬«      }|j                  d«      }|j                  di «      j                  di «      }|S )N)Úread_config_pathÚjupyter_notebook_configÚNotebookAppÚnbserver_extensions)r   Úget)Úconfig_dirsÚcmÚsectionÚ
extensionss       r   Úget_nbserver_extensionsrF   C   s?   € Ü	¨Ô	4€BØ�f‰fÐ.Ó/€GØ—‘˜]¨BÓ/×3Ñ3Ð4IÈ2ÓN€JØÐr   c                 ó‚  — | j                   }| j                  }d„ }t        |«      |j                  _        	 |j
                  d   }|j                  d| «       |j                  d   }|j                  }t        | |«      }|D ]  }t        | ||«       Œ t        «       }	|	| j                  gz   }
t        |
«      }|j!                  «       D ]\  \  }}||j
                  vsŒ|j#                  ||¬«      }|sŒ+|j%                  dj'                  |¬«      «       |j)                  |«       Œ^ y # t        $ r t        «       }Y ŒÊw xY w)Nc                 ó¼   — t        | j                  j                  «       «      }|j                  d«       dg|z   }|D �ci c]  }|| j                  |   “Œ c}S c c}w )zkDictionary with extension package names as keys
        and an ExtensionPackage objects as values.
        Únotebook_shim)ÚsortedrE   ÚkeysÚremove)r   rK   Úkeys      r   Úsorted_extensionsz9_link_jupyter_server_extension.<locals>.sorted_extensionsT   sZ   € ô
 �d—o‘o×*Ñ*Ó,Ó-ˆØ�‰�OÔ$ØÐ  4Ñ'ˆÙ59Ó:±T¨c��T—_‘_ SÑ)Ñ)°TÑ:Ð:ùÒ:s   ¿ArI   )Ú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"   rN   rE   Ú
link_pointÚextension_pointsÚappÚ	Exceptionr   r;   r,   r   Ú
config_dirrF   ÚitemsÚadd_extensionÚinfor!   Úlink_extension)Ú	serverappÚmanagerÚloggerrN   ÚpkgÚpointÚnbappr3   r4   Újupyter_pathsrB   r@   r   rO   Ú
successfuls                  r   Ú_link_jupyter_server_extensionrc   J   s@  € à×)Ñ)€GØ�]‰]€Fò;ô +3Ð3DÓ*E€G×ÑÔ'ð$Ø× Ñ  Ñ1ˆØ�‰�¨	Ô2Ø×$Ñ$ _Ñ5ˆØ—	‘	ˆô
 ˜9 eÓ,€GÛˆÜˆi˜ Õ"ð ô (Ó)€MØ 9×#7Ñ#7Ð"8Ñ8€KÜ1°+Ó>Ðð -×2Ñ2Ö4‰ˆˆgð �w×)Ñ)Ò)Ø ×.Ñ.¨t¸WÐ.ÓEˆJÚØ—‘ð'ç'-¡v°4 vÓ'8ôð
 ×&Ñ& tÕ,ñ 5øô ò $Ü!Ó#Šð$ús   ·<D( Ä(D>Ä=D>c                 ó¾   — | j                   }|j                  }|t        «       D �cg c]"  }t        j                  j                  |d«      ‘Œ$ c}z  }||_        y c c}w )NÚnbconfig)Úconfig_managerr=   r   ÚosÚpathÚjoin)r[   rf   r=   Úps       r   Ú_load_jupyter_server_extensionrk   †   s`   € ð ×-Ñ-€NØ%×6Ñ6ÐØÜ"5Ô"7ó9Ù"7˜Qô Ÿ™Ÿ™ a¨Õ4Ø"7ñ9ñ 9Ðà&6€NÕ#ùò9s   ¦'A)F)Ú__doc__rg   r&   r/   Ú	functoolsr   Újupyter_core.pathsr   Útraitlets.traitletsr   Ú&jupyter_server.services.config.managerr   Útraitsr   rU   r
   r,   r5   r;   rF   rc   rk   r   r   r   Ú<module>rr      sR   ðñó 
Û Û Ý Ý 2Ý (õ AÝ %ô	�iô 	ó)ò<<ò
"òò:-óx7r   