o
    Ee                  	   @   s  d dl Z d dlmZmZmZmZmZ ddlmZm	Z	 ddl
mZmZ eed eeef f ZedeZG dd	 d	eZG d
d deZe dZe dZdedefddZdddeeef dedefddZdedeeeeee f fddZdedeeef fddZdS )    N)	FrozenSetNewTypeTupleUnioncast   )Tag	parse_tag)InvalidVersionVersion NormalizedNamec                   @      e Zd ZdZdS )InvalidWheelFilenamezM
    An invalid wheel filename was found, users should refer to PEP 427.
    N__name__
__module____qualname____doc__r   r   r   c/var/www/bmteknikk.ddns.net/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.pyr          r   c                   @   r   )InvalidSdistFilenamez^
    An invalid sdist filename was found, users should refer to the packaging user guide.
    Nr   r   r   r   r   r      r   r   z[-_.]+z	(\d+)(.*)namereturnc                 C   s   t d|  }tt|S )N-)_canonicalize_regexsublowerr   r   )r   valuer   r   r   canonicalize_name    s   
r   T)strip_trailing_zeroversionr    c                C   s  t | trzt| }W n ty   |  Y S w | }g }|jdkr)||j d ddd |jD }|r=t	dd|}|| |j
durU|dd	d |j
D  |jdurc|d
|j  |jdurq|d|j  |jdur|d|j  d|S )z
    This is very similar to Version.__str__, but has one subtle difference
    with the way it handles the release segment.
    r   !.c                 s       | ]}t |V  qd S Nstr.0xr   r   r   	<genexpr>=       z'canonicalize_version.<locals>.<genexpr>z(\.0)+$ Nc                 s   r$   r%   r&   r(   r   r   r   r+   E   r,   z.postz.dev+)
isinstancer'   r   r
   epochappendjoinreleaserer   prepostdevlocal)r!   r    parsedpartsrelease_segmentr   r   r   canonicalize_version&   s.   







r<   filenamec           
      C   s  |  dstd|  | d d } | d}|dvr"td|  | d|d }|d }d	|v s<td
|tjd u rCtd|  t|}t|d }|dkry|d }t	|}|d u ritd| d|  dt
tt|d|df}nd}t|d }	||||	fS )Nz.whlz3Invalid wheel filename (extension must be '.whl'): r   )      z0Invalid wheel filename (wrong number of parts):    r   __z^[\w\d._]*$zInvalid project name: r   r@   zInvalid build number: z in ''r   )endswithr   countsplitr4   matchUNICODEr   r   _build_tag_regexr   BuildTagintgroupr	   )
r=   dashesr:   	name_partr   r!   
build_partbuild_matchbuildtagsr   r   r   parse_wheel_filenameV   s6   


 rT   c                 C   s   |  dr| d td  }n|  dr| d td  }ntd|  |d\}}}|s6td|  t|}t|}||fS )Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r   zInvalid sdist filename: )rE   lenr   
rpartitionr   r   )r=   	file_stemrO   sepversion_partr   r!   r   r   r   parse_sdist_filenamez   s   

rZ   )r4   typingr   r   r   r   r   rS   r   r	   r!   r
   r   rL   r'   rK   r   
ValueErrorr   r   compiler   rJ   r   boolr<   rT   rZ   r   r   r   r   <module>   s2   




0
$