HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc
o

@%Ne�6�@sxddlmZmZddlmZddlmZddlmZddl	m
Z
mZmZm
Z
mZmZmZmZmZddlmZddlmZdd	lmZmZmZmZdd
lmZddlmZddl m!Z!dd
l"m#Z#m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*e
r|ddl+m,Z,Gdd�de�Z-ede&fZ.ede-fZ/Gdd�de0�Z1Gdd�de1�Z2Gdd�d�Z3Gdd�de�Z4Gdd�de4�Z5Gdd �d e4�Z6e#Gd!d�d��Z7e8d"k�r:dd#l9mZe�Ze7�Z:e:�;e7d$d%d&�e7dd'd(�e7d)d*d+��e:d'�<e7d,d-�e7d.d/d0��e:d.�<e7d1d/d0�e7d2d-��e:d2�;e7d3d-�e7d4d-�e7d5d-��e:d,�;e7e:j=d6d-�e7d7d-��e:d1�>d8�e�?e:�d9Sd9S):�)�ABC�abstractmethod)�islice)�
itemgetter)�RLock)	�
TYPE_CHECKING�Dict�Iterable�List�
NamedTuple�Optional�Sequence�Tuple�Union�)�
ratio_resolve)�Align)�Console�ConsoleOptions�RenderableType�RenderResult)�ReprHighlighter)�Panel)�Pretty)�	rich_repr�Result)�Region)�Segment)�	StyleType��Treec@s*eZdZUdZeed<eeeed<dS)�LayoutRenderzAn individual layout render.�region�renderN)�__name__�
__module__�__qualname__�__doc__r�__annotations__r
r�r)r)�9/usr/lib/python3/dist-packages/pip/_vendor/rich/layout.pyr! s
r!�Layoutc@�eZdZdZdS)�LayoutErrorzLayout related error.N�r$r%r&r'r)r)r)r*r-+�r-c@r,)�
NoSplitterz"Requested splitter does not exist.Nr.r)r)r)r*r0/r/r0c@sDeZdZdZe�Zddddeddfdd	�Zd
ede	de
fdd
�ZdS)�_Placeholderz4An internal renderable used as a Layout placeholder.��layoutr+�style�returnNcCs||_||_dS�N)r3r4)�selfr3r4r)r)r*�__init__8s
z_Placeholder.__init__�console�optionsccsx�|j}|jp
|jj}|j}|jr|j�d|�d|�d�nd|�d|�d�}ttjt|�dd�|j	|�
|�dd�VdS)	Nz (z x �)�(�middle)�vertical�blue)r4�title�border_style)�	max_width�height�sizer3�namerr�centerrr4�highlighter)r7r9r:�widthrCr3r@r)r)r*�__rich_console__<s����z_Placeholder.__rich_console__)r2)r$r%r&r'rrGrr8rrrrIr)r)r)r*r13s���r1c
@sZeZdZUdZdZeed<edefdd��Zede	dd	e
deede
ffd
d��Z
dS)
�SplitterzBase class for a splitter.r2rEr5cC�dS)z(Get the icon (emoji) used in layout.treeNr)�r7r)r)r*�
get_tree_iconT�zSplitter.get_tree_icon�childrenr+r"cCrK)z�Divide a region amongst several child layouts.

        Args:
            children (Sequence(Layout)): A number of child layouts.
            region (Region): A rectangular region to divide.
        Nr))r7rOr"r)r)r*�divideXrNzSplitter.divideN)r$r%r&r'rE�strr(rrMr
rr	rrPr)r)r)r*rJOs
���rJc	@�HeZdZdZdZdefdd�Zdeddede	e
deffd	d
�ZdS)�RowSplitterz!Split a layout region in to rows.�rowr5cCrK)Nu[layout.tree.row]⬌r)rLr)r)r*rMi�zRowSplitter.get_tree_iconrOr+r"ccsX�|\}}}}t||�}d}t}	t||�D]\}
}|
|	|||||�fV||7}qdS�Nr�rr�zip)r7rOr"�x�yrHrC�
render_widths�offset�_Region�child�child_widthr)r)r*rPl��

