a  zeh@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 ]/opt/bitninja-python-dojo/embedded/lib/python3.9/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|tr0z t|}Wq4ty,|YS0n|}g}|jdkrT||jd|tddddd|j D|j dur|dd d|j D|j dur|d |j |j dur|d |j |j dur|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 <z'canonicalize_version..Ncss|]}t|VqdSr"r#r%r r rr(@r)z.postz.dev+) isinstancer$r r epochappendrerjoinreleaseprepostdevlocal)rparsedpartsr r rcanonicalize_version&s&     &    r7)filenamerc Cs|dstd||dd}|d}|dvrDtd||d|d}|d}d |vsxtd |tjdurtd |t|}t|d }|d kr|d}t |}|durtd|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 ) r8dashesr6 name_partrr build_part build_matchbuildtagsr r rparse_wheel_filenameQs6       rOcCs|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 )r8 file_stemrJsep version_partrrr r rparse_sdist_filenameus  rU)r.typingrrrrrrNrr rr r rGr$rFr ValueErrorrrcompilerrErr7rOrUr r r rs   , $