R" f ddlZddlmZmZmZmZmZddlmZm Z ddl m Z m Z eedee effZedeZGdd eZGd d eZGd d eZej*dej,Zej*dZej*dZej*dZdddededefdZdedefdZdddee efdedefdZdedeee eeeffdZdedeee ffd Z y)!N) FrozenSetNewTypeTupleUnioncast)Tag parse_tag)InvalidVersionVersionNormalizedNameceZdZdZy) InvalidNamezW An invalid distribution name; users should refer to the packaging user guide. N__name__ __module__ __qualname____doc__r 1/usr/lib/python3/dist-packages/packaging/utils.pyrrrrceZdZdZy)InvalidWheelFilenamezM An invalid wheel filename was found, users should refer to PEP 427. Nrr rrrrrrrceZdZdZy)InvalidSdistFilenamez^ An invalid sdist filename was found, users should refer to the packaging user guide. Nrr rrrrrrrz)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$z[-_.]+z/^([a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9])$z (\d+)(.*)F)validatenamerreturnc|r#tj|std|tj d|j }t t|S)Nzname is invalid: -)_validate_regexmatchr_canonicalize_regexsublowerrr)rrvalues rcanonicalize_namer(+sM--d3-dX677  # #C . 4 4 6E  &&rc0tj|duSN)_normalized_regexr#)rs ris_normalized_namer,3s  " "4 ( 44rT)strip_trailing_zeroversionr-ct|tr t|}n|}g}|jdk7r|j |jddj d|jD}|rtjdd|}|j ||j1|j dj d|jD|j|j d|j|j|j d |j|j|j d |jdj |S#t$r|cYSwxYw) z This is very similar to Version.__str__, but has one subtle difference with the way it handles the release segment. r!.c32K|]}t|ywr*str.0xs r z'canonicalize_version..Ns>!s1v>z(\.0)+$c32K|]}t|ywr*r3r5s rr8z'canonicalize_version..Vs8SV8r9z.postz.dev+) isinstancer4r r epochappendjoinreleaserer%prepostdevlocal)r.r-parsedpartsrelease_segments rcanonicalize_versionrJ7sB'3 W%F  E||q  ~Q'(hh>v~~>>O&&RA LL!zz RWW8VZZ889{{ uV[[M*+zz tFJJ<()|| q'( 775>G N s E'' E54E5filenamec|jdstd||dd}|jd}|dvrtd||jd|dz }|d}d |vs%t j d |tj td |t|} t|d }|dk(rh|d}tj |}|td|d|dttt|jd |jdf} nd} t|d} ||| | fS#t$r}td ||d}~wwxYw)Nz.whlz3Invalid wheel filename (extension must be '.whl'): r!)z0Invalid wheel filename (wrong number of parts): r__z ^[\w\d._]*$zInvalid project name: rz*Invalid wheel filename (invalid version): rOzInvalid build number: z in ''r )endswithrcountsplitrBr#UNICODEr(r r _build_tag_regexrBuildTagintgroupr ) rKdashesrH name_partrr.e build_part build_matchbuildtagss rparse_wheel_filenamercgs   V $"A( L  }H ^^C F V">xj I   NN3 +EaI yBHH^Y KS"%;H:#FGG Y 'D%(# {1X &,,Z8  &( E(1E XK$5$5a$8 9;;L;LQ;OPQ U2Y D '5$ ''! "8 C  s%D66 E?EEcb|jdr|dtd }n/|jdr|dtd }ntd||jd\}}}|std|t |} t |}||fS#t $r}td||d}~wwxYw)Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r!zInvalid sdist filename: z*Invalid sdist filename (invalid version): )rTlenr rpartitionr(r r )rK file_stemr]sep version_partrr.r^s rparse_sdist_filenamerjs#.I/   6 "^F |, "z   $-#7#7#< IsL "%=hZ#HII Y 'D,' '? "8 C  s B B.B))B.)!rBtypingrrrrrrbr r r.r r rZr4rYr ValueErrorrrrcompile IGNORECASEr"r$r+rXboolr(r,rJrcrjr rrrpsX  99 , rE#s(O+ ,)3/* : :"**0"--!bjj+BJJQR2::l+6;'C'd'~'5S5T5 BF- 7C< -:>--`(((( >7Hin <=((V351H+Ir