zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
U
H=®dã@sÐddlmZddlZddlmZmZmZddlmZm    Z    m
Z
ddl m Z ddl mZeržddlmZmZmZmZmZddlmZer’dd    lmZn dd
lmZd Zd d d gZGdd„deƒZGdd„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@sfeZdZdZddd„Zdd„Zedd„ƒZd    d
„Zd d „Z    d d„Z
dd„Z dd„Z dd„Z dd„ZdS)ÚHasheszaA wrapper that builds multiple hashes at once and checks them against
    known-good values
 
    NcCs|dkr in||_dS)zo
        :param hashes: A dict of algorithm names pointing to lists of allowed
            hex digests
        N)Ú_allowed)ÚselfÚhashes©rúQD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\pip/_internal/utils/hashes.pyÚ__init__)szHashes.__init__c    Csft|tƒstS|j ¡}t|jƒD]:\}}z|||7<Wq"tk
rZ|||<Yq"Xq"t|ƒS©N)Ú
isinstancerÚNotImplementedrÚcopyrÚKeyError)rÚotherÚnewÚalgÚvaluesrrrÚ__or__1s
 
z Hashes.__or__cCstdd„|j ¡DƒƒS)Ncss|]}t|ƒVqdSr)Úlen)Ú.0ÚdigestsrrrÚ    <genexpr>@sz&Hashes.digest_count.<locals>.<genexpr>)Úsumrr%©rrrrÚ digest_count=szHashes.digest_countcCs||j |g¡kS)z/Return whether the given hex digest is allowed.)rÚget)rÚ    hash_nameÚ
hex_digestrrrÚis_hash_allowedBszHashes.is_hash_allowedc
Cs¨i}t|jƒD]>}zt |¡||<Wqttfk
rJtd |¡ƒ‚YqXq|D]}t|ƒD]}|     |¡q^qRt
|ƒD] \}}|  ¡|j|krxdSqx|  |¡dS)z‚Check good hashes against ones built from iterable of chunks of
        data.
 
        Raise HashMismatch if none match.
 
        zUnknown hash name: {}N) rrÚhashlibr#Ú
ValueErrorÚ    TypeErrorrÚformatrÚupdaterÚ    hexdigestÚ_raise)rÚchunksÚgotsr/ÚchunkÚhashÚgotrrrÚcheck_against_chunksKsÿ  zHashes.check_against_chunkscCst|j|ƒ‚dSr)rr©rr:rrrr8esz Hashes._raisecCs| t|ƒ¡S)zaCheck good hashes against a file-like object
 
        Raise HashMismatch if none match.
 
        )r>r    )rÚfilerrrÚcheck_against_fileiszHashes.check_against_filec
Cs,t|dƒ}| |¡W5QR£SQRXdS)NÚrb)ÚopenrA)rÚpathr@rrrÚcheck_against_pathrs zHashes.check_against_pathcCs
t|jƒS)z,Return whether I know any known-good hashes.)Úboolrr,rrrÚ __nonzero__wszHashes.__nonzero__cCs| ¡Sr)rGr,rrrÚ__bool__|szHashes.__bool__)N)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rr&Úpropertyr-r1r>r8rArErGrHrrrrr$s
 
        rcs(eZdZdZ‡fdd„Zdd„Z‡ZS)Ú MissingHasheszÀA workalike for Hashes used when we're missing a hash for a requirement
 
    It computes the actual hash of the requirement and raises a HashMissing
    exception showing it to the user.
 
    cstt|ƒjtgiddS)z!Don't offer the ``hashes`` kwarg.)rN)ÚsuperrNrÚ FAVORITE_HASHr,©Ú    __class__rrrˆszMissingHashes.__init__cCst|t ¡ƒ‚dSr)rrPr7r?rrrr8szMissingHashes._raise)rIrJrKrLrr8Ú __classcell__rrrQrrNs rN)Ú
__future__rr2Zpip._vendor.sixrrrÚpip._internal.exceptionsrrrÚpip._internal.utils.miscr    Úpip._internal.utils.typingr
Útypingr r r rrrrrrPÚ STRONG_HASHESÚobjectrrNrrrrÚ<module>s     
]