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

import os
import string
import urllib.parse
import urllib.request

from .compat import WINDOWS


def path_to_url(path: str) -> str:
    """
    Convert a path to a file: URL.  The path will be made absolute and have
    quoted path parts.
    """
    path = os.path.normpath(os.path.abspath(path))
    url = urllib.parse.urljoin("file://", urllib.request.pathname2url(path))
    return url


def url_to_path(url: str) -> str:
    """
    Convert a file: URL to a path.
    """
    assert url.startswith(
        "file:"
    ), f"You can only turn file: urls into filenames (not {url!r})"

    _, netloc, path, _, _ = urllib.parse.urlsplit(url)

    if not netloc or netloc == "localhost":
        # According to RFC 8089, same as empty authority.
        netloc = ""
    elif WINDOWS:
        # If we have a UNC path, prepend UNC share notation.
        netloc = "\\\\" + netloc
    else:
        raise ValueError(
            f"non-local file URIs are not supported on this platform: {url!r}"
        )

    path = urllib.request.url2pathname(netloc + path)

    # On Windows, urlsplit parses the path as something like "/C:/Users/foo".
    # This creates issues for path-related functions like io.open(), so we try
    # to detect and strip the leading slash.
    if (
        WINDOWS
        and not netloc  # Not UNC.
        and len(path) >= 3
        and path[0] == "/"  # Leading slash to strip.
        and path[1] in string.ascii_letters  # Drive letter.
        and path[2:4] in (":", ":/")  # Colon + end of string, or colon + absolute path.
    ):
        path = path[1:]

    return path

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).