Ë
    :vžj~>  ã                  ó  — d Z ddlmZ ddlZddlZddlZddlZddlZddl	Z	ddl
mZmZmZ ddlmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ ej:                  j<                  Zd	Z  G d
„ de«      Z! ejD                  dejF                  «      Z$dd„Z%dZ&dd„Z'dd„Z( G d„ de)«      Z* G d„ de«      Z+dd„Z,dd„Z-	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z.e+j\                  j                   e._         d d!d„Z/e+j^                  j                   e/_         y)"zTools for managing kernel specsé    )ÚannotationsN)ÚSYSTEM_JUPYTER_PATHÚjupyter_data_dirÚjupyter_path)	ÚBoolÚCaselessStrEnumÚDictÚ	HasTraitsÚListÚSetÚTypeÚUnicodeÚobserve)ÚLoggingConfigurableé   )ÚKernelProvisionerFactoryÚpython3c                  óÔ   — e Zd ZU dZ e«       Zded<    e«       Z e«       Z	 e«       Z
 e«       Z e«       Z e«       Z e«       Z eddgd¬«      Z e«       Zedd„«       Zdd„Zdd	„Zy
)Ú
KernelSpeczA kernel spec model object.ú	List[str]ÚargvÚmessageÚsignal)Údefault_valuec                óœ   — t        |d«      }t        |d¬«      5 }t        j                  |«      }ddd«        | dd|i¤ŽS # 1 sw Y   ŒxY w)z|Create a KernelSpec object by reading kernel.json

        Pass the path to the *directory* containing kernel.json.
        úkernel.jsonzutf-8)ÚencodingNÚresource_dir© )ÚpjoinÚopenÚjsonÚload)Úclsr   Úkernel_fileÚfÚkernel_dicts        új/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyter_client/kernelspec.pyÚfrom_resource_dirzKernelSpec.from_resource_dir'   sJ   € ô ˜L¨-Ó8ˆÜ�+¨Õ0°AÜŸ)™) A›,ˆK÷ 1áÑ< Ð<°Ñ<Ð<÷ 1Ð0ús   šAÁAc                ó¦   — | j                   | j                  | j                  | j                  | j                  | j
                  | j                  dœ}|S )z"Convert the kernel spec to a dict.©r   ÚenvÚdisplay_nameÚlanguageÚinterrupt_modeÚmetadataÚkernel_protocol_versionr+   )ÚselfÚds     r(   Úto_dictzKernelSpec.to_dict2   sI   € ð —I‘IØ—8‘8Ø ×-Ñ-ØŸ™Ø"×1Ñ1ØŸ™Ø'+×'CÑ'Cñ
ˆð ˆó    c                óH   — t        j                  | j                  «       «      S )zOSerialise this kernelspec to a JSON object.

        Returns a string.
        )r"   Údumpsr4   ©r2   s    r(   Úto_jsonzKernelSpec.to_json@   s   € ô
 �z‰z˜$Ÿ,™,›.Ó)Ð)r5   N)r$   ztype[KernelSpec]r   ÚstrÚreturnr   ©r;   zdict[str, t.Any]©r;   r:   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   ÚnameÚmimetyper-   r.   r1   r	   r,   r   r   r/   r0   Úclassmethodr)   r4   r9   r   r5   r(   r   r      sw   … Ù%á“f€Dˆ)ÓÙ‹9€DÙ‹y€HÙ“9€LÙ‹y€HÙ%›iÐÙ
‹&€CÙ“9€LÙ$ i°Ð%:È(ÔS€NÙ‹v€Hàò=ó ð=óô*r5   r   z^[a-z0-9._\-]+$c                ó,   — t         j                  | «      S )z"Check that a kernel name is valid.)Ú_kernel_name_patÚmatch©rC   s    r(   Ú_is_valid_kernel_namerJ   K   s   € ô ×!Ñ! $Ó'Ð'r5   zuKernel names can only contain ASCII letters and numbers and these separators: - . _ (hyphen, period, and underscore).c                ó–   — t         j                  j                  | «      xr) t         j                  j                  t	        | d«      «      S )zIs ``path`` a kernel directory?r   )ÚosÚpathÚisdirÚisfiler    )rM   s    r(   Ú_is_kernel_dirrP   W   s.   € ä�7‰7�=‰=˜ÓÒM¤2§7¡7§>¡>´%¸¸mÓ2LÓ#MÐMr5   c                ó6  — | �t         j                  j                  | «      si S i }t        j                  | «      D ][  }t	        | |«      }t        |«      sŒ|j                  «       }t        |«      s!t        j                  dt        › d|› �d¬«       |||<   Œ] |S )z…Return a mapping of kernel names to resource directories from dir.

    If dir is None or does not exist, returns an empty dict.
    z#Invalid kernelspec directory name (z): é   ©Ú
