a „oeã@sddlZddlmZmZmZmZmZddlmZm Z ddl m Z m Z eedee effZedeƒZGdd „d eƒZGd d „d eƒZe d ¡Ze d ¡Zeedœdd„Zddœee efeedœdd„Zeeee eeefdœdd„Zeeee fdœdd„ZdS)éN)Ú FrozenSetÚNewTypeÚTupleÚUnionÚcasté)ÚTagÚ parse_tag)ÚInvalidVersionÚVersion©ÚNormalizedNamec@seZdZdZdS)ÚInvalidWheelFilenamezM An invalid wheel filename was found, users should refer to PEP 427. N©Ú__name__Ú __module__Ú __qualname__Ú__doc__r r r úFC:\Program Files\Certbot\pkgs\pkg_resources\_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+)(.*))ÚnameÚreturncCst d|¡ ¡}tt|ƒS)Nú-)Ú_canonicalize_regexÚsubÚlowerrr )rÚvaluer r rÚcanonicalize_name srT)Ústrip_trailing_zero)ÚversionrrcCs t|tƒr0z t|ƒ}Wq4ty,|YS0n|}g}|jdkrT| |j›d�¡d dd„|jDƒ¡}|r|t  dd|¡}| |¡|j dur¬| d d d„|j Dƒ¡¡|j durÈ| d |j ›�¡|j durä| d |j ›�¡|j du�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ú!Ú.css|]}t|ƒVqdS©N©Ústr©Ú.0Úxr r rÚ =óz'canonicalize_version..z(\.0)+$ÚNcss|]}t|ƒVqdSr"r#r%r r rr(Er)z.postz.devú+)Ú isinstancer$r r ZepochÚappendÚjoinÚreleaseÚrerZpreZpostÚdevÚlocal)rrÚparsedÚpartsZrelease_segmentr r rÚcanonicalize_version&s,          r5)Úfilenamerc Cs| d¡std|›�ƒ‚|dd…}| d¡}|dvrDtd|›�ƒ‚| d|d¡}|d}d |vsxt d |tj¡dur†td |›�ƒ‚t|ƒ}t|d ƒ}|d krò|d}t  |¡}|durÒtd|›d|›d�ƒ‚t t t |  d ¡ƒ|  d¡fƒ}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: rr9zInvalid build number: z in 'ú'r éÿÿÿÿ)ÚendswithrÚcountÚsplitr0ÚmatchÚUNICODErr Ú_build_tag_regexrÚBuildTagÚintÚgroupr ) r6Zdashesr4Ú name_partrrZ build_partZ build_matchÚbuildÚtagsr r rÚparse_wheel_filenameVs6 ÿ  ÿ  ÿ  rJcCs„| d¡r|dtdƒ …}n,| d¡r<|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 )r6Z file_stemrGÚsepZ version_partrrr r rÚparse_sdist_filenamezs  ÿÿrN)r0ÚtypingrrrrrrIrr rr r rEr$rDr Ú ValueErrorrrÚcompilerrCrÚboolr5rJrNr r r rÚs&   ÿ þ 1þ $