PHP 8.2.30
Preview: compat.py Size: 1.84 KB
//opt/alt/python310/lib/python3.10/site-packages/pip/_internal/utils/compat.py

"""Stuff that differs in different Python versions and platform
distributions."""

import logging
import os
import sys

__all__ = ["get_path_uid", "stdlib_pkgs", "WINDOWS"]


logger = logging.getLogger(__name__)


def has_tls() -> bool:
    try:
        import _ssl  # noqa: F401  # ignore unused

        return True
    except ImportError:
        pass

    from pip._vendor.urllib3.util import IS_PYOPENSSL

    return IS_PYOPENSSL


def get_path_uid(path: str) -> int:
    """
    Return path's uid.

    Does not follow symlinks:
        https://github.com/pypa/pip/pull/935#discussion_r5307003

    Placed this function in compat due to differences on AIX and
    Jython, that should eventually go away.

    :raises OSError: When path is a symlink or can't be read.
    """
    if hasattr(os, "O_NOFOLLOW"):
        fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW)
        file_uid = os.fstat(fd).st_uid
        os.close(fd)
    else:  # AIX and Jython
        # WARNING: time of check vulnerability, but best we can do w/o NOFOLLOW
        if not os.path.islink(path):
            # older versions of Jython don't have `os.fstat`
            file_uid = os.stat(path).st_uid
        else:
            # raise OSError for parity with os.O_NOFOLLOW above
            raise OSError(f"{path} is a symlink; Will not return uid for symlinks")
    return file_uid


# packages in the stdlib that may have installation metadata, but should not be
# considered 'installed'.  this theoretically could be determined based on
# dist.location (py27:`sysconfig.get_paths()['stdlib']`,
# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may
# make this ineffective, so hard-coding
stdlib_pkgs = {"python", "wsgiref", "argparse"}


# windows detection, covers cpython and ironpython
WINDOWS = sys.platform.startswith("win") or (sys.platform == "cli" and os.name == "nt")

Directory Contents

Dirs: 1 × Files: 30

Name Size Perms Modified Actions
- drwxr-xr-x 2026-02-10 08:08:40
Edit Download
1.63 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
1.84 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
5.25 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
242 B lrw-r--r-- 2026-01-09 15:17:41
Edit Download
3.54 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
3.13 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
1.22 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
2.15 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
1.14 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
1.10 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
5.75 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
716 B lrw-r--r-- 2026-01-09 15:17:41
Edit Download
3.04 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
4.70 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
795 B lrw-r--r-- 2026-01-09 15:17:41
Edit Download
11.26 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
20.29 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
1.17 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
2.88 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
3.12 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
987 B lrw-r--r-- 2026-01-09 15:17:41
Edit Download
4.59 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
9.82 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
7.48 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
8.70 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
1.72 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
3.38 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
6.02 KB lrw-r--r-- 2026-01-09 15:17:41
Edit Download
1015 B lrw-r--r-- 2026-01-09 15:17:41
Edit Download
0 B lrw-r--r-- 2026-01-09 15:17:41
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).