__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
U
��.e� � @ sJ d dl mZmZmZ d dlZddlmZmZ e�d�Z dd� Z
dd � ZdS )
� )�absolute_import�division�print_functionN� )�InvalidVersion�Versionz[-_.]+c C s t �d| ��� S )N�-)�_canonicalize_regex�sub�lower)�name� r
�?/usr/lib/python3.8/site-packages/pip/_vendor/packaging/utils.py�canonicalize_name s r c
C s� zt | �} W n tk
r$ | Y S X g }| jdkrF|�d�| j�� |�t�ddd�dd� | jD ���� | j dk r�|�d�d d� | j D ��� | j
dk r�|�d
�| j
�� | jdk r�|�d�| j�� | jdk 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.
r z{0}!z(\.0)+$� �.c s s | ]}t |�V qd S �N��str��.0�xr
r
r � <genexpr>'