PHP 8.2.30
Preview: unicode_utils.py Size: 3.11 KB
/opt/cloudlinux/venv/lib/python3.11/site-packages/setuptools/unicode_utils.py

import sys
import unicodedata
from configparser import RawConfigParser

from .compat import py39
from .warnings import SetuptoolsDeprecationWarning


# HFS Plus uses decomposed UTF-8
def decompose(path):
    if isinstance(path, str):
        return unicodedata.normalize('NFD', path)
    try:
        path = path.decode('utf-8')
        path = unicodedata.normalize('NFD', path)
        path = path.encode('utf-8')
    except UnicodeError:
        pass  # Not UTF-8
    return path


def filesys_decode(path):
    """
    Ensure that the given path is decoded,
    ``None`` when no expected encoding works
    """

    if isinstance(path, str):
        return path

    fs_enc = sys.getfilesystemencoding() or 'utf-8'
    candidates = fs_enc, 'utf-8'

    for enc in candidates:
        try:
            return path.decode(enc)
        except UnicodeDecodeError:
            continue

    return None


def try_encode(string, enc):
    "turn unicode encoding into a functional routine"
    try:
        return string.encode(enc)
    except UnicodeEncodeError:
        return None


def _read_utf8_with_fallback(file: str, fallback_encoding=py39.LOCALE_ENCODING) -> str:
    """
    First try to read the file with UTF-8, if there is an error fallback to a
    different encoding ("locale" by default). Returns the content of the file.
    Also useful when reading files that might have been produced by an older version of
    setuptools.
    """
    try:
        with open(file, "r", encoding="utf-8") as f:
            return f.read()
    except UnicodeDecodeError:  # pragma: no cover
        _Utf8EncodingNeeded.emit(file=file, fallback_encoding=fallback_encoding)
        with open(file, "r", encoding=fallback_encoding) as f:
            return f.read()


def _cfg_read_utf8_with_fallback(
    cfg: RawConfigParser, file: str, fallback_encoding=py39.LOCALE_ENCODING
) -> None:
    """Same idea as :func:`_read_utf8_with_fallback`, but for the
    :meth:`RawConfigParser.read` method.

    This method may call ``cfg.clear()``.
    """
    try:
        cfg.read(file, encoding="utf-8")
    except UnicodeDecodeError:  # pragma: no cover
        _Utf8EncodingNeeded.emit(file=file, fallback_encoding=fallback_encoding)
        cfg.clear()
        cfg.read(file, encoding=fallback_encoding)


class _Utf8EncodingNeeded(SetuptoolsDeprecationWarning):
    _SUMMARY = """
    `encoding="utf-8"` fails with {file!r}, trying `encoding={fallback_encoding!r}`.
    """

    _DETAILS = """
    Fallback behavior for UTF-8 is considered **deprecated** and future versions of
    `setuptools` may not implement it.

    Please encode {file!r} with "utf-8" to ensure future builds will succeed.

    If this file was produced by `setuptools` itself, cleaning up the cached files
    and re-building/re-installing the package with a newer version of `setuptools`
    (e.g. by updating `build-system.requires` in its `pyproject.toml`)
    might solve the problem.
    """
    # TODO: Add a deadline?
    #       Will we be able to remove this?
    #       The question comes to mind mainly because of sdists that have been produced
    #       by old versions of setuptools and published to PyPI...

Directory Contents

Dirs: 7 × Files: 43

Name Size Perms Modified Actions
command DIR
- drwxr-xr-x 2026-02-06 08:01:08
Edit Download
compat DIR
- drwxr-xr-x 2026-02-06 08:01:08
Edit Download
config DIR
- drwxr-xr-x 2026-02-06 08:01:08
Edit Download
tests DIR
- drwxr-xr-x 2026-02-06 08:01:49
Edit Download
- drwxr-xr-x 2026-02-06 08:01:08
Edit Download
_vendor DIR
- drwxr-xr-x 2026-02-06 08:01:08
Edit Download
- drwxr-xr-x 2026-02-06 08:05:34
Edit Download
7.18 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
19.50 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
11.50 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
14.00 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
13.50 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
11.50 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
5.83 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
20.76 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
43.83 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
2.95 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
6.53 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
5.92 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
11.50 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
14.00 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
13.50 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
11.50 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
4.97 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
820 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
1.23 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
568 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
3.63 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
40.66 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
3.10 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
218 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
138 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
3.11 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
161 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
3.71 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
9.25 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
726 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
11.70 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
836 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
2.41 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
2.38 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
223 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
657 B lrw-r--r-- 2026-01-20 13:01:47
Edit Download
5.61 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
2.91 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
1.35 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
10.98 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
1.54 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
4.74 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download
8.79 KB lrw-r--r-- 2026-01-20 13:01:47
Edit Download

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