
    }e5                         d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
 d Zd Zh dZh dZh d	Zd
dhZe	 G d de             Zy)z5Implementation of packaging-related magic functions.
    N)Path)Magicsmagics_class
line_magicc                 B     t        j                          fd       }|S )Nc                  |    t        t        j                  dd      j                         st	        d       | i |S )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     ?/usr/lib/python3/dist-packages/IPython/core/magics/packaging.pywrapperz%is_conda_environment.<locals>.wrapper   sB     CJJi8??A7  T$V$$    )	functoolswraps)r   r   s   ` r   is_conda_environmentr      s%    __T% % Nr   c                 \   t        t        j                        j                  | z  }|j	                         rt        |      S t        t        j                  dd      j                  d      }t        j                  d| d|t        j                        }|r|j                         d   S | S )	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                   t    e Zd ZdZed        Zd Zeed               Zeed               Z	eed               Z
y)PackagingMagicsz*Magics related to packaging & installationc                     t         j                  }t         j                  dk(  r	d|z   dz   }nt        j                  |      }| j
                  j                  dj                  |dd|g             t        d       y)zmRun 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   r7   zPackagingMagics.pipO   sb     <<7"6\C'F[[(F

#((FD%#>?@QRr   c                 D   t        j                  |      }t        |      dkD  r|d   nd}t        |      dkD  r|dd  ndg}g }t        | j                  dd       d u}|t
        v }t        |      j                  t              }|r|r|s|j                  d       |t        v }	t        |      j                  t              }
|	r#|
s!|j                  dt        j                  g       | j                  j                  dj!                  ||g|z   |z                t#        d       y )	Nr       kernelz--yesr0   r6   zB
Note: you may need to restart the kernel to use updated packages.)r9   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>   )r?   cmdr@   r   r   
extra_argsstdin_disabled	needs_yeshas_yesneeds_prefix
has_prefixs              r   _run_commandz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                 >    t        d      }| j                  ||       y)zqRun the conda package manager within the current kernel.

        Usage:
          %conda install [pkgs]
        condaNr&   rX   )r?   r@   rZ   s      r   rZ   zPackagingMagics.condax        +73%&r   c                 >    t        d      }| j                  ||       y)zqRun the mamba package manager within the current kernel.

        Usage:
          %mamba install [pkgs]
        mambaNr[   )r?   r@   r^   s      r   r^   zPackagingMagics.mamba   r\   r   c                 >    t        d      }| j                  ||       y)zvRun the conda package manager within the current kernel.

        Usage:
          %micromamba install [pkgs]
        
micromambaNr[   )r?   r@   r`   s      r   r`   zPackagingMagics.micromamba   s     0=
*d+r   N)__name__
__module____qualname____doc__r   r7   rX   r   rZ   r^   r`    r   r   r2   r2   K   ss    4S S U0 '  ' '  ' ,  ,r   r2   )rd   r   r!   r9   r   pathlibr   IPython.core.magicr   r   r   r   r&   rN   rI   rO   rL   r2   re   r   r   <module>rh      si     	  
  ? ?<#    5- K,f K, K,r   