JFIF$        dd7 

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

a

[��f�,�@szUddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZm
Z
Gdd�d�Zeed�dd�Zed�dd	�Zed�d
d�Zeed�d
d�Ze�dd��Ze	eefed<Gdd�de�Zeed�dd�Zeed�dd�Zeed�dd�Zee
eefd�dd�Ze��e
eefd�dd��Zeeeed�d d!�Z d"d#d$d%�Z!eee
ed&�d'd(�Z"dS))�N)�IO�Dict�Iterator�
NamedTuple�Optional�Tuplec@s`eZdZGdd�de�ZdZdZdZdZdZ	dZ
dZdZd	Z
d
ZdZdZeed
d�dd�Zd
S)�_ELFFileHeaderc@seZdZdZdS)z$_ELFFileHeader._InvalidELFFileHeaderz7
        An invalid ELF file header was found.
        N)�__name__�
__module__�__qualname__�__doc__�r
r
�D/usr/lib/python3.9/site-packages/pip/_vendor/packaging/_manylinux.py�_InvalidELFFileHeadersriFLE�����(�>l~iiN)�file�returncszttd��fdd�}|d�|_|j|jkr2t���|d�|_|j|j|jhvrVt���|d�|_	|j	|j
|jhvrzt���|d�|_|d�|_
|d�|_��d�|_|j	|j
kr�dnd}|j	|j
kr�d	nd}|j	|j
kr�d
nd}|j|jkr�|n|}||�|_||�|_||�|_||�|_||�|_||�|_||�|_||�|_||�|_||�|_||�|_||�|_||�|_dS)N)�fmtrcsFz ��t�|��}t�||�}Wntjy<t���Yn0|dS)Nr)�read�struct�calcsize�unpack�errorrr)r�data�result�rr
rr$sz'_ELFFileHeader.__init__.<locals>.unpackz>I�B�z<Hz>Hz<Iz<Qz>Q)�str�intZ
e_ident_magic�ELF_MAGIC_NUMBERrr�
e_ident_class�
ELFCLASS32�
ELFCLASS64�e_ident_data�ELFDATA2LSB�ELFDATA2MSBZe_ident_versionZ
e_ident_osabiZe_ident_abiversionrZe_ident_padZe_type�	e_machineZ	e_versionZe_entryZe_phoffZe_shoff�e_flagsZe_ehsizeZe_phentsizeZe_phnumZe_shentsizeZe_shnumZ
e_shstrndx)�selfrrZformat_hZformat_iZformat_qZformat_pr
r r�__init__#s>

















z_ELFFileHeader.__init__)r	r
r�
ValueErrorrr%r'r(r*r+�EM_386ZEM_S390�EM_ARMZ	EM_X86_64�EF_ARM_ABIMASK�EF_ARM_ABI_VER5�EF_ARM_ABI_FLOAT_HARDr�bytesr/r
r
r
rrsr)rc
CsZz8ttjd��}t|�}Wd�n1s,0YWntttjfyTYdS0|S)N�rb)�open�sys�
executabler�OSError�	TypeErrorr)�f�
elf_headerr
r
r�_get_elf_headerLs*r?cCsnt�}|durdS|j|jk}||j|jkM}||j|jkM}||j|j@|j	kM}||j|j
@|j
kM}|S�NF)r?r&r'r)r*r,r2r-r3r4r5�r>rr
r
r�_is_linux_armhfUs
�
�rBcCsBt�}|durdS|j|jk}||j|jkM}||j|jkM}|Sr@)r?r&r'r)r*r,r1rAr
r
r�_is_linux_i686hsrC)�archrcCs$|dkrt�S|dkrt�S|dvS)NZarmv7l�i686>Zaarch64Zs390xZppc64le�x86_64Zppc64)rBrC)rDr
r
r�_have_compatible_abirs
rGcCsdS)N�2r
r
r
r
r�<lambda>�rI�_LAST_GLIBC_MINORc@seZdZUeed<eed<dS)�
_GLibCVersion�major�minorN)r	r
rr$�__annotations__r
r
r
rrL�s
rLcCsHz&t�d�}|dusJ�|��\}}WnttttfyBYdS0|S)zJ
    Primary implementation of glibc_version_string using os.confstr.
    �CS_GNU_LIBC_VERSIONN)�os�confstr�split�AssertionError�AttributeErrorr;r0)Zversion_string�_�versionr
r
r�_glibc_version_string_confstr�s
rXcCs�zddl}Wnty YdS0z|�d�}WntyDYdS0z
|j}WntydYdS0|j|_|�}t|t	�s�|�
d�}|S)zG
    Fallback implementation of glibc_version_string using ctypes.
    rN�ascii)�ctypes�ImportErrorZCDLLr;�gnu_get_libc_versionrUZc_char_pZrestype�
isinstancer#�decode)rZZprocess_namespacer\�version_strr
r
r�_glibc_version_string_ctypes�s"


r`cCst�p
t�S)z9Returns glibc version string, or None if not using glibc.)rXr`r
r
r
r�_glibc_version_string�sra)r_rcCs@t�d|�}|s$t�d|t�dSt|�d��t|�d��fS)a3Parse glibc version.

    We use a regexp instead of str.split because we want to discard any
    random junk that might come after the minor version -- this might happen
    in patched/forked versions of glibc (e.g. Linaro's version of glibc
    uses version strings like "2.20-2014.11"). See gh-3588.
    z$(?P<major>[0-9]+)\.(?P<minor>[0-9]+)z=Expected glibc version with 2 components major.minor, got: %s����rcrMrN)�re�match�warnings�warn�RuntimeWarningr$�group)r_�mr
r
r�_parse_glibc_version�s��rkcCst�}|durdSt|�S)Nrb)rark)r_r
r
r�_get_glibc_version�srl)�namerDrWrcCs�t�}||krdSzddl}Wnty2YdS0t|d�rh|�|d|d|�}|durdt|�SdS|tdd�kr�t|d�r�t|j�S|tdd	�kr�t|d
�r�t|j�S|tdd�kr�t|d�r�t|j	�SdS)
NFrT�manylinux_compatiblerr��manylinux1_compatible��manylinux2010_compatible��manylinux2014_compatible)
rl�
_manylinuxr[�hasattrrn�boolrLrprrrt)rmrDrWZ	sys_glibcrurr
r
r�_is_compatible�s,






rxZ
manylinux2014Z
manylinux2010Z
manylinux1))rrs)rrq)rro)�linuxrDrccs�t|�sdStdd�}|dvr(tdd�}tt��}|g}t|jddd�D]}t|}|�t||��qJ|D]�}|j|jkr�|j}nd}t|j|d�D]^}t|j|�}	dj|	�}
t	|
||	�r�|�
d|
�V|	tvr�t|	}t	|||	�r�|�
d|�Vq�qldS)	Nr�>rFrE�rrczmanylinux_{}_{}ry)rGrLrl�rangerMrK�appendrN�formatrx�replace�_LEGACY_MANYLINUX_MAP)ryrDZtoo_old_glibc2Z
current_glibcZglibc_max_listZglibc_majorZglibc_minorZ	glibc_maxZ	min_minorZ
glibc_version�tagZ
legacy_tagr
r
r�
platform_tagss.



r�)#�collections�	functoolsrQrdrr9rf�typingrrrrrrrr?rwrBrCr#rG�defaultdictrKr$rOrLrXr`rark�	lru_cacherlrxr�r�r
r
r
r�<module>s4
 =	

,�
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