+
    :1j/                    H   R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^ RI
Ht ]'       d   ^ RIHtHtHt ^ RIHt ^ RI
Ht ]! ]4      tR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  lt R! R" lt!R# t"R$ R% lt#R# )&zCLI implementation for `conda clean`.

Removes cached package tarballs, index files, package metadata, temporary files, and log files.
)annotationsN)	getLogger)isdirjoin)TYPE_CHECKING)ArgumentParser	Namespace_SubParsersAction)Iterable)Anyc                    V ^8  d   QhRRRR/# )   sub_parsersr	   returnr    )formats   "4lib/python3.14/site-packages/conda/cli/main_clean.py__annotate__r      s     P P"3 P. P    c           	        ^RI Hp ^RIHp ^RIHp RpTpV! R4      pV P                  ! R$RVRVRV/VB pVP                  R	4      p	V	P                  R
RRRR7       V	P                  RRRRR7       V	P                  RRRRR7       V	P                  RRRRR7       V	P                  RRRRR7       V	P                  RR\        P                  VRR7       V	P                  RR RR!R7       V! V4       VP                  R"R#7       V# )%r   )dals)ExtendConstAction)add_output_and_prompt_optionsz"Remove unused packages and caches.z@
        Examples::

            conda clean --tarballs
        helpdescriptionepilogzRemoval Targetsz-az--all
store_truezNRemove index cache, lock files, unused cache packages, tarballs, and logfiles.)actionr   z-iz--index-cachezRemove index cache.z-pz
--packageszRemove unused packages from writable package caches. WARNING: This does not check for packages installed using symlinks back to the package cache.z-tz
--tarballszRemove cached package tarballs.z-fz--force-pkgs-dirszRemove *all* writable package caches. This option is not included with the --all flag. WARNING: This will break environments with packages installed using symlinks back to the package cache.z-cz--tempfileszRemove temporary files that could not be deleted earlier due to being in-use.  The argument for the --tempfiles flag is a path (or list of paths) to the environment(s) where the tempfiles should be found and removed.)constr   r   z-lz
--logfileszRemove log files.zconda.cli.main_clean.execute)func)clean)
auxlib.ishr   actionsr   helpersr   
add_parseradd_argument_groupadd_argumentsysprefixset_defaults)
r   kwargsr   r   r   summaryr   r   premoval_target_optionss
   &,        r   configure_parserr.      s   !*62GK	F 	 		  	 		
 	A 112CD'']	 (  ''"	 (  ''.	 (  ''.	 (  ''%	 (  ''jj N ( 
 '' 	 (  "!$NN6N7Hr   c               $    V ^8  d   QhRRRRRR/# )r   partsstrwarningszlist[str] | Noner   intr   )r   s   "r   r   r   k   s"      c %5 # r   c                    \        V!  p \        P                  ! V4      pVP                  ^8  d   \        hVP
                  #   \         d(   pT f   h T P                  RT RT 24       \        hRp?ii ; i)   Nz	WARNING: z: )r   oslstatst_nlinkNotImplementedErrorst_sizeOSErrorappend)r2   r0   pathstates   $*   r   	_get_sizer@   k   sw    <Dxx~ ==1%%||  ")D6A3/0 "!"s   A A6"A11A6c                    V ^8  d   QhRRRR/# )r   	pkg_sizesdict[str, dict[str, int]]r   zdict[str, tuple[str, ...]]r   )r   s   "r   r   r      s      K K7 K<V Kr   c                j    V P                  4        UUu/ uF  w  rV\        V4      bK  	  upp# u uppi N)itemstuple)rB   pkgs_dirpkgss   &  r   _get_pkgs_dirsrJ      s.    8A8IJ8InhHeDk!8IJJJs   /c                    V ^8  d   QhRRRR/# )r   rB   rC   r   r3   r   )r   s   "r   r   r      s     B B8 BS Br   c                B    \        R  V P                  4        4       4      # )c              3  T   "   T F  p\        VP                  4       4      x  K   	  R # 5irE   sumvalues.0rI   s   & r   	<genexpr>"_get_total_size.<locals>.<genexpr>   s      A.@ds4;;=!!.@s   &(rN   )rB   s   &r   _get_total_sizerU      s    Ai.>.>.@AAAr   c               (    V ^8  d   QhRRRRRRRR/# )r   r0   r1   quietboolverboser   Noner   )r   s   "r   r   r      s(      3 t d t r   c                X   ^RI Hp \        V!  p V! V4      '       d%   V '       g   V'       d   \        RV 24       R# R# R# V '       g   \        RV 24       R# R#   \         dB   pT '       g   \        RT RT: 24        Rp?R# \
        P                  RT4        Rp?R# Rp?ii ; i)r   )rm_rfzRemoved z*WARNING: cannot remove, file permissions: 
z%rN)gateways.disk.deleter\   r   printr;   loginfo)rW   rY   r0   r\   r=   r?   s   $$*   r   _rm_rfrb      s    ,<D
;;W'( %5>tfEF  >tfBqeLMMHHT1	s3   A A A A A B)(B$B$$B)c                   V ^8  d   QhRR/# r   r   zdict[str, Any]r   )r   s   "r   r   r      s      ~ r   c            
        ^RI Hp  ^RIHp . p/ p\	        4        F  p\        \        P                  ! V4      4      w   rVV FY  pVP                  V 4      pVP                  P                  V4      '       g   K7   \        WGVR7      p	WP                  V/ 4      V&   K[  	  K  	  RVRVR\        V4      R\        V4      /#   \         d     K  i ; i)r   )PARTIAL_EXTENSIONcontextr2   r2   rB   	pkgs_dirs