stacklevel)rL   rM   rN   Úlistdirr    rP   ÚlowerrJ   ÚwarningsÚwarnÚ_kernel_name_description)ÚdirÚkernelsr&   rM   Úkeys        r(   Ú_list_kernels_inr]   \   s’   € ð
 €{œ"Ÿ'™'Ÿ-™-¨Ô,Øˆ	Ø€GÜ�Z‰Z˜Ž_ˆÜ�S˜!‹}ˆÜ˜dÔ#ØØ�g‰g‹iˆÜ$ SÔ)Ü�M‰MØ5Ô6NÐ5OÈsÐSWÐRXÐYØõð ˆ�Šð ð €Nr5   c                  ó    — e Zd ZdZdd„Zdd„Zy)ÚNoSuchKernelz7An error raised when there is no kernel of a give name.c                ó   — || _         y)zInitialize the error.NrI   )r2   rC   s     r(   Ú__init__zNoSuchKernel.__init__u   s	   € àˆ�	r5   c                ó    — d| j                   › �S )NzNo such kernel named rI   r8   s    r(   Ú__str__zNoSuchKernel.__str__y   s   € Ø& t§y¡y kÐ2Ð2r5   N)rC   r:   r;   ÚNoner=   )r>   r?   r@   rA   ra   rc   r   r5   r(   r_   r_   r   s   „ ÙAóô3r5   r_   c                  ó^  — e Zd ZU dZ eedd¬«      Z eddd¬«      Z e	«       Z
dd„Z e	«       Zdd„Z edd¬«      Z edd	¬«      Z ed
¬«      Zded<   ddiZ e ee«      Ž dd„«       Zdd„Zdd„Zd d„Zd!d„Zd"d„Zd#d„Zd$d„Z	 d%	 	 	 	 	 	 	 d&d„Z	 	 	 	 d'	 	 	 	 	 	 	 	 	 	 	 d(d„Z d)d*d„Z!y)+ÚKernelSpecManagerzA manager for kernel specs.Tz„The kernel spec class.  This is configurable to allow
        subclassing of the KernelSpecManager for customized behavior.
        )ÚconfigÚhelpz†If there is no Python kernelspec registered and the IPython
        kernel is available, ensure it is added to the spec list.
        c                ó   — t        «       S )N)r   r8   s    r(   Ú_data_dir_defaultz#KernelSpecManager._data_dir_default’   s   € ÜÓ!Ð!r5   c                ó.   — t        | j                  d«      S )Nr[   )r    Údata_dirr8   s    r(   Ú_user_kernel_dir_defaultz*KernelSpecManager._user_kernel_dir_default—   s   € Ü�T—]‘] IÓ.Ð.r5   z@Deprecated, use `KernelSpecManager.allowed_kernelspecs`
        z^List of allowed kernel names.

        By default, all installed kernels are allowed.
        az  
        List of kernel directories to search.

        Directories earlier in the list take priority: when two directories
        contain a kernelspec with the same name, the one from the earlier
        directory wins. This matches the precedence of ``$JUPYTER_PATH``,
        where the first entry has the highest priority (see
        ``jupyter_path("kernels")``).
        )rh   r   Úkernel_dirsÚ	whitelist)Úallowed_kernelspecsz7.0c                óJ  — |j                   }| j                  |   \  }}t        | |«      }||j                  k7  rj| j                  j                  | j                  j                  › d|› d|› d| j                  j                  › d|› d�
