U v_@sxddlmZmZmZddlZddlmZmZddlm Z m Z erZddl m Z m Z e deZedZd d Zd d ZdS) )absolute_importdivisionprint_functionN) TYPE_CHECKINGcast)InvalidVersionVersion)NewTypeUnionNormalizedNamez[-_.]+cCstd|}td|S)N-r )_canonicalize_regexsublowerr)namevaluer/builddir/build/BUILDROOT/alt-python38-pip-20.2.4-1.el7.x86_64/opt/alt/python38/lib/python3.8/site-packages/pip/_vendor/packaging/utils.pycanonicalize_namesrc Csz t|}Wntk r$|YSXg}|jdkrF|d|j|tddddd|jD|j dk r|dd 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 difference with the way it handles the release segment. rz{0}!z(\.0)+$.css|]}t|VqdSNstr.0xrrr /sz'canonicalize_version..Ncss|]}t|VqdSrrrrrrr3sz.post{0}z.dev{0}z+{0}) r repochappendformatrerjoinreleaseprepostdevlocal)_versionversionpartsrrrcanonicalize_versions"   &    r,) __future__rrrr"_typingrrr*rr typingr r rr compilerrr,rrrrs