JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-39.pyc

a

[��fh�@s�ddlZddlmZmZmZmZmZddlmZm	Z	ddl
mZmZeedee
effZede�ZGdd	�d	e�ZGd
d�de�Ze�d�Ze�d
�Zeed�dd�Zeeefed�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�?/usr/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+)(.*))�name�returncCst�d|���}tt|�S)N�-)�_canonicalize_regex�sub�lowerrr
)r�valuerrr�canonicalize_name sr)�versionrc
Cs�t|t�r0zt|�}Wq4ty,|YS0n|}g}|jdkrT|�|j�d��|�t�ddd�dd�|j	D����|j
dur�|�d�d	d�|j
D���|jdur�|�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|�VqdS�N��str��.0�xrrr�	<genexpr><�z'canonicalize_version.<locals>.<genexpr>Ncss|]}t|�VqdSr"r#r%rrrr(@r)z.postz.dev�+)�
isinstancer$rr
Zepoch�append�rer�join�releaseZpreZpost�dev�local)r�parsed�partsrrr�canonicalize_version&s&

&



r4)�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
tt|�
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: rr8zInvalid build number: z in '�'r���)�endswithr�count�splitr-�match�UNICODErr�_build_tag_regexr�BuildTag�int�groupr	)
r5Zdashesr3�	name_partrrZ
build_partZbuild_matchZbuild�tagsrrr�parse_wheel_filenameQs6
�
�
� rHcCs�|�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)r5Z	file_stemrF�sepZversion_partrrrrr�parse_sdist_filenameus

��rL)r-�typingrrrrrrGrr	rr
rrDr$rCr
�
ValueErrorrr�compilerrBrr4rHrLrrrr�<module>s


,�$
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg