Re@sddlmZmZmZddlZddlmZmZddlm Z m Z erddl m Z m Z e deZejdZd d Zd d ZdS) )absolute_importdivisionprint_functionN) TYPE_CHECKINGcast)InvalidVersionVersion)NewTypeUnionNormalizedNamez[-_.]+cCs%tjd|j}td|S)N-r )_canonicalize_regexsublowerr)namevaluer/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_namesrcCsFyt|}Wntk r(|SYnXg}|jdkrW|jdj|j|jtjdddjdd|jD|j dk r|jdjd d|j D|j dk r|jd j|j |j dk r|jd j|j |j dk r9|jd j|j dj|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|VqdS)N)str).0xrrr /sz'canonicalize_version..Ncss|]}t|VqdS)N)r)rrrrrr3sz.post{0}z.dev{0}z+{0}) r repochappendformatrerjoinreleaseprepostdevlocal)_versionversionpartsrrrcanonicalize_versions"  5&r)) __future__rrrr_typingrrr'rr typingr r rr compilerrr)rrrrs