File: //usr/local/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-310.pyc
o
��i� �
@ sL d dl Z d dlmZ d dlmZmZ ddlmZ e �d�j Z
ed�ded efd
d��Z
e
fdedeegef d efd
d�Zedd�ded efdd��Zedd�ded efdd��Zdeded efdd�Zd%dededed ee fdd�Zedkr�eed�� edd �D ]Zee� q�ed!dd"�D ]Zeede�d# � ed$e � q�dS dS )&� N)� lru_cache)�Callable�List� )�CELL_WIDTHSu ^[ -o ˿Ͱ-҂]*$i �text�returnc s t � t� fdd�| D ��}|S )a/ 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.
c 3 � � | ]}� |�V qd S �N� ��.0� character�� _get_sizer �A/usr/local/lib/python3.10/site-packages/pip/_vendor/rich/cells.py� <genexpr> � � z"cached_cell_len.<locals>.<genexpr>)�get_character_cell_size�sum)r �
total_sizer r r �cached_cell_len s
r � _cell_lenc s2 t | �dk r
|| �S t� t� fdd�| D ��}|S )z�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.
i c 3 r r
r r r r r r ) r zcell_len.<locals>.<genexpr>)�lenr r )r r r r r r �cell_len s
r )�maxsizer c C s t t| ��S )��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.
)�_get_codepoint_cell_size�ord)r r r r r - s
r � codepointc C s� t }d}t|�d }|| d } || \}}}| |k r!|d }n| |kr*|d }n|dkr0dS |S ||k r9 dS || d }q)r r r � T���)r r )r �_table�lower_bound�upper_bound�index�start�end�widthr r r r : s
��r �totalc C s� t | �rt| �}||k r| d|| S | d|� S |dkr dS t| �}||kr*| S ||k r6| d|| S d}t| �} || d }| d|d � }t|�}||d kret|d �dkre|dd� d S ||krk|S ||krr|}n|}q=) z?Set the length of a string to fit within given number of cells.� Nr � Tr r r! )�_is_single_cell_widthsr r ) r r) �size� cell_sizer&