�zRowSplitter.divideN�r$r%r&r'rErQrMr
rr	rrPr)r)r)r*rSd����rSc	@rR)�ColumnSplitterz$Split a layout region in to columns.�columnr5cCrK)Nu[layout.tree.column]⬍r)rLr)r)r*rM}rUzColumnSplitter.get_tree_iconrOr+r"ccsX�|\}}}}t||�}d}t}	t||�D]\}
}|
|	|||||�fV||7}qdSrVrW)r7rOr"rYrZrHrC�render_heightsr\r]r^�child_heightr)r)r*rP�r`zColumnSplitter.divideNrar)r)r)r*rcxrbrcc@s�eZdZdZeed�Z	d=ddddddd�deedee	d	ee
d
e
de
ded
ee
ddfdd�Zde
fdd�Zedefdd��Zededfdd��Zedefdd��Zde	dedfdd�Zde	ddfdd�Zed>dd��Zd d!�d"edefd#eee	fddfd$d%�Zd"edefddfd&d'�Zd"edefddfd(d)�Zd"edefddfd*d+�Zd?d,d-�Zdeddfd.d/�Zd0d1d2e	ddfd3d4�Z d5e
d
e
de!fd6d7�Z"d0e#d8e$defd9d:�Z%d0e#d8e$de&fd;d<�Z'dS)@r+aBA renderable to divide a fixed height in to rows or columns.

    Args:
        renderable (RenderableType, optional): Renderable content, or None for placeholder. Defaults to None.
        name (str, optional): Optional identifier for Layout. Defaults to None.
        size (int, optional): Optional fixed size of layout. Defaults to None.
        minimum_size (int, optional): Minimum size of layout. Defaults to 1.
        ratio (int, optional): Optional ratio for flexible layout. Defaults to 1.
        visible (bool, optional): Visibility of layout. Defaults to True.
    )rTrdNrT)rErD�minimum_size�ratio�visiblerC�
renderablerErDrgrhrirCr5cCsX|pt|�|_||_||_||_||_||_||_|jd�|_	g|_
i|_t�|_
dS)Nrd)r1�_renderablerDrgrhrErirC�	splitters�splitter�	_children�_render_mapr�_lock)r7rjrErDrgrhrirCr)r)r*r8�szLayout.__init__ccs>�d|jdfVd|jdfVd|jdfVd|jdfVdS)NrErDrgrrh)rErDrgrhrLr)r)r*�
__rich_repr__�s
�zLayout.__rich_repr__cCs|jr|S|jS)zLayout renderable.)rnrkrLr)r)r*rj��zLayout.renderablecCsdd�|jD�S)zGets (visible) layout children.cSsg|]}|jr|�qSr))ri)�.0r^r)r)r*�
<listcomp>�sz#Layout.children.<locals>.<listcomp>�rnrLr)r)r*rO�rrzLayout.childrencCs|jS)zGet a map of the last render.)rorLr)r)r*�map�sz
Layout.mapcCs8|j|kr|S|jD]}|�|�}|dur|Sq
dS)z�Get a named layout, or None if it doesn't exist.

        Args:
            name (str): Name of layout.

        Returns:
            Optional[Layout]: Layout instance or None if no layout was found.
        N)rErn�get)r7rEr^�named_layoutr)r)r*rw�s
	

�z
Layout.getcCs$|�|�}|durtd|����|S)NzNo layout with name )rw�KeyError)r7rEr3r)r)r*�__getitem__�s
zLayout.__getitem__r cszddlm�ddlm�ddlm}ddd�f��fdd	��|}|�|�d
|jj��dd�}d��fdd���||�|S)z/Get a tree renderable to show layout structure.r)�Styled)�Tablerr3r+r5csF|j��}�jdd�}|jrt|�n�t|�d�}|�||�|}|S)N)rrrr)�padding�dim)rmrM�gridrir�add_row)r3�icon�table�text�_summary)r{r|r)r*�summary�s
�zLayout.tree.<locals>.summary�layout.tree.T)�guide_style�	highlight�treer Ncs2|jD]}�|j�|�d|jj��d�|�qdS)Nr�)r�)rn�addrmrE)r�r3r^)�recurser�r)r*r��s
���zLayout.tree.<locals>.recurse)r�r r3r+r5N)�pip._vendor.rich.styledr{�pip._vendor.rich.tabler|�pip._vendor.rich.treer rmrE)r7r r3r�r))r{r|r�r�r*r��s
�

zLayout.treerd)rm�layoutsrmcGs^dd�|D�}zt|t�r|n|j|�|_Wnty%td|����w||jdd�<dS)z�Split the layout in to multiple sub-layouts.

        Args:
            *layouts (Layout): Positional arguments should be (sub) Layout instances.
            splitter (Union[Splitter, str]): Splitter instance or name of splitter.
        cSs"g|]
}t|t�r|nt|��qSr)��
isinstancer+�rsr3r)r)r*rts��z Layout.split.<locals>.<listcomp>zNo splitter called N)r�rJrlrmryr0rn)r7rmr��_layoutsr)r)r*�splits��
��zLayout.splitcGsdd�|D�}|j�|�dS)z�Add a new layout(s) to existing split.

        Args:
            *layouts (Union[Layout, RenderableType]): Positional arguments should be renderables or (sub) Layout instances.

        css&�|]}t|t�r|nt|�VqdSr6r�r�r)r)r*�	<genexpr>'s
