
    yj                       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
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,m-Z- d dl.m/Z/m0Z0m1Z1  ej2        d          Z3 ej4        e5          Z6d/dZ7 G d d          Z8e G d d                      Z9d0d#Z:d1d*Z;d2d+Z<d3d.Z=dS )4    )annotationsN)	dataclass)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      b/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/pip/_internal/self_outdated_check.py_get_statefile_namer)   /   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__6   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.keyG   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)r2   r   _WEEK)r=   rC   rG   time_since_last_checks       r(   getzSelfCheckState.getK   ss    { 	4t{**4,,4 (L(ABB
 ,z 9 5((4{>**r*   rH   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   rG   rH   T),:)	sort_keys
separators)r3   r4   r5   dirnamer   r   r   	isoformatr8   dumpsr   writer"   r   r   r'   r:   )r=   rH   rC   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   )rC   rD   r   rE   )rH   r   rC   rD   r   r.   )__name__
__module____qualname__r?   propertyr   rK   rY    r*   r(   r,   r,   5   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_markupra   rb   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   )rZ   r[   r\   __annotations__rg   r^   r*   r(   r`   r`      s<         HHHHHH
 
 
 
 
 
r*   r`   sessionr   optionsoptparse.ValuesrE   c                    t          j        | |d          }t          dt          dh                    }t	          j        ||          }|                    d          j        }|d S t          |j                  S )NT)rj   suppress_no_indexFpip)
only_final)allow_yankedrelease_control)link_collectorselection_prefs)	r
   creater   r   r   find_best_candidatebest_candidater   version)ri   rj   rr   rs   finderrv   s         r(   _get_current_remote_pip_versionry      s     #)  N +&5':::  O
 !%'  F //66ENt~%&&&r*   local_versionr   remote_version_strinstalled_by_pipboolUpgradePrompt | Nonec                :   t          |          }t                              d|           t                              d|            t                              d|           |sd S | |k     o| j        |j        k    }|rt	          t          |           |          S d S )NzRemote version of pip: %szLocal version of pip:  %szWas pip installed by pip? %s)ra   rb   )parse_versionloggerdebugbase_versionr`   r   )rz   r{   r|   remote_versionlocal_version_is_olders        r(   _compute_upgrade_promptr      s     ##566N
LL,n===
LL,m<<<
LL/1ABBB t 	& 	F&.*EE   M]!3!39KLLLL4r*   c                
   t                                          d          }|sdS 	 t                       n# t          $ r Y dS w xY wt	          |j                  }t          j                            t          j        j	                  }|
                    |          }|Dt          | |          }|t                              d           dS |                    ||           t          |j        ||j        dk              S )an  Compute the pip upgrade prompt, if any, before the command runs.

    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.

    Pair with :func:`pip_self_version_check_emit`, which displays the prompt
    after the command body runs.
    rn   N)r-   zNo remote pip version found)rz   r{   r|   )r   get_distributionr   r   r,   r-   datetimenowtimezoneutcrK   ry   r   r   rY   r   rw   	installer)ri   rj   installed_distrV   rC   r{   s         r(   pip_self_version_check_fetchr      s    -..??FFN t """"'   tt W%6777E$(():)>??L<00!<WgNN%LL67774		$l333"$,-'1U:   s   6 
AAupgrade_promptr.   c                L    | !t                               d| ddi           dS dS )zIEmit the upgrade prompt captured by :func:`pip_self_version_check_fetch`.Nz%srichT)extra)r   warning)r   s    r(   pip_self_version_check_emitr      s2    !t^FD>BBBBB "!r*   )r   r   r   r   )ri   r   rj   rk   r   rE   )rz   r   r{   r   r|   r}   r   r~   )ri   r   rj   rk   r   r~   )r   r~   r   r.   )>
__future__r   r   r#   r8   loggingoptparseos.pathr4   rA   dataclassesr   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   	timedeltarI   	getLoggerrZ   r   r)   r,   r`   ry   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   *" " " "JC C C C C Cr*   