7i) pddlZddlZddlmZmZdeefdZdeefdZdeefdZdeeeffdZ y)N)OptionalTuplereturnc.txs tS)z9Returns glibc version string, or None if not using glibc.)glibc_version_string_confstrglibc_version_string_ctypesb/mnt/ssd/data/python-lab/ChefSystem/venv/lib/python3.12/site-packages/pip/_internal/utils/glibc.pyglibc_version_stringr s ' ) J-H-JJr ctjdk(ry tjd}|y|j \}}|S#t t tf$rYywxYw)z@Primary implementation of glibc_version_string using os.confstr.win32NCS_GNU_LIBC_VERSION)sysplatformosconfstrsplitAttributeErrorOSError ValueError)gnu_libc_version_versions r rr se  ||w::&;<  #%++- 7 N GZ 0sAAAAc ddl}|jd} |j}|j |_|}t|ts|jd}|S#t$rYywxYw#t$rYywxYw)z=Fallback implementation of glibc_version_string using ctypes.rNascii) ctypes ImportErrorCDLLgnu_get_libc_versionrc_char_prestype isinstancestrdecode)rprocess_namespacer version_strs r rrs D)0EE$*?? &(K k3 '!((1 -  s"A A. A+*A+. A:9A:c$t}|yd|fS)zTry to determine the glibc version Returns a tuple of strings (lib, version) which default to empty strings in case the lookup fails. )r)glibc)r ) glibc_versions r libc_verr,Ns )*M''r ) rrtypingrrr$r rrr,r r r r.sU "KhsmK hsm(Xc]^ (%S/ (r