3 eh@sddlZddlmZmZmZmZmZddlmZm Z ddl m Z m Z eefee effZedeZGdddeZGd d d eZejd Zejd Zeed ddZee 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__rrH/tmp/pip-build-vlmub77e/setuptools/setuptools/_vendor/packaging/utils.pyr sr c@seZdZdZdS)InvalidSdistFilenamez^ An invalid sdist filename was found, users should refer to the packaging user guide. N)rrrrrrrrrsrz[-_.]+z (\d+)(.*))namereturncCstjd|j}tt|S)N-)_canonicalize_regexsublowerrr )rvaluerrrcanonicalize_name sr)versionrcCst|tr.y t|}Wq2tk r*|SXn|}g}|jdkrR|j|jd|jtjdddjdd|j D|j dk r|jdjd d|j D|j dk r|jd |j |j dk r|jd |j |j dk r|jd |j dj|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|VqdS)N)str).0xrrr <sz'canonicalize_version..Ncss|]}t|VqdS)N)r!)r"r#rrrr$@sz.postz.dev+) isinstancer!r r epochappendrerjoinreleaseprepostdevlocal)rparsedpartsrrrcanonicalize_version&s&   &    r2)filenamerc Cs|jdstd||dd}|jd}|dkrDtd||jd|d}|d}d |ksxtjd |tjdkrtd |t|}t|d }|dkr|d}t j|}|dkrtd |d|dt t t |j d |j df}nf}t|d} |||| fS)Nz.whlz3Invalid wheel filename (extension must be '.whl'): rz0Invalid wheel filename (wrong number of parts): r__z ^[\w\d._]*$zInvalid project name: rzInvalid build number: z in '')r4r5)endswithr countsplitr)matchUNICODErr _build_tag_regexrBuildTagintgroupr ) r3Zdashesr1 name_partrrZ build_partZ build_matchbuildtagsrrrparse_wheel_filenameQs0         rGcCs|jdr|dtd }n,|jdr<|dtd }ntd||jd\}}}|sltd|t|}t|}||fS)Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): rzInvalid sdist filename: )r;lenr rpartitionrr )r3Z file_stemrDsepZ version_partrrrrrparse_sdist_filenameus   rK)r)ZtypingrrrrrrFrr rr r rBr!rAr ValueErrorr rcompilerr@rr2rGrKrrrrs   ,"