
    !2i!                       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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          Z6d3dZ7d4dZ8 G d d          Z9e G d d                      Z:d5d"Z;d6d(Z<d7d0Z=d8d2Z>dS )9    )annotationsN)	dataclass)AnyCallable)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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      `/var/www/html/pixcura-vrs/venv/lib/python3.11/site-packages/pip/_internal/self_outdated_check.py_get_statefile_namer)   /   s/    

I>)$$..00DK    isodatedatetime.datetimec                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_dater1   5   s)     **7??3+I+IJJJr*   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)selfr4   	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)rD   s    r(   r   zSelfCheckState.keyP   s
    zr*   current_timer,   
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)r9   r1   _WEEK)rD   rJ   rM   time_since_last_checks       r(   getzSelfCheckState.getT   ss    { 	4t{**4,,4 #4;|#<==
 ,z 9 5((4{>**r*   rN   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   rM   rN   T),:)	sort_keys
separators)r:   r;   r<   dirnamer   r   r   	isoformatr?   dumpsr   writer"   r   r   r'   rA   )rD   rN   rJ   statefile_directorystatetextfs          r(   setzSelfCheckState.setg   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)r4   r   r   r5   )r   r   )rJ   r,   r   rK   )rN   r   rJ   r,   r   r5   )__name__
__module____qualname__rF   propertyr   rQ   r_    r*   r(   r3   r3   >   sp           "    X+ + + +&# # # # # #r*   r3   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_markuprg   rh   r
   )rD   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`   ra   rb   __annotations__rm   rd   r*   r(   rf   rf      s<         HHHHHH
 
 
 
 
 
r*   rf   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)ro   dists     r(   was_installed_by_piprv      s4     #$$55c::Dt7 77r*   sessionr   optionsoptparse.ValuesrK   c                    t          j        | |d          }t          dd          }t          j        ||          }|                    d          j        }|d S t          |j                  S )NT)rx   suppress_no_indexF)allow_yankedallow_all_prereleases)link_collectorselection_prefsrr   )r   creater   r   find_best_candidatebest_candidater   version)rw   rx   r~   r   finderr   s         r(   _get_current_remote_pip_versionr      s     #)  N +#  O
 !%'  F //66ENt~%&&&r*   r\   rJ   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:  %srr   zWas pip installed by pip? %s)rg   rh   )	rQ   loggerdebugr_   parse_versionrv   base_versionrf   r   )r\   rJ   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*   r5   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.
    rr   N)r4   )r\   rJ   r   r   z%srichT)extra)r   rs   r   r   r   r3   r4   r/   nowtimezoneutcr   	functoolspartialr   r   warning)rw   rx   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   )r+   r   r   r,   )ro   r   r   rp   )rw   r   rx   ry   r   rK   )
r\   r3   rJ   r,   r   r   r   r   r   r   )rw   r   rx   ry   r   r5   )?
__future__r   r/   r   r#   r?   loggingoptparseos.pathr;   rH   dataclassesr   typingr   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   r   pip._internal.utils.miscr   r   r   	timedeltarO   	getLoggerr`   r   r)   r1   r3   rf   rv   r   r   r   rd   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	$	$   K K K KL L L L L L L L^ 
 
 
 
 
 
 
 
08 8 8 8' ' ' '8   DC C C C C Cr*   