GRAYBYTE WORDPRESS FILE MANAGER6389

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.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
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/alt/python313/lib/python3.13/site-packages/pip/_vendor/rich/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/python313/lib/python3.13/site-packages/pip/_vendor/rich//cells.py
import re
from functools import lru_cache
from typing import Callable, List

from ._cell_widths import CELL_WIDTHS

# Regex to match sequence of the most common character ranges
_is_single_cell_widths = re.compile("^[\u0020-\u006f\u00a0\u02ff\u0370-\u0482]*$").match


@lru_cache(4096)
def cached_cell_len(text: str) -> int:
    """Get the number of cells required to display text.

    This method always caches, which may use up a lot of memory. It is recommended to use
    `cell_len` over this method.

    Args:
        text (str): Text to display.

    Returns:
        int: Get the number of cells required to display text.
    """
    _get_size = get_character_cell_size
    total_size = sum(_get_size(character) for character in text)
    return total_size


def cell_len(text: str, _cell_len: Callable[[str], int] = cached_cell_len) -> int:
    """Get the number of cells required to display text.

    Args:
        text (str): Text to display.

    Returns:
        int: Get the number of cells required to display text.
    """
    if len(text) < 512:
        return _cell_len(text)
    _get_size = get_character_cell_size
    total_size = sum(_get_size(character) for character in text)
    return total_size


@lru_cache(maxsize=4096)
def get_character_cell_size(character: str) -> int:
    """Get the cell size of a character.

    Args:
        character (str): A single character.

    Returns:
        int: Number of cells (0, 1 or 2) occupied by that character.
    """
    return _get_codepoint_cell_size(ord(character))


@lru_cache(maxsize=4096)
def _get_codepoint_cell_size(codepoint: int) -> int:
    """Get the cell size of a character.

    Args:
        codepoint (int): Codepoint of a character.

    Returns:
        int: Number of cells (0, 1 or 2) occupied by that character.
    """

    _table = CELL_WIDTHS
    lower_bound = 0
    upper_bound = len(_table) - 1
    index = (lower_bound + upper_bound) // 2
    while True:
        start, end, width = _table[index]
        if codepoint < start:
            upper_bound = index - 1
        elif codepoint > end:
            lower_bound = index + 1
        else:
            return 0 if width == -1 else width
        if upper_bound < lower_bound:
            break
        index = (lower_bound + upper_bound) // 2
    return 1


def set_cell_size(text: str, total: int) -> str:
    """Set the length of a string to fit within given number of cells."""

    if _is_single_cell_widths(text):
        size = len(text)
        if size < total:
            return text + " " * (total - size)
        return text[:total]

    if total <= 0:
        return ""
    cell_size = cell_len(text)
    if cell_size == total:
        return text
    if cell_size < total:
        return text + " " * (total - cell_size)

    start = 0
    end = len(text)

    # Binary search until we find the right size
    while True:
        pos = (start + end) // 2
        before = text[: pos + 1]
        before_len = cell_len(before)
        if before_len == total + 1 and cell_len(before[-1]) == 2:
            return before[:-1] + " "
        if before_len == total:
            return before
        if before_len > total:
            end = pos
        else:
            start = pos


# TODO: This is inefficient
# TODO: This might not work with CWJ type characters
def chop_cells(text: str, max_size: int, position: int = 0) -> List[str]:
    """Break text in to equal (cell) length strings, returning the characters in reverse
    order"""
    _get_character_cell_size = get_character_cell_size
    characters = [
        (character, _get_character_cell_size(character)) for character in text
    ]
    total_size = position
    lines: List[List[str]] = [[]]
    append = lines[-1].append

    for character, size in reversed(characters):
        if total_size + size > max_size:
            lines.append([character])
            append = lines[-1].append
            total_size = size
        else:
            total_size += size
            append(character)

    return ["".join(line) for line in lines]