«       t        | ||j                  «       yy)zobserver for deprecated traitsÚ.z! is deprecated in jupyter_client z, use z insteadN)	rC   Ú_deprecated_aliasesÚgetattrÚnewÚlogÚwarningÚ	__class__r>   Úsetattr)r2   ÚchangeÚold_attrÚnew_attrÚversionÚ	new_values         r(   Ú_deprecated_traitz#KernelSpecManager._deprecated_trait¸   s¢   € ð —;‘;ˆØ ×4Ñ4°XÑ>Ñˆ�'Ü˜D (Ó+ˆ	Ø˜Ÿ
™
Ò"ð �H‰H×ÑØ—>‘>×*Ñ*Ð+¨1¨X¨JÐ6WØ�)˜6 $§.¡.×"9Ñ"9Ð!:¸!¸H¸:ÀXðOôô �D˜( F§J¡JÕ/ð #r5   c                ó²   — t        d«      }	 ddlm} |j                  t        j
                  j                   |«       d«      «       |S # t        $ r Y |S w xY w)Nr[   r   )Úget_ipython_dir)r   ÚIPython.pathsr�   ÚappendrL   rM   ÚjoinÚModuleNotFoundError)r2   Údirsr�   s      r(   Ú_kernel_dirs_defaultz&KernelSpecManager._kernel_dirs_defaultÈ   sR   € Ü˜IÓ&ˆð	å5à�K‰KœŸ™Ÿ™¡_Ó%6¸	ÓBÔCð ˆøô #ò 	ØØˆð	ús   �:A	 Á		AÁAc                ó0  — i }| j                   D ]L  }t        |«      }|j                  «       D ],  \  }}||vsŒ| j                  j	                  d||«       |||<   Œ. ŒN | j
                  r9t        |vr1	 ddlm} | j                  j	                  dt        |«       ||t        <   | j                  r2|j                  «       D ��ci c]  \  }}|| j                  v sŒ||“Œ }}}|S # t        $ r# | j                  j                  dt        «       Y Œkw xY wc c}}w )ú<Returns a dict mapping kernel names to resource directories.zFound kernel %s in %sr   ©Ú	RESOURCESz$Native kernel (%s) available from %sz#Native kernel (%s) is not available)rn   r]   Úitemsrv   ÚdebugÚensure_native_kernelÚNATIVE_KERNEL_NAMEÚipykernel.kernelspecr‹   ÚImportErrorrw   rp   )r2   r3   Ú
