Current Path: > > opt > alt > python313 > > lib > > python3.13 > site-packages > setuptools > _vendor > packaging
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
__init__.py | File | 501 bytes | December 01 2024 12:53:25. | |
_elffile.py | File | 3266 bytes | December 01 2024 12:53:25. | |
_manylinux.py | File | 8926 bytes | December 01 2024 12:53:25. | |
_musllinux.py | File | 2524 bytes | December 01 2024 12:53:25. | |
_parser.py | File | 10194 bytes | December 01 2024 12:53:25. | |
_structures.py | File | 1431 bytes | December 01 2024 12:53:25. | |
_tokenizer.py | File | 5292 bytes | December 01 2024 12:53:25. | |
markers.py | File | 8208 bytes | December 01 2024 12:53:25. | |
metadata.py | File | 16397 bytes | December 01 2024 12:53:25. | |
py.typed | File | 0 bytes | December 01 2024 12:53:25. | |
requirements.py | File | 3287 bytes | December 01 2024 12:53:25. | |
specifiers.py | File | 39206 bytes | December 01 2024 12:53:25. | |
tags.py | File | 18106 bytes | December 01 2024 12:53:25. | |
utils.py | File | 4355 bytes | December 01 2024 12:53:25. | |
version.py | File | 16326 bytes | December 01 2024 12:53:25. |
"""PEP 656 support. This module implements logic to detect if the currently running Python is linked against musl, and what musl version is used. """ import functools import re import subprocess import sys from typing import Iterator, NamedTuple, Optional from ._elffile import ELFFile class _MuslVersion(NamedTuple): major: int minor: int def _parse_musl_version(output: str) -> Optional[_MuslVersion]: lines = [n for n in (n.strip() for n in output.splitlines()) if n] if len(lines) < 2 or lines[0][:4] != "musl": return None m = re.match(r"Version (\d+)\.(\d+)", lines[1]) if not m: return None return _MuslVersion(major=int(m.group(1)), minor=int(m.group(2))) @functools.lru_cache() def _get_musl_version(executable: str) -> Optional[_MuslVersion]: """Detect 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 """ try: with open(executable, "rb") as f: ld = ELFFile(f).interpreter except (OSError, TypeError, ValueError): return None if ld is None or "musl" not in ld: return None proc = subprocess.run([ld], stderr=subprocess.PIPE, universal_newlines=True) return _parse_musl_version(proc.stderr) def platform_tags(arch: str) -> Iterator[str]: """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. """ sys_musl = _get_musl_version(sys.executable) if sys_musl is None: # Python not dynamically linked against musl. return for minor in range(sys_musl.minor, -1, -1): yield f"musllinux_{sys_musl.major}_{minor}_{arch}" if __name__ == "__main__": # pragma: no cover import sysconfig plat = sysconfig.get_platform() assert plat.startswith("linux-"), "not linux" print("plat:", plat) print("musl:", _get_musl_version(sys.executable)) print("tags:", end=" ") for t in platform_tags(re.sub(r"[.-]", "_", plat.split("-", 1)[-1])): print(t, end="\n ")
SILENT KILLER Tool