B
    =)H[Á  ã               @   s~   d dl m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
mZ d dlmZ e e¡ZG dd„ deƒZd	d
„ ZdS )é    )Úabsolute_importN)ÚCommand)ÚERROR)ÚFAVORITE_HASHÚSTRONG_HASHES)Úread_chunksc                   s8   e Zd ZdZdZdZdZdZ‡ fdd„Zdd	„ Z	‡  Z
S )
ÚHashCommandzŽ
    Compute a hash of a local package archive.

    These can be used with --hash in a requirements file to do repeatable
    installs.

    Úhashz%prog [options] <file> ...z#Compute hashes of package archives.Tc                sJ   t t| ƒj||Ž | jjdddtdtdd t¡ d� | j 	d| j¡ d S )	Nz-az--algorithmÚ	algorithmÚstorez$The hash algorithm to use: one of %sz, )ÚdestÚchoicesÚactionÚdefaultÚhelpr   )
Úsuperr   Ú__init__Úcmd_optsÚ
add_optionr   r   ÚjoinÚparserÚinsert_option_group)ÚselfÚargsÚkw)Ú	__class__© ú\C:\Users\HIRONO~1\AppData\Local\Temp\pip-install-qz7kpjmn\pip\pip\_internal\commands\hash.pyr      s    zHashCommand.__init__c          	   C   sD   |s| j  tj¡ tS |j}x"|D ]}t d||t||ƒ¡ q"W d S )Nz%s:
--hash=%s:%s)	r   Úprint_usageÚsysÚstderrr   r
   ÚloggerÚinfoÚ_hash_of_file)r   Úoptionsr   r
   Úpathr   r   r   Úrun(   s    
zHashCommand.run)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚusageÚsummaryÚignore_require_venvr   r&   Ú__classcell__r   r   )r   r   r      s   r   c          	   C   sD   t | dƒ�,}t |¡}xt|ƒD ]}| |¡ q W W dQ R X | ¡ S )z!Return the hash digest of a file.ÚrbN)ÚopenÚhashlibÚnewr   ÚupdateÚ	hexdigest)r%   r
   Úarchiver	   Úchunkr   r   r   r#   3   s
    
r#   )Ú
__future__r   r2   Úloggingr   Úpip._internal.basecommandr   Úpip._internal.status_codesr   Úpip._internal.utils.hashesr   r   Úpip._internal.utils.miscr   Ú	getLoggerr'   r!   r   r#   r   r   r   r   Ú<module>   s   
$