o
    xŸŽi  ã                   @   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   úlC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\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   

