
    fXf                     X    d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	  G d d          Z
dS )z`Represents a wheel file and provides access to the various parts of the
name that have meaning.
    N)DictIterableList)Tag)InvalidWheelFilenamec                       e Zd ZdZ ej        dej                  ZdeddfdZ	de
e         fdZde
e         defd	Zde
e         d
eeef         defdZdee         defdZdS )WheelzA wheel filez^(?P<namever>(?P<name>[^\s-]+?)-(?P<ver>[^\s-]*?))
        ((-(?P<build>\d[^-]*?))?-(?P<pyver>[^\s-]+?)-(?P<abi>[^\s-]+?)-(?P<plat>[^\s-]+?)
        \.whl|\.dist-info)$filenamereturnNc                      j                             |          }|st          | d          | _        |                    d                              dd           _        |                    d                              dd           _        |                    d           _        |                    d          	                    d           _
        |                    d	          	                    d           _        |                    d
          	                    d           _         fd 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 | ]'}j         D ]}j        D ]}t          |||          (S  )abisplatsr   ).0xyzselfs       S/var/www/html/Qu*py/bism/lib/python3.11/site-packages/pip/_internal/models/wheel.py	<setcomp>z!Wheel.__init__.<locals>.<setcomp>(   s\     
 
 
49
 
67dj
 
IJC1aLL
 
 
 
 
    N)wheel_file_rematchr   r
   groupreplacer   version	build_tagsplit
pyversionsr   r   	file_tags)r   r
   
wheel_infos   `  r   __init__zWheel.__init__   s<    '--h77
 	U&('S'S'STTT $$V,,44S#>>	 "''..66sC@@#))'22$**73399#>>$$U++11#66	%%f--33C88

 
 
 
"&/
 
 
r!   c                 >    t          d | j        D                       S )z4Return the wheel's tags as a sorted list of strings.c              3   4   K   | ]}t          |          V  d S N)str)r   tags     r   	<genexpr>z0Wheel.get_formatted_file_tags.<locals>.<genexpr>.   s(      993c#hh999999r!   )sortedr*   )r   s    r   get_formatted_file_tagszWheel.get_formatted_file_tags,   s!    99$.999999r!   tagsc                      	 t           fdt          |          D                       S # t          $ r t                      w xY w)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.
        c              3   4   K   | ]\  }}|j         v |V  d S r/   )r*   )r   itr   s      r   r2   z*Wheel.support_index_min.<locals>.<genexpr>>   s3      MMdadn9L9L9L9L9L9LMMr!   )next	enumerateStopIteration
ValueErrorr   r5   s   ` r   support_index_minzWheel.support_index_min0   sV    	MMMMiooMMMMMM 	 	 	,,	s	   '+ Atag_to_priorityc                 D    t          fd| j        D                       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.
        c              3   0   K   | ]}|v |         V  d S r/   r   )r   r1   r@   s     r   r2   z0Wheel.find_most_preferred_tag.<locals>.<genexpr>S   s;       
 
%(c_>T>TOC >T>T>T>T
 
r!   )minr*   )r   r5   r@   s     `r   find_most_preferred_tagzWheel.find_most_preferred_tagB   s?    "  
 
 
 
,0N
 
 
 
 
 	
r!   c                 8    | j                             |           S )zReturn 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   	supportedzWheel.supportedW   s    
 >,,T2222r!   )__name__
__module____qualname____doc__recompileVERBOSEr"   r0   r,   r   r4   r   intr?   r   rD   r   boolrG   r   r!   r   r	   r	      s        BJ	 	
	 M
 
 
 
 
 
,:c : : : :d3i C    $
I
04S#X
	
 
 
 
*3hsm 3 3 3 3 3 3 3r!   r	   )rK   rL   typingr   r   r   pip._vendor.packaging.tagsr   pip._internal.exceptionsr   r	   r   r!   r   <module>rT      s     
			 ' ' ' ' ' ' ' ' ' ' * * * * * * 9 9 9 9 9 9P3 P3 P3 P3 P3 P3 P3 P3 P3 P3r!   