"JdddlZddlmZmZmZmZmZddlmZm Z m Z ddl m Z er ddlm Z ddlmZdZgdZGd d ZGd d eZdS) N) TYPE_CHECKINGBinaryIODictIteratorList) HashMismatch HashMissingInstallationError) read_chunks)_Hash)NoReturnsha256)rsha384sha512ceZdZdZddeeeefddfdZddZe de fdZ d ed ede fd Z d eeddfd ZdeedfddfdZdeddfdZdeddfdZde fdZdede fdZde fdZdS)HasheszaA wrapper that builds multiple hashes at once and checks them against known-good values Nhashesreturncti}|,|D]\}}t|||<||_dS)zo :param hashes: A dict of algorithm names pointing to lists of allowed hex digests N)itemssorted_allowed)selfrallowedalgkeyss M/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/utils/hashes.py__init__zHashes.__init__sF   #\\^^ , , T%d||  otherct|tstS|sSs|Si}|jD]!\}jvrfd|D|<"t|S)Nc2g|]}|jv|S)r).0vrrs r z"Hashes.__and__..;s*EEEaQ$-2D-D-D-D-D-Dr) isinstancerNotImplementedrr)rr newvaluesrs` @r__and__zHashes.__and__+s%(( "! ! K L >//11 F FKC$-''EEEEE6EEECHHc{{rcbtd|jDS)Nc34K|]}t|VdSN)len)r$digestss r z&Hashes.digest_count..@s(FFG3w<<FFFFFFr)sumrr*rs r digest_countzHashes.digest_count>s-FFt}/C/C/E/EFFFFFFr hash_name hex_digestc<||j|gvS)z/Return whether the given hex digest is allowed.)rget)rr5r6s ris_hash_allowedzHashes.is_hash_allowedBsT]..y"====rchunksci}|jD]A} tj|||<#tt f$rt d|wxYw|D].}|D]}||/| D])\}}| |j|vrdS*| |dS)zCheck good hashes against ones built from iterable of chunks of data. Raise HashMismatch if none match. zUnknown hash name: N) rrhashlibr) ValueError TypeErrorr r*updater hexdigest_raise)rr:gotsr5chunkhashgots rcheck_against_chunkszHashes.check_against_chunksFs++-- K KI K")+i"8"8Y * K K K'(Ii(I(IJJJ K # #E  # # E"""" ##jjll  NIs}}$- ":::; Ds 7$ArBr r c,t|j|r.)rrrrBs rrAz Hashes._raise]s4=$///rfilecF|t|S)zaCheck good hashes against a file-like object Raise HashMismatch if none match. )rFr )rrIs rcheck_against_filezHashes.check_against_file`s ((T):):;;;rpathct|d5}||cdddS#1swxYwYdS)Nrb)openrK)rrLrIs rcheck_against_pathzHashes.check_against_pathhs $   1**400 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s 377c*t|jS)z,Return whether I know any known-good hashes.)boolrr3s r__bool__zHashes.__bool__lsDM"""rcZt|tstS|j|jkSr.)r'rr(r)rr s r__eq__z Hashes.__eq__ps)%(( "! !}..rc tdtd|jDS)N,c3TK|]#\}}|D]}d||fV$dS):N)join)r$r digest_listdigests rr1z"Hashes.__hash__..xsa(["-HHc6]++r)rDrZrrrr3s r__hash__zHashes.__hash__us\ HH,0M,?,?,A,A     rr.)r rrr)__name__ __module__ __qualname____doc__rstrrrr+propertyintr4rRr9rbytesrFrArrKrPrSobjectrUr]r#rrrrs   tCcN3  t     &GcGGGXG>>#>$>>>>8E?t.04W -0*0000rss@@@@@@@@@@@@@@QQQQQQQQQQ000000    /.. e e e e e e e e P;;;;;F;;;;;r