Ë
    Ìi\   ã                  ó  — 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 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& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4  ejj                  d¬«      Z6 ejn                  e8«      Z9d d„Z: G d„ d«      Z;e G d„ d«      «       Z<d!d„Z=	 	 	 	 	 	 d"d„Z>	 	 	 	 	 	 	 	 	 	 d#d„Z?d$d„Z@y)%é    )ÚannotationsN)Ú	dataclass)ÚCallable)ÚVersion)Úparse)ÚGroup)Úescape)ÚText)ÚLinkCollector)ÚPackageFinder)Úget_default_environment)ÚReleaseControl)ÚSelectionPreferences)Ú
PipSession)ÚWINDOWS)Úparse_iso_datetime)Ú 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é   )Údaysc                ól   — | j                  «       }t        j                  |«      j                  «       }|S ©N)ÚencodeÚhashlibÚsha224Ú	hexdigest)ÚkeyÚ	key_bytesÚnames      úb/var/www/html/strategist-ai/venv/lib/python3.12/site-packages/pip/_internal/self_outdated_check.pyÚ_get_statefile_namer(   1   s)   € Ø—
‘
“€IÜ�>‰>˜)Ó$×.Ñ.Ó0€DØ€Kó    c                  ó6   — e Zd Zdd„Zedd„«       Zdd„Zd	d„Zy)
ÚSelfCheckStatec                óZ  — i | _         d | _        |rut        j                  j	                  |dt        | j                  «      «      | _        	 t        | j                  d¬«      5 }t        j                  |«      | _         d d d «       y y # 1 sw Y   y xY w# t        t        t        f$ r Y y w xY w)NÚ	selfcheckzutf-8)Úencoding)Ú_stateÚ_statefile_pathÚosÚpathÚjoinr(   r$   ÚopenÚjsonÚloadÚOSErrorÚ
ValueErrorÚKeyError)ÚselfÚ	cache_dirÚ	statefiles      r'   Ú__init__zSelfCheckState.__init__8   sœ   € Ø&(ˆŒØ#ˆÔñ Ü#%§7¡7§<¡<Ø˜;Ô(;¸D¿H¹HÓ(Eó$ˆDÔ ðÜ˜$×.Ñ.¸ÔAð 7ÀYÜ"&§)¡)¨IÓ"6�D”K÷7ð 7ð ÷
7ð 7ûäœZ¬Ð2ò ñ ðús0   ÁB Á"BÁ=B ÂBÂB ÂB ÂB*Â)B*c                ó"   — t         j                  S r   )ÚsysÚprefix)r:   s    r'   r$   zSelfCheckState.keyI   s   € ä�z‰zÐr)   c                óÄ   — | j                   syd| j                   vryd| j                   vryt        | j                   d   «      }||z
  }|t        kD  ry| j                   d   S )z7Check if we have a not-outdated version loaded already.NÚ
