3 ”Re{ ã @ s" d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl m Z d dlm Z d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d lmZmZmZ d d lmZ d dlmZ erèd dl Z d dl!m"Z"m#Z#m$Z$m%Z% d d l&m'Z' dZ(ej)e*ƒZ+dd„ Z,G dd„ de-ƒZ.dd„ Z/dd„ Z0dS )é )Úabsolute_importN)Úversion)Ú ensure_binary)Ú LinkCollector)Ú PackageFinder)ÚSelectionPreferences)Úadjacent_tmp_fileÚcheck_path_ownerÚreplace)Ú ensure_dirÚget_distributionÚget_installed_version)Ú get_installer)ÚMYPY_CHECK_RUNNING)ÚAnyÚDictÚTextÚUnion)Ú PipSessionz%Y-%m-%dT%H:%M:%SZc C s t | ƒ}tj|ƒjƒ }|S )N)r ÚhashlibÚsha224Ú hexdigest)ÚkeyÚ key_bytesÚname© r ú�/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/self_outdated_check.pyÚ_get_statefile_name* s r c @ s( e Zd Zdd„ Zedd„ ƒZdd„ ZdS )ÚSelfCheckStatec C sn i | _ d | _|rjtjj|dt| jƒƒ| _y&t| jƒ�}tj |ƒ| _ W d Q R X W n t ttfk rh Y nX d S )NÚ selfcheck) ÚstateÚstatefile_pathÚosÚpathÚjoinr r ÚopenÚjsonÚloadÚIOErrorÚ ValueErrorÚKeyError)ÚselfÚ cache_dirÚ statefiler r r Ú__init__2 s zSelfCheckState.__init__c C s t jS )N)ÚsysÚprefix)r+ r r r r D s zSelfCheckState.keyc C s¦ | j s d S ttjj| j ƒƒs d S ttjj| j ƒƒ | j|jtƒ|dœ}t j |ddd�}t| j ƒ�}|jt |ƒƒ W d Q R X yt|j| j ƒ W n tk r Y nX d S )N)r Ú last_checkÚpypi_versionTú,ú:)Ú sort_keysÚ separators)r3 r4 )r! r r" r# Údirnamer r ÚstrftimeÚSELFCHECK_DATE_FMTr&