
0c@_,  ã               @   sê   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l j j j Z d  d l	 m
 Z
 d  d l m Z m Z d  d l m Z m Z d  d l m Z e rÁ d  d l m Z d  d l m Z m Z e j e ƒ Z Gd	 d
 „  d
 e
 ƒ Z d S)é    )Úabsolute_importN)ÚCommand)ÚERRORÚSUCCESS)ÚCommandErrorÚPipError)ÚMYPY_CHECK_RUNNING)ÚValues)ÚAnyÚListc               @   s‚   e  Z d  Z d Z d Z d Z d d „  Z d d „  Z d d	 „  Z d
 d „  Z	 d d „  Z
 d d „  Z d d „  Z d d „  Z d S)ÚCacheCommandaw  
    Inspect and manage pip's wheel cache.

    Subcommands:

    - dir: Show the cache directory.
    - info: Show information about the cache.
    - list: List filenames of packages stored in the cache.
    - remove: Remove one or more package from the cache.
    - purge: Remove all items from the cache.

    ``<pattern>`` can be a glob expression or a package name.
    Tz|
        %prog dir
        %prog info
        %prog list [<pattern>]
        %prog remove <pattern>
        %prog purge
    c             C   sô   d |  j  d |  j d |  j d |  j d |  j i } | j sM t j d ƒ t S| sd | d | k r‡ t j d d	 j	 t
 | ƒ ƒ ƒ t S| d } y | | | | d
 d  … ƒ Wn= t k
 rï } z t j | j d ƒ t SWYd  d  } ~ Xn Xt S)NÚdirÚinfoÚlistÚremoveÚpurgez<pip cache commands can not function since cache is disabled.r   zNeed an action (%s) to perform.z, é   )Úget_cache_dirÚget_cache_infoÚlist_cache_itemsÚremove_cache_itemsÚpurge_cacheÚ	cache_dirÚloggerÚerrorr   ÚjoinÚsortedr   Úargsr   )ÚselfÚoptionsr   ÚhandlersÚactionÚe© r#   ú;/tmp/pip-build-jynh7p1z/pip/pip/_internal/commands/cache.pyÚrun-   s(    					
zCacheCommand.runc             C   s&   | r t  d ƒ ‚ t j | j ƒ d  S)NzToo many arguments)r   r   r   r   )r   r   r   r#   r#   r$   r   O   s    zCacheCommand.get_cache_dirc             C   s†   | r t  d ƒ ‚ t |  j | d ƒ ƒ } |  j | ƒ } t j | ƒ } t j d ƒ j d | d | d | ƒ j	 ƒ  } t
 j | ƒ d  S)NzToo many argumentsÚ*zq
            Location: {location}
            Size: {size}
            Number of wheels: {package_count}
        ÚlocationZpackage_countÚsize)r   ÚlenÚ_find_wheelsÚ_wheels_cache_dirÚ
filesystemZformat_directory_sizeÚtextwrapÚdedentÚformatÚstripr   r   )r   r   r   Znum_packagesZcache_locationZ
cache_sizeÚmessager#   r#   r$   r   V   s    zCacheCommand.get_cache_infoc       	      C   sÞ   t  | ƒ d k r t d ƒ ‚ | r1 | d } n d } |  j | | ƒ } | s` t j d ƒ d  Sg  } xH | D]@ } t j j | ƒ } t j	 | ƒ } | j
 d j | | ƒ ƒ qm Wt j d ƒ t j d j t | ƒ ƒ ƒ d  S)	Nr   zToo many argumentsr   r&   zNothing cached.z
 - {} ({})zCache contents:
Ú
)r)   r   r*   r   r   ÚosÚpathÚbasenamer,   Zformat_file_sizeÚappendr/   r   r   )	r   r   r   ÚpatternÚfilesÚresultsÚfilenameÚwheelr(   r#   r#   r$   r   l   s     zCacheCommand.list_cache_itemsc             C   s    t  | ƒ d k r t d ƒ ‚ | s0 t d ƒ ‚ |  j | | d ƒ } | sX t d ƒ ‚ x+ | D]# } t j | ƒ t j d | ƒ q_ Wt j d t  | ƒ ƒ d  S)Nr   zToo many argumentszPlease provide a patternr   zNo matching packagesz
Removed %szFiles removed: %s)r)   r   r*   r3   Úunlinkr   Údebugr   )r   r   r   r8   r:   r#   r#   r$   r   „   s    zCacheCommand.remove_cache_itemsc             C   s%   | r t  d ƒ ‚ |  j | d g ƒ S)NzToo many argumentsr&   )r   r   )r   r   r   r#   r#   r$   r   •   s    zCacheCommand.purge_cachec             C   s   t  j j | j d ƒ S)NÚwheels)r3   r4   r   r   )r   r   r#   r#   r$   r+   œ   s    zCacheCommand._wheels_cache_dirc             C   s;   |  j  | ƒ } | d | k r$ d n d } t j | | ƒ S)Nú-z*.whlz-*.whl)r+   r,   Z
find_files)r   r   r7   Ú	wheel_dirr#   r#   r$   r*       s    zCacheCommand._find_wheelsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Zignore_require_venvÚusager%   r   r   r   r   r   r+   r*   r#   r#   r#   r$   r      s   "r   )Ú
__future__r   Úloggingr3   r-   Zpip._internal.utils.filesystemZ	_internalÚutilsr,   Zpip._internal.cli.base_commandr   Zpip._internal.cli.status_codesr   r   Zpip._internal.exceptionsr   r   Zpip._internal.utils.typingr   Úoptparser	   Ztypingr
   r   Ú	getLoggerrA   r   r   r#   r#   r#   r$   Ú<module>   s   