Re @ s 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 j d Z d d
Z d d Z d S)
)absolute_importdivisionprint_functionN )
TYPE_CHECKINGcast)InvalidVersionVersion)NewTypeUnionNormalizedNamez[-_.]+c C s% t j d | j } t d | S)N-r )_canonicalize_regexsublowerr )namevalue r /builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/packaging/utils.pycanonicalize_name s r c C sF y t | } Wn t k
r( | SYn Xg } | j d k rW | j d j | j | j t j d d d j d d | j D | j d k r | j d j d d | j D | j
d k r | j d
j | j
| j d k r| j d j | j | j d k r9| j d j | j d j | 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 | Vq d S)N)str).0xr r r