o
    Wi                     @  sr   d dl mZ d dlmZ d dlmZ d dlmZ er d dlm	Z	 G dd dZ
dddZG dd dZg dZdS )    )annotations)
attrgetter)TYPE_CHECKING)ZipFile)Pathc                   @  s   e Zd Zd ddZed!dd	Zed"ddZed"ddZed#ddZ	e
d$ddZed"ddZd%ddZd"ddZd"ddZdS )&Wheelpathr   returnNonec                 C  s   || _ |jd| _d S )N-)r   stemsplit_parts)selfr    r   O/home/ubuntu/.local/lib/python3.10/site-packages/virtualenv/seed/wheels/util.py__init__   s   zWheel.__init__Wheel | Nonec                 C  s2   |d u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_pathstrc                 C  
   | j d S )Nr   r   r   r   r   r   distribution      
zWheel.distributionc                 C  r   )N   r   r   r   r   r   version   r   zWheel.versiontuple[int, ...]c                 C  s   |  | jS N)as_version_tupler    r   r   r   r   version_tuple    s   zWheel.version_tupler    c              	   C  sV   g }|  ddd D ]}z	|t| W q ty    Y  nw |s't| 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-   0   s   z
Wheel.name
py_versionboolc              
     sx  d | jjddd  d}tt| jd}||d}W d    n1 s,w   Y  d t fdd	|	 D d }|d u rGd
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  nqq]d
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>9   s   ( z#Wheel.support_py.<locals>.<genexpr>Tc                 s  s    | ]}t |V  qd S r"   r(   r3   r   r   r   r7   <       r%   c                 s  s    | ]}|  V  qd S r"   )stripr3   r   r   r   r7   =   r9   ,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   r<   r>   r   r   r@   A   rA   z<=c                   s    | kS r"   r   r<   r>   r   r   r@   B   rA   z>=c                   s    | kS r"   r   r<   r>   r   r   r@   C   rA   <c                   s    | k S r"   r   r<   r>   r   r   r@   D   rA   >c                   s    | kS r"   r   r<   r>   r   r   r@   E   rA   c                 s  s$    | ]}|d krt |ndV  qdS )*Nr8   r3   r   r   r   r7   I   s   " F)joinr   r   r   r   r   readdecodenext
splitlinesr*   r2   r   r:   )r   r.   r-   zip_filemetadatarequiresrequireoperatorcheckver_strr    r   )r6   r?   r   
support_py4   s4   "
 zWheel.support_pyc                 C  s   | j j d| j dS )N())	__class____name__r   r   r   r   r   __repr__O   s   zWheel.__repr__c                 C  s
   t | jS r"   )r   r   r   r   r   r   __str__R   s   
zWheel.__str__N)r   r   r	   r
   )r   r   r	   r   )r	   r   )r	   r!   )r    r   r	   r!   )r.   r   r	   r/   )rV   
__module____qualname__r   classmethodr   propertyr   r    r$   staticmethodr#   r-   rR   rW   rX   r   r   r   r   r      s"    


r   from_folderr   r   r   r    
str | Nonefor_py_versionr	   list[Wheel]c                 C  sd   g }|   D ]!}t|}|r'|j|kr'|d u s|j|kr'||r'|| qt|tddddS )Nr$   r   T)keyreverse)	iterdirr   r   r   r    rR   r'   sortedr   )r^   r   r    r`   wheelsfilenamewheelr   r   r   discover_wheelsV   s   


ri   c                   @  sF   e Zd ZdZdZeefZedddZedddZedddZ	dS )Versionbundleembedvaluer_   r	   c                 C  s   | t jv rd S | S r"   )rj   non_version)rm   r   r   r   
of_versionk      zVersion.of_versionr   r   r    c                 C  s   |  t | S r"   )rj   as_version_spec)r   r    r   r   r   
as_pip_reqo   rp   zVersion.as_pip_reqc                 C  s    t | }|d u rdS d| S )N rB   )rj   ro   )r    ro   r   r   r   rq   s   s   
zVersion.as_version_specN)rm   r_   r	   r_   )r   r   r    r_   r	   r   )r    r_   r	   r   )
rV   rY   rZ   rk   rl   rn   r]   ro   rr   rq   r   r   r   r   rj   d   s    rj   )rj   r   ri   N)
r^   r   r   r   r    r_   r`   r   r	   ra   )
__future__r   rO   r   typingr   zipfiler   pathlibr   r   ri   rj   __all__r   r   r   r   <module>   s    
K