j7i|%lUddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z m Z m Z m Z ddlmZmZmZmZdZdZdZej,dd Zdd Zdd Zdd Zej6d Zded<Gdde Zd dZd dZ d dZ!d!dZ"ejFd"dZ$d#dZ%ddddZ&d$dZ'y)%) annotationsN) GeneratorIterator NamedTupleSequence)EIClassEIDataELFFileEMachinel~iic#K t|d5}t|dddy#1swYyxYw#tttf$rdYywxYww)Nrb)openr OSError TypeError ValueError)pathfs ]/mnt/ssd/data/python-lab/ChefSystem/venv/lib/python3.12/site-packages/packaging/_manylinux.py _parse_elfrsO $  !*     Y + s>A 3'3A03A3A A AAcxt|5}|duxr|jtjk(xrt|jt j k(xrU|jtjk(xr6|jtztk(xr|jtztk( cdddS#1swYyxYwN)rcapacityr C32encodingr Lsbmachiner ArmflagsEF_ARM_ABIMASKEF_ARM_ABI_VER5EF_ARM_ABI_FLOAT_HARD executablers r_is_linux_armhfr%s J  1 TM I gkk) I fjj( I X\\) I.(O;  I //3HH     s BB00B9ct|5}|duxr[|jtjk(xr<|jt j k(xr|jtjk( cdddS#1swYyxYwr) rrr rrr rrr I386r#s r_is_linux_i686r(-sn J  1 TM + gkk) + fjj( + X]]*     s A"A88Bcpd|vr t|Sd|vr t|Shdtfd|DS)Narmv7li686>ppc64s390xx86_64aarch64ppc64leriscv64 loongarch64c3&K|]}|v ywr).0arch allowed_archss r z'_have_compatible_abi..Es7t}$7s)r%r(any)r$archsr7s @r_have_compatible_abir;7sB5z** j))M 77 77cy)N2r4r4r<rr?Msr<zdict[int, int]_LAST_GLIBC_MINORc"eZdZUded<ded<y) _GLibCVersionintmajorminorN)__name__ __module__ __qualname____annotations__r4r<rrBrBPs J Jr<rBc tjd}|J|j\}}|S#ttt t f$rYywxYw)zJ Primary implementation of glibc_version_string using os.confstr. CS_GNU_LIBC_VERSIONN)osconfstrrsplitAssertionErrorAttributeErrorrr)version_string_versions r_glibc_version_string_confstrrTUsX%'ZZ0E%F)))#**, 7 N NGZ @s,0A  A c ddl} |jd} |j}|j |_|}t|ts|jd}|S#t$rYywxYw#t$rYywxYw#t $rYywxYw)zG Fallback implementation of glibc_version_string using ctypes. rNascii) ctypes ImportErrorCDLLrgnu_get_libc_versionrPc_char_prestype isinstancestrdecode)rWprocess_namespacerZ version_strs r_glibc_version_string_ctypesrbhs""KK-0EE$*?? +-K k3 '!((1 G $  s3A A/ A> A,+A,/ A;:A;> B  B c.txs tS)z9Returns glibc version string, or None if not using glibc.)rTrbr4r<r_glibc_version_stringrds ( * L.J.LLr<ctjd|}|s tjd|tdyt |j dt |j dfS)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[0-9]+)\.(?P[0-9]+)z;Expected glibc version with 2 components major.minor, got: ) stacklevelrirDrE)rematchwarningswarnRuntimeWarningrCgroup)rams r_parse_glibc_versionrqs` 8+FA  I+ W   qwww #aggg&6"7 77r<c2t}|yt|S)Nrh)rdrq)ras r_get_glibc_versionrss')K  ,,r<ct}||kry ddl}t|dr'|j |d|d|}| t |Sy|t ddk(r!t|drt |jS|t dd k(r!t|d rt |jS|t dd k(r!t|d rt |jSy#t$rYywxYw) NFrTmanylinux_compatiblerrfmanylinux1_compatible manylinux2010_compatiblemanylinux2014_compatible) rs _manylinuxrXhasattrruboolrBrwryr{)r6rS sys_glibcr|results r_is_compatiblers"$I7z1200WQZN  < -1%% :6 7 889 9-2&& :9 : ;;< <-2&& :9 : ;;< < ! sC C&%C& manylinux2014 manylinux2010 manylinux1))rfrz)rfrx)rfrvc#Kttj|sytdd}t |ddhzr tdd}tt }|g}t |jdz ddD]&}t|}|jt||(|D]}|D]}|j|jk(r |j}nd}t |j|dD]d}t|j|} d j| } t|| r | d || tvsFt| } t|| s\| d |fyw) aGenerate manylinux tags compatible to the current platform. :param archs: Sequence of compatible architectures. The first one shall be the closest to the actual architecture and be the part of platform tag after the ``linux_`` prefix, e.g. ``x86_64``. The ``linux_`` prefix is assumed as a prerequisite for the current platform to be manylinux-compatible. :returns: An iterator of compatible manylinux tags. Nrfr.r+rrizmanylinux_{}_{}rR)r;sysr$rBsetrsrangerDr@appendrEformatr_LEGACY_MANYLINUX_MAP) r:too_old_glibc2 current_glibcglibc_max_list glibc_major glibc_minorr6 glibc_max min_minor glibc_versiontag legacy_tags r platform_tagsrsh  6"1b)N 5zXv&&&q!,!#5#78M#_N]0014a<G ' 4 mKEFG5' 5I."6"66*00  $Y__iD 5 -ioo{ K .'.. >!$ 6 E4&/) $99!6}!EJ%dM:!+ AdV44 5  55sD(E+EE)rr^returnz%Generator[ELFFile | None, None, None])r$r^rr~)r$r^r: Sequence[str]rr~)rz str | None)rar^rtuple[int, int])rr)r6r^rSrBrr~)r:rrz Iterator[str])( __future__r collections contextlib functoolsrLrjrrltypingrrrr_elffiler r r r r r!r"contextmanagerrr%r(r; defaultdictr@rIrBrTrbrdrq lru_cachersrrrr4r<rrs" <<88"     8,%GJ &)XM 8& --8   -5r<