
    VPi\                        d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4  ej5        d          Z6 ej7        e8          Z9d3dZ: G d d          Z;e G d d                      Z<d4d!Z=d5d'Z>d6d0Z?d7d2Z@dS )8    )annotationsN)	dataclass)Callable)Version)parse)Group)escape)Text)LinkCollector)PackageFinder)get_default_environment)ReleaseControl)SelectionPreferences)
PipSession)WINDOWS)parse_iso_datetime) get_best_invocation_for_this_pip#get_best_invocation_for_this_python)adjacent_tmp_filecheck_path_ownercopy_directory_permissionsreplace)ExternallyManagedEnvironmentcheck_externally_managed
ensure_dir   )dayskeystrreturnc                z    |                                  }t          j        |                                          }|S N)encodehashlibsha224	hexdigest)r   	key_bytesnames      u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pip/_internal/self_outdated_check.py_get_statefile_namer*   1   s/    

I>)$$..00DK    c                  >    e Zd ZddZedd            Zdd
ZddZdS )SelfCheckState	cache_dirr   r    Nonec                h   i | _         d | _        |rt          j                            |dt          | j                            | _        	 t          | j        d          5 }t          j	        |          | _         d d d            d S # 1 swxY w Y   d S # t          t          t          f$ r Y d S w xY wd S )N	selfcheckzutf-8)encoding)_state_statefile_pathospathjoinr*   r   openjsonloadOSError
ValueErrorKeyError)selfr.   	statefiles      r)   __init__zSelfCheckState.__init__8   s   &(#  
	#%7<<;(;DH(E(E$ $D $.AAA 7Y"&)I"6"6DK7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7Z2    
	 
	s6   
B  B:B BB BB B/.B/c                    t           j        S r"   )sysprefix)r>   s    r)   r   zSelfCheckState.keyI   s
    zr+   current_timedatetime.datetime
str | Nonec                    | j         sdS d| j         vrdS d| j         vrdS t          | j         d                   }||z
  }|t          k    rdS | j         d         S )z7Check if we have a not-outdated version loaded already.N