kernel_dirr[   ÚknameÚspecr‹   rC   s           r(   Úfind_kernel_specsz#KernelSpecManager.find_kernel_specsÕ   s	  € àˆØ×*Ô*ˆJÜ& zÓ2ˆGØ&Ÿ}™}ž‘��tØ ’>Ø—H‘H—N‘NÐ#:¸EÀ:ÔNØ#�A�e’Hñ  /ð +ð ×$Ò$Ô);À1Ñ)Dð
\Ý:à—‘—‘Ø:Ü&Øôð
 )2�Ô$Ñ%ð ×#Ò#à./¯g©g¬iÔ\©i¡
  d¸4À4×C[ÑC[Ò;[��t‘¨iˆAÑ\Øˆøô ò \Ø—‘× Ñ Ð!FÔHZÖ[ð\üó
 ]s   Á30C# ÃDÃDÃ#)DÄDc                ó<  — d}|t         k(  r*	 ddlm}m} ||k(  r |«       } | j                  dd|i|¤Ž}	 |s| j                  j                  |«      }t        j                  | j                  ¬«      j                  |«      st        |«      ‚|S # t
        $ r Y Œdw xY w)zaReturns a :class:`KernelSpec` instance for a given kernel_name
        and resource_dir.
        Nr   )r‹   Úget_kernel_dictr   )Úparentr   )r�   r�   r‹   r—   Úkernel_spec_classr‘   r)   ÚKPFÚinstancer˜   Úis_provisioner_availabler_   )r2   Úkernel_namer   Úkspecr‹   r—   Úkdicts          r(   Ú_get_kernel_spec_by_namez*KernelSpecManager._get_kernel_spec_by_nameò   s    € ð ˆØÔ,Ò,ðWßKð
   9Ò,Ù+Ó-�EØ2˜D×2Ñ2ÑVÀÐVÐPUÑV‘EÙØ×*Ñ*×<Ñ<¸\ÓJˆEä�|‰| 4§;¡;Ô/×HÑHÈÔOÜ˜{Ó+Ð+àˆøô ò áðús   �B Â	BÂBc                óh  — | j                   D �cg c]$  }t        j                  j                  |«      sŒ#|‘Œ& c}D ]O  }t        j                  |«      }|D ]3  }t        ||«      }|j                  «       |k(  sŒ#t        |«      sŒ/|c c S  ŒQ |t        k(  r		 ddl	m
} |S yc c}w # t        $ r Y yw xY w)z2Find the resource directory of a named kernel specr   rŠ   N)rn   rL   rM   rN   rU   r    rV   rP   r�   r�   r‹   r‘   )r2   r�   Úkdr’   Úfilesr&   rM   r‹   s           r(   Ú_find_spec_directoryz&KernelSpecManager._find_spec_directory	  s®   € à(,×(8Ò(8ÓNÑ(8 "¼B¿G¹G¿M¹MÈ"Õ<Mš2Ð(8ÔNˆJÜ—J‘J˜zÓ*ˆEÛ�Ü˜Z¨Ó+�Ø—7‘7“9 Ó+´¸tÕ0DØ”Kñ ð Oð Ô,Ò,ð!Ý:ð !Ð Øùò Oøô ò Øð ð	ús   �$B ´B ÂB% Â%	B1Â0B1c                óÞ   — t        |«      s%| j                  j                  d|› dt        › �«       | j	                  |j                  «       «      }|€t        |«      ‚| j                  ||«      S )z•Returns a :class:`KernelSpec` instance for the given kernel_name.

        Raises :exc:`NoSuchKernel` if the given kernel name is not found.
        zKernelspec name z is invalid: )rJ   rv   rw   rY   r¤   rV   r_   r    )r2   r�   r   s      r(   Úget_kernel_specz!KernelSpecManager.get_kernel_spec  so   € ô
 % [Ô1Ø�H‰H×ÑØ" ; -¨}Ô=UÐ<VÐWôð ×0Ñ0°×1BÑ1BÓ1DÓEˆØÐÜ˜{Ó+Ð+à×,Ñ,¨[¸,ÓGÐGr5   c                ób  — | j                  «       }i }|j                  «       D ]R  \  }}	 | j                  t        u r| j	                  ||«      }n| j                  |«      }||j                  «       dœ||<   ŒT |S # t        $ r Y Œbt        $ r! | j                  j                  d|d¬«       Y ŒŠw xY w)a*  Returns a dict mapping kernel names to kernelspecs.

        Returns a dict of the form::

            {
              'kernel_name': {
                'resource_dir': '/path/to/kernel_name',
                'spec': {"the spec itself": ...}
              },
              ...
            }
        )r   r”   zError loading kernelspec %rT)Úexc_info)r•   rŒ   rx   rf   r    r¦   r4   r_   Ú	Exceptionrv   rw   )r2   r3   Úresr“   r   r”   s         r(   Úget_all_specszKernelSpecManager.get_all_specs+  s·   € ð ×"Ñ"Ó$ˆØˆØ#$§7¡7¦9ÑˆE�<ðVØ—>‘>Ô%6Ñ6Ø×8Ñ8¸ÀÓM‘Dð
  ×/Ñ/°Ó6�Dà.:ÀDÇLÁLÃNÑS��E’
ð $-ð ˆ
øô	  ò ÙÜò VØ—‘× Ñ Ð!>ÀÐPTÐ ÖUðVús   ªAA:Á:	B.Â&B.Â-B.c                óL  — | j                   }	 d| _         | j                  «       }|| _         ||   }| j                  j                  d|«       t        j
                  j                  |«      rt	        j                  |«       |S t        j                  |«       |S # || _         w xY w)z\Remove a kernel spec directory by name.

        Returns the path that was deleted.
        FzRemoving %s)
