
    fL                         d 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                  T    t        t        j                  dd      j                         S )z>Return True if the current Python executable is in a conda env
conda-metahistory)r   sysprefixexists     X/var/www/cvtools/html/venv/lib/python3.12/site-packages/IPython/core/magics/packaging.py_is_conda_environmentr      s      

L)4;;==r   c                  R   t        t        j                        j                  dz  } | j	                         rt        |       S t        t        j                  dd      j                  d      }t        j                  d|t        j                        }|r|j                         d   S y)	z%Find the path to the conda executablecondar   r	   zutf-8)encodingz2^#\s*cmd:\s*(?P<command>.*conda)\s[create|install])flagscommand)r   r
   
executableparentis_filestrr   	read_textresearch	MULTILINE	groupdict)r   r	   matchs      r   _get_conda_executabler       s      '''1E}}5z 3::|Y7AA7ASGII=llE
  ++ r   >   listremoveupdateinstallupgrade	uninstall>   r"   r#   r$   r%   r&   >   -n-p--name--prefixz-yz--yc                   0    e Zd ZdZed        Z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   r1   zPackagingMagics.pip>   sb     <<7"6\C'F[[(F

#((FD%#>?@QRr   c                    t               st        d      t               }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)zqRun the conda package manager within the current kernel.

        Usage:
          %conda install [pkgs]
        zbThe python kernel does not appear to be a conda environment.  Please use ``%pip install`` instead.r       Nkernelz--yesr*   r0   zB
Note: you may need to restart the kernel to use updated packages.)r   
ValueErrorr    r3   splitlengetattrr5   CONDA_COMMANDS_REQUIRING_YESsetintersectionCONDA_YES_FLAGSappendCONDA_COMMANDS_REQUIRING_PREFIXCONDA_ENV_FLAGSextendr
   r   r6   r7   r8   )r9   r:   r   argsr   
extra_argsstdin_disabled	needs_yeshas_yesneeds_prefix
has_prefixs              r   r   zPackagingMagics.condaO   s'    %& D E E &'{{4  Y]$q't9q=tABxrd
 !Xt<DH;;	d)((9ig& "AAY++O<

z3::67

#((E7#3j#@4#GHISTr   N)__name__
__module____qualname____doc__r   r1   r   r   r   r   r,   r,   :   s/    4S S   U  Ur   r,   )rV   r   r3   r
   pathlibr   IPython.core.magicr   r   r   r   r    rI   rD   rJ   rG   r,   r   r   r   <module>rY      sf    
  
  ? ?>.#    5- 5Uf 5U 5Ur   