U ��.e��@sJddlmZmZmZddlZddlmZmZe�d�Z dd�Z dd �Z dS) �)�absolute_import�division�print_functionN�)�InvalidVersion�Versionz[-_.]+cCst�d|���S)N�-)�_canonicalize_regex�sub�lower)�name�r �?/usr/lib/python3.8/site-packages/pip/_vendor/packaging/utils.py�canonicalize_namesrc Cs�z t|�}Wntk r$|YSXg}|jdkrF|�d�|j��|�t�ddd�dd�|jD����|j dk r�|�d�d d�|j D���|j dk r�|�d �|j ��|j dk r�|�d �|j ��|j dk r�|�d �|j ��d�|�S) z� This is very similar to Version.__str__, but has one subtle differences with the way it handles the release segment. rz{0}!z(\.0)+$��.css|]}t|�VqdS�N��str��.0�xr r r� 'sz'canonicalize_version..Ncss|]}t|�VqdSrrrr r rr+sz.post{0}z.dev{0}z+{0}) rrZepoch�append�format�rer �join�releaseZpreZpostZdevZlocal)�version�partsr r r�canonicalize_versions"   &    r ) Z __future__rrrrrrr�compiler rr r r r r�s