Your IP : 18.225.156.91
�
��abc @@ s� d d l m Z d d l Z d d l m Z m Z m Z d d l m Z d d l m
Z
m Z m Z d Z
d d d g Z d e f d
� � YZ d e f d � � YZ d S(
i ( t absolute_importN( t HashMismatcht HashMissingt InstallationError( t read_chunks( t iteritemst iterkeyst
itervaluest sha256t sha384t sha512t Hashesc B@ sP e Z d Z d d � Z d � Z d � Z d � Z d � Z d � Z d � Z
RS( sa A wrapper that builds multiple hashes at once and checks them against
known-good values
c C@ s | d k r i n | | _ d S( so
:param hashes: A dict of algorithm names pointing to lists of allowed
hex digests
N( t Nonet _allowed( t selft hashes( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyt __init__ s c C@ s� i } xX t | j � D]G } y t j | � | | <Wq t t f k
r\ t d | � � q Xq Wx2 | D]* } x! t | � D] } | j | � q{ Wqh Wx7 t | � D]) \ } } | j
� | j | k r� d Sq� W| j | � d S( s� Check good hashes against ones built from iterable of chunks of
data.
Raise HashMismatch if none match.
s Unknown hash name: %sN( R R
t hashlibt newt
ValueErrort TypeErrorR R t updateR t hexdigestt _raise( R t chunkst gotst hash_namet chunkt hasht got( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyt check_against_chunks s
c C@ s t | j | � � d S( N( R R
( R R ( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyR 7 s c C@ s | j t | � � S( sa Check good hashes against a file-like object
Raise HashMismatch if none match.
( R R ( R t file( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyt check_against_file: s c C@ s) t | d � � } | j | � SWd QXd S( Nt rb( t openR ( R t pathR ( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyt check_against_pathB s c C@ s
t | j � S( s, Return whether I know any known-good hashes.( t boolR
( R ( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyt __nonzero__F s c C@ s
| j � S( N( R&