PHP 8.2.30
Preview: packaging.py Size: 1.56 KB
//opt/hc_python/lib/python3.12/site-packages/pip/_internal/utils/packaging.py

from __future__ import annotations

import functools
import logging

from pip._vendor.packaging import specifiers, version
from pip._vendor.packaging.requirements import Requirement

logger = logging.getLogger(__name__)


@functools.lru_cache(maxsize=32)
def check_requires_python(
    requires_python: str | None, version_info: tuple[int, ...]
) -> bool:
    """
    Check if the given Python version matches a "Requires-Python" specifier.

    :param version_info: A 3-tuple of ints representing a Python
        major-minor-micro version to check (e.g. `sys.version_info[:3]`).

    :return: `True` if the given Python version satisfies the requirement.
        Otherwise, return `False`.

    :raises InvalidSpecifier: If `requires_python` has an invalid format.
    """
    if requires_python is None:
        # The package provides no information
        return True
    requires_python_specifier = specifiers.SpecifierSet(requires_python)

    python_version = version.parse(".".join(map(str, version_info)))
    return python_version in requires_python_specifier


@functools.lru_cache(maxsize=10000)
def get_requirement(req_string: str) -> Requirement:
    """Construct a packaging.Requirement object with caching"""
    # Parsing requirement strings is expensive, and is also expected to happen
    # with a low diversity of different arguments (at least relative the number
    # constructed). This method adds a cache to requirement object creation to
    # minimize repeated parsing of the same string to construct equivalent
    # Requirement objects.
    return Requirement(req_string)

Directory Contents

Dirs: 1 × Files: 25

Name Size Perms Modified Actions
- drwxr-xr-x 2025-12-03 08:02:41
Edit Download
1.64 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
2.46 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
6.47 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
241 B lrw-r--r-- 2025-12-03 08:02:41
Edit Download
3.61 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
3.13 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
2.40 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
3.25 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
5.37 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
689 B lrw-r--r-- 2025-12-03 08:02:41
Edit Download
3.64 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
4.88 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
11.82 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
22.83 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
1.56 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
1.43 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
8.77 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
9.09 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
12.67 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
1.56 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
3.37 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
4.36 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
3.27 KB lrw-r--r-- 2025-12-03 08:02:41
Edit Download
1015 B lrw-r--r-- 2025-12-03 08:02:41
Edit Download
0 B lrw-r--r-- 2025-12-03 08:02:41
Edit Download

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