if __name__ == "__main__":  # pragma: no cover

    print(get_character_cell_size("😽"))
    for line in chop_cells("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", 8):
        print(line)
    for n in range(80, 1, -1):
        print(set_cell_size("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", n) + "|")
        print("x" * n)

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
January 15 2025 09:40:17
root / linksafe
0755
__pycache__
--
January 15 2025 09:40:17
root / linksafe
0755
__init__.py
5.947 KB
December 01 2024 12:47:36
root / linksafe
0644
__main__.py
8.279 KB
December 01 2024 12:47:36
root / linksafe
0644
_cell_widths.py
9.859 KB
December 01 2024 12:47:36
root / linksafe
0644
_emoji_codes.py
136.948 KB
December 01 2024 12:47:36
root / linksafe
0644
_emoji_replace.py
1.039 KB
December 01 2024 12:47:36
root / linksafe
0644
_export_format.py
2.051 KB
December 01 2024 12:47:36
root / linksafe
0644
_extension.py
0.259 KB
December 01 2024 12:47:36
root / linksafe
0644
_fileno.py
0.78 KB
December 01 2024 12:47:36
root / linksafe
0644
_inspect.py
9.468 KB
December 01 2024 12:47:36
root / linksafe
0644
_log_render.py
3.149 KB
December 01 2024 12:47:36
root / linksafe
0644
_loop.py
1.207 KB
December 01 2024 12:47:36
root / linksafe
0644
_null_file.py
1.354 KB
December 01 2024 12:47:36
root / linksafe
0644
_palettes.py
6.897 KB
December 01 2024 12:47:36
root / linksafe
0644
_pick.py
0.413 KB
December 01 2024 12:47:36
root / linksafe
0644
_ratio.py
5.344 KB
December 01 2024 12:47:36
root / linksafe
0644
_spinners.py
19.452 KB
December 01 2024 12:47:36
root / linksafe
0644
_stack.py
0.343 KB
December 01 2024 12:47:36
root / linksafe
0644
_timer.py
0.407 KB
December 01 2024 12:47:36
root / linksafe
0644
_win32_console.py
22.285 KB
December 01 2024 12:47:36
root / linksafe
0644
_windows.py
1.881 KB
December 01 2024 12:47:36
root / linksafe
0644
_windows_renderer.py
2.718 KB
December 01 2024 12:47:36
root / linksafe
0644
_wrap.py
1.797 KB
December 01 2024 12:47:36
root / linksafe
0644
abc.py
0.869 KB
December 01 2024 12:47:36
root / linksafe
0644
align.py
10.125 KB
December 01 2024 12:47:36
root / linksafe
0644
ansi.py
6.744 KB
December 01 2024 12:47:36
root / linksafe
0644
bar.py
3.188 KB
December 01 2024 12:47:36
root / linksafe
0644
box.py
9.611 KB
December 01 2024 12:47:36
root / linksafe
0644
cells.py
4.403 KB
December 01 2024 12:47:36
root / linksafe
0644
color.py
17.797 KB
December 01 2024 12:47:36
root / linksafe
0644
color_triplet.py
1.029 KB
December 01 2024 12:47:36
root / linksafe
0644
columns.py
6.964 KB
December 01 2024 12:47:36
root / linksafe
0644
console.py
96.893 KB
December 01 2024 12:47:36
root / linksafe
0644
constrain.py
1.258 KB
December 01 2024 12:47:36
root / linksafe
0644
containers.py
5.368 KB
December 01 2024 12:47:36
root / linksafe
0644
control.py
6.475 KB
December 01 2024 12:47:36
root / linksafe
0644
default_styles.py
7.893 KB
December 01 2024 12:47:36
root / linksafe
0644
diagnose.py
0.949 KB
December 01 2024 12:47:36
root / linksafe
0644
emoji.py
2.442 KB
December 01 2024 12:47:36
root / linksafe
0644
errors.py
0.627 KB
December 01 2024 12:47:36
root / linksafe
0644
file_proxy.py
1.644 KB
December 01 2024 12:47:36
root / linksafe
0644
filesize.py
2.449 KB
December 01 2024 12:47:36
root / linksafe
0644
highlighter.py
9.359 KB
December 01 2024 12:47:36
root / linksafe
0644
json.py
4.914 KB
December 01 2024 12:47:36
root / linksafe
0644
jupyter.py
3.176 KB
December 01 2024 12:47:36
root / linksafe
0644
layout.py
13.679 KB
December 01 2024 12:47:36
root / linksafe
0644
live.py
13.938 KB
December 01 2024 12:47:36
root / linksafe
0644
live_render.py
3.581 KB
December 01 2024 12:47:36
root / linksafe
0644
logging.py
11.624 KB
December 01 2024 12:47:36
root / linksafe
0644
markup.py
8.006 KB
December 01 2024 12:47:36
root / linksafe
0644
measure.py
5.181 KB
December 01 2024 12:47:36
root / linksafe
0644
padding.py
4.854 KB
December 01 2024 12:47:36
root / linksafe
0644
pager.py
0.809 KB
December 01 2024 12:47:36
root / linksafe
0644
palette.py
3.316 KB
December 01 2024 12:47:36
root / linksafe
0644
panel.py
10.326 KB
December 01 2024 12:47:36
root / linksafe
0644
pretty.py
35.012 KB
December 01 2024 12:47:36
root / linksafe
0644
progress.py
58.307 KB
December 01 2024 12:47:36
root / linksafe
0644
progress_bar.py
7.974 KB
December 01 2024 12:47:36
root / linksafe
0644
prompt.py
11.038 KB
December 01 2024 12:47:36
root / linksafe
0644
protocol.py
1.358 KB
December 01 2024 12:47:36
root / linksafe
0644
py.typed
0 KB
December 01 2024 12:47:36
root / linksafe
0644
region.py
0.162 KB
December 01 2024 12:47:36
root / linksafe
0644
repr.py
4.327 KB
December 01 2024 12:47:36
root / linksafe
0644
rule.py
4.494 KB
December 01 2024 12:47:36
root / linksafe
0644
scope.py
2.776 KB
December 01 2024 12:47:36
root / linksafe
0644
screen.py
1.554 KB
December 01 2024 12:47:36
root / linksafe
0644
segment.py
23.679 KB
December 01 2024 12:47:36
root / linksafe
0644
spinner.py
4.237 KB
December 01 2024 12:47:36
root / linksafe
0644
status.py
4.321 KB
December 01 2024 12:47:36
root / linksafe
0644
style.py
26.438 KB
December 01 2024 12:47:36
root / linksafe
0644
styled.py
1.229 KB
December 01 2024 12:47:36
root / linksafe
0644
syntax.py
34.349 KB
December 01 2024 12:47:36
root / linksafe
0644
table.py
38.754 KB
December 01 2024 12:47:36
root / linksafe
0644
terminal_theme.py
3.291 KB
December 01 2024 12:47:36
root / linksafe
0644
text.py
44.458 KB
December 01 2024 12:47:36
root / linksafe
0644
theme.py
3.688 KB
December 01 2024 12:47:36
root / linksafe
0644
themes.py
0.1 KB
December 01 2024 12:47:36
root / linksafe
0644
traceback.py
28.91 KB
December 01 2024 12:47:36
root / linksafe
0644
tree.py
8.954 KB
December 01 2024 12:47:36
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF