File: //opt/saltstack/salt/lib/python3.10/site-packages/rich/__pycache__/align.cpython-310.pyc
o
;j�) � @ s@ d dl mZ d dlmZmZmZmZ ddlmZ ddl m
Z
ddlmZ ddl
mZ ddlmZ er>dd lmZmZmZmZ ed
Zed ZG dd
� d
e
�ZG dd� de
�Zedkr�d dlmZmZ d dlmZ d dlm Z e� Z!e� Ze ee�"e!d��e�#e!d��e�$e!d���ddd
d�Z%e�&ej#e%ddej'd�� dS dS )� )�chain)�
TYPE_CHECKING�Iterable�Optional�Literal� )� Constrain)�JupyterMixin)�Measurement)�Segment)� StyleType)�Console�ConsoleOptions�RenderableType�RenderResult��left�center�right��top�middleZbottomc @ st e Zd ZdZ d"ddddd�ddded ee d
ee dedee d
ee ddfdd�Z
defdd�Ze
d#ddddd�ddd ee d
ee dedee d
ee dd fdd��Ze
d#ddddd�ddd ee d
ee dedee d
ee dd fdd��Ze
d#ddddd�ddd ee d
ee dedee d
ee dd fdd��Z d$dd�Zdddddefd d!�ZdS )%�Aligna� Align a renderable by adding spaces if necessary.
Args:
renderable (RenderableType): A console renderable.
align (AlignMethod): One of "left", "center", or "right""
style (StyleType, optional): An optional style to apply to the background.
vertical (Optional[VerticalAlignMethod], optional): Optional vertical align, one of "top", "middle", or "bottom". Defaults to None.
pad (bool, optional): Pad the right with spaces. Defaults to True.
width (int, optional): Restrict contents to given width, or None to use default width. Defaults to None.
height (int, optional): Set height of align renderable, or None to fit to contents. Defaults to None.
Raises:
ValueError: if ``align`` is not one of the expected values.
Example:
.. code-block:: python
from rich.console import Console
from rich.align import Align
from rich.panel import Panel
console = Console()
# Create a panel 20 characters wide
p = Panel("Hello, [b]World[/b]!", style="on green", width=20)
# Renders the panel centered in the terminal
console.print(Align(p, align="center"))
r NT)�vertical�pad�width�height�
renderabler �align�styler r r r �returnc C sf |dvrt d|�d���|d ur|dvrt d|�d���|| _|| _|| _|| _|| _|| _|| _d S )Nr zDinvalid value for align, expected "left", "center", or "right" (not �)r zGinvalid value for vertical, expected "top", "middle", or "bottom" (not )�
ValueErrorr r r r r r r )�selfr r r r r r r � r$ �>/opt/saltstack/salt/lib/python3.10/site-packages/rich/align.py�__init__/ s
�
�
zAlign.__init__c C s d| j �d| j�d�S )NzAlign(z, r! )r r �r# r$ r$ r% �__repr__J s zAlign.__repr__c C � | |d|||||d�S )zAlign a renderable to the left.r �r r r r r r$ ��clsr r r r r r r$ r$ r% r M � �z
Align.leftc C r) )z!Align a renderable to the center.r r* r$ r+ r$ r$ r% r c r- zAlign.centerc C r) )z Align a renderable to the right.r r* r$ r+ r$ r$ r% r y r- zAlign.right�consoler
�optionsr r c # s� � �j � |j�j|d�j}|�t�j�jd u r|nt|�j��|jd d��}t t
�|���t
���\}}t
�
�||��t
�� �|j| ��jd urO|��j�nd �dtt
f� �����fdd�}�jrrt
d�jpk|j � d���nt
d��dtdtt
f�fd d
�}�jp�|j}�jr�|d ur̈jdkr�|| } t|� || ��}
n-�jdkr�|| d
}|| | } t||�|� || ��}
n|| }t||�|� �}
n|� }
�jr�|��j��t
�|
��}
|
E d H d S )N)r/ �r r c 3 s � �dkr�D ]
} | E d H �V qd S � dkr8�j r"td� ��nd }�D ]} | E d H |r2|V �V q&d S � dkrn�d }td| ��}�j rStd�| ��nd }�D ]} |r^|V | E d H |rh|V �V qWd S � dkr�td� ��}�D ]} |V | E d H �V q{d S d S )Nr r � r � r )r r )�liner r Z pad_right)r �excess_space�lines�new_liner# r r$ r% �generate_segments� sF �
�
��
�
�z1Align.__rich_console__.<locals>.generate_segmentsr1 �
�countc 3 s&