
    /h                     <   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mZmZ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- d dl.m/Z/ dZ0 ej1        e2          Z3de4de4fdZ5 G d d          Z6e
 G d d                      Z7de4de8fdZ9de$dej:        dee4         fdZ;de6d e j         d!e d"eg ee4         f         dee7         f
d#Z<de$dej:        ddfd$Z=dS )%    N)	dataclass)AnyCallableDictOptional)parse)Group)escape)Text)LinkCollector)PackageFinder)get_default_environment)DistributionVersion)SelectionPreferences)
PipSession)WINDOWS) get_best_invocation_for_this_pip#get_best_invocation_for_this_python)adjacent_tmp_filecheck_path_ownerreplace)
ensure_dirz%Y-%m-%dT%H:%M:%SZkeyreturnc                 z    |                                  }t          j        |                                          }|S N)encodehashlibsha224	hexdigest)r   	key_bytesnames      T/var/www/html/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eddfdZedefd            Zdej        dee         fdZ	dedej        ddfd	Z
dS )
SelfCheckState	cache_dirr   Nc                 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__,   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)r7   s    r#   r   zSelfCheckState.key=   s
    zr%   current_timec                     | j         sdS d| j         vrdS d| j         vrdS d}t          j                            | j         d         t                    }||z
                                  }||k    rdS | j         d         S )z7Check if we have a not-outdated version loaded already.N
last_checkpypi_versioni:	 )r,   datetimestrptime	_DATE_FMTtotal_seconds)r7   r=   seven_days_in_secondsr?   seconds_since_last_checks        r#   getzSelfCheckState.getA   s    { 	4t{**4,,4 0 &//L0I9UU
$0:$=#L#L#N#N #&;;;4{>**r%   r@   c                 R   | j         sd S t          t          j                            | j                             sd S t          t          j                            | j                              | j        |                    t                    |d}t          j
        |dd          }t          | j                   5 }|                    |                                           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   r?   r@   T),:)	sort_keys
separators)r-   r   r.   r/   dirnamer   r   strftimerC   r2   dumpsr   writer   r   r"   r4   )r7   r@   r=   statetextfs         r#   setzSelfCheckState.setV   s[   # 	F  0D E EFF 	F 	27??4#788999
 8&//	::(
 
 z%4JGGGt344 	#GGDKKMM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#	 AFD011111 	 	 	DD	s$   <(C00C47C4<D 
D&%D&)__name__
__module____qualname__strr9   propertyr   rA   r   rG   rT    r%   r#   r'   r'   +   s        # $    " S    X+ 1 +hsm + + + +*   83D              r%   r'   c                   0    e Zd ZU eed<   eed<   defdZdS )UpgradePromptoldnewr   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_markupr]   r^   r
   )r7   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)rU   rV   rW   rX   __annotations__r	   rc   rZ   r%   r#   r\   r\   y   sC         	HHH	HHH
% 
 
 
 
 
 
r%   r\   pkgc                 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)re   dists     r#   was_installed_by_piprk      s4     #$$55c::Dt7 77r%   sessionoptionsc                     t          j        | |d          }t          dd          }t          j        ||          }|                    d          j        }|d S t          |j                  S )NT)rm   suppress_no_indexF)allow_yankedallow_all_prereleases)link_collectorselection_prefsrg   )r   creater   r   find_best_candidatebest_candidaterX   version)rl   rm   rr   rs   finderrv   s         r#   _get_current_remote_pip_versionry      s     #)  N +#  O
 !%'  F //66ENt~%&&&r%   rQ   r=   local_versionget_remote_versionc                    |                      |          }|> |            }|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:  %srg   zWas pip installed by pip? %s)r]   r^   )	rG   loggerdebugrT   parse_versionrk   base_versionr\   rX   )rQ   r=   rz   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%   c           
         t                                          d          }|sdS 	 t          t          |j                  t
          j                                        |j        t          j	        t          | |                    }|t                              d|           dS dS # t          $ r: t                              d           t                              dd	           Y dS w xY w)
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.
    rg   N)r(   )rQ   r=   rz   r{   z[present-rich] %sz6There was an error checking the latest version of pip.zSee below for errorT)exc_info)r   rh   r   r'   r(   rA   utcnowrw   	functoolspartialry   r}   warning	Exceptionr~   )rl   rm   installed_distupgrade_prompts       r#   pip_self_version_checkr      s     -..??FFN ;2 7+<===!*1133(0(0/'   	
 
 
 %NN.????? &% ; ; ;OPPP*T::::::;s   A=B( (A C,+C,)>rA   r   r   r2   loggingoptparseos.pathr.   r;   dataclassesr   typingr   r   r   r   pip._vendor.packaging.versionr   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.metadata.baser   $pip._internal.models.selection_prefsr   pip._internal.network.sessionr   pip._internal.utils.compatr   pip._internal.utils.entrypointsr   r   pip._internal.utils.filesystemr   r   r   pip._internal.utils.miscr   rC   	getLoggerrU   r}   rX   r$   r'   r\   boolrk   Valuesry   r   r   rZ   r%   r#   <module>r      s+             



 ! ! ! ! ! ! 0 0 0 0 0 0 0 0 0 0 0 0 @ @ @ @ @ @ * * * * * * * * * * * * & & & & & & 7 7 7 7 7 7 < < < < < < : : : : : : ; ; ; ; ; ; E E E E E E 4 4 4 4 4 4 . . . . . .        X W W W W W W W W W / / / / / / 	 
	8	$	$S S    K K K K K K K K\ 
 
 
 
 
 
 
 
08c 8d 8 8 8 8''"*/'c]' ' ' '8 # '	
 !Xc]!23 m   D;J ; ;T ; ; ; ; ; ;r%   