�
��^i� � �2 � d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm Z m
Z
d dlmZ
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d lmZmZmZ d d
lmZ dZ ej e � � Z!de"d
e"fd�Z# G d� d� � Z$de"d
e%fd�Z&dedej' d
dfd�Z(dS )� N)�Any�Dict)�parse)�
LinkCollector)�
PackageFinder)�get_default_environment)�SelectionPreferences)�
PipSession)�adjacent_tmp_file�check_path_owner�replace)�
ensure_dirz%Y-%m-%dT%H:%M:%SZ�key�returnc �z � | � � � }t j |� � � � � }|S �N)�encode�hashlib�sha224� hexdigest)r � key_bytes�names ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/self_outdated_check.py�_get_statefile_namer s/ � ��
�
���I��>�)�$�$�.�.�0�0�D��K� c �X � e Zd Zdeddfd�Zedefd�� � Zdedej ddfd�ZdS ) �SelfCheckState� cache_dirr Nc �h � i | _ d | _ |r�t j � |dt | j � � � � | _ t | j d�� � 5 }t j |� � | _ d d d � � d S # 1 swxY w Y d S # t t t f$ r Y d S w xY wd S )N� selfcheckzutf-8)�encoding)
�state�statefile_path�os�path�joinr r �open�json�load�OSError�
ValueError�KeyError)�selfr � statefiles r �__init__zSelfCheckState.__init__! s � �%'��
�"��� �
�"$�'�,�,��;�(;�D�H�(E�(E�#� #�D��
��$�-��@�@�@� 6�I�!%��9�!5�!5�D�J�6� 6� 6� 6� 6� 6� 6� 6� 6� 6� 6� 6���� 6� 6� 6� 6� 6� 6���Z��2�
�
�
� ���
����
�
s6 �
B � B�:B �B�B �B�B �B/�.B/c � � t j S r )�sys�prefix)r- s r r zSelfCheckState.key2 s
� ��z�r �pypi_version�current_timec �R � | j sd S t t j � | j � � � � sd S t t j � | j � � � � | j |� t � � |d�}t j
|dd�� � }t | j � � 5 }|� |�
� � � � d d d � � n# 1 swxY w Y t |j | j � � d S # t $ r Y d S w xY w)N)r �
last_checkr3 T)�,�:)� sort_keys�
separators)r# r r$ r% �dirnamer r �strftime�SELFCHECK_DATE_FMTr( �dumpsr �writer r
r r* )r- r3 r4 r" �text�fs r �savezSelfCheckState.save6 s\ � ��"� ��F� ������0C� D� D�E�E� ��F� �2�7�?�?�4�#6�7�7�8�8�8�
�8�&�/�/�0B�C�C�(�
�
�� �z�%�4�J�G�G�G��
�t�2�
3�
3� #�q�
�G�G�D�K�K�M�M�"�"�"� #� #� #� #� #� #� #� #� #� #� #���� #� #� #� #� �
�A�F�D�/�0�0�0�0�0��� � � ��D�D� ���s$ �<(C0�0C4�7C4�<D �
D&�%D&) �__name__�
__module__�__qualname__�strr/ �propertyr �datetimerB � r r r r s� � � � � � ��#� �$� � � � �" ��S� � � � �X�� �� �H�4E� �$� � � � � � r r �pkgc �b � t � � � | � � }|duo
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)rJ �dists r �was_installed_by_piprP Y s4 � � #�$�$�5�5�c�:�:�D��t��7���� 7�7r �session�optionsc �� � t � � � d� � }|sdS |j }d} t |j �� � }t
j � � � }d|j v rad|j v rXt
j � |j d t � � }||z
�
� � dk r
|j d }|��t j | |d�� � }t d d �
� � } t j || �� � }
|
� d� � j }|�dS t# |j � � }|� ||� � t' |� � }||k o|j |j k ot+ d� � }
|
sdS t, j � d�}t0 � d
|||� � dS # t4 $ r t0 � dd�� � Y dS w xY 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.
rL N)r r6 r3 i�: T)rR �suppress_no_indexF)�allow_yanked�allow_all_prereleases)�link_collector�selection_prefsz -m pipz�You are using pip version %s; however, version %s is available.
You should consider upgrading via the '%s install --upgrade pip' command.z5There was an error checking the latest version of pip)�exc_info)r rM �versionr r rH �utcnowr" �strptimer= �
total_secondsr �creater r �find_best_candidate�best_candidaterF rB �
parse_version�base_versionrP r1 �
executable�logger�warning� Exception�debug)rQ rR �installed_dist�pip_versionr3 r" r4 r6 rW rX �finderr` �remote_version�local_version_is_older�pip_cmds r �pip_self_version_checkrn c sV � � -�.�.�?�?��F�F�N�� ��� �(�K��L�E
���):�;�;�;���(�/�/�1�1���5�;�&�&�>�U�[�+H�+H�!�*�3�3���L�)�+=�� �J� �z�)�8�8�:�:�=M�M�M�$�{�>�:�� ��*�1���"&�� � �N� 3�"�&+�� � �O�
#�)�-� /�� � �F� $�7�7��>�>�M�N��%����~�5�6�6�L�
�J�J�|�\�2�2�2�&�|�4�4��
�.�(�
,��(�N�,G�G�
,�$�U�+�+� � &� ��F� �^�,�,�,�����
2�
���
�
�
�
�
�� �
�
�
����C�� �
�
�
�
�
�
�
���s �C9F; �+A F; �
,F; �;&G%�$G%))rH r r( �logging�optparse�os.pathr$ r1 �typingr r �pip._vendor.packaging.versionr ra �pip._internal.index.collectorr �"pip._internal.index.package_finderr �pip._internal.metadatar �$pip._internal.models.selection_prefsr �pip._internal.network.sessionr
�pip._internal.utils.filesystemr r r
�pip._internal.utils.miscr r= � getLoggerrC rd rF r r �boolrP �Valuesrn rI r r �