rŽ   r•   rv   r�   rL   rM   ÚislinkÚremoveÚshutilÚrmtree)r2   rC   Úsave_nativeÚspecsÚspec_dirs        r(   Úremove_kernel_specz$KernelSpecManager.remove_kernel_specK  s�   € ð
 ×/Ñ/ˆð	4Ø(-ˆDÔ%Ø×*Ñ*Ó,ˆEà(3ˆDÔ%Ø˜‘;ˆØ�‰�‰�} hÔ/Ü�7‰7�>‰>˜(Ô#Ü�I‰I�hÔð ˆô �M‰M˜(Ô#Øˆøð )4ˆDÕ%ús   ŽB Â	B#Nc                ó.  — |r*t         j                  j                  | j                  |«      S |r@t         j                  j                  t         j                  j	                  |«      ddd|«      S t         j                  j                  t
        d   d|«      S )NÚshareÚjupyterr[   r   )rL   rM   r„   Úuser_kernel_dirÚabspathr   )r2   r�   ÚuserÚprefixs       r(   Ú_get_destination_dirz&KernelSpecManager._get_destination_dir^  sk   € ñ Ü—7‘7—<‘< × 4Ñ 4°kÓBÐBÙÜ—7‘7—<‘<¤§¡§¡°Ó 7¸À)ÈYÐXcÓdÐdä—7‘7—<‘<Ô 3°AÑ 6¸	À;ÓOÐOr5   c                ó:  — |j                  d«      }|st        j                  j                  |«      }|j	                  «       }t        |«      sd|›dt        › �}t        |«      ‚|r|rd}t        |«      ‚|�t        j                  dt        d¬«       | j                  |||¬«      }| j                  j                  d	|«       t        j                  j                  |«      }|| j                  vr'| j                  j!                  d
|| j                  «       t        j                  j#                  |«      r1| j                  j%                  d|«       t'        j(                  |«       t'        j*                  ||«       | j                  j%                  d||«       |S )a#  Install a kernel spec by copying its directory.

        If ``kernel_name`` is not given, the basename of ``source_dir`` will
        be used.

        If ``user`` is False, it will attempt to install into the systemwide
        kernel registry. If the process does not have appropriate permissions,
        an :exc:`OSError` will be raised.

        If ``prefix`` is given, the kernelspec will be installed to
        PREFIX/share/jupyter/kernels/KERNEL_NAME. This can be sys.prefix
        for installation inside virtual or conda envs.
        z/\zInvalid kernel name z.  zCCan't specify both user and prefix. Please choose one or the other.zTreplace is ignored. Installing a kernelspec always replaces an existing installationé   rS   )rº   r»   zInstalling kernelspec in %szFInstalling to %s, which is not in %s. The kernelspec may not be found.z"Removing existing kernelspec in %szInstalled kernelspec %s in %s)ÚrstriprL   rM   ÚbasenamerV   rJ   rY   Ú
