� ��^i����ddlZddlmZmZmZmZmZddlmZm Z m Z ddl m Z er ddlm Z ddlmZdZgd�ZGd �d ��ZGd �d e��ZdS) �N)� TYPE_CHECKING�BinaryIO�Dict�Iterator�List)� HashMismatch� HashMissing�InstallationError)� read_chunks)�_Hash)�NoReturn�sha256)r�sha384�sha512c���eZdZdZddeeeefddfd�Zdd�Ze de fd���Z d ed ede fd �Z d eeddfd �Zdeedfddfd�Zdeddfd�Zdeddfd�Zde fd�Zdede fd�Zde fd�ZdS)�HasheszaA wrapper that builds multiple hashes at once and checks them against known-good values N�hashes�returnc�t�i}|�,|���D]\}}t|��||<�||_dS)zo :param hashes: A dict of algorithm names pointing to lists of allowed hex digests N)�items�sorted�_allowed)�selfr�allowed�alg�keyss ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/utils/hashes.py�__init__zHashes.__init__sF�� �� � �#�\�\�^�^� ,� ,� ��T�%�d�|�|��� � ��� � � ��otherc�����t|t��stS|s�S�s|Si}|j���D]!\�}��jvr���fd�|D��|�<�"t|��S)Nc�2��g|]}|�j�v�|��S�)r)�.0�vrrs ��r� z"Hashes.__and__..;s*���E�E�E�a�Q�$�-��2D�-D�-D��-D�-D�-Dr)� isinstancer�NotImplementedrr)rr �new�valuesrs` @r�__and__zHashes.__and__+s������%��(�(� "�!� !�� ��K�� ��L��� �>�/�/�1�1� F� F�K�C���$�-�'�'��E�E�E�E�E�6�E�E�E�C��H�H��c�{�{�rc�b�td�|j���D����S)Nc3�4K�|]}t|��V��dS�N)�len)r$�digestss r� z&Hashes.digest_count..@s(����F�F�G�3�w�<�<�F�F�F�F�F�Fr)�sumrr*�rs r� digest_countzHashes.digest_count>s-���F�F�t�}�/C�/C�/E�/E�F�F�F�F�F�Fr� hash_name� hex_digestc�<�||j�|g��vS)z/Return whether the given hex digest is allowed.)r�get)rr5r6s r�is_hash_allowedzHashes.is_hash_allowedBs���T�]�.�.�y�"�=�=�=�=r�chunksc���i}|j���D]A} tj|��||<�#tt f$rt d|�����wxYw|D].}|���D]}|�|����/|� ��D])\}}|� ��|j|vrdS�*|� |��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 r*�updater� hexdigest�_raise)rr:�gotsr5�chunk�hash�gots r�check_against_chunkszHashes.check_against_chunksFs������+�+�-�-� K� K�I� K�")�+�i�"8�"8��Y����� �*� K� K� K�'�(I�i�(I�(I�J�J�J� K����� #� #�E�� � � � � #� #��� � �E�"�"�"�"� #�#�j�j�l�l� � �N�I�s��}�}���$�-� �":�:�:����;� � � �D�����s �7�$ArBr r c�,�t|j|���r.)rr�rrBs rrAz Hashes._raise]s���4�=�$�/�/�/r�filec�F�|�t|����S)zaCheck good hashes against a file-like object Raise HashMismatch if none match. )rFr )rrIs r�check_against_filezHashes.check_against_file`s �� �(�(��T�):�):�;�;�;r�pathc��t|d��5}|�|��cddd��S#1swxYwYdS)N�rb)�openrK)rrLrIs r�check_against_pathzHashes.check_against_pathhs��� �$�� � � 1���*�*�4�0�0� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1���� 1� 1� 1� 1� 1� 1s �3�7�7c�*�t|j��S)z,Return whether I know any known-good hashes.)�boolrr3s r�__bool__zHashes.__bool__ls���D�M�"�"�"rc�Z�t|t��stS|j|jkSr.)r'rr(r)rr s r�__eq__z Hashes.__eq__ps)���%��(�(� "�!� !��}���.�.rc ��td�td�|j���D��������S)N�,c3�TK�|]#\}}|D]}d�||f��V���$dS)�:N)�join)r$r� digest_list�digests rr1z"Hashes.__hash__..xsa������(��[�"-�����H�H�c�6�]�+�+�������r)rDrZrrrr3s r�__hash__zHashes.__hash__us\��� �H�H����,0�M�,?�,?�,A�,A������ � � � � rr.)r rrr)�__name__� __module__� __qualname__�__doc__r�strrrr+�property�intr4rRr9r�bytesrFrArrKrPrS�objectrUr]r#rrrrs���������  �  �t�C��c��N�3�  �t�  �  �  �  �����&�G�c�G�G�G��X�G�>��>�#�>�$�>�>�>�>��8�E�?��t�����.0�4��W� �-�0�*�0�0�0�0�<�x�<�D�<�<�<�<�1�s�1�t�1�1�1�1�#�$�#�#�#�#�/�F�/�t�/�/�/�/�  �#�  �  �  �  �  �  rrc�D��eZdZdZd �fd� Zdeedfddfd�Z�xZS) � 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. rNc�Z��t���tgi���dS)z!Don't offer the ``hashes`` kwarg.)rN)�superr� FAVORITE_HASH)r� __class__s �rrzMissingHashes.__init__�s+��� ������� 3��4�4�4�4�4rrBr r c�Z�t|t������r.)r rkr@rHs rrAzMissingHashes._raise�s!���$�}�-�7�7�9�9�:�:�:r)rN) r^r_r`rarrrbrA� __classcell__)rls@rrhrh�sr���������5�5�5�5�5�5� ;�4��W� �-�;�*�;�;�;�;�;�;�;�;rrh)r<�typingrrrrr�pip._internal.exceptionsrr r �pip._internal.utils.miscr r r rk� STRONG_HASHESrrhr#rr�rss������@�@�@�@�@�@�@�@�@�@�@�@�@�@�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�0�0�0�0�0�0�� ������� ������ � � /�.�.� �e �e �e �e �e �e �e �e �P;�;�;�;�;�F�;�;�;�;�;r