
§|j=  ã               @   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
 d  d l m Z m Z e j e ƒ Z Gd d „  d e ƒ Z d	 d
 „  Z d S)é    )Úabsolute_importN)ÚCommand)ÚERROR)Úread_chunks)ÚFAVORITE_HASHÚSTRONG_HASHESc                   sF   e  Z d  Z d Z d Z d Z d Z ‡  f d d †  Z d d „  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.c                sq   t  t |  ƒ j | | Ž  |  j j d d d d d t d d d t d	 d
 d j t ƒ ƒ|  j j	 d |  j ƒ d  S)Nz-az--algorithmÚdestÚ	algorithmÚchoicesÚactionÚstoreÚdefaultÚhelpz$The hash algorithm to use: one of %sz, r   )
Úsuperr   Ú__init__Úcmd_optsÚ
add_optionr   r   ÚjoinÚparserÚinsert_option_group)ÚselfÚargsÚkw)Ú	__class__© ú0/tmp/pip-build-5c7ija6t/pip/pip/commands/hash.pyr      s    		zHashCommand.__init__c             C   sZ   | s |  j  j t j ƒ t S| j } x- | D]% } t j d | | t | | ƒ ƒ q- Wd  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Úsummaryr   r&   r   r   )r   r   r      s   r   c          
   C   sV   t  |  d ƒ �: } t j | ƒ } x! t | ƒ D] } | j | ƒ q. WWd QRX| j ƒ  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   r0   Úloggingr   Úpip.basecommandr   Úpip.status_codesr   Ú	pip.utilsr   Úpip.utils.hashesr   r   Ú	getLoggerr'   r!   r   r#   r   r   r   r   Ú<module>   s   #