a
    i‚j  ã                   @   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   ú`/home/ghrups/robot-bench/.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   

