
    Xh                         d 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 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     Q/var/www/html/myenv/lib/python3.12/site-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                 6   d}d| j                         v rd}|t        j                  v rEt        t        j                  |         }|j	                         rt        |j                               S 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
    	CONDA_EXEmamba	MAMBA_EXEr	   r
   zutf-8)encodingz^#\s*cmd:\s*(?P<command>.*z)\s[create|install])flagscommand)lowerosenvironr   is_filestrresolver   
executableparentr   	read_textresearch	MULTILINE	groupdict)r   base_executabler%   r
   matchs        r   _get_conda_like_executabler.   $   s     "O'--/!%"**$"**_56
z))+,, cnn%,,w6J: 3::|Y7AA7ASGII%gY.ABllE
  ++ Nr   >   listremoveupdateinstallupgrade	uninstall>   r0   r1   r2   r3   r4   >   -n-p--name--prefixz-yz--yc                       e Zd ZdZed        Zd Zeed               Zeed               Z	e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" -mpipANote: 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   r@   zPackagingMagics.pip\   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--yesr8   r>   zB
Note: you may need to restart the kernel to use updated packages.)rD   splitlengetattrrF   CONDA_COMMANDS_REQUIRING_YESsetintersectionCONDA_YES_FLAGSappendCONDA_COMMANDS_REQUIRING_PREFIXCONDA_ENV_FLAGSextendr   r   rG   rH   rI   )rK   cmdrL   r   r   
extra_argsstdin_disabled	needs_yeshas_yesneeds_prefix
has_prefixs              r   _run_commandzPackagingMagics._run_commandm   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.   rd   )rK   rL   rf   s      r   rf   zPackagingMagics.conda        +73%&r   c                 >    t        d      }| j                  ||       y)zqRun the mamba package manager within the current kernel.

        Usage:
          %mamba install [pkgs]
        r   Nrg   )rK   rL   r   s      r   r   zPackagingMagics.mamba   rh   r   c                 >    t        d      }| j                  ||       y)zvRun the conda package manager within the current kernel.

        Usage:
          %micromamba install [pkgs]
        
micromambaNrg   )rK   rL   rk   s      r   rk   zPackagingMagics.micromamba   s     0=
*d+r   c                     t         j                  }t         j                  dk(  r	d|z   dz   }nt        j                  |      }| j
                  j                  dj                  |dd|g             t        d       y)zoRun the uv package manager within the current kernel.

        Usage:
          %uv pip install [pkgs]
        r<   r=   r>   r?   uvrA   NrB   rJ   s      r   rm   zPackagingMagics.uv   sb     <<7"6\C'F[[(F

#((FD$#=>?QRr   N)__name__
__module____qualname____doc__r   r@   rd   r   rf   r   rk   rm    r   r   r:   r:   X   s    4S S U0 '  ' '  ' ,  , S Sr   r:   )rq   r   r    r(   rD   r   pathlibr   IPython.core.magicr   r   r   r   r.   rZ   rU   r[   rX   r:   rr   r   r   <module>ru      sp     	 	  
  ? ?'T#    5- \Sf \S \Sr   