� ��^i� ��X�dZddlZddlmZmZmZddlmZddlm Z Gd�d��Z dS)z`Represents a wheel file and provides access to the various parts of the name that have meaning. �N)�Dict�Iterable�List)�Tag)�InvalidWheelFilenamec���eZdZdZejdej��Zdeddfd�Z de efd�Z de e de fd �Zde e d ee e fde fd �Zdee defd �ZdS) �Wheelz A wheel filez�^(?P(?P.+?)-(?P.*?)) ((-(?P\d[^-]*?))?-(?P.+?)-(?P.+?)-(?P.+?) \.whl|\.dist-info)$�filename�returnNc����j�|��}|st|�d����|�_|�d���dd���_|�d���dd���_|�d���_|�d��� d���_ |�d ��� d���_ |�d ��� d���_ �fd ��j D���_ d S) zX :raises InvalidWheelFilename: when the filename is invalid for a wheel z is not a valid wheel filename.�name�_�-�ver�build�pyver�.�abi�platc �Z��h|]'}�jD]}�jD]}t|||������(S�)�abis�platsr)�.0�x�y�z�selfs ���/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/models/wheel.py� z!Wheel.__init__..(s\��� � � ��4�9� � �67�d�j� � �IJ�C��1�a�L�L� � � � � �N)� wheel_file_re�matchrr �group�replacer �version� build_tag�split� pyversionsrr� file_tags)rr � wheel_infos` r�__init__zWheel.__init__s<����'�-�-�h�7�7� �� U�&�(�'S�'S�'S�T�T� T� �� ��$�$�V�,�,�4�4�S�#�>�>�� �"�'�'��.�.�6�6�s�C�@�@�� �#�)�)�'�2�2���$�*�*�7�3�3�9�9�#�>�>����$�$�U�+�+�1�1�#�6�6�� ��%�%�f�-�-�3�3�C�8�8�� � � � � �"&�/� � � ����r!c�>�td�|jD����S)z4Return the wheel's tags as a sorted list of strings.c3�4K�|]}t|��V��dS�N)�str)r�tags r� z0Wheel.get_formatted_file_tags...s(����9�9�3�c�#�h�h�9�9�9�9�9�9r!)�sortedr*)rs r�get_formatted_file_tagszWheel.get_formatted_file_tags,s!���9�9�$�.�9�9�9�9�9�9r!�tagsc�D��t�fd�|jD����S)a�Return the lowest index that one of the wheel's file_tag combinations achieves in the given list of supported tags. For example, if there are 8 supported tags and one of the file tags is first in the list, then return 0. :param tags: the PEP 425 tags to check the wheel against, in order with most preferred first. :raises ValueError: If none of the wheel's file tags match one of the supported tags. c3�J�K�|]}|�v���|��V��dSr/)�index)rr1r5s �rr2z*Wheel.support_index_min..=s1�����L�L�s��t� � �4�:�:�c�?�?� � � � �L�Lr!��minr*�rr5s `r�support_index_minzWheel.support_index_min0s*����L�L�L�L�d�n�L�L�L�L�L�Lr!�tag_to_priorityc�D��t�fd�|jD����S)a�Return the priority of the most preferred tag that one of the wheel's file tag combinations achieves in the given list of supported tags using the given tag_to_priority mapping, where lower priorities are more-preferred. This is used in place of support_index_min in some cases in order to avoid an expensive linear scan of a large list of tags. :param tags: the PEP 425 tags to check the wheel against. :param tag_to_priority: a mapping from tag to priority of that tag, where lower is more preferred. :raises ValueError: If none of the wheel's file tags match one of the supported tags. c3�0�K�|]}|�v��|V��dSr/r)rr1r=s �rr2z0Wheel.find_most_preferred_tag..Ps;����� � �%(�c�_�>T�>T�O�C� �>T�>T�>T�>T� � r!r9)rr5r=s `r�find_most_preferred_tagzWheel.find_most_preferred_tag?s?���"� � � � �,0�N� � � � � � r!c�8�|j�|�� S)z�Return whether the wheel is compatible with one of the given tags. :param tags: the PEP 425 tags to check the wheel against. )r*� isdisjointr;s r� supportedzWheel.supportedTs�� �>�,�,�T�2�2�2�2r!)�__name__� __module__� __qualname__�__doc__�re�compile�VERBOSEr"r0r,rr4r�intr<rr@r�boolrCrr!rr r s���������B�J� � � � ��M� �� �� � � � �,:��c��:�:�:�:� M�d�3�i� M�C� M� M� M� M� ���I� �04�S�#�X�� � � � � � �*3�h�s�m�3��3�3�3�3�3�3r!r ) rGrH�typingrrr�pip._vendor.packaging.tagsr�pip._internal.exceptionsrr rr!r�rPs����� � � � �'�'�'�'�'�'�'�'�'�'�*�*�*�*�*�*�9�9�9�9�9�9�M3�M3�M3�M3�M3�M3�M3�M3�M3�M3r!