3
g                 @   sJ   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 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               @   s   e Zd ZdZejdejZeddddZ	e
e ddd	Ze
e ed
ddZe
e eeef edddZee ed
ddZdS )WheelzA wheel filez^(?P<namever>(?P<name>.+?)-(?P<ver>.*?))
        ((-(?P<build>\d[^-]*?))?-(?P<pyver>.+?)-(?P<abi>.+?)-(?P<plat>.+?)
        \.whl|\.dist-info)$N)filenamereturnc                s    j j|}|st| d| _|jdjdd _|jdjdd _|jd _|jdj	d _
|jd	j	d _|jd
j	d _ fd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                s0   h | ](} j D ]} jD ]}t|||qqqS  )abisplatsr   ).0xyz)selfr   X/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_internal/models/wheel.py	<setcomp>(   s   z!Wheel.__init__.<locals>.<setcomp>N)wheel_file_rematchr   r   groupreplacer
   versionZ	build_tagsplitZ
pyversionsr   r   	file_tags)r   r   Z
wheel_infor   )r   r   __init__   s    
zWheel.__init__)r	   c             C   s   t dd | jD S )z4Return the wheel's tags as a sorted list of strings.c             s   s   | ]}t |V  qd S )N)str)r   tagr   r   r   	<genexpr>.   s    z0Wheel.get_formatted_file_tags.<locals>.<genexpr>)sortedr#   )r   r   r   r   get_formatted_file_tags,   s    zWheel.get_formatted_file_tags)tagsr	   c                s   t  fdd| jD 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.
        c             3   s    | ]}| kr j |V  qd S )N)index)r   r&   )r*   r   r   r'   =   s    z*Wheel.support_index_min.<locals>.<genexpr>)minr#   )r   r*   r   )r*   r   support_index_min0   s    zWheel.support_index_min)r*   tag_to_priorityr	   c                s   t  fd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   s   | ]}| kr | V  qd S )Nr   )r   r&   )r.   r   r   r'   Q   s    z0Wheel.find_most_preferred_tag.<locals>.<genexpr>)r,   r#   )r   r*   r.   r   )r.   r   find_most_preferred_tag?   s    zWheel.find_most_preferred_tagc             C   s   | j 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#   
isdisjoint)r   r*   r   r   r   	supportedT   s    zWheel.supported)__name__
__module____qualname____doc__recompileVERBOSEr   r%   r$   r   r)   r   intr-   r   r/   r   boolr1   r   r   r   r   r      s   r   )r5   r6   typingr   r   r   pip._vendor.packaging.tagsr   pip._internal.exceptionsr   r   r   r   r   r   <module>   s
   