o
    *h                     @   sx   d dl mZmZmZ d dlZddlmZmZ ddlm	Z	m
Z
 er-d dlmZmZ edeZedZd	d
 Zdd ZdS )    )absolute_importdivisionprint_functionN   )TYPE_CHECKINGcast)InvalidVersionVersion)NewTypeUnionNormalizedNamez[-_.]+c                 C   s   t d|  }td|S )N-r   )_canonicalize_regexsublowerr   )namevalue r   h/home/www/facesmatcher.com/frenv_anti/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.pycanonicalize_name   s   
r   c              
   C   s   zt | }W n ty   |  Y S w g }|jdkr"|d|j |tddddd |jD  |j	durH|dd	d |j	D  |j
durV|d
|j
 |jdurd|d|j |jdurr|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   z{0}!z(\.0)+$ .c                 s       | ]}t |V  qd S Nstr.0xr   r   r   	<genexpr>/       z'canonicalize_version.<locals>.<genexpr>Nc                 s   r   r   r   r   r   r   r   r   3   r    z.post{0}z.dev{0}z+{0})r	   r   epochappendformatrer   joinreleaseprepostdevlocal)_versionversionpartsr   r   r   canonicalize_version   s$   
&




r.   )
__future__r   r   r   r$   Z_typingr   r   r,   r   r	   typingr
   r   r   r   compiler   r   r.   r   r   r   r   <module>   s   

