
    si'"                        S r SSKrSSKrSSKrSSKrSSKrSSKJrJrJ	r	  SSK
JrJrJrJrJrJrJr  S\	S\4S jrS rS	\S
\S\4S jrS rS r\R0                  " S\R2                  5      rS rS rSS jrSS jrS rS r g)zdCLI implementation for `conda package`.

Provides some low-level tools for creating conda packages.
    N)ArgumentParser	Namespace_SubParsersAction)abspathbasenamedirnameisdirisfileislinkjoinsub_parsersreturnc           	      V   SSK Jn  SnUnSnU R                  "  S!UUUS.UD6nU" U5        UR                  SSSS	S
SS9  UR                  SSSSS9  UR                  SSSSS9  UR                  SS
SSS9  UR                  SS
SSS9  UR                  SS
SSS9  UR	                  SS 9  U$ )"N   )add_parser_prefixz/Create low-level conda packages. (EXPERIMENTAL) )helpdescriptionepilogz-wz--whichPATH+storezEGiven some file's PATH, print which conda package the file came from.)metavarnargsactionr   z-rz--reset
store_truez$Remove all untracked files and exit.)r   r   z-uz--untrackedz%Display all untracked files and exit.z
--pkg-nameunknownz4Designate package name of the package being created.)r   defaultr   z--pkg-version0.0z7Designate package version of the package being created.z--pkg-buildr   z<Designate package build number of the package being created.zconda.cli.main_package.execute)func)package)helpersr   
add_parseradd_argumentset_defaults)r   kwargsr   summaryr   r   ps          6lib/python3.13/site-packages/conda/cli/main_package.pyconfigure_parserr*      s   *?GKF			
 	A aNNT   NN3	   NN4	   NNC	   NNF	   NNK	   NN8N9H    c                    [        5       nU H>  n[        X5      nUR                  [        U5      5        [        R
                  " U5        M@     [        U[        SS9 H  n [        R                  " U5        M     g! [         a     M,  f = f)z Remove files for a given prefix.T)keyreverseN)
setr   addr   osunlinksortedlenrmdirOSError)prefixfilesdst_dirsfdstpaths         r)   remover=   K   sp    uH6oWS\"
		# 
 xS$7	HHTN 8  		s   "A==
B
Bargsparserc                 `   SSK Jn  SSKJn  UR                  nU R
                  (       aG  U R
                   H6  n[        U5       H$  n[        U<S SUR                  5       < 35        M&     M8     g[        SU5        U R                  (       a  [        XC" U5      5        gU R                  (       a=  [        U" U5      5      n[        S[        U5      -  5        U H  n[        U5        M     g[        UU R                  R                  5       U R                   [#        U R$                  5      S	9  g)
N   context	untracked50z  r   z	# prefix:z# untracked files: %d)nameversionbuild_number)base.contextrC   miscrE   target_prefixwhichwhich_packageprintdist_strresetr=   r3   r4   make_tarbz2pkg_namelowerpkg_versionint	pkg_build)	r>   r?   rC   rE   r7   r<   precr8   fns	            r)   executerZ   Z   s    & ""FzzJJD%d+T4==?;< ,  	+vzzvy()~~y()%E
23B"I ]]  "  (	 r+   c                 |    SSK Jn  U" U 5      R                  5        H  nUS   U:X  d  M  [        US   5      s  $    g )NrA   
PrefixDatarG   rH   )core.prefix_datar]   iter_recordsstr)r7   rG   r]   infos       r)   get_installed_versionrb   |   s=    -6"//1<4tI'' 2 r+   c           
          SSK Jn  [        U UUR                  UR                  [        U5      [        U5      / S9nU(       a%  SU-  US   -   US'   US   R                  SU-  5        U$ )NrA   rB   )rG   rH   platformarchrI   builddependszpy%d%d_rf   rg   zpython %d.%d*)rJ   rC   dictrd   	arch_namerV   r`   append)rG   rH   rI   requires_pyrC   ds         r)   create_inform      sr    &!!&,	A +-7;'
	)Ok9:Hr+   z^#!.+$c                 (   SSK Jn  [        US5      R                  S5      S:w  a  g[        U5       nUR                  5       nS S S 5        [        R                  W5      nU(       a  SUR                  5       ;   d  g[        R                  SU S3USS	9n[        U [        U5      5      n[        US
5       nUR                  U5        S S S 5        [        R                  " U[        SS5      5        g! , (       d  f       N= f! , (       d  f       NA= f)NrA   )PREFIX_PLACEHOLDERrbz#!Fpythonz/bin/pythonr   )countw755   T)base.constantsro   openreadshebang_patmatchgroupsubr   r   writer1   chmodrV   )tmp_dirr<   ro   fidatamtmp_pathfos           r)   fix_shebangr      s    3D$Q4'	drwwy 
$A(aggi'??R 23;?Q?ODGXd^,H	h	
 
HHXs5!}% 
 
	s   C26D2
D 
Dc                    SSK Jn  [        US5      n[        R                  " U5        [        [        US5      S5       nU H  nUR                  US-   5        M     S S S 5        [        [        US5      S5       nUR                  XGSS	9  S S S 5        U(       a<  [        [        US
5      S5       nU H  nUR                  US-   5        M     S S S 5        [        R                  " U5       H!  n	U R                  [        Xi5      SU	-   5        M#     g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nl= f)NrA   )jsonra   r8   rs   
z
index.jsonT)	sort_keys
has_prefixzinfo/)
common.serializer   r   r1   mkdirrw   r}   dumplistdirr0   )
tr   r8   r   ra   r   info_dirr   r:   rY   s
             r)   _add_info_dirr      s    'GV$HHHX	d8W%s	+rAHHQX  
