o Ech @sddlZddlmZmZmZmZmZddlmZm Z ddl m Z m Z eedee effZedeZGdd d eZGd d d eZed Zed ZdedefddZdee efdefddZdedeee eeeffddZdedeee ffddZdS)N) FrozenSetNewTypeTupleUnioncast)Tag parse_tag)InvalidVersionVersionNormalizedNamec@eZdZdZdS)InvalidWheelFilenamezM An invalid wheel filename was found, users should refer to PEP 427. N__name__ __module__ __qualname____doc__r r r N/opt/alt/python310/lib/python3.10/site-packages/pip/_vendor/packaging/utils.pyrrc@r)InvalidSdistFilenamez^ An invalid sdist filename was found, users should refer to the packaging user guide. Nrr r r rrrrz[-_.]+z (\d+)(.*)namereturncCstd|}tt|S)N-)_canonicalize_regexsublowerrr )rvaluer r rcanonicalize_name s rversionc Cst|trzt|}Wn ty|YSw|}g}|jdkr)||jd|tddddd|j D|j durO|dd d|j D|j dur]|d |j |j durk|d |j |j dury|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. r!z(\.0)+$.cs|]}t|VqdSNstr.0xr r r <z'canonicalize_version..Ncsr$r%r&r(r r rr+@r,z.postz.dev+) isinstancer'r r ZepochappendrerjoinreleaseZpreZpostdevZlocal)r parsedpartsr r rcanonicalize_version&s(    &     r6filenamec Cs|ds td||dd}|d}|dvr"td||d|d}|d}d |vss$   + $