2bih \ S SK r S SKJrJrJrJrJr SSKJrJ r SSK
JrJr \\S \\
\4 4 r\" S\5 r " S S \5 r " S
S\5 r\ R( " S5 r\ R( " S
5 rS\S\4S jrS\\\4 S\4S jrS\S\\\\\\ 4 4S jrS\S\\\4 4S jrg) N) FrozenSetNewTypeTupleUnioncast )Tag parse_tag)InvalidVersionVersion NormalizedNamec \ rS rSrSrSrg)InvalidWheelFilename zE
An invalid wheel filename was found, users should refer to PEP 427.
r
N__name__
__module____qualname____firstlineno____doc____static_attributes__r
ڍ/builddir/build/BUILDROOT/alt-python313-pip-23.3.1-3.el8.x86_64/opt/alt/python313/lib/python3.13/site-packages/pip/_vendor/packaging/utils.pyr r r r c \ rS rSrSrSrg)InvalidSdistFilename zV
An invalid sdist filename was found, users should refer to the packaging user guide.
r
Nr r
r r r r r r r z[-_.]+z (\d+)(.*)namereturnc j [ R SU 5 R 5 n[ [ U5 $ )N-)_canonicalize_regexsublowerr r )r values r canonicalize_namer' s* ##C.446E&&r versionc
[ U [ 5 ( a
[ U 5 nOU n/ nUR S:w a UR UR S35 UR [ R " SSSR S UR 5 5 5 5 UR b1 UR SR S UR 5 5 5 UR b UR SUR 35 UR b UR S UR 35 UR b UR S
UR 35 SR U5 $ ! [ a U s $ f = f)zu
This is very similar to Version.__str__, but has one subtle difference
with the way it handles the release segment.
r !z(\.0)+$ .c 3 8 # U H n[ U5 v M g 7fNstr.0xs r