total_size)base.constantsrf   base.contextrh   find_pkgs_dirsnextr6   walkremovesuffixplugin_managerhas_package_extensionr@   
setdefaultr9   rJ   rU   )
rf   rh   r2   rB   rH   _filesfilepackagesizes
             r   find_tarballsrz      s    2&H+-I"$2778,-1D''(9:G))??HH@ (C <@$$Xr248  %$ 	HY^I.oi0	  ' s   :B??CCc                   V ^8  d   QhRR/# rd   r   )r   s   "r   r   r      s      > r   c                   a . o/ p \        4        F  p\        \        P                  ! V4      4      w  r#pV Fg  p\	        \        WR 4      4      '       g   K    \        V3R l\        P                  ! \        W4      4       4       4      pWPP                  V/ 4      V&   Ki  	  K  	  RSRV R\        V 4      R\        V 4      /#   \         d     K  i ; i)ra   c              3  V   <"   T F  w  rpV F  p\        WSR 7      x  K  	  K   	  R# 5i)ri   N)r@   )rR   rootru   rv   rw   r2   s   &    r   rS   find_pkgs.<locals>.<genexpr>   s3      *F % d8<< % =*Fs   &)r2   rB   rj   rk   )rn   ro   r6   rp   r   r   rO   rt   r9   rJ   rU   )rB   rH   ru   rI   pkgry   r2   s         @r   	find_pkgsr      s    H+-I"$"''(+,
ChV455	? *,''$x2E*F  ;?$$Xr237  %* 	HY^I.oi0	  ' s   2CCCc               <    V ^8  d   QhRRRRRRRRR	R
RR
RR
RRRR/	# )r   rj   zdict[str, tuple[str]]r2   	list[str]rk   r3   rB   rC   rW   rX   rY   dry_runnamer1   r   rZ   r   )r   s   "r   r   r      sm     /@ /@$/@/@ /@ )	/@ /@ /@ /@ /@ 
/@r   c          
     $   ^RI Hp ^RIHp	 ^RIHp
 V'       g   V'       d   V F  p\        V4       K  	  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      '       g   V'       g   \        RV R24       R	# V'       g   V'       d   \        R
V R24       VP                  4        Fm  w  r\        RV 24       \        RR\        V4      ,           24       VP                  4        F  w  r\        RVR RV
! V4      R 24       K   	  \        4        Ko  	  \        R4       \        RV
! V4      R 24       \        4        M;\        R VP                  4        4       4      p\        RV RV
! V4       RV R24       V'       d   R	# VP                  '       d   VP                  '       g   V	! 4        VP                  4        F  w  rV F  p\        WWER7       K  	  K  	  R	# )r   rg   
confirm_yn)human_bytesc              3  $   "   T F  qx  K  	  R # 5irE   r   rQ   s   & r   rS   rm_pkgs.<locals>.<genexpr>   s     3 2t 2s   TFzThere are no unused  to remove.NWill remove the following :z  -  - z<40 z>10zTotal: c              3  8   "   T F  p\        V4      x  K  	  R # 5irE   )lenrQ   s   & r   rS   r      s     A.@dD		.@s   Will remove z (z) .rW   rY   z-----------------)rm   rh   	reportersr   utilsr   r_   anyrP   rF   r   rO   json
always_yesrb   )rj   r2   rk   rB   rW   rY   r   r   rh   r   r   warningrH   rI   r   ry   counts   &&&&$$$$         r   rm_pkgsr      s    '&#XG'N   33	 0 0 233333	 0 0 2333(k:;.tfA67"+//"38*o&3X./01!%ICDS	;t+<S*ABC ". #4 (OGK
3C89:GAi.>.>.@AAELr+j*A)B"TF!LM<<<w111#//+C8?  ,r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r     s      ) r   c                     . p \        4        F3  p\        VR 4      p\        V4      '       g   K"  V P                  V4       K5  	  V # )cache)rn   r   r   r<   )rv   rH   r=   s      r   find_index_cacher     s<    E"$Hg&;;LL	 %
 Lr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r     s      	 r   c                     ^RI Hp  V P                  4        Uu. uF,  p\        VP                  4      '       g   K   VP                  NK.  	  up# u upi )r   )PackageCacheData)core.package_cache_datar   writable_cachesr   rH   )r   pcs     r   rn   rn     sC    : />>@@E"++DV@  s
   AAc                    V ^8  d   QhRRRR/# )r   pathszIterable[str]r   r   r   )r   s   "r   r   r     s      - I r   c           	     6   ^RI Hp . p\        \        T ;'       g    \        P
                  .4      4       F_  p\        P                  ! V4       FB  w  rEpV F6  pVP                  V4      '       g   K  VP                  \        WG4      4       K8  	  KD  	  Ka  	  V# )r   )CONDA_TEMP_EXTENSIONS)rl   r   sortedsetr'   r(   r6   rp   endswithr<   r   )r   r   	tempfilesr=   r~   ru   rv   rw   s   &       r   find_tempfilesr     sz    6Is500SZZL12 ggdmNDU}}%:;;  d!12  , 3 r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r   +  s      y r   c            
     <   ^RI Hp  . p\        4        Fn  p\        W 4      p\	        V4      '       g   K!   \        \        P                  ! V4      4      w   rETP                  V Uu. uF  p\        W64      NK  	  up4       Kp  	  V# u upi   \         d     K  i ; i)r   )CONDA_LOGS_DIR)
