
    жvg                     t   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.  e j/        d          Z0 ej1        e2          Z3de4de4fdZ5de4de j         fdZ6 G d d          Z7e
 G d d                      Z8de4de9fdZ:de#d ej;        dee4         fd!Z<d"e7d#e j         d$ed%eg ee4         f         dee8         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)
ensure_dir   )dayskeyreturnc                 z    |                                  }t          j        |                                          }|S N)encodehashlibsha224	hexdigest)r   	key_bytesnames      ^/var/www/pixelcanvas.ch/venv/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)selfr0   	statefiles      r%   __init__zSelfCheckState.__init__4   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.keyE   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)r4   r-   _WEEK)r?   rE   rG   time_since_last_checks       r%   getzSelfCheckState.getI   ss    { 	4t{**4,,4 #4;|#<==
 ,z 9 5((4{>**r'   rH   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   rG   rH   T),:)	sort_keys
separators)r5   r   r6   r7   dirnamer   r   	isoformatr:   dumpsr   writer   r   r$   r<   )r?   rH   rE   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__strrA   propertyr   r+   r   rK   rX    r'   r%   r/   r/   3   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_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)rY   rZ   r[   r\   __annotations__r
   rg   r^   r'   r%   r`   r`      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)ri   dists     r%   was_installed_by_pipro      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)rq   suppress_no_indexF)allow_yankedallow_all_prereleases)link_collectorselection_prefsrk   )r   creater   r   find_best_candidatebest_candidater\   version)rp   rq   rv   rw   finderrz   s         r%   _get_current_remote_pip_versionr}      s     #)  N +#  O
 !%'  F //66ENt~%&&&r'   rU   rE   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:  %srk   zWas pip installed by pip? %s)ra   rb   )	rK   loggerdebugrX   parse_versionro   base_versionr`   r\   )rU   rE   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           
      v   t                                          d          }|sdS 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.
    rk   N)r0   )rU   rE   r~   r   z%srichT)extra)r   rl   r   r/   r0   r+   nowtimezoneutcr{   	functoolspartialr}   r   warning)rp   rq   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 "!r'   )?r+   r   r    r:   loggingoptparseos.pathr6   rC   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   	timedeltarI   	getLoggerrY   r   r\   r&   r-   r/   r`   boolro   Valuesr}   r   r   r^   r'   r%   <module>r      sm             



 ! ! ! ! ! ! 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'   