
    %g                     ~   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SK J!r!  S SK"J#r#  S SK$J%r%  S SK&J'r'J(r(  S SK)J*r*J+r+J,r,  S SK-J.r.  \ R^                  " SS9r0\Rb                  " \25      r3S\4S\44S jr5S\4S\ R                   4S jr6 " S S5      r7\
 " S S5      5       r8S\4S\94S jr:S\#S \Rv                  S\\4   4S! jr<S"\7S#\ R                   S$\S%\/ \\4   4   S\\8   4
S& jr=S\#S \Rv                  SS4S' jr>g)(    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                 n    U R                  5       n[        R                  " U5      R                  5       nU$ N)encodehashlibsha224	hexdigest)r   	key_bytesnames      Z/home/matz/Project1/venv/lib/python3.13/site-packages/pip/_internal/self_outdated_check.py_get_statefile_namer&   $   s)    

I>>)$..0DK    isodatec                 `    [         R                   R                  U R                  SS5      5      $ )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JJr'   c                       \ rS rSrS\SS4S jr\S\4S j5       rS\R                  S\	\   4S jr
S	\S\R                  SS4S
 jrSrg)SelfCheckState3   	cache_dirr   Nc                 l   0 U l         S U l        U(       as  [        R                  R	                  US[        U R                  5      5      U l         [        U R                  SS9 n[        R                  " U5      U l         S S S 5        g g ! , (       d  f       g = f! [        [        [        4 a     g f = f)N	selfcheckzutf-8)encoding)_state_statefile_pathospathjoinr&   r   openjsonloadOSError
ValueErrorKeyError)selfr1   	statefiles      r%   __init__SelfCheckState.__init__4   s    &(# #%77<<;(;DHH(E$D $..AY"&))I"6DK BA 
 BAZ2  s0   B $B
 B 

BB B B32B3c                 "    [         R                  $ r   )sysprefix)r@   s    r%   r   SelfCheckState.keyE   s    zzr'   current_timec                     U R                   (       d  gSU R                   ;  a  gSU R                   ;  a  g[        U R                   S   5      nX-
  nU[        :  a  gU R                   S   $ )z7Check if we have a not-outdated version loaded already.N
last_checkpypi_version)r5   r-   _WEEK)r@   rH   rJ   time_since_last_checks       r%   getSelfCheckState.getI   sb    {{t{{*, #4;;|#<=
 , 9 5({{>**r'   rK   c                 b   U R                   (       d  g [        [        R                  R	                  U R                   5      5      (       d  g [        [        R                  R	                  U R                   5      5        U R                  UR                  5       US.n[        R                  " USSS9n[        U R                   5       nUR                  UR                  5       5        S S S 5         [        WR                  U R                   5        g ! , (       d  f       N0= f! [         a     g f = f)N)r   rJ   rK   T),:)	sort_keys
separators)r6   r   r7   r8   dirnamer   r   	isoformatr;   dumpsr   writer   r   r$   r=   )r@   rK   rH   statetextfs         r%   setSelfCheckState.set\   s    ##  0D0D EFF 	277??4#7#789
 88&002(
 zz%4JGt334GGDKKM" 5	 AFFD001 54  		s    D/ D! 
D!
D.-D.)r5   r6   )__name__
__module____qualname____firstlineno__strrB   propertyr   r+   r   rN   r\   __static_attributes__ r'   r%   r/   r/   3   sm    # $ " S  + 1 1 +hsm +&   83D3D    r'   r/   c                   8    \ rS rSr% \\S'   \\S'   S\4S jrSrg)UpgradePrompt   oldnewr   c                    [         (       a  [        5        S3nO
[        5       nSn[        [	        5       [        R
                  " U SU R                   SU R                   S35      [        R
                  " U S[        U5       S35      5      $ )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_markupri   rj   r   )r@   pip_cmdnotices      r%   __rich__UpgradePrompt.__rich__   s    7<>?wGG68GBF( z!3DHH:WF (  /**@B

 
	
r'   re   N)	r^   r_   r`   ra   rb   __annotations__r
   ro   rd   re   r'   r%   rg   rg      s    	H	H
% 
r'   rg   pkgc                 h    [        5       R                  U 5      nUSL=(       a    SUR                  :H  $ )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)rr   dists     r%   was_installed_by_piprx      s0     #$55c:Dt7 77r'   sessionoptionsc                     [         R                  " U USS9n[        SSS9n[        R                  " UUS9nUR	                  S5      R
                  nUc  g [        UR                  5      $ )NT)rz   suppress_no_indexF)allow_yankedallow_all_prereleases)link_collectorselection_prefsrt   )r   creater   r   find_best_candidatebest_candidaterb   version)ry   rz   r   r   finderr   s         r%   _get_current_remote_pip_versionr      sy     #))N +#O
 !!%'F //6EEN~%%&&r'   rY   rH   local_versionget_remote_versionc                    U R                  U5      nUc1  U" 5       nUc  [        R                  S5        g U R                  XA5        [	        U5      n[        R                  SU5        [        R                  SU5        [        S5      n[        R                  SU5        U(       d  g X%:  =(       a    UR                  UR                  :g  nU(       a  [        [        U5      US9$ g )NzNo remote pip version foundzRemote version of pip: %szLocal version of pip:  %srt   zWas pip installed by pip? %s)ri   rj   )	rN   loggerdebugr\   parse_versionrx   base_versionrg   rb   )rY   rH   r   r   remote_version_strremote_versionpip_installed_by_piplocal_version_is_olders           r%   _self_version_check_logicr      s     <0!/1%LL67		$3"#56N
LL,n=
LL,m</6
LL/1EF 	& 	F&&.*E*EE  ]!39KLLr'   c           
      f   [        5       R                  S5      nU(       d  g[        [        UR                  S9[
        R
                  R                  [
        R                  R                  5      UR                  [        R                  " [        X5      S9nUb  [        R                  SUSS0S9  gg)	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.
rt   N)r1   )rY   rH   r   r   z%srichT)extra)r   ru   r   r/   r1   r+   nowtimezoneutcr   	functoolspartialr   r   warning)ry   rz   installed_distupgrade_prompts       r%   pip_self_version_checkr      s     -.??FN.w'8'89&&**8+<+<+@+@A$,,$,,+W
	N !t^FD>B "r'   )?r+   r   r    r;   loggingoptparseos.pathr7   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   	timedeltarL   	getLoggerr^   r   rb   r&   r-   r/   rg   boolrx   Valuesr   r   r   re   r'   r%   <module>r      sv          
 ! 0 0 1 @ * * & 7 < : E 4 . X W /"			8	$S S K3 K8#4#4 KI IX 
 
 
08c 8d 8''"*//'c]'8 ## 	
 !Xc]!23 mDCJ C CT Cr'   