ó
Ý²k^c           @` s.  d  d l  m Z m Z m Z m Z d  d l m Z d  d l Z d  d l m	 Z	 d  d l
 m Z m Z m Z m Z d  d l m Z m Z m Z m Z d  d l Z d d l m Z m Z d d	 l m Z e	 e ƒ Z d
 „  Z e d „ Z d „  Z e d „ Z  d „  Z! d „  Z" d d „ Z$ d „  Z% d „  Z& d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   defaultdictN(   t	   getLogger(   t   listdirt   lstatt   unlinkt   walk(   t   existst   getsizet   isdirt   joini   (   t   CONDA_PACKAGE_EXTENSIONSt   CONDA_TEMP_EXTENSION(   t   contextc    
      C` sñ   d d l  m }  t t ƒ } d } t d „  t Dƒ ƒ } x¬ |  j t j ƒ D]˜ } | j	 } t
 | ƒ sl qK n  t t | ƒ ƒ \ } } } xY | D]Q }	 |	 j t ƒ s² |	 j | ƒ rŽ | | j |	 ƒ | t t | |	 ƒ ƒ 7} qŽ qŽ WqK W| | f S(   Ni   (   t   PackageCacheDatai    c         s` s   |  ] } | d  Vq d S(   u   .partN(    (   t   .0t   e(    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pys	   <genexpr>   s    (   t   core.package_cache_dataR   R   t   listt   tupleR   t   writable_cachesR   t	   pkgs_dirst   pkgs_dirR   t   nextR	   t   endswitht   appendR   R   (
   R   R   t	   totalsizet   part_extt   package_cacheR   t   roott   _t	   filenamest   fn(    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   find_tarballs   s    	$c         ` sN  d d l  m } d d l m } d d l m } | rX x ˆ  D] } t d | ƒ q= Wn  t ‡  f d †  ˆ  Dƒ ƒ s‹ | r‡ t d ƒ n  d  S| r]t d	 ƒ t d
 ƒ x€ ˆ  D]x } t | ƒ t d t | ƒ ƒ d } xA ˆ  | D]5 }	 t	 t
 | |	 ƒ ƒ }
 t | |	 | |
 ƒ f ƒ qá Wt d
 ƒ q¬ Wt d d ƒ t | d | | ƒ f ƒ t d
 ƒ n  t j sqt j r{| ƒ  n  t j r‘|  j r‘d  Sx¶ ˆ  D]® } x¥ ˆ  | D]™ }	 yJ | t
 | |	 ƒ ƒ rá| røt d |	 ƒ qøn | røt d |	 ƒ n  Wq©t t f k
 rA} | r.t d |	 | f ƒ qBt j d | ƒ q©Xq©Wq˜Wd  S(   Ni   (   t
   confirm_yni   (   t   rm_rf(   t   human_bytesu   Cache location: %sc         3` s   |  ] } ˆ  | Vq d  S(   N(    (   R   t   i(   R   (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pys	   <genexpr>.   s    u   There are no tarballs to removeu#   Will remove the following tarballs:u    u   -u
   %-40s %10si3   u   Total:u
   Removed %su,   WARNING: cannot remove, file permissions: %su/   WARNING: cannot remove, file permissions: %s
%ru   %r(   t   commonR%   t   gateways.disk.deleteR&   t   utilsR'   t   printt   anyt   lenR   R   R   t   jsont
   always_yest   dry_runt   IOErrort   OSErrort   logt   info(   t   argsR   R   t   verboseR%   R&   R'   R   t   fmtR#   t   sizeR   (    (   R   s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   rm_tarballs%   sP    



c       	   C` s3  g  }  d d l  m } | ƒ  } t t ƒ } x@t j D]5} t | ƒ sl t j s5 t d j	 | ƒ ƒ q5 q5 n  g  t
 | ƒ D]$ } t t | | d ƒ ƒ ry | ^ qy } xÄ | D]¼ } t } x­ t t | | ƒ ƒ D]… \ }	 }
 } xi | D]a } y | t |	 | ƒ ƒ } Wn) t k
 r,} |  j | | f ƒ qâ n X| d k râ t } Pqâ qâ W| rÌ PqÌ qÌ W| | j | ƒ qª Wq5 Wd } t t ƒ } x  | D]˜ } x | | D]ƒ } d } xc t t | | ƒ ƒ D]L \ }	 }
 } x: | D]2 } t t |	 | ƒ ƒ j } | | 7} | | 7} qÐWqºW| | j | ƒ q˜Wq‡W| |  | | f S(   Ni   (   t   CrossPlatformStLinku   WARNING: {0} does not existu   infoi   i    (   t   gateways.disk.linkR;   R   R   R   R   R
   R/   R,   t   formatR   R   R   t   FalseR	   R3   R   t   TrueR   t   st_size(   t   warningsR;   t   cross_platform_st_nlinkR   R   R(   t   pkgst   pkgt   breakitR    t   dirt   filesR#   t   st_nlinkR   R   t   pkgsizest   pkgsizeR9   (    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt	   find_pkgsX   sJ    		7%%
c         ` s  d d l  m } d d l m } d d l m } | ry x@ ˆ  D]5 }	 t d |	 ƒ x | D] \ }
 } t | ƒ qX Wq= Wn  t ‡  f d †  ˆ  Dƒ ƒ s¬ | r¨ t d ƒ n  d  S| r|t d	 ƒ xˆ ˆ  D]€ }	 t |	 ƒ t d
 t |	 ƒ ƒ t d ƒ d } x? t	 ˆ  |	 | |	 ƒ D]& \ } } t | | | | ƒ f ƒ qWt d ƒ qÃ Wt d
 d ƒ t | d | | ƒ f ƒ t d ƒ n  t
 j st
 j rš| ƒ  n  t
 j r°|  j r°d  SxM ˆ  D]E }	 x< ˆ  |	 D]0 } | råt d | ƒ n  | t |	 | ƒ ƒ qÈWq·Wd  S(   Ni   (   R%   i   (   R&   (   R'   u   Cache location: %sc         3` s   |  ] } ˆ  | Vq d  S(   N(    (   R   R(   (   R   (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pys	   <genexpr>”   s    u&   There are no unused packages to removeu#   Will remove the following packages:u   -u    u
   %-40s %10si3   u   Total:u   removing %s(   R)   R%   R*   R&   R+   R'   R,   R-   R.   t   zipR   R/   R0   R1   R   (   R6   R   RA   R   RI   R7   R%   R&   R'   R   R#   t	   exceptionR8   RD   RJ   (    (   R   s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   rm_pkgsŠ   sD    


$
c          C` sQ   d d l  m }  d d l m } x* | j ƒ  D] } |  t | j d ƒ ƒ q- Wd  S(   Ni   (   R&   (   R   u   cache(   R*   R&   R   R   R   R   R   (   R&   R   R   (    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   rm_index_cache³   s    c          C` s­   d d l  m }  d d l m } d d l m } d d l m } t d „  | j	 ƒ  Dƒ ƒ } t
 j sp t
 j rŽ t d | | ƒ ƒ |  ƒ  n  x | D] } | | ƒ q• W| S(	   Ni   (   R%   i   (   t   dashlist(   R&   (   R   c         s` s'   |  ] } t  | j ƒ r | j Vq d  S(   N(   R   R   (   R   t   pc(    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pys	   <genexpr>Á   s    u8   Remove all contents from the following package caches?%s(   R)   R%   t	   common.ioRP   R*   R&   R   R   R   R   R   R/   R0   R,   (   R%   RP   R&   R   t   writable_pkgs_dirsR   (    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   rm_rf_pkgs_dirsº   s    
c         C` s¹   |  s t  j }  n  x  t |  ƒ D]’ \ } } } x€ | D]x } t j | d ƒ sc t j | d t ƒ r5 t | | ƒ } y t | ƒ Wq­ t k
 r© t j	 d j
 | ƒ ƒ q­ Xq5 q5 Wq Wd  S(   Nu   *.trashu   *u@   File at {} could not be cleaned up.  It's probably still in-use.(   t   syst   prefixR	   t   fnmatchR   R   R   t   EnvironmentErrorR4   t   warnR=   (   t   pathR    t   dirst   fnsR#   t	   file_path(    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   clean_tmp_filesÎ   s    c   
      ` sc  i t  d 6} t } |  j r2 t d d t j ƒn  |  j rR t ƒ  } | | d <| S|  j sd |  j	 rë t
 ƒ  \ ‰  } ˆ  r‰ t ˆ  ƒ d n d } i | d 6t ˆ  ƒ d 6ˆ  | d 6| d	 6| d
 <t |  ˆ  | d t j pÝ t j ƒt  } n  |  j sý |  j	 r1i t t j d d ƒ g d 6| d <t ƒ  t  } n  |  j sC|  j	 r÷t ƒ  \ ‰  } } ‰ ˆ  rnt ˆ  ƒ d n d } i | d 6t ˆ  ƒ d 6ˆ  | d 6| d	 6| d 6‡  ‡ f d †  ˆ  Dƒ d 6| d <t |  ˆ  | | ˆ d t j pét j ƒt  } n  |  j	 rt t j ƒ n* |  j r:x |  j D] } t | ƒ q#Wn  | s_d d l m }	 |	 d ƒ ‚ n  | S(   Nu   successur   WARNING: 'conda clean --source-cache' is deprecated.
    Use 'conda build purge-all' to remove source cache files.t   fileu	   pkgs_dirsi    u    u   pkgs_diru   filesu
   total_sizeu   tarballsR7   u   cacheu   index_cacheu   warningsc         ` s0   i  |  ]& } t  t ˆ  | ˆ | ƒ ƒ | “ q S(    (   t   dictRL   (   R   R(   (   R   RI   (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pys
   <dictcomp>  s   	 u	   pkg_sizesu   packagesi   (   t   ArgumentErroruD   At least one removal target must be given. See 'conda clean --help'.(   R?   R>   t   source_cacheR,   RU   t   stderrt   force_pkgs_dirsRT   t   tarballst   allR$   t   sortedR`   R:   R   R/   t   quiett   index_cacheR   R   RO   t   packagesRK   RN   R^   RV   t	   tempfilest
   exceptionsRa   (
   R6   t   parsert   json_resultt   one_target_ranRS   R   t   firstRA   RZ   Ra   (    (   R   RI   s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   _executeÜ   s^    
				
#	!	!			c         C` s9   d d l  m } t |  | ƒ } t j r5 | | ƒ n  d  S(   Ni   (   t   stdout_json(   R)   Rr   Rq   R   R/   (   R6   Rm   Rr   Rn   (    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   execute  s    	('   t
   __future__R    R   R   R   t   collectionsR   RW   t   loggingR   t   osR   R   R   R	   t   os.pathR
   R   R   R   RU   t   base.constantsR   R   t   base.contextR   t   __name__R4   R$   R?   R:   RK   RN   RO   RT   t   NoneR^   Rq   Rs   (    (    (    s3   lib/python2.7/site-packages/conda/cli/main_clean.pyt   <module>   s$   """	3	2)			B