
0c@_3                 @   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 m	 Z	 d  d l
 m Z m Z d  d l m Z m Z d  d l m Z e r d  d l m Z d  d	 l m Z e j e  Z Gd
 d   d e  Z d d   Z d S)    )absolute_importN)Command)ERRORSUCCESS)FAVORITE_HASHSTRONG_HASHES)read_chunkswrite_output)MYPY_CHECK_RUNNING)Values)Listc               @   s:   e  Z d  Z d Z d Z d Z d d   Z d d   Z d S)	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] <file> ...Tc             C   s]   |  j  j d d d d d t d d d t d	 d
 j 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 {}z, r   )cmd_opts
add_optionr   r   formatjoinparserinsert_option_group)self r   :/tmp/pip-build-jynh7p1z/pip/pip/_internal/commands/hash.pyadd_options   s    		zHashCommand.add_optionsc             C   sW   | s |  j  j t j  t S| j } x* | D]" } t d | | t | |   q- Wt S)Nz%s:
--hash=%s:%s)	r   print_usagesysstderrr   r   r	   _hash_of_filer   )r   optionsargsr   pathr   r   r   run+   s    	zHashCommand.runN)__name__
__module____qualname____doc__usageZignore_require_venvr   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   archivehashchunkr   r   r   r"   8   s
    r"   )
__future__r   r.   loggingr    Zpip._internal.cli.base_commandr   Zpip._internal.cli.status_codesr   r   Zpip._internal.utils.hashesr   r   Zpip._internal.utils.miscr   r	   Zpip._internal.utils.typingr
   optparser   Ztypingr   	getLoggerr'   loggerr   r"   r   r   r   r   <module>   s   $