
     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.m/Z/m0Z0  e j1        d          Z2 ej3        e4          Z5de6de6fdZ7de6de j         fdZ8 G d d          Z9e
 G d d                      Z:de6de;fdZ<de#d ej=        dee6         fd!Z>d"e9d#e j         d$ed%eg ee6         f         dee:         f
d&Z?de#d ej=        ddfd'Z@dS )(    N)	dataclass)AnyCallableDictOptional)Version)parse)Group)escape)Text)LinkCollector)PackageFinder)get_default_environment)SelectionPreferences)
PipSession)WINDOWS) get_best_invocation_for_this_pip#get_best_invocation_for_this_python)adjacent_tmp_filecheck_path_ownerreplace)ExternallyManagedEnvironmentcheck_externally_managed
ensure_dir   )dayskeyreturnc                 z    |                                  }t          j        |                                          }|S N)encodehashlibsha224	hexdigest)r   	key_bytesnames      `/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/pip/_internal/self_outdated_check.py_get_statefile_namer(   (   s/    

I>)$$..00DK    isodatec                 h    t           j                             |                     dd                    S )zConvert an ISO format string to a date.

    Handles the format 2020-01-22T14:24:01Z (trailing Z)
    which is not supported by older versions of fromisoformat.
    Zz+00:00)datetimefromisoformatr   )r*   s    r'   _convert_dater/   .   s)     **7??3+I+IJJJr)   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)selfr2   	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)rA   s    r'   r   zSelfCheckState.keyI   s
    zr)   current_timec                     | 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)r6   r/   _WEEK)rA   rG   rI   time_since_last_checks       r'   getzSelfCheckState.getM   ss    { 	4t{**4,,4 #4;|#<==
 ,z 9 5((4{>**r)   rJ   c                 F   | j         sd S t          t          j                            | j                             sd S t          t          j                            | j                              | j        |                                |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   rI   rJ   T),:)	sort_keys
separators)r7   r   r8   r9   dirnamer   r   	isoformatr<   dumpsr   writer!   r   r&   r>   )rA   rJ   rG   statetextfs         r'   setzSelfCheckState.set`   sY   # 	F  0D E EFF 	F 	27??4#788999
 8&0022(
 
 z%4JGGGt344 	#GGDKKMM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#	 AFD011111 	 	 	DD	s$   6(C**C.1C.6D 
D D )__name__
__module____qualname__strrC   propertyr   r-   r   rM   rZ    r)   r'   r1   r1   7   s        # $    " S    X+ 1 +hsm + + + +&   83D              r)   r1   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_markuprc   rd   r   )rA   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^   __annotations__r
   ri   r`   r)   r'   rb   rb      sC         	HHH	HHH
% 
 
 
 
 
 
r)   rb   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)rk   dists     r'   was_installed_by_piprq      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)rs   suppress_no_indexF)allow_yankedallow_all_prereleases)link_collectorselection_prefsrm   )r   creater   r   find_best_candidatebest_candidater^   version)rr   rs   rx   ry   finderr|   s         r'   _get_current_remote_pip_versionr      s     #)  N +#  O
 !%'  F //66ENt~%&&&r)   rW   rG   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:  %srm   zWas pip installed by pip? %s)rc   rd   )	rM   loggerdebugrZ   parse_versionrq   base_versionrb   r^   )rW   rG   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)   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)r2   )rW   rG   r   r   z%srichT)extra)r   rn   r   r   r   r1   r2   r-   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)Ar-   r   r"   r<   loggingoptparseos.pathr8   rE   dataclassesr   typingr   r   r   r   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.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   r   r   	timedeltarK   	getLoggerr[   r   r^   r(   r/   r1   rb   boolrq   Valuesr   r   r   r`   r)   r'   <module>r      s             



 ! ! ! ! ! ! 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 @ @ @ @ @ @ * * * * * * * * * * * * & & & & & & 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3 K8#4 K K K KI I I I I I I IX 
 
 
 
 
 
 
 
08c 8d 8 8 8 8''"*/'c]' ' ' '8 # 	
 !Xc]!23 m   DCJ C CT C C C C C Cr)   