2bi hSrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK J r J r J r J r Jr S\ \S\S\\S44SjrS\ \S\ \4S jr"S S \ 5rS \S\ \4S jr\R,"5S\S\ \4Sj5rS\S\ \4Sjr\S:XaSSKr\R6"5r\R;S5(dS5e\"S\5 \"S\"\R>55 \"SSS9 \"\R@"SS\RCSS5S55H r"\"\"SS9 M gg) zPEP 656 support. This module implements logic to detect if the currently running Python is linked against musl, and what musl version is used. N)IOIterator NamedTupleOptionalTupleffmtreturn.ct[R"XR[R"U555$N)structunpackreadcalcsize)rr s ڒ/builddir/build/BUILDROOT/alt-python313-pip-23.3.1-3.el8.x86_64/opt/alt/python313/lib/python3.13/site-packages/pip/_vendor/packaging/_musllinux.py_read_unpackedrs# ==ffV__S%9: ;;cURS5 [US5nUSS[ S5:wagUR[R "S5S5 SS S .USup#n[ R"U6n[X5upg phn [U S-5Hn URXxU --5 U"[X55upn U S :waM6URU 5 [R"URU 55RS 5nS U;a gUs $ g![Ra gf=f![a gf=f![Ra gf=f![Ra  gf=f)zDetect musl libc location by parsing the Python executable. Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html r16BNsELFHHI)IIIIHHHIIIIIIII)rrr)QQQIHHHIIQQQQQQ)r)rrmusl)seekrr errortupleroperator itemgetterKeyErrorrangeosfsdecoderstrip)ridente_fmtp_fmtp_idxp_get_e_phoff e_phentsizee_phnumip_typep_offsetp_filesz interpreters r_parse_ld_musl_from_elfr:s FF1Iq%( RayE*%%FF6??5 !1% , 21  (e##U+4B14L1Aq!'7Q;  wq() ).~a/G)H &Fh Q;  xkk!&&"2399$?  $  K <<  << ||  sG D$D>;E4E($D;:D;> E  E E%$E%(F?Fc*\rSrSr%\\S'\\S'Srg) _MuslVersionGmajorminorN)__name__ __module__ __qualname____firstlineno__int__annotations____static_attributes__r@rrr<r<Gs J Jrr<outputcZSUR55Vs/sH o(dM UPM nn[U5S:d USSSS:wag[R"SUS5nU(dg[ [ UR S55[ UR S55S9$s snf) Nc3@# UHoR5v M g7fr )r+).0ns r &_parse_musl_version..Ms@,?q,?srrrr!zVersion (\d+)\.(\d+)r)r>r?) splitlineslenrematchr<rEgroup)rHrLlinesms r_parse_musl_versionrVLs@F,=,=,?@ F@1AQ@E F 5zA~q"1/ (%(3A  c!''!*oS_ EE Gs B(B( executablecb[R"5nUR[US55n[ U5nSSS5 W(dg[ R"U/[ RSS9n[UR5$![a SSS5 gf=f!,(df  Nh=f)aDDetect currently-running musl runtime version. This is done by checking the specified executable's dynamic linking information, and invoking the loader to parse its output for a version string. If the loader is musl, the output would be something like:: musl libc (x86_64) Version 1.2.2 Dynamic Program Loader rbNT)stderruniversal_newlines) contextlib ExitStack enter_contextopenOSErrorr: subprocessrunPIPErVrZ)rWstackrldprocs r_get_musl_versionrgVs    5 ##DT$:;A%Q '  >>2$z4 PD t{{ ++     s-B B B  BB BB  B.archc## [[R5nUcg[URSS5HnSUR SUSU3v M g7f)a@Generate musllinux tags compatible to the current platform. :param arch: Should 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 musllinux-compatible. :returns: An iterator of compatible musllinux tags. N musllinux_r1)rgsysrWr(r?r>)rhsys_muslr?s r platform_tagsrnnsS!0Hx~~r2.8>>*!E7!D6::/sAA__main__zlinux-z not linuxzplat:zmusl:ztags: )endz[.-]r1-rrjz )#__doc__r\ functoolsr%r)rQr rarltypingrrrrrbytesstrrErr:r<rV lru_cachergrnrA sysconfig get_platformplat startswithprintrWsubsplittr@rrrss   <<F ,#,(<*@,,. ; ; ;  z  ! ! #D ??8 $ $1k1 $ '4 '$S^^45 's 266'3 30B20FG H aZ Ir