
    *,h                         d dl Z d dlZd dlmZ d dlmZmZ d dlmc m	c m
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e      Z G d d	e      Zy)
    N)Values)AnyList)Command)ERRORSUCCESS)CommandErrorPipError)	getLoggerc                   ,   e Zd ZdZdZdZddZdedee	   de
fd	Zdedee   ddfd
Zdedee   ddfdZdedee   ddfdZdee	   ddfdZdee	   ddfdZdedee   ddfdZdedee   ddfdZdede	de	fdZdedee	   fdZdede	dee	   fdZy)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>] [--format=[human, abspath]]
        %prog remove <pattern>
        %prog purge
    returnNc                     | j                   j                  dddddd       | j                  j                  d| j                          y )	Nz--formatstorelist_formathuman)r   abspathz:Select the output format among: human (default) or abspath)actiondestdefaultchoiceshelpr   )cmd_opts
add_optionparserinsert_option_group)selfs    ^/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pip/_internal/commands/cache.pyadd_optionszCacheCommand.add_options'   sE      (M 	! 	
 	''4==9    optionsargsc                    | j                   | j                  | j                  | j                  | j                  d}|j
                  st        j                  d       t        S |r|d   |vr4t        j                  ddj                  t        |                   t        S |d   }	  ||   ||dd         t        S # t        $ r2}t        j                  |j                  d          t        cY d }~S d }~ww xY w)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
   r"   r   )r   r!   r"   handlersr   es         r   runzCacheCommand.run3   s    %%''))--%%
   LLWXL tAwh.LL1		&*+ La	HVWd12h/
 	  	LL#L	s   %B: :	C5'C0*C50C5c                 \    |rt        d      t        j                  |j                         y )NToo many arguments)r	   r0   r%   r/   r   r!   r"   s      r   r*   zCacheCommand.get_cache_dirS   s#    344G%%&r    c                    |rt        d      t        | j                  |            }t        | j                  |d            }| j	                  |d      }| j	                  |d      }t        j                  |      }t        j                  |      }t        j                  d      j                  ||||||      j                         }	t        j                  |	       y )Nr8   *httpwheelsa  
                    Package index page cache location: {http_cache_location}
                    Package index page cache size: {http_cache_size}
                    Number of HTTP files: {num_http_files}
                    Locally built wheels location: {wheels_cache_location}
                    Locally built wheels size: {wheels_cache_size}
                    Number of locally built wheels: {package_count}
                )http_cache_locationhttp_cache_sizenum_http_fileswheels_cache_locationpackage_countwheels_cache_size)r	   len_find_http_files_find_wheels
_cache_dir
filesystemformat_directory_sizetextwrapdedentformatstripr0   r%   )
r   r!   r"   r@   num_packagesr>   rA   r?   rC   messages
             r   r+   zCacheCommand.get_cache_infoY   s    344T227;<4,,Wc:;"oogv> $ B$::;NO&<<=RS OO	 V$7 /-&;*"3   UW' 	, 	Gr    c                     t        |      dkD  rt        d      |r|d   }nd}| j                  ||      }|j                  dk(  r| j	                  |       y | j                  |       y )Nr)   r8   r   r;   r   )rD   r	   rF   r   format_for_humanformat_for_abspath)r   r!   r"   patternfiless        r   r,   zCacheCommand.list_cache_items}   sf    t9q=3441gGG!!'73')!!%(##E*r    rT   c                 b   |st         j                  d       y g }|D ]N  }t        j                  j	                  |      }t        j                  |      }|j                  d| d| d       P t         j                  d       t         j                  dj                  t        |                   y )NzNo locally built wheels cached.z - z ()zCache contents:

)
r0   r%   ospathbasenamerH   format_file_sizeappendr2   r3   )r   rT   resultsfilenamewheelsizes         r   rQ   zCacheCommand.format_for_human   s    KK9: 	3HGG$$X.E..x8DNNSr$q12	3 	'(DIIfWo./r    c                     |sy g }|D ]  }|j                  |        t        j                  dj                  t	        |                   y )NrW   )r\   r0   r%   r2   r3   )r   rT   r]   r^   s       r   rR   zCacheCommand.format_for_abspath   sC     	%HNN8$	% 	DIIfWo./r    c                    t        |      dkD  rt        d      |st        d      | j                  ||d         }d}|d   dk(  r|| j                  |      z  }n|dj	                  |d         z  }|st
        j                  |       |D ]-  }t        j                  |       t
        j                  d|       / t
        j                  d	t        |             y )
Nr)   r8   zPlease provide a patternr   zNo matching packagesr;   z for pattern "{}"z
Removed %szFiles removed: %s)rD   r	   rF   rE   rL   r0   warningrX   unlinkverboser%   )r   r!   r"   rT   no_matching_msgr^   s         r   r-   zCacheCommand.remove_cache_items   s    t9q=3449::!!'47307c>T**733E 299$q'BBONN?+ 	3HIIhNN<2	3 	'U4r    c                 B    |rt        d      | j                  |dg      S )Nr8   r;   )r	   r-   r9   s      r   r.   zCacheCommand.purge_cache   s&    344&&w66r    subdirc                 V    t         j                  j                  |j                  |      S )N)rX   rY   r2   r/   )r   r!   rh   s      r   rG   zCacheCommand._cache_dir   s    ww||G--v66r    c                 R    | j                  |d      }t        j                  |d      S )Nr<   r;   rG   rH   
find_files)r   r!   http_dirs      r   rE   zCacheCommand._find_http_files   s%    ??7F3$$Xs33r    rS   c                 h    | j                  |d      }|d|v rdndz   }t        j                  ||      S )Nr=   -z*.whlz-*.whlrk   )r   r!   rS   	wheel_dirs       r   rF   zCacheCommand._find_wheels   s9    OOGX6	$ wWHE$$Y88r    )r   N)__name__
__module____qualname____doc__ignore_require_venvusager   r   r   strintr6   r   r*   r+   r,   rQ   rR   r-   r.   rG   rE   rF    r    r   r   r      sN    E
:6 c s @'V '49 ' '"f "DI "$ "H+ +d3i +D +0d3i 0D 00S	 0d 05& 5S	 5d 5276 7c 7t 77& 7# 7# 74 449 49F 9S 9T#Y 9r    r   )rX   rJ   optparser   typingr   r   pip._internal.utils.filesystem	_internalutilsrH   pip._internal.cli.base_commandr   pip._internal.cli.status_codesr   r   pip._internal.exceptionsr	   r
   pip._internal.utils.loggingr   rq   r0   r   ry   r    r   <module>r      s;    	    3 3 2 9 ; 1	8	O97 O9r    