a
    )f                     @   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rZd 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   [/var/www/ai-form-bot/venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/utils.pycanonicalize_name   s    r   c              
   C   s   zt | }W n ty"   |  Y S 0 g }|jdkrD|d|j |tddddd |jD  |j	dur|dd	d |j	D  |j
dur|d
|j
 |jdur|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   z{0}!z(\.0)+$ .c                 s   s   | ]}t |V  qd S Nstr.0xr   r   r   	<genexpr>/       z'canonicalize_version.<locals>.<genexpr>Nc                 s   s   | ]}t |V  qd S 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   