ValueErrorrW   rX   ÚDeprecationWarningr¼   rv   r�   Údirnamern   rw   rN   Úinfor¯   r°   Úcopytree)	r2   Ú
source_dirr�   rº   Úreplacer»   ÚmsgÚdestinationr’   s	            r(   Úinstall_kernel_specz%KernelSpecManager.install_kernel_spech  sW  € ð*  ×&Ñ& uÓ-ˆ
ÙÜŸ'™'×*Ñ*¨:Ó6ˆKØ!×'Ñ'Ó)ˆÜ$ [Ô1Ø(¨¨°sÔ;SÐ:TÐUˆCÜ˜S“/Ð!á‘FØWˆCÜ˜S“/Ð!àÐÜ�M‰Mðä"Øõ	ð ×/Ñ/°À$ÈvÐ/ÓVˆØ�‰�‰Ð4°kÔBä—W‘W—_‘_ [Ó1ˆ
Ø˜T×-Ñ-Ñ-Ø�H‰H×ÑØXØØ× Ñ ôô �7‰7�=‰=˜Ô%Ø�H‰H�M‰MÐ>ÀÔLÜ�M‰M˜+Ô&ä�‰˜
 KÔ0Ø�‰�‰Ð5°{ÀKÔPØÐr5   c                óR   — t        j                  dd¬«       ddlm}  || |¬«       y)z,DEPRECATED: Use ipykernel.kernelspec.installzRinstall_native_kernel_spec is deprecated. Use ipykernel.kernelspec import install.r¾   rS   r   )Úinstall©rº   N)rW   rX   r�   rÌ   )r2   rº   rÌ   s      r(   Úinstall_native_kernel_specz,KernelSpecManager.install_native_kernel_spec¤  s#   € ä�‰Ø`Øõ	
õ 	1á�˜4Ö r5   r=   )rz   út.Anyr;   rd   )r;   z	list[str]©r;   údict[str, str])r�   r:   r   r:   r;   r   )r�   r:   r;   ú
str | None©r�   r:   r;   r   r<   )rC   r:   r;   r:   )FN)r�   r:   rº   Úboolr»   rÒ   r;   r:   )NFNN©rÆ   r:   r�   rÒ   rº   rÔ   rÇ   zbool | Noner»   rÒ   r;   r:   ©F©rº   rÔ   r;   rd   )"r>   r?   r@   rA   r   r   r™   r   rŽ   r   rl   rj   r¸   rm   r   ro   rp   r   rn   rB   rs   r   Úlistr   r‡   r•   r    r¤   r¦   r«   r´   r¼   rÊ   rÎ   r   r5   r(   rf   rf   }   sh  … Ù%áØØðôÐñ  ØØðôÐñ ‹y€Hó"ñ “i€Oó/ñ Øðô€Iñ
 ØðôÐñ "ðô
€K�ó 
ð 	Ð3ðÐñ ‰dÐ&Ó'Ð(ò0ó )ð0óóó:ó.ó$Hó ó@ð( JNðPØðPØ&*ðPØ<FðPà	óPð #'ØØ#Ø!ð:àð:ð  ð:ð ð	:ð
 ð:ð ð:ð 
ó:õx!r5   rf   c                 ó2   — t        «       j                  «       S )r‰   )rf   r•   r   r5   r(   r•   r•   ¯  s   € äÓ×0Ñ0Ó2Ð2r5   c                ó4   — t        «       j                  | «      S )z‚Returns a :class:`KernelSpec` instance for the given kernel_name.

    Raises KeyError if the given kernel name is not found.
    )rf   r¦   )r�   s    r(   r¦   r¦   ´  s   € ô
 Ó×.Ñ.¨{Ó;Ð;r5   c                ó<   — t        «       j                  | ||||«      S )z+Install a kernel spec in a given directory.)rf   rÊ   )rÆ   r�   rº   rÇ   r»   s        r(   rÊ   rÊ   ¼  s"   € ô Ó×2Ñ2°:¸{ÈDÐRYÐ[aÓbÐbr5   c                ó8   — t        «       j                  | ¬«       y)zInstall the native kernel spec.rÍ   N)rf   rÎ   rÍ   s    r(   rÎ   rÎ   Ê  s   € äÓ×2Ñ2¸Ð2Õ=r5   )rC   r:   r;   rÏ   )rM   r:   r;   rÔ   )rZ   rÒ   r;   rÑ   rÐ   rÓ   )NFFNrÕ   rÖ   r×   )0rA   Ú
__future__r   r"   rL   Úrer¯   ÚtypingÚtrW   Újupyter_core.pathsr   r   r   Ú	traitletsr   r   r	   r
   r   r   r   r   r   Útraitlets.configr   Úprovisioningr   rš   rM   r„   r    r�   r   ÚcompileÚ
IGNORECASErG   rJ   rY   rP   r]   ÚKeyErrorr_   rf   r•   r¦   rÊ   rÎ   r   r5   r(   Ú<module>rè      s3  ðÙ %õ #ã Û 	Û 	Û Û Û ç RÑ Rß _× _Õ _Ý 0å 9à
�‰�‰€àÐ ô,*�ô ,*ð^ �2—:‘:Ð0°"·-±-Ó@Ð ó(ð/ð óNó
ô,3�8ô 3ôo!Ð+ô o!ód	3ó
<ð #ØØ ØðcØðcàðcð ðcð ð	cð
 ðcð 	ócð 0×CÑC×KÑKÐ Ô ô>ð
 &7×%QÑ%Q×%YÑ%YÐ Õ "r5   