3 ”ReF ã @ sÐ d dl mZ d dlZd dlmZmZmZ d dlmZm Z m Z d dlmZ d dl mZ eržd dlmZmZmZmZmZ d dlmZ er’d d lmZ nd d lmZ dZddd gZG dd„ deƒZG dd„ deƒZdS )é )Úabsolute_importN)Ú iteritemsÚiterkeysÚ itervalues)ÚHashMismatchÚHashMissingÚInstallationError)Úread_chunks)ÚMYPY_CHECK_RUNNING)ÚDictÚListÚBinaryIOÚNoReturnÚIterator)ÚPY3)Ú_Hash)Ú_hashÚsha256Úsha384Úsha512c @ sf e Zd ZdZddd„Zdd„ Zedd„ ƒZd d „ Zdd„ Z d d„ Z dd„ Zdd„ Zdd„ Z dd„ ZdS )ÚHasheszaA wrapper that builds multiple hashes at once and checks them against known-good values Nc C s |dkri n|| _ dS )zo :param hashes: A dict of algorithm names pointing to lists of allowed hex digests N)Ú_allowed)ÚselfÚhashes© r ú‰/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/utils/hashes.pyÚ__init__) s zHashes.__init__c sf t |tƒstS |sˆS ˆs|S i }x:t|jƒD ],\‰ }ˆ ˆjkrBq.‡ ‡fdd„|D ƒ|ˆ <