U ʗReh@sddlZddlmZmZmZmZmZddlmZm Z ddl m Z m Z eedee effZedeZGdd d eZGd d d eZed Zed ZeedddZee efedddZeeee eeefdddZeeee fdddZdS)N) FrozenSetNewTypeTupleUnioncast)Tag parse_tag)InvalidVersionVersionNormalizedNamec@seZdZdZdS)InvalidWheelFilenamezM An invalid wheel filename was found, users should refer to PEP 427. N__name__ __module__ __qualname____doc__r r r /builddir/build/BUILDROOT/alt-python38-pip-22.2.1-2.el8.x86_64/opt/alt/python38/lib/python3.8/site-packages/pip/_vendor/packaging/utils.pyrsrc@seZdZdZdS)InvalidSdistFilenamez^ An invalid sdist filename was found, users should refer to the packaging user guide. Nrr r r rrsrz[-_.]+z (\d+)(.*))namereturncCstd|}tt|S)N-)_canonicalize_regexsublowerrr )rvaluer r rcanonicalize_name sr)versionrc Cst|tr2z t|}Wq6tk r.|YSXn|}g}|jdkrV||jd|tddddd|j D|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. r!z(\.0)+$.css|]}t|VqdSNstr.0xr r r <sz'canonicalize_version..Ncss|]}t|VqdSr"r#r%r r rr(@sz.postz.dev+) isinstancer$r r epochappendrerjoinreleaseprepostdevlocal)rparsedpartsr r rcanonicalize_version&s&    &    r6)filenamerc Cs|dstd||dd}|d}|dkrDtd||d|d}|d}d |ksxtd |tjdkrtd |t|}t|d }|d kr|d}t |}|dkrtd|d|dt t t | d | df}nd}t|d} |||| fS)Nz.whlz3Invalid wheel filename (extension must be '.whl'): r)z0Invalid wheel filename (wrong number of parts): r__z ^[\w\d._]*$zInvalid project name: rr:zInvalid build number: z in ''r )endswithrcountsplitr-matchUNICODErr _build_tag_regexrBuildTagintgroupr ) r7dashesr5 name_partrr build_part build_matchbuildtagsr r rparse_wheel_filenameQs6       rNcCs|dr|dtd }n,|dr<|dtd }ntd||d\}}}|sltd|t|}t|}||fS)Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): rzInvalid sdist filename: )r?lenr rpartitionrr )r7 file_stemrIsep version_partrrr r rparse_sdist_filenameus  rT)r-typingrrrrrrMrr rr r rFr$rEr ValueErrorrrcompilerrDrr6rNrTr r r rs   , $