
    ^h5                         S r SSKrSSKrSSKrSSKrSSKJr  SSKJrJ	r	J
r
  S rS r1 Skr1 Skr1 S	krS
S1r\	 " S S\5      5       rg)z5Implementation of packaging-related magic functions.
    N)Path)Magicsmagics_class
line_magicc                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                     > [        [        R                  SS5      R                  5       (       d  [	        S5      eT" U 0 UD6$ )z>Return True if the current Python executable is in a conda env
conda-metahistoryzbThe python kernel does not appear to be a conda environment.  Please use ``%pip install`` instead.)r   sysprefixexists
ValueError)argskwargsfuncs     W/home/james-whalen/.local/lib/python3.13/site-packages/IPython/core/magics/packaging.pywrapper%is_conda_environment.<locals>.wrapper   sE     CJJi8??AA7  T$V$$    )	functoolswraps)r   r   s   ` r   is_conda_environmentr      s%    __T% % Nr   c                 f   [        [        R                  5      R                  U -  nUR	                  5       (       a  [        U5      $ [        [        R                  SS5      R                  SS9n[        R                  " SU S3U[        R                  S9nU(       a  UR                  5       S   $ U $ )	zFind the path to the given executable

Parameters
----------

executable: string
    Value should be: conda, mamba or micromamba
r	   r
   zutf-8)encodingz^#\s*cmd:\s*(?P<command>.*z)\s[create|install])flagscommand)r   r   
executableparentis_filestrr   	read_textresearch	MULTILINE	groupdict)r   r   r
   matchs       r   _get_conda_like_executabler'   #   s     cnn%,,w6J: 3::|Y7AA7ASGII%j\1DEllE
  ++ Nr   >   listremoveupdateinstallupgrade	uninstall>   r)   r*   r+   r,   r-   >   -n-p--name--prefixz-yz--yc                   |    \ rS rSrSr\S 5       rS r\\S 5       5       r	\\S 5       5       r
\\S 5       5       rSrg	)
PackagingMagicsK   z*Magics related to packaging & installationc                     [         R                  n[         R                  S:X  a	  SU-   S-   nO[        R                  " U5      nU R
                  R                  SR                  USSU/5      5        [        S5        g)zURun the pip package manager within the current kernel.

Usage:
  %pip install [pkgs]
win32" z-mpipzANote: you may need to restart the kernel to use updated packages.N)	r   r   platformshlexquoteshellsystemjoinprint)selflinepythons      r   r9   PackagingMagics.pipO   sb     <<7"6\C'F[[(F

#((FD%#>?@QRr   c                 ~   [         R                  " U5      n[        U5      S:  a  US   OSn[        U5      S:  a  USS  OS/n/ n[        U R                  SS 5      S LnU[
        ;   n[        U5      R                  [        5      nU(       a  U(       a  U(       d  UR                  S5        U[        ;   n	[        U5      R                  [        5      n
U	(       a(  U
(       d!  UR                  S[        R                  /5        U R                  R                  SR!                  X/U-   U-   5      5        [#        S5        g )	Nr       kernelz--yesr1   r8   zB
Note: you may need to restart the kernel to use updated packages.)r;   splitlengetattrr=   CONDA_COMMANDS_REQUIRING_YESsetintersectionCONDA_YES_FLAGSappendCONDA_COMMANDS_REQUIRING_PREFIXCONDA_ENV_FLAGSextendr   r   r>   r?   r@   )rA   cmdrB   r   r   
extra_argsstdin_disabled	needs_yeshas_yesneeds_prefix
has_prefixs              r   _run_commandPackagingMagics._run_command`   s    {{4  Y]$q't9q=tABxrd
 !Xt<DH;;	d)((9ig& "AAY++O<

z3::67

#((C>J#>#EFGSTr   c                 <    [        S5      nU R                  X!5        g)zYRun the conda package manager within the current kernel.

Usage:
  %conda install [pkgs]
condaNr'   r[   )rA   rB   r^   s      r   r^   PackagingMagics.condax        +73%&r   c                 <    [        S5      nU R                  X!5        g)zYRun the mamba package manager within the current kernel.

Usage:
  %mamba install [pkgs]
mambaNr_   )rA   rB   rc   s      r   rc   PackagingMagics.mamba   ra   r   c                 <    [        S5      nU R                  X!5        g)z^Run the conda package manager within the current kernel.

Usage:
  %micromamba install [pkgs]

micromambaNr_   )rA   rB   rf   s      r   rf   PackagingMagics.micromamba   s     0=
*+r    N)__name__
__module____qualname____firstlineno____doc__r   r9   r[   r   r^   rc   rf   __static_attributes__rh   r   r   r3   r3   K   ss    4S S U0 '  ' '  ' ,  ,r   r3   )rm   r   r"   r;   r   pathlibr   IPython.core.magicr   r   r   r   r'   rQ   rL   rR   rO   r3   rh   r   r   <module>rq      si     	  
  ? ?<#    5- K,f K, K,r   