§
    è ph~   ã                   ó|  — 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      únC:\Users\Daniel\PycharmProjects\Portfolio_Website\.venv\Lib\site-packages\pip\_internal\self_outdated_check.pyÚ_get_statefile_namer(   (   s/   € Ø—
’
‘”€IÝŒ>˜)Ñ$Ô$×.Ò.Ñ0Ô0€DØ€Kó    Úisodatec                 óh   — t           j                              |                      dd¦  «        ¦  «        S )z¥Convert 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 | _        |r¡t          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§<¢<Ø˜;Õ(;¸D¼HÑ(EÔ(Eñ$ô $ˆDÔ ðÝ˜$Ô.¸ÐAÑAÔAð 7ÀYÝ"&¤)¨IÑ"6Ô"6�D”Kð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   sy   € àŒ{ð 	Ø�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õ 	•2”7—?’? 4Ô#7Ñ8Ô8Ñ9Ô9Ð9ð
 ”8Ø&×0Ò0Ñ2Ô2Ø(ð
ð 
ˆõ Œz˜%¨4¸JÐGÑGÔGˆå˜tÔ3Ñ4Ô4ð 	#¸Ø�GŠG�D—K’K‘M”MÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð	õ �A”F˜DÔ0Ñ1Ô1Ð1Ð1Ð1øÝð 	ð 	ð 	àˆDˆDð	øøø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ð +°h¸s´mð +ð +ð +ð +ð&  ð  °8Ô3Dð  Èð  ð  ð  ð  ð  ð  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ÐGˆGˆGå6Ñ8Ô8ˆGàBˆÝÝ‰FŒFÝÔØð Fð FØœðFð FØ48´HðFð Fð Fñô õ ÔØð Bð BÝ  ™/œ/ðBð Bð Bñô ñ

ô 

ð 
	
r)   N)r[   r\   r]   r^   Ú__annotations__r
   ri   r`   r)   r'   rb   rb   ƒ   sC   € € € € € € à	€H€H�HØ	€H€H�Hð
˜%ð 
ð 
ð 
ð 
ð 
ð 
r)   rb   Úpkgc                 ób   — t          ¦   «                              | ¦  «        }|duo
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)rk   Údists     r'   Úwas_installed_by_piprq   œ   s4   € õ #Ñ$Ô$×5Ò5°cÑ:Ô:€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ÔE€NØð Øˆ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ÐØð 4Ø/Ð/Ñ1Ô1ÐØð 	Ý�LŠLÐ6Ñ7Ô7Ð7Ø�4Ø�	Š	Ð$ lÑ3Ô3Ð3å"Ð#5Ñ6Ô6€NÝ
‡L‚LÐ,¨nÑ=Ô=Ð=Ý
‡L‚LÐ,¨mÑ<Ô<Ð<å/°Ñ6Ô6ÐÝ
‡L‚LÐ/Ð1EÑFÔFÐFØð Øˆtð 	˜Ò&ð 	FØÔ&¨.Ô*EÒEð ð ð MÝ¥ ]Ñ!3Ô!3Ð9KÐ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 )	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.
    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ÔF€NØð ØˆðÝ Ñ"Ô"Ð"Ð"øÝ'ð ð ð Øˆˆðøøøõ /Ý wÔ'8Ð9Ñ9Ô9ÝÔ&×*Ò*­8Ô+<Ô+@ÑAÔAØ$Ô,Ý$Ô,Ý+¨W°gñ
ô 
ð	ñ ô €Nð ð CÝ�Š�t˜^°F¸D°>ˆÑBÔBÐBÐBÐBðCð C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8˜cð 8 dð 8ð 8ð 8ð 8ð'Øð'Ø"*¤/ð'àˆc„]ð'ð 'ð 'ð 'ð8àðð Ô#ðð ð	ð
 !  X¨c¤]Ð!2Ô3ðð ˆmÔðð ð ð ðDC Jð C¸¼ð CÈTð Cð Cð Cð Cð Cð Cr)   