� ]�g�+���ddlmZmZddlmZddlmZmZddlm Z ddl m Z ddl m Z mZddlmZmZdd lmZdd lmZmZdd lmZmZer dd lmZmZmZmZGd �de ��Ze dkrYddlmZe��Z!ddlm"Z"mZddlmZeddde"d���Z#e!�$��e!�$e#��dSdS)�)� TYPE_CHECKING�Optional�)� AlignMethod)�ROUNDED�Box)�cell_len)� JupyterMixin)� Measurement�measure_renderables)�Padding�PaddingDimensions)�Segment)�Style� StyleType)�Text�TextType)�Console�ConsoleOptions�RenderableType� RenderResultc ���eZdZdZefddddddddddddd� d d d ed eed edeededee de de de dee dee de de ddfd�Z eefdddddddddddd� d d d ed eed edeededee de de dee dee de de ddfd���Zedeefd���Zedeefd���Z d&d#�Z d'd%�ZdS)(�PanelaNA console renderable that draws a border around its contents. Example: >>> console.print(Panel("Hello, World!")) Args: renderable (RenderableType): A console renderable object. box (Box): A Box instance that defines the look of the border (see :ref:`appendix_box`. Defaults to box.ROUNDED. title (Optional[TextType], optional): Optional title displayed in panel header. Defaults to None. title_align (AlignMethod, optional): Alignment of title. Defaults to "center". subtitle (Optional[TextType], optional): Optional subtitle displayed in panel footer. Defaults to None. subtitle_align (AlignMethod, optional): Alignment of subtitle. Defaults to "center". safe_box (bool, optional): Disable box characters that don't display on windows legacy terminal with *raster* fonts. Defaults to True. expand (bool, optional): If True the panel will stretch to fill the console width, otherwise it will be sized to fit the contents. Defaults to True. style (str, optional): The style of the panel (border and contents). Defaults to "none". border_style (str, optional): The style of the border. Defaults to "none". width (Optional[int], optional): Optional width of panel. Defaults to None to auto-detect. height (Optional[int], optional): Optional height of panel. Defaults to None to auto-detect. padding (Optional[PaddingDimensions]): Optional padding around renderable. Defaults to 0. highlight (bool, optional): Enable automatic highlighting of panel title (if str). Defaults to False. N�centerT�none)rrF) �title� title_align�subtitle�subtitle_align�safe_box�expand�style� border_style�width�height�padding� highlight� renderabler�boxrrrrr r!r"r#r$r%r&r'�returnc ���||_||_||_||_||_||_||_||_| |_| |_ | |_ | |_ | |_ ||_ dS)N)r(r)rrrrr r!r"r#r$r%r&r')�selfr(r)rrrrr r!r"r#r$r%r&r's �Z/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/rich/panel.py�__init__zPanel.__init__(sm��$%�������� �(3��� �� �,��� �� ��� ��� �(����� ��� ��� �"�����) rrrrr r"r#r$r%r&r'c �4�|||||||||| | | | | d���S)z2An alternative constructor that sets expand=False.F) rrrrr r"r#r$r%r&r'r!�)�clsr(r)rrrrr r"r#r$r%r&r's r-�fitz Panel.fitIsG��&�s� � ��#��)���%������ � � � r/c�^�|jr�t|jt��rtj|j��n|j���}d|_|j�dd��|_d|_ |� ��|� d��|SdS�N�� � Tr) r� isinstance�strr� from_markup�copy�end�plain�replace�no_wrap� expand_tabs�pad)r,� title_texts r-�_titlez Panel._titlems��� �:� ��d�j�#�.�.�'�� ���,�,�,��Z�_�_�&�&� �  �J�N�)�/�7�7��c�B�B�J� �!%�J� � � "� "� $� $� $� �N�N�1� � � �� ��tr/c�^�|jr�t|jt��rtj|j��n|j���}d|_|j�dd��|_d|_ |� ��|� d��|SdSr5) rr9r:rr;r<r=r>r?r@rArB)r,� subtitle_texts r-� _subtitlezPanel._subtitle}s��� �=� !��d�m�S�1�1�*�� ���/�/�/��]�'�'�)�)� � !#�M� �"/�"5�"=�"=�d�C�"H�"H�M� �$(�M� !� � %� %� '� '� '� � � �a� � � � � ��tr/�consoler�optionsrrc #���K�tj|j��}t|��rt|j|��n|j}��|j��}��|j��}||z}|j�|j nt|j |j��}|j ��j n|j } |j � || ���} dtdtdt dt dt"dtf �fd� } |j} | �| �|��|jr|d z n1��||�|d z ��� ��j} |jp|jpd}|r|d z}| �.t|j d z t3| | jd z����} | d z}|�| ||j� ��}��|||� ��}t=| j|��}t=| j �|��}t=j!��}| �|d kr*t=| �"|d z g��|��V�n�| | |d z |j#| j$|��} t=| j%| j$z|��V���&| |�|d z ����Ed{V��t=| j$| j'z|��V�|V�|D]}|V�|Ed{V��|V�|V��|j(}|�|�|��|�|d kr*t=| �)|d z g��|��V�n�| ||d z |j*| j+|��}t=| j,| j+z|��V���&||�|d z ����Ed{V��t=| j+| j-z|��V�|V�dS)N)�safe�textr$�align� characterr"r*c����|���}|�|��|t|j��z }|jr-|���|j����|rq|dkrtj|||z|fdd���S|dkr+|dz}tj||z|f||||z z|fdd���Stj||z|f|dd���S|S)acGets new aligned text. Args: text (Text): Title or subtitle text. width (int): Desired width. align (str): Alignment. character (str): Character for alignment. style (Style): Border style Returns: Text: New text instance �leftTr6)r@r=r�) r<�truncater r>r"�stylize� get_styler�assemble)rLr$rMrNr"� excess_spacerPrHs �r-� align_textz*Panel.__rich_console__.<locals>.align_text�s4����9�9�;�;�D� �M�M�%� � � � �8�D�J�#7�#7�7�L��z� <�� � �W�.�.�t�z�:�:�;�;�;�� ��F�?�?��=��"�\�1�5�9� $�� ���� �h�&�&�'�1�,�D��=�"�T�)�5�1��"�l�T�&9�:�E�B� $�� ���� �=�"�\�1�5�9�� $�� ���� �Kr/rQ)rI)r$r%r')r"�).r �unpackr&�anyr(rTr"r#r$� max_width�minr r)� substituter�intr:rrD�stylize_beforer!�measure� update_width�maximumr%�maxr �updater'� render_linesr�mid_left� mid_right�line�get_topr�top�top_left�render� top_rightrG� get_bottomr�bottom� bottom_left� bottom_right)r,rHrI�_paddingr(r"�partial_border_styler#r$r r)rWrC� child_width� child_height� child_options�lines� line_start�line_end�new_linerhrFs ` r-�__rich_console__zPanel.__rich_console__�s�������>�$�,�/�/��25�h�-�-� T�G�D�O�X� .� .� .�T�_� ��!�!�$�*�-�-��&�0�0��1B�C�C���3�3� ��z�!� � � ��W�&�� �3�3� � .2�]�-B��)�)�� ���h�!�!�'��!�9�9��- ��- �"�- �+.�- �;>�- �GL�- � �- �- �- �- �- �- �^�[� � � !� � %� %�&:� ;� ;� ;��{� �E�A�I�I�����G�$8�$8����$C�$C�!���� ��{�<�g�n�<�� � � � �A� �L� � !���!�A�%�s�;� �8K�a�8O�'P�'P���K��a�������l�d�n�'� � � ��$�$�Z��e�$�L�L���S�\�<�8�8� ��c�m�-�|�<�<���<�>�>�� � ��!����#�+�+�u�q�y�k�2�2�L�A�A� A� A� A� A�#����� �� ���� ��J��#�,���0�,�?�?� ?� ?� ?��~�~�j�-�2L�2L�U�UV�Y�2W�2W�X�X� X� X� X� X� X� X� X��#�'�C�M�1�<�@�@� @� @� @������ � �D�� � � ��O�O�O�O�O�O�O��N�N�N��N�N�N�N��� � � $� � (� (�)=� >� >� >� � �E�Q�J�J��#�.�.�%�!�)��5�5�|�D�D� D� D� D� D�&�J���� ��#�� �� ��M��#�/�C�J�6� �E�E� E� E� E��~�~��}�9�9�%�!�)�D�D��� � � � � � � ��#�*�s�'7�7��F�F� F� F� F������r/r c�.�|j}tj|j��\}}}}||z}|r |j|gn|jg}|j�;t ||�|j|z dz ��|��j |zdz} n|j} t| | ��S)NrQ) rDr rYr&r(r$r rar[rbr ) r,rHrIrD�_�rightrPr&� renderablesr$s r-�__rich_measure__zPanel.__rich_measure__s������#�N�4�<�8�8���5�!�T���,��39�P�t���/�/���?P� � �:� �#���(�(��):�W�)D�q�)H�I�I������ � � � �E��J�E��5�%�(�(�(r/)rHrrIrr*r)rHrrIrr*r )�__name__� __module__� __qualname__�__doc__rrrrr�boolrr^rr.� classmethodr3�propertyrrDrGr{r�r1r/r-rrs���������2�#� %)�#+�'+�&.�#'��!�"(�#� $�%+��!#�#�#�$�#��#� ��!� #� !� #��8�$�#�$�#��4�.�#��#��#� �#���}�#��� �#�#�#� �!#�" �##�#�#�#�B��! � %)�#+�'+�&.�#'�!�"(�#� $�%+��! �! �! �$�! ��! � ��!� ! � !� ! ��8�$�! �$�! ��4�.�! ��! � �! ���}�! ��� �! �#�! ��! � �!! �! �! ��[�! �F� ���� � � ��X� �� �8�D�>� � � ��X� �G� �G�+;�G� �G�G�G�G�R)� �)�+;�)� �)�)�)�)�)�)r/r�__main__)r)�DOUBLEr)r z Hello, World!z rich.Panelz white on blue)rr"r)r&N)%�typingrrrMrr)rr�cellsr �jupyterr r`r r r&r r�segmentrr"rrrLrrrHrrrrrr��cr��p�printr1r/r-�<module>r�s���*�*�*�*�*�*�*�*���������������������!�!�!�!�!�!�5�5�5�5�5�5�5�5�/�/�/�/�/�/�/�/�������#�#�#�#�#�#�#�#� � � � � � � � ��O�N�N�N�N�N�N�N�N�N�N�N�N�Y)�Y)�Y)�Y)�Y)�L�Y)�Y)�Y)�x �z��� � � � � � ��� � �A�$�$�$�$�$�$�$�$� � � � � � � ����� ��  � � �A��G�G�I�I�I��G�G�A�J�J�J�J�J�#�r/
Memory