�
��^i� � �� � d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl m
Z
mZ d dlm
Z
mZ d dlmZmZ ej e� � Z G d� d e� � Zd
ededefd
�ZdS )� N)�Values)�List)�Command)�ERROR�SUCCESS)�
FAVORITE_HASH�
STRONG_HASHES)�read_chunks�write_outputc �B � e Zd ZdZdZdZd
d�Zdedee de
fd �ZdS )�HashCommandz�
Compute a hash of a local package archive.
These can be used with --hash in a requirements file to do repeatable
installs.
z%prog [options] ...T�returnNc
�� � | j � dddt dt d� d� t � � � � �� � | j � d| j � � d S ) Nz-az--algorithm� algorithm�storez$The hash algorithm to use: one of {}z, )�dest�choices�action�default�helpr )�cmd_opts�
add_optionr r �format�join�parser�insert_option_group)�selfs ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/commands/hash.py�add_optionszHashCommand.add_options sw � ��
� � ����!��!�7�>�>�� � �-�(�(�� � !�
�
�
�
��'�'��4�=�9�9�9�9�9� �options�argsc
�� � |s+| j � t j � � t S |j }|D ]"}t
d||t ||� � � � �#t S )Nz%s:
--hash=%s:%s) r �print_usage�sys�stderrr r r �
_hash_of_filer )r r! r" r �paths r �runzHashCommand.run( so � �� ��K�#�#�C�J�/�/�/��L��%� �� � �D��#�T�9�m�D�)�6T�6T�
�
�
�
� �r )r N)�__name__�
__module__�__qualname__�__doc__�usage�ignore_require_venvr r r �str�intr) � r r r
r
sl � � � � � �� �
)�E���:� :� :� :�
�6�
��c��
�s�
�
�
�
�
�
r r
r( r r c �� � t | d� � 5 }t j |� � }t |� � D ]}|� |� � � ddd� � n# 1 swxY w Y |� � � S )z!Return the hash digest of a file.�rbN)�open�hashlib�newr
�update� hexdigest)r( r �archive�hash�chunks r r' r' 5 s� � �
�d�D� � � �W��{�9�%�%�� ��)�)� � �E��K�K������ �� � � � � � � � � � ���� � � � � �>�>���s �