U
    |ez                     @  sV   d dl mZ d dlmZ d dlmZ G dd dZdd ZG dd	 d	Zdd	dgZ	d
S )    )annotations)
attrgetter)ZipFilec                   @  s   e Zd ZddddZedd Zedd Zed	d
 Zedd Z	e
dd Zedd Zdd ZddddZddddZdS )WheelNone)returnc                 C  s   || _ |jd| _d S )N-)pathstemsplit_parts)selfr	    r   ?/tmp/pip-unpacked-wheel-tuxcr54r/virtualenv/seed/wheels/util.py__init__   s    zWheel.__init__c                 C  s2   |d k	r.|j dkr.t|jddkr.| |S d S )Nz.whlr      )suffixlenr
   r   )clsr	   r   r   r   	from_path   s    &zWheel.from_pathc                 C  s
   | j d S )Nr   r   r   r   r   r   distribution   s    zWheel.distributionc                 C  s
   | j d S )N   r   r   r   r   r   version   s    zWheel.versionc                 C  s   |  | jS N)as_version_tupler   r   r   r   r   version_tuple   s    zWheel.version_tuplec              	   C  s^   g }|  ddd D ]2}z|t| W q tk
rF   Y  qJY qX q|sVt| t|S )N.r      )r   appendint
ValueErrortuple)r   resultpartr   r   r   r       s    zWheel.as_version_tuplec                 C  s   | j jS r   )r	   namer   r   r   r   r&   ,   s    z
Wheel.namec              
     sj  d | jjddd  d}tt| jd}||d}W 5 Q R X d t fdd	|	 D d }|d krzd
S t
dd	 |dD dd	 |dD D ]}dfddfdfddfdfddfdfddfdfddfdfddffD ]`\}}||r|t|d   }	t
dd	 |	dD dd }
||
s\  dS  qqqd
S )Nr   r      z.dist-info/METADATArzutf-8zRequires-Python:c                 3  s(   | ] }|  r|t d  V  qd S r   )
startswithr   .0i)markerr   r   	<genexpr>5   s     
 z#Wheel.support_py.<locals>.<genexpr>Tc                 s  s   | ]}t |V  qd S r   r!   r*   r   r   r   r.   8   s     r   c                 s  s   | ]}|  V  qd S r   )stripr*   r   r   r   r.   9   s     ,z!=c                   s    | kS r   r   vpy_version_intr   r   <lambda><       z"Wheel.support_py.<locals>.<lambda>==c                   s    | kS r   r   r2   r4   r   r   r6   =   r7   z<=c                   s    | kS r   r   r2   r4   r   r   r6   >   r7   z>=c                   s    | kS r   r   r2   r4   r   r   r6   ?   r7   <c                   s    | k S r   r   r2   r4   r   r   r6   @   r7   >c                   s    | kS r   r   r2   r4   r   r   r6   A   r7   c                 s  s"   | ]}|d krt |ndV  qdS )*Nr/   r*   r   r   r   r.   E   s     F)joinr	   r
   r   r   strreaddecodenext
splitlinesr#   r)   r   r0   )r   
py_versionr&   zip_filemetadatarequiresrequireoperatorcheckZver_strr   r   )r-   r5   r   
support_py0   s.    " 

zWheel.support_pyr=   c                 C  s   | j j d| j dS )N())	__class____name__r	   r   r   r   r   __repr__K   s    zWheel.__repr__c                 C  s
   t | jS r   )r=   r	   r   r   r   r   __str__N   s    zWheel.__str__N)rM   
__module____qualname__r   classmethodr   propertyr   r   r   staticmethodr   r&   rI   rN   rO   r   r   r   r   r      s    





r   c                 C  sd   g }|   D ]B}t|}|r|j|kr|d ks:|j|kr||r|| qt|tddddS )Nr   r   T)keyreverse)	iterdirr   r   r   r   rI   r    sortedr   )Zfrom_folderr   r   Zfor_py_versionwheelsfilenamewheelr   r   r   discover_wheelsR   s    
r\   c                   @  s@   e Zd ZdZdZeefZedd Zedd Zedd Z	d	S )
Versionbundleembedc                 C  s   | t jkrd S | S r   )r]   non_version)valuer   r   r   
of_versiong   s    zVersion.of_versionc                 C  s   |  t | S r   )r]   as_version_spec)r   r   r   r   r   
as_pip_reqk   s    zVersion.as_pip_reqc                 C  s    t | }|d krdS d| S )N r8   )r]   rb   )r   rb   r   r   r   rc   o   s    
zVersion.as_version_specN)
rM   rP   rQ   r^   r_   r`   rT   rb   rd   rc   r   r   r   r   r]   `   s   

r]   N)

__future__r   rG   r   zipfiler   r   r\   r]   __all__r   r   r   r   <module>   s   K