rl   r   rn   r   r   ro   r6   rp   extendStopIteration)r   rv   rH   r=   ru   logsr`   s          r   find_logfilesr   +  s    /E"$H-T{{	bggdm,JAqLLT:Tc$t/T:; % L ; 		s#   1B&B
:BBBBc               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r   rF   r   rW   rX   rY   r   r   r1   r   rZ   r   )r   s   "r   r   r   @  sF     3 33 3 	3
 3 3 
3r   c                  ^RI Hp ^RIHp V '       g   V'       g   \	        RV R24       R# V'       gU   V'       d2   \	        RV R24       V  F  p\	        RV 24       K  	  \	        4        M\	        R	\        V 4       R
V R24       V'       d   R# VP                  '       d   VP                  '       g   V! 4        V  F  p\        WqVR7       K  	  R# )r   rg   r   zThere are no r   Nr   r   r   r   r   r   r   )	rm   rh   r   r   r_   r   r   r   rb   )rF   rW   rY   r   r   rh   r   items   &$$$$   r   rm_itemsr   @  s     '&M${34.tfA67TFm$ GLUAdV156<<<w111t'2 r   c                   ^RI Hp RR/pRVP                  ;'       g    VP                  RVP                  RVP
                  /pV P                  '       d"   \        4       ;VR&   p\        V3/ VBRR	/B  V# V P                  '       gi   V P                  '       gW   V P                  '       gE   V P                  '       g3   V P                  '       g!   V P                  '       g   ^R
IHp V! R4      hV P                  '       g   V P                  '       d!   \#        4       ;VR&   p\%        R/ VBVBRR/B  V P                  '       g   V P                  '       d"   \'        4       pRV/VR&   \        V3/ VBRR/B  V P                  '       g   V P                  '       d!   \)        4       ;VR&   p	\%        R/ V	BVBRR/B  V P                  '       g   V P                  '       d+   \+        V P                  4      ;VR&   p
\        V
3/ VBRR/B  V P                  '       g   V P                  '       d    \-        4       ;VR&   p\        V3/ VBRR/B  V# )r   rg   successTrW   rY   r   rj   r   zpackage cache(s))ArgumentErrorzDAt least one removal target must be given. See 'conda clean --help'.tarballsz
tarball(s)rv   index_cachezindex cache(s)packagesz
package(s)r   ztempfile(s)logfilesz
logfile(s)r   )rm   rh   r   rW   rY   r   force_pkgs_dirsrn   r   allr   r   r   r   r   
exceptionsr   rz   r   r   r   r   r   )argsparserrh   json_resultr*   rj   r   tarsr   rI   tmpsr   s   &&          r   _executer   b  s   &d#K..7??7??F /=/??K 9>f>+=>  	======>>>===.R
 	
 }}})68J$4$4&4|44888 "&-u%5M"8&8'78}}})24J$4$4&4|4~~~*8*HHK 444m4}}})68J$33l3r   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r   r3   r   )r   s   "r   r   r     s!      ) ^  r   c                    ^RI Hp ^RIHp \	        W4      pVP
                  '       d	   V! V4       V P                  '       d	   ^RIHp Vh^ # )r   rg   )stdout_json)
DryRunExit)	rm   rh   commonr   r   r   r   r   r   )r   r   rh   r   r   r   s   &&    r   executer     s8    &#4(K|||K |||+r   )$__doc__
__future__r   r6   r'   loggingr   os.pathr   r   typingr   argparser   r   r	   collections.abcr
   r   __name__r`   r.   r@   rJ   rU   rb   rz   r   r   r   rn   r   r   r   r   r   r   r   r   <module>r      s   
 # 	 
    EE(Pf(KB">>/@d"*3D5pr   