, 
d8\*C	0B		$d	+ 
1 $x.4T"   5 jj"	d8 'B,/ # 
,	+ 
1	0 54s#   D;D$1D5
D!$
D25
Ec                     SSK Jn  [        U5      n/ n/ n[        R                  " 5       n[
        R                  " US5      n	[        R                  " S5      n
U GH  nUR                  S5      (       d"  UR                  S5      (       d  SU;   d  US:X  a  [        SU S	35      e[        X5      nUR                  S
5      (       a6  [        X5      (       a&  [        U[        U5      5      nUR                  U5        U	R!                  X5        U
R#                  UR%                  S5      5        U
R#                  S5        ['        U5      (       a  [(        R*                  " U5      n[-        U[.        5      (       a  U
R#                  [1        US5      5        OU
R#                  U5        UR                  S5      (       a  UR                  SU SU 35        GM|  GM  [3        U5      (       d  GM  U
R#                  [        US5      R5                  5       5        UR                  S5      (       d  GM  UR                  SU 35        GM     U
R7                  5       US'   U(       a  U" U5        [9        XXU5        U	R;                  5         U" U5        U$ )z5Create a conda package and return a list of warnings.rA   )rmtreezw:bz2sha1/\r   zInvalid file path: zF. Must be not empty. Cannot start or end with '/'. Cannot contain '\'.zbin/zutf-8    z found symlink to absolute path: z -> rp   z	.egg-linkzfound egg link: 	file_hash)gateways.disk.deleter   r3   tempfilemkdtemptarfilerw   hashlibnew
startswithendswith
ValueErrorr   r   r   rj   r0   updateencoder   r1   readlink
isinstancer`   bytesr
   rx   	hexdigestr   close)r7   r8   ra   tar_pathupdate_infor   warningsr   r   r   hr:   r<   links                 r)   create_conda_pkgr      s   -5MEHJ GXw'AFA<<

3419R%aS )X X  F<<K$>$>$0Da 	d	'"#	$<<;;t$D$$$tW-.s##"B1#T$ PQ $D\\HHT$%**,-}}[))"21# 671 4 DD!e6GGI
7OOr+   c                    SSK Jn  SSKJn  Uc  U" U 5      n[	        S[        U5      -  5        [        U5      S:X  a  [	        S5        g [        S U 5       5      (       a?  [        U S5      nUc  [        S	5      e[        S
 US S R                  S5       5       5      nOSn[        XX85      n	SR                  " S0 U	D6U-   n
[        XX5        [	        S5        [	        U
5        U
$ )NrA   )CONDA_PACKAGE_EXTENSION_V1rD   z# files: %dr   z# failed: nothing to doc              3   ,   #    U  H
  nS U;   v   M     g7f)z/site-packages/N ).0r:   s     r)   	<genexpr>make_tarbz2.<locals>.<genexpr>   s     
15a!5s   rq   z*Python must be installed in target prefix.c              3   8   #    U  H  n[        U5      v   M     g 7fN)rV   )r   xs     r)   r   r      s     J,IqCFF,Is      .Fz{name}-{version}-{build}z	# successr   )rv   r   rK   rE   rO   r4   anyrb   r   tuplesplitrm   formatr   )r7   rG   rH   rI   r8   r   rE   python_versionrk   ra   	tarbz2_fns              r)   rR   rR      s    ; }&!	-#e*
$%
5zQ'(

15
111.vx@!IJJJN2A,>,D,DS,IJJtl@D+22:T:>XXIVD4	+	)r+   c              #     ^ ^^#    SSK Jm  SSKJn  [	        T 5      m [        T 5      mTc  SSKJn  U" ST  35      eU" T5      R                  5        H1  n[        U UU4S jUS   =(       d    S	 5       5      (       d  M-  Uv   M3     g7f)
zReturn the package containing the path.

Provided the path of a (presumably) conda installed file, iterate over
the conda packages the file came from. Usually the iteration yields
only one package.
rA   )paths_equalr\   N)CondaVerificationErrorz'could not determine conda prefix from: c              3   J   >#    U  H  nT" [        TU5      T5      v   M     g 7fr   )r   )r   r:   r<   r   r7   s     r)   r    which_package.<locals>.<genexpr>  s#     O;Na{4?D11;Ns    #r8   r   )
common.pathr   r^   r]   r   which_prefix
exceptionsr   r_   r   )r<   r]   r   rX   r   r7   s   `   @@r)   rN   rN     sv      *-4=D$F~7$'Ntf%UVV6"//1O4=;NB;NOOOJ 2s   A6B?	Bc                     [        U 5      n [        [        US5      5      (       a  U$ U[        U5      :X  a  g[        U5      nM9  )zReturn the prefix for the provided path.

Provided the path of a (presumably) conda installed file, return the
environment prefix in which the file in located.
z
conda-metaN)r   r	   r   r   )r<   r7   s     r)   r   r   !  sD     T]F
fl+,,MWV_$ r+   r   )r   r   r   N)!__doc__r   r1   rer   r   argparser   r   r   os.pathr   r   r   r	   r
   r   r   r*   r=   rV   rZ   rb   rm   compileMry   r   r   r   rR   rN   r   r   r+   r)   <module>r      s   
  	 	   A A K K K7"3 7. 7t) ^  D$ jjBDD)(0**Z6,!r+   