last_checkpypi_version)r3   r   _WEEK)r>   rD   rH   time_since_last_checks       r)   getzSelfCheckState.getM   ss    { 	4t{**4,,4 (L(ABB
 ,z 9 5((4{>**r+   rI   c                &   | j         sd S t          j                            | j                   }t	          |          sd S t          |           | j        |                                |d}t          j	        |dd          }t          | j                   5 }|                    |                                           t          ||           d d d            n# 1 swxY w Y   	 t          |j        | j                    d S # t           $ r Y d S w xY w)N)r   rH   rI   T),:)	sort_keys
separators)r4   r5   r6   dirnamer   r   r   	isoformatr9   dumpsr   writer#   r   r   r(   r;   )r>   rI   rD   statefile_directorystatetextfs          r)   setzSelfCheckState.set`   sa   # 	F good.BCC   344 	F 	&'''
 8&0022(
 
 z%4JGGGt344 	?GGDKKMM"""&':A>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?	 AFD011111 	 	 	DD	s$   8CC!C&D 
DDN)r.   r   r    r/   )r    r   )rD   rE   r    rF   )rI   r   rD   rE   r    r/   )__name__
__module____qualname__r@   propertyr   rL   rZ    r+   r)   r-   r-   7   sp           "    X+ + + +&# # # # # #r+   r-   c                  ,    e Zd ZU ded<   ded<   ddZdS )	UpgradePromptr   oldnewr    r   c                "   t           rt                       d}nt                      }d}t          t	                      t	          j        | d| j         d| j         d          t	          j        | dt          |           d                    S )Nz -m pipz/[bold][[reset][blue]notice[reset][bold]][reset]z) A new release of pip is available: [red]z[reset] -> [green]z[reset]z To update, run: [green]z install --upgrade pip)	r   r   r   r   r
   from_markuprb   rc   r	   )r>   pip_cmdnotices      r)   __rich__zUpgradePrompt.__rich__   s     	9<>>GGGGG688GBFF F FF F48HF F F   B B //B B B 

 

 
	
r+   N)r    r   )r[   r\   r]   __annotations__rh   r_   r+   r)   ra   ra      s<         HHHHHH
 
 
 
 
 
r+   ra   pkgboolc                b    t                                          |           }|duo
d|j        k    S )zChecks whether pkg was installed by pip

    This is used not to display the upgrade message when pip is in fact
    installed by system package manager, such as dnf on Fedora.
    Npip)r   get_distribution	installer)rj   dists     r)   was_installed_by_piprq      s4     #$$55c::Dt7 77r+   sessionr   optionsoptparse.ValuesrF   c                    t          j        | |d          }t          dt          dh                    }t	          j        ||          }|                    d          j        }|d S t          |j                  S )NT)rs   suppress_no_indexFrm   )
only_final)allow_yankedrelease_control)link_collectorselection_prefs)	r   creater   r   r   find_best_candidatebest_candidater   version)rr   rs   rz   r{   finderr~   s         r)   _get_current_remote_pip_versionr      s     #)  N +&5':::  O
 !%'  F //66ENt~%&&&r+   rW   rD   rE   local_versionr   get_remote_versionCallable[[], str | None]UpgradePrompt | Nonec                   |                      |          }|> |            }|t                              d           d S |                     ||           t	          |          }t                              d|           t                              d|           t          d          }t                              d|           |sd S ||k     o|j        |j        k    }|rt          t          |          |          S d S )NzNo remote pip version foundzRemote version of pip: %szLocal version of pip:  %srm   zWas pip installed by pip? %s)rb   rc   )	rL   loggerdebugrZ   parse_versionrq   base_versionra   r   )rW   rD   r   r   remote_version_strremote_versionpip_installed_by_piplocal_version_is_olders           r)   _self_version_check_logicr      s    <00!//11%LL67774		$l333"#566N
LL,n===
LL,m<<</66
LL/1EFFF t 	& 	F&.*EE   M]!3!39KLLLL4r+   r/   c           
        t                                          d          }|sdS 	 t                       n# t          $ r Y dS w xY wt	          t          |j                  t          j                            t          j	        j
                  |j        t          j        t          | |                    }|!t                              d|ddi           dS dS )	zCheck for an update for pip.

    Limit the frequency of checks to once per week. State is stored either in
    the active virtualenv or in the user's USER_CACHE_DIR keyed off the prefix
    of the pip script path.
    rm   N)r.   )rW   rD   r   r   z%srichT)extra)r   rn   r   r   r   r-   r.   datetimenowtimezoneutcr   	functoolspartialr   r   warning)rr   rs   installed_distupgrade_prompts       r)   pip_self_version_checkr      s     -..??FFN  """"'    /w'8999&**8+<+@AA$,$,+Wg
 
	  N !t^FD>BBBBB "!s   6 
AA)r   r   r    r   )rj   r   r    rk   )rr   r   rs   rt   r    rF   )
rW   r-   rD   rE   r   r   r   r   r    r   )rr   r   rs   rt   r    r/   )A
__future__r   r   r   r$   r9   loggingoptparseos.pathr5   rB   dataclassesr   typingr   pip._vendor.packaging.versionr   r   r   pip._vendor.rich.consoler   pip._vendor.rich.markupr	   pip._vendor.rich.textr
   pip._internal.index.collectorr   "pip._internal.index.package_finderr   pip._internal.metadatar   $pip._internal.models.release_controlr   $pip._internal.models.selection_prefsr   pip._internal.network.sessionr   pip._internal.utils.compatr   pip._internal.utils.datetimer   pip._internal.utils.entrypointsr   r   pip._internal.utils.filesystemr   r   r   r   pip._internal.utils.miscr   r   r   	timedeltarJ   	getLoggerr[   r   r*   r-   ra   rq   r   r   r   r_   r+   r)   <module>r      s	   " " " " " "           



 ! ! ! ! ! !       1 1 1 1 1 1 @ @ @ @ @ @ * * * * * * * * * * * * & & & & & & 7 7 7 7 7 7 < < < < < < : : : : : : ? ? ? ? ? ? E E E E E E 4 4 4 4 4 4 . . . . . . ; ; ; ; ; ;                            	"""		8	$	$   L L L L L L L L^ 
 
 
 
 
 
 
 
08 8 8 8' ' ' '8   DC C C C C Cr+   