last_checkÚpypi_version)r/   r   Ú_WEEK)r:   Úcurrent_timerB   Útime_since_last_checks       r'   ÚgetzSelfCheckState.getM   sd   € à�{Š{Øà˜tŸ{™{Ñ*Øà §¡Ñ,Øô (¨¯©°LÑ(AÓBˆ
Ø ,¨zÑ 9ÐØ ¤5Ò(Øà�{‰{˜>Ñ*Ð*r)   c                ó  — | j                   sy t        j                  j                  | j                   «      }t	        |«      sy t        |«       | j                  |j                  «       |dœ}t        j                  |dd¬«      }t        | j                   «      5 }|j                  |j                  «       «       t        ||«       d d d «       	 t        j                  | j                   «       y # 1 sw Y   Œ+xY w# t         $ r Y y w xY w)N)r$   rB   rC   T)ú,ú:)Ú	sort_keysÚ
separators)r0   r1   r2   Údirnamer   r   r$   Ú	isoformatr5   Údumpsr   Úwriter    r   r   r&   r7   )r:   rC   rE   Ústatefile_directoryÚstateÚtextÚfs          r'   ÚsetzSelfCheckState.set`   sã   € à×#Ò#Øä Ÿg™gŸo™o¨d×.BÑ.BÓCÐô  Ð 3Ô4Øô 	Ð&Ô'ð
 —8‘8Ø&×0Ñ0Ó2Ø(ñ
ˆô �z‰z˜%¨4¸JÔGˆä˜t×3Ñ3Ó4ð 	?¸Ø�G‰G�D—K‘K“MÔ"Ü&Ð':¸AÔ>÷	?ð	ô �A—F‘F˜D×0Ñ0Õ1÷	?ð 	?ûô ò 	áð	ús   Â,C/Ã C; Ã/C8Ã;	DÄDN)r;   ÚstrÚreturnÚNone)rW   rV   )rE   údatetime.datetimerW   ú
str | None)rC   rV   rE   rY   rW   rX   )Ú__name__Ú
__module__Ú__qualname__r=   Úpropertyr$   rG   rU   © r)   r'   r+   r+   7   s%   „ óð" òó ðó+ô&#r)   r+   c                  ó*   — e Zd ZU ded<   ded<   dd„Zy)ÚUpgradePromptrV   ÚoldÚnewc                ó  — 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_markuprb   rc   r	   )r:   Úpip_cmdÚnotices      r'   Ú__rich__zUpgradePrompt.__rich__‹   s•   € ÝÜ<Ó>Ð?¸wÐG‰Gä6Ó8ˆGàBˆÜÜ‹FÜ×ÑØ�(ð ØŸ™�zÐ!3°D·H±H°:¸WðFóô ×ÑØ�(ð Ü  ›/Ð*Ð*@ðBóó

ð 
	
r)   N)rW   r   )r[   r\   r]   Ú__annotations__rh   r_   r)   r'   ra   ra   †   s   … à	ƒHØ	ƒHô
r)   ra   c                ó^   — t        «       j                  | «      }|duxr d|j                  k(  S )zµChecks 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)ÚpkgÚdists     r'   Úwas_installed_by_piprp   Ÿ   s0   € ô #Ó$×5Ñ5°cÓ:€DØ�tÐÒ7 ¨¯©Ñ 7Ð7r)   c                óö   — t        j                  | |d¬«      }t        dt        dh¬«      ¬«      }t	        j                  ||¬«      }|j                  d«      j                  }|€y t        |j                  «      S )NT)ÚoptionsÚsuppress_no_indexFrk   )Ú
only_final)Úallow_yankedÚrelease_control)Úlink_collectorÚselection_prefs)	r   Úcreater   r   r   Úfind_best_candidateÚbest_candidaterV   Úversion)Úsessionrr   rw   rx   Úfinderr{   s         r'   Ú_get_current_remote_pip_versionr   ©   s€   € ô #×)Ñ)ØØØô€Nô +ØÜ&°5°'Ô:ô€Oô
 ×!Ñ!Ø%Ø'ô€Fð ×/Ñ/°Ó6×EÑE€NØÐØäˆ~×%Ñ%Ó&Ð&r)   c                ó²  — | j                  |«      }|€1 |«       }|€t        j                  d«       y | j                  ||«       t	        |«      }t        j                  d|«       t        j                  d|«       t        d«      }t        j                  d|«       |sy ||k  xr |j                  |j                  k7  }|rt        t        |«      |¬«      S y )NzNo remote pip version foundzRemote version of pip: %szLocal version of pip:  %srk   zWas pip installed by pip? %s)rb   rc   )	rG   ÚloggerÚdebugrU   Úparse_versionrp   Úbase_versionra   rV   )rR   rE   Úlocal_versionÚget_remote_versionÚremote_version_strÚremote_versionÚpip_installed_by_pipÚlocal_version_is_olders           r'   Ú_self_version_check_logicr‹   Å   sÕ   € ð Ÿ™ <Ó0ÐØÐ!Ù/Ó1ÐØÐ%Ü�L‰LÐ6Ô7ØØ�	‰	Ð$ lÔ3ä"Ð#5Ó6€NÜ
‡L�LÐ,¨nÔ=Ü
‡L�LÐ,¨mÔ<ä/°Ó6ÐÜ
‡L�LÐ/Ð1EÔFÙØð 	˜Ñ&ò 	FØ×&Ñ&¨.×*EÑ*EÑEð ñ Ü¤ ]Ó!3Ð9KÔLÐLàr)   c           
     ó   — t        «       j                  d«      }|sy	 t        «        t	        t        |j                  ¬«      t        j                  j                  t        j                  j                  «      |j                  t        j                  t        | |«      ¬«      }|�t        j!                  d|ddi¬«       yy# t        $ r Y yw xY w)	zÛCheck 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)r;   )rR   rE   r…   r†   z%sÚrichT)Úextra)r   rl   r   r   r‹   r+   r;   ÚdatetimeÚnowÚtimezoneÚutcr|   Ú	functoolsÚpartialr   r�   Úwarning)r}   rr   Úinstalled_distÚupgrade_prompts       r'   Úpip_self_version_checkr˜   ç   s·   € ô -Ó.×?Ñ?ÀÓF€NÙØðÜ Ô"ô /Ü w×'8Ñ'8Ô9Ü×&Ñ&×*Ñ*¬8×+<Ñ+<×+@Ñ+@ÓAØ$×,Ñ,Ü$×,Ñ,Ü+¨W°gó
ô	€Nð Ð!Ü�‰�t˜^°F¸D°>ˆÕBð "øô (ò Ùðús   ž
C Ã	CÃC)r$   rV   rW   rV   )rn   rV   rW   Úbool)r}   r   rr   úoptparse.ValuesrW   rZ   )
rR   r+   rE   rY   r…   r   r†   zCallable[[], str | None]rW   zUpgradePrompt | None)r}   r   rr   rš   rW   rX   )AÚ
__future__r   r�   r“   r!   r5   ÚloggingÚoptparseÚos.pathr1   r?   Údataclassesr   Útypingr   Ú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.release_controlr   Ú$pip._internal.models.selection_prefsr   Úpip._internal.network.sessionr   Úpip._internal.utils.compatr   Úpip._internal.utils.datetimer   Úpip._internal.utils.entrypointsr   r   Úpip._internal.utils.filesystemr   r   r   r   Úpip._internal.utils.miscr   r   r   Ú	timedeltarD   Ú	getLoggerr[   r�   r(   r+   ra   rp   r   r‹   r˜   r_   r)   r'   ú<module>r²      s  ðÝ "ã Û Û Û Û Û Û Û 
Ý !Ý å 1Ý @Ý *Ý *Ý &å 7Ý <Ý :Ý ?Ý EÝ 4Ý .Ý ;÷÷ó ÷ñ ð 	ˆ×Ñ Ô"€à	ˆ×	Ñ	˜8Ó	$€ó÷Lñ Lð^ ÷
ð 
ó ð
ó08ð'Øð'Ø"1ð'àó'ð8àðð $ðð ð	ð
 1ðð óôDCr)   