��
�z#Layout.add_split.<locals>.<genexpr>N)rn�extend)r7r�r�r)r)r*�	add_split s�zLayout.add_splitcG�|j|ddi�dS)z�Split the layout in tow a row (Layouts side by side).

        Args:
            *layouts (Layout): Positional arguments should be (sub) Layout instances.
        rmrTN�r��r7r�r)r)r*�	split_row-�zLayout.split_rowcGr�)z�Split the layout in to a column (layouts stacked on top of each other).

        Args:
            *layouts (Layout): Positional arguments should be (sub) Layout instances.
        rmrdNr�r�r)r)r*�split_column5r�zLayout.split_columncCs|jdd�=dS)zReset splits to initial state.NrurLr)r)r*�unsplit=szLayout.unsplitcCs2|j�||_Wd�dS1swYdS)zjUpdate renderable.

        Args:
            renderable (RenderableType): New renderable object.
        N)rprk)r7rjr)r)r*�updateAs"�z
Layout.updater9r�layout_namecCs�|j�4||}|j|\}}|\}}}}	|�||j�||	��}
t||
�|j|<|�|
||�Wd�dS1s:wYdS)z�Refresh a sub-layout.

        Args:
            console (Console): Console instance where Layout is to be rendered.
            layout_name (str): Name of layout.
        N)rpro�render_linesr:�update_dimensionsr!�update_screen_lines)r7r9r�r3r"�_linesrYrZrHrC�linesr)r)r*�refresh_screenJs�"�zLayout.refresh_screenrHc
Cs�|tdd||�fg}|j}|j}g}|j}|r7||��|d\}}	|j}
|
r5|j�|
|	�D]}||�q.|sdd�t|td�d�D�}|S)z,Create a dict that maps layout on to Region.r���cSsi|]\}}||�qSr)r)�rsr3r"r)r)r*�
<dictcomp>js��z+Layout._make_region_map.<locals>.<dictcomp>r)�key)r�append�poprOrmrP�sortedr)
r7rHrC�stack�pushr��layout_regions�append_layout_regionr3r"rO�child_and_region�
region_mapr)r)r*�_make_region_map[s"

��zLayout._make_region_mapr:c
Csv|j}|jp|j}|�||�}dd�|��D�}i}|j}|j}	|D]\}
}||
j|	|j|j��}t||�||
<q"|S)z�Render the sub_layouts.

        Args:
            console (Console): Console instance.
            options (ConsoleOptions): Console options.

        Returns:
            RenderMap: A dict that maps Layout on to a tuple of Region, lines
        cSsg|]\}}|js||f�qSr))rOr�r)r)r*rt}s��z!Layout.render.<locals>.<listcomp>)	rBrCr��itemsr�r�rjrHr!)
r7r9r:�render_width�
render_heightr�r��
render_mapr�r�r3r"r�r)r)r*r#ps
��z
Layout.renderccs��|j�b|jp
|j}|jp|j}|�||�||��}||_dd�t|�D�}t}|�	�D]\}}	|\}
}}}
t
|||||
�|	�D]	\}}|�|�qBq-t�
�}|D]
}|EdH|VqSWd�dS1siwYdS)NcSsg|]}g�qSr)r))rs�_r)r)r*rt�sz+Layout.__rich_console__.<locals>.<listcomp>)rprBrHrCr#r�ro�ranger�valuesrXr�r�line)r7r9r:rHrCr��layout_lines�_islicer"r��_xrZ�
_layout_width�
layout_heightrTr��new_line�
layout_rowr)r)r*rI�s*���
�"�zLayout.__rich_console__r6)r5r )r5N)(r$r%r&r'rSrcrlrrrQ�int�boolr8rrq�propertyrjr
rO�	RenderMaprvrwrzr�rrJr�r�r�r�r�r�r��	RegionMapr�rrr#rrIr)r)r)r*r+�s|
��������	�

�*�
�
�
�

	����__main__)r�header�)rErD�main)rhrE�
�footer)rDrE�side)rE�body�)rErh�content�s2�topr=�bottom�left1�left2�fooN)@�abcrr�	itertoolsr�operatorr�	threadingr�typingrrr	r
rrr
rr�_ratior�alignrr9rrrrrGr�panelr�prettyr�reprrrr"r�segmentrr4rr�r r!r�r��	Exceptionr-r0r1rJrSrcr+r$�pip._vendor.rich.consoler3r�r�r�r��printr)r)r)r*�<module>s`,



�� �