__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

Sjg�`���SSKJr SSKJr SSKJr SSKJr SSKJ	r	 SSK
JrJrJ
r
JrJrJrJrJrJrJr SSKJrJrJrJrJr SS	KJrJr SS
KJr \(a
SSK J!r!J"r"J#r# \"S5r$"S
S\5r%\\\%\\%\\&\'44\\%\&\&44r(\"5"SS\55r)"SS5r*"SS5r+\,S:XGaSSK-J!r! SSK.J/r/ SSK0J1r1 Sr2\1Rf"S5r4\!"5r \ RkS5 \ RmS5 \ RmS5 \ Rm\/"\2SSS 95 \ Rm5 \ RmS!5 \7"\ Rq\455r9\ Rm\95 \ Rm5 \ RmS"5 \ Rm\45 \ RmS#5 g$g$)%�)�IntEnum)�	lru_cache)�filterfalse)�	getLogger)�
attrgetter)
�
TYPE_CHECKING�Dict�Iterable�List�
NamedTuple�Optional�Sequence�Tuple�Type�Union�)�_is_single_cell_widths�cached_cell_len�cell_len�get_character_cell_size�
set_cell_size)�Result�	rich_repr)�Style)�Console�ConsoleOptions�RenderResult�richc�X�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrg)�ControlType�#zDNon-printable control codes which typically translate to ANSI codes.r��������	�
���
����N)�__name__�
__module__�__qualname__�__firstlineno__�__doc__�BELL�CARRIAGE_RETURN�HOME�CLEAR�SHOW_CURSOR�HIDE_CURSOR�ENABLE_ALT_SCREEN�DISABLE_ALT_SCREEN�	CURSOR_UP�CURSOR_DOWN�CURSOR_FORWARD�CURSOR_BACKWARD�CURSOR_MOVE_TO_COLUMN�CURSOR_MOVE_TO�
ERASE_IN_LINE�SET_WINDOW_TITLE�__static_attributes__r1��./usr/lib/python3/dist-packages/rich/segment.pyr r #sY��N��D��O��D�
�E��K��K������I��K��N��O����N��M��rHr c��\rSrSr%Sr\\S'Sr\\	\S'Sr
\\\\S'\
S\4Sj5rS\4S	jrS\4S
jr\
S\4Sj5r\\"S5S
SS\S\S4Sj55rS\S\S4Sjr\S1Sj5r\S2S\SS\\	S\\	S\S4Sjj5r\S3S\SS\S\S4Sjj5r\S\SS\\S4Sj5r\S4S\SS\S\\	S\S\S\\S4Sjj5r \S5S\SS\S\\	S\S\S4
Sjj5r!\S\SS\4Sj5r"\S \\SS\\\44S!j5r#\S6S \\SS"\S#\\S\\	S$\S\\S4S%jj5r$\S3S&\%SS \\SS"\S#\S\	S$\S\\S4S'jj5r&\S3S&\%SS \\SS"\S#\S\	S$\S\\S4S(jj5r'\S3S&\%SS \\SS"\S#\S\	S$\S\\S4S)jj5r(\S\SS\S4S*j5r)\S\SS\S4S+j5r*\S\SS\S4S,j5r+\S\SS\S4S-j5r,\S\SS.\\S\\S4S/j5r-S0r.g)7�Segment�?a�A piece of text with associated style. Segments are produced by the Console render process and
are ultimately converted in to strings to be written to the terminal.

Args:
    text (str): A piece of text.
    style (:class:`~rich.style.Style`, optional): An optional style to apply to the text.
    control (Tuple[ControlCode], optional): Optional sequence of control codes.

Attributes:
    cell_length (int): The cell length of this Segment.
�textN�style�control�returnc�4�UupnU(aS$[U5$)zbThe number of terminal cells required to display self.text.

Returns:
    int: A number of cells.
r)r)�selfrM�_stylerOs    rI�cell_length�Segment.cell_lengthQs��!%���g��q�/��$��/rHc#�# �URv� URcURbURv� ggURv� URv� g7f�N)rMrOrN�rRs rI�
__rich_repr__�Segment.__rich_repr__[sG����i�i���<�<���z�z�%��j�j� �&��*�*���,�,����AAc�,�[UR5$)z#Check if the segment contains text.)�boolrMrXs rI�__bool__�Segment.__bool__ds���D�I�I��rHc��URSL$)z,Check if the segment contains control codes.N)rOrXs rI�
is_control�Segment.is_controlhs���|�|�4�'�'rHi@�segment�cut)rKrKc���Uup4n[nURnX':�a
X"SXE54$[n[X'-[	U5-5n	USU	n
[U
5nX�-
nU(dU"X�U5U"X9SXE54$US:Xa.U"X95S:Xa U"USU	S-XE5U"SX9S-S-XE54$US:Xa1U"X9S-
5S:Xa U"USU	S-
S-XE5U"SX9S-XE54$X�:aU	S-
n	OU	S-n	M�)aSplit a segment in to two at a given cell position.

Note that splitting a double-width character, may result in that character turning
into two spaces.

Args:
    segment (Segment): A segment to split.
    cut (int): A cell position to cut on.

Returns:
    A tuple of two segments.
�N���r"� r)rKrTr�int�lenr)
�clsrcrdrMrNrO�_SegmentrT�	cell_size�pos�before�cell_pos�out_bys
             rI�_split_cells�Segment._split_cellsmsQ�� '���W����)�)�����H�R��8�8�8�+�	��3�$��D�	�1�2����$�3�Z�F���'�H��^�F���V�G�4��T�$�Z��8�����|�	�$�)� 4�� 9��T�$�3�Z�#�-�u�>��S�4�a��	�?�2�E�C�����|�	�$�Q�w�-� 8�A� =��T�)�C�!�G�_�s�2�E�C��S�4��:�-�u�>����~��q����q���-rHc���Uup#nUS:�de[U5(a:U[U5:�aU[SX454$[USUX45[X!SX454$URX5$)a@Split segment in to two segments at the specified column.

If the cut point falls in the middle of a 2-cell wide character then it is replaced
by two spaces, to preserve the display width of the parent segment.

Args:
    cut (int): Offset within the segment to cut.

Returns:
    Tuple[Segment, Segment]: Two segments.
rrfN)rrjrKrr)rRrdrMrNrOs     rI�split_cells�Segment.split_cells�s}�� $���W��a�x��x�!�$�'�'��c�$�i���W�R��8�8�8���T�c�
�E�3���T�
�E�3��
�
� � ��+�+rHc��U"S5$)zMake a new line segment.�
r1)rks rI�line�Segment.line�s���4�y�rH�segments�
post_stylec�x^^^�UnU(aURmUU4SjU5nT(a
UU4SjU5nU$)a�Apply style(s) to an iterable of segments.

Returns an iterable of segments where the style is replaced by ``style + segment.style + post_style``.

Args:
    segments (Iterable[Segment]): Segments to process.
    style (Style, optional): Base style. Defaults to None.
    post_style (Style, optional): Style to apply on top of segment style. Defaults to None.

Returns:
    Iterable[Segments]: A new iterable of segments (possibly the same iterable).
c3�Z># �UH upnT"X(aSOT"U5U5v� M" g7frWr1)�.0rMrSrO�applyrks    ��rI�	<genexpr>�&Segment.apply_style.<locals>.<genexpr>�s1�����-<�)�D�'��D�'�$�u�V�}�g�F�F�-<�s�(+c3�h># �UH'upnT"UU(aSO
U(aUT-OTU5v� M) g7frWr1)rrMrSrOrkr|s    ��rIr�r��sG�����.=�)�D�'���#��5;�f�z�1�����.=�s�/2)�__add__)rkr{rNr|�result_segmentsr�s`  ` @rI�apply_style�Segment.apply_style�sC���&#����M�M�E��-<��O���.=��O��rHrac�d�U(a[[S5U5$[[S5U5$)aFilter segments by ``is_control`` attribute.

Args:
    segments (Iterable[Segment]): An iterable of Segment instances.
    is_control (bool, optional): is_control flag to match in search.

Returns:
    Iterable[Segment]: And iterable of Segment instances.

rO)�filterrr)rkr{ras   rI�filter_control�Segment.filter_control�s+����*�Y�/��:�:��z�)�4�h�?�?rHc#�Z# �/nURnUH�nSUR;alUR(d[UupVnU(aMURS5up�nU(aU"U"X�55 U	(aUv� /nURnU(aMKM}MU"U5 M� U(aUv� gg7f)z�Split a sequence of segments in to a list of lines.

Args:
    segments (Iterable[Segment]): Segments potentially containing line feeds.

Yields:
    Iterable[List[Segment]]: Iterable of segment lists, one per line.
rxN)�appendrMrO�	partition)
rkr{ryr�rcrMrN�_�_text�new_lines
          rI�split_lines�Segment.split_lines�s����!�������G��w�|�|�#�G�O�O�!(���Q��,0�N�N�4�,@�)�E�T���s�5�0�1��"�
�!��!%�����d��w�� ���J��s�B
B+�B+�length�pad�include_new_linesc#��# �/nURnURnU"S5n	UH�n
SU
R;a�U
R(d|U
up�n
U(anUR	S5up�nU(aU"U"X�55 U(a3U"XbX4S9nU(aURU	5 Uv� UR5 U(aMlM�M�U"U
5 M� U(a
U"XbX4S9v� gg7f)a�Split segments in to lines, and crop lines greater than a given length.

Args:
    segments (Iterable[Segment]): An iterable of segments, probably
        generated from console.render.
    length (int): Desired line length.
    style (Style, optional): Style to use for any padding.
    pad (bool): Enable padding of lines that are less than `length`.

Returns:
    Iterable[List[Segment]]: An iterable of lines of segments.
rx)rNr�N)r��adjust_line_lengthrMrOr��clear)rkr{r�rNr�r�ryr�r��new_line_segmentrcrM�
segment_styler�r�r��cropped_lines                 rI�split_and_crop_lines�Segment.split_and_crop_liness����*!������ �3�3���t�9���G��w�|�|�#�G�O�O�)0�&��Q��,0�N�N�4�,@�)�E�T���s�5�8�9��'9� ��(��-�(�/�/�0@�A�*�*��
�
���d��w��! �"�$�T��H�H��s�B?C%�"C%ryc�n�[SU55nXR:a"U(aX"SX%-
-U5/-nU$USSnU$XR:�aq/nURnSnUHXnURn	XY-U:dUR(aU"U5 XY-
nM6Uup�n[	X�U-
5n
U"U"X�55  U$ U$USSnU$)a�Adjust a line to a given width (cropping or padding as required).

Args:
    segments (Iterable[Segment]): A list of segments in a single line.
    length (int): The desired width of the line.
    style (Style, optional): The style of padding if used (space on the end). Defaults to None.
    pad (bool, optional): Pad lines with spaces if they are shorter than `length`. Defaults to True.

Returns:
    List[Segment]: A line of segments with the desired length.
c3�8# �UHoRv� M g7frW)rT)rrcs  rIr��-Segment.adjust_line_length.<locals>.<genexpr>Xs���B�T�'�-�-�T�s�rhNr)�sumr�rTrOr)
rkryr�rNr��line_lengthr�r�rc�segment_lengthrMr�r�s
             rIr��Segment.adjust_line_lengthEs���&�B�T�B�B������3�s�f�.B�'C�U�#K�"L�L��&��# ��7��"��!�
!��H��_�_�F��K���!(�!4�!4���/�&�8�G�O�O��7�O��1�K�-4�*�D��(���/C�D�D��3�t�3�4���� ����A�w�H��rHc�:^�[m[U4SjU55$)z�Get the length of list of segments.

Args:
    line (List[Segment]): A line encoded as a list of Segments (assumes no '\\n' characters),

Returns:
    int: The length of the line.
c3�J># �UHupo3(aMT"U5v� M g7frWr1)rrMrNrO�	_cell_lens    �rIr��*Segment.get_line_length.<locals>.<genexpr>}s ����S�t�';�t�G�7�?�9�T�?�?�t�s�
#�#)rr�)rkryr�s  @rI�get_line_length�Segment.get_line_lengthrs����	��S�t�S�S�SrH�linesc�r^�URmU(a[U4SjU55OSnU[U54$)z�Get the shape (enclosing rectangle) of a list of lines.

Args:
    lines (List[List[Segment]]): A list of lines (no '\\n' characters).

Returns:
    Tuple[int, int]: Width and height in characters.
c3�4># �UH
nT"U5v� M g7frWr1)rryr�s  �rIr��$Segment.get_shape.<locals>.<genexpr>�s����@�%�$���-�-�%�s�r)r��maxrj)rkr��	max_widthr�s   @rI�	get_shape�Segment.get_shapes3����-�-��DI�C�@�%�@�@�q�	��3�u�:�&�&rH�width�height�	new_linesc	�6�U=(d [U5nU(aU"SU-S-U5/OU"SU-U5/nURnUSUn	UV
s/sH	o�"X�US9PM sn
U	SS&[U	5U:a!U	RU/U[U	5-
-5 U	$s sn
f)a�Set the shape of a list of lines (enclosing rectangle).

        Args:
            lines (List[List[Segment]]): A list of lines.
            width (int): Desired width.
            height (int, optional): Desired height or None for no change.
            style (Style, optional): Style of any padding added.
            new_lines (bool, optional): Padded lines should include "
". Defaults to False.

        Returns:
            List[List[Segment]]: New list of lines.
        rhrxN)rN)rjr��extend)rkr�r�r�rNr��_height�blankr��shaped_linesrys           rI�	set_shape�Segment.set_shape�s���*�&�C��J��1:�S��u��t�#�U�
+�,��C�%�K�QV�@W�?X�	�!�3�3���X�g���EJ�
�EJ�T��t�%�8�U�
��Q���|��w�&������7�S��5F�+F� G�H����
s�Brkc��U[U5-
nU(dUSS$USUnU(aU"SU-S-U5OU"SU-U5nX//U--nU$)a�Aligns lines to top (adds extra lines to bottom as required).

        Args:
            lines (List[List[Segment]]): A list of lines.
            width (int): Desired width.
            height (int, optional): Desired height or None for no change.
            style (Style): Style of any padding added.
            new_lines (bool, optional): Padded lines should include "
". Defaults to False.

        Returns:
            List[List[Segment]]: New list of lines.
        Nrhrx�rj�rkr�r�r�rNr��extra_linesr�s        rI�	align_top�Segment.align_top�sd��*�s�5�z�)�����8�O��g�v���2;��C�%�K�$�&��.��S�5�[�RW�AX����	�K�/�/���rHc��U[U5-
nU(dUSS$USUnU(aU"SU-S-U5OU"SU-U5nU//U-U-nU$)a�Aligns render to bottom (adds extra lines above as required).

        Args:
            lines (List[List[Segment]]): A list of lines.
            width (int): Desired width.
            height (int, optional): Desired height or None for no change.
            style (Style): Style of any padding added. Defaults to None.
            new_lines (bool, optional): Padded lines should include "
". Defaults to False.

        Returns:
            List[List[Segment]]: New list of lines.
        Nrhrxr�r�s        rI�align_bottom�Segment.align_bottom�sf��*�s�5�z�)�����8�O��g�v���2;��C�%�K�$�&��.��S�5�[�RW�AX����	�K�'�%�/���rHc��U[U5-
nU(dUSS$USUnU(aU"SU-S-U5OU"SU-U5nUS-nXh-
n	U//U-U-U//U	--nU$)a�Aligns lines to middle (adds extra lines to above and below as required).

        Args:
            lines (List[List[Segment]]): A list of lines.
            width (int): Desired width.
            height (int, optional): Desired height or None for no change.
            style (Style): Style of any padding added.
            new_lines (bool, optional): Padded lines should include "
". Defaults to False.

        Returns:
            List[List[Segment]]: New list of lines.
        Nrhrxr"r�)
rkr�r�r�rNr�r�r��	top_lines�bottom_liness
          rI�align_middle�Segment.align_middle�s���*�s�5�z�)�����8�O��g�v���2;��C�%�K�$�&��.��S�5�[�RW�AX���1�$�	�"�.����	�I�%��-�%��	�L�0H�H���rHc#�:# �[U5n[U5n[nUH`nURUR:Xa=UR
(d,U"URUR-UR5nMZUv� UnMb Uv� g![a gf=f7f)aSimplify an iterable of segments by combining contiguous segments with the same style.

Args:
    segments (Iterable[Segment]): An iterable of segments.

Returns:
    Iterable[Segment]: A possibly smaller iterable of segments that will render the same way.
N)�iter�next�
StopIterationrKrNrOrM)rkr{�
iter_segments�last_segmentrlrcs      rI�simplify�Segment.simplify
s�����X��
�	��
�.�L���$�G��!�!�W�]�]�2�7�?�?�'� �%�%����4�l�6H�6H� ��#�"�&��%�����	��	�s(�B�B�A1B�
B�B�B�Bc#�# �UHNnUR(d
URcUv� M'Uup4nU"X4(aURS5OS5v� MP g7f)z�Remove all links from an iterable of styles.

Args:
    segments (Iterable[Segment]): An iterable segments.

Yields:
    Segment: Segments with link removed.
N)rOrN�update_link)rkr{rcrMrN�_controls      rI�strip_links�Segment.strip_links%sL��� �G����'�-�-�"7��
�(/�%��X��$�5�� 1� 1�$� 7�d�K�K� �r[c#�<# �UHup#nU"USU5v� M g7f)z�Remove all styles from an iterable of segments.

Args:
    segments (Iterable[Segment]): An iterable segments.

Yields:
    Segment: Segments with styles replace with None
Nr1)rkr{rMrSrOs     rI�strip_styles�Segment.strip_styles6s%���&.�!�D�'��d�D�'�*�*�&.�s�c#�# �0nUHJup4nU(a1URU5nUcURnXbU'U"X6U5v� M>U"USU5v� ML g7f)z�Remove all color from an iterable of segments.

Args:
    segments (Iterable[Segment]): An iterable segments.

Yields:
    Segment: Segments with colorless style.
N)�get�
without_color)rkr{�cacherMrNrO�colorless_styles       rI�remove_color�Segment.remove_colorCs`���%'��$,� �D���"'�)�)�E�"2��"�*�&+�&9�&9�O�#2�%�L��$��9�9��$��g�.�.�%-�s�AA�cutsc#�# �/nURn[U5n[US5nUS:XagUS:waO/v� M SnURnURn	[
n
UH�nUup�nU(dMU(aUO	Xz"U5-nX�:aU"U5 UnM5X�:Xa@U"U5 U	"5v� U"5 Un[US5nUS:XaU(a	U	"5v�  gMzUR
Xg-
5unnUup�nU"U5 U	"5v� U"5 Un[US5nUS:XaU(a	U	"5v�  gU(aM�M� U	"5v� g7f)z�Divides an iterable of segments in to portions.

Args:
    cuts (Iterable[int]): Cell positions where to divide.

Yields:
    [Iterable[List[Segment]]]: An iterable of Segments in List.
rgNr)r�r�r�r��copyrru)rkr{r��split_segments�add_segment�	iter_cutsrdrn�segments_clear�
segments_copyr�rcrMrSrO�end_posros                 rI�divide�Segment.divideYsd���+-��$�+�+����J�	���y�"�%�C��b�y���a�x���H�
���'�-�-��&�+�+�
�#�	��G�$+�!�D�'��$�!(�#�c�I�d�O�.C���=���(�!�C���>���(�'�/�)�"�$�!�C��y�"�-�C��b�y�)�"/�/�1���'.�&9�&9�#�)�&D�O�F�G�,3�)�D�'���'�'�/�)�"�$��C��9�b�)���"�9�%�+�o�-��C�$� �J�o��s�A*E	�0C	E	�;E	r1)rPrK)NN�F)NTT)NT)NNF)/r2r3r4r5r6�str�__annotations__rNr
rrOr�ControlCode�propertyrirTrrYr]r^ra�classmethodrrrrruryr
r�r�rr�r�r�r�r�r�rr�r�r�r�r�r�r�r�rGr1rHrIrKrK?s���
��I�!�E�8�E�?�!�/3�G�X�h�{�+�
,�3�
�0�S�0��0��v���$���(�D�(��(���y��-�9�-�3�-�5�AU�;V�-���-�^,�s�,�u�-A�'B�,�4�����"&�&*�	&��9�%�&����&��U�O�	&�

�)�	�&��&�P�?D�@��	�*�@�8<�@�	�)�	�@��@�$��8�I�#6��8�D��O�;T����8�
"&��"&�
,I��9�%�,I��,I����	,I�
�,I� �
,I�
�$�y�/�	"�,I��,I�\�
"&��*��9�o�*��*����	*�
�*�
�i��
*��*�X�
T�4�	�?�
T�s�
T��
T��'�d�4�	�?�3�'��c�3�h��'��'��
!%�!%��
!��D��O�$�!��!���
�	!�
���!��
!�
�d�9�o�	�!��!�F� �
�
�)�_���D��O�$�����	�
���
�
�d�9�o�	����8� �
�
�)�_���D��O�$�����	�
���
�
�d�9�o�	����8� �
�
�)�_���D��O�$�����	�
���
�
�d�9�o�	����<���� 3����8K����4�L�8�I�#6�L�8�I�;N�L��L� �
+�H�Y�$7�
+�H�Y�<O�
+��
+��/�H�Y�$7�/�H�Y�<O�/��/�*�B��	�*�B�2:�3�-�B�	�$�y�/�	"�B��BrHrKc�N�\rSrSrSrS
S\\S\SS4SjjrSSjr	S	r
g)�Segmentsi�a)A simple renderable to render an iterable of segments. This class may be useful if
you want to print segments outside of a __rich_console__ method.

Args:
    segments (Iterable[Segment]): An iterable of segments.
    new_lines (bool, optional): Add new lines between segments. Defaults to False.
r{r�rPNc�0�[U5UlX lgrW)�listr{r�)rRr{r�s   rI�__init__�Segments.__init__�s���X���
�"�rHc#�# �UR(a0[R5nURHnUv� Uv� M
 gURShv�N gN7frW)r�rKryr{)rR�console�optionsryrcs     rI�__rich_console__�Segments.__rich_console__�s@����>�>��<�<�>�D��=�=���
��
�)��}�}�$�$�s�AA�A�A)r�r{r��r�rr�rrPr)r2r3r4r5r6r
rKr]r�r�rGr1rHrIr�r��sD���#��'�!2�#�t�#�PT�#�	%� �	%�+;�	%�	�	%rHr�c�P�\rSrSrS	S\\\S\SS4SjjrS
Sjr	Sr
g)�SegmentLinesi�r�r�rPNc�0�[U5UlX lg)aA simple renderable containing a number of lines of segments. May be used as an intermediate
in rendering process.

Args:
    lines (Iterable[List[Segment]]): Lists of segments forming lines.
    new_lines (bool, optional): Insert new lines after each line. Defaults to False.
N)r�r�r�)rRr�r�s   rIr��SegmentLines.__init__�s���%�[��
�"�rHc#��# �UR(a6[R5nURHnUShv�N Uv� M gURH
nUShv�N M gN+N7frW)r�rKryr�)rRr�r�r�rys     rIr��SegmentLines.__rich_console__�sT����>�>��|�|�~�H��
�
�������#��
�
�����#� � �s!�:A,�A(�!A,�A*�
A,�*A,)r�r�r�r�)r2r3r4r5r
rrKr]r�r�rGr1rHrIrr�sC��	#�h�t�G�}�5�	#�$�	#�SW�	#�
 � �
 �+;�
 �	�
 rHr�__main__)r)�Syntax)�Textz�from rich.console import Console
console = Console()
text = Text.from_markup("Hello, [bold magenta]World[/]!")
console.print(text)zHello, [bold magenta]World[/]!zrich.Segmentz]A Segment is the last step in the Rich render process before generating text with ANSI codes.z
Consider the following code:
�pythonT)�line_numberszRWhen you call [b]print()[/b], Rich [i]renders[/i] the object in to the following:
zAThe Segments are then processed to produce the following output:
zS
You will only need to know this if you are implementing your own Rich renderables.N):�enumr�	functoolsr�	itertoolsr�loggingr�operatorr�typingrr	r
rrr
rrrr�cellsrrrrr�reprrrrNrr�rrr�logr rir�r�rKr�rr2�rich.console�rich.syntaxr�	rich.textr�code�from_markuprM�rule�printr��render�	fragmentsr1rHrI�<module>rs�����!��������$���>�>������'��*�	�+��	�+�u�S�#�X��
&�'�	�+�s�C�
� �"�����\	�j�\	�
�\	�~%�%�2 � �2�z��$�"���D�
���<�=�D��i�G��L�L�� ��M�M�g���M�M�4�5��M�M�&��x�d�;�<��M�M�O��M�M�]���W�^�^�D�)�*�I��M�M�)���M�M�O��M�M�V�W��M�M�$���M�M�^��;rH

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 6.65 KB 0644
__main__.cpython-313.pyc File 9.75 KB 0644
_cell_widths.cpython-313.pyc File 7.65 KB 0644
_emoji_codes.cpython-313.pyc File 201.11 KB 0644
_emoji_replace.cpython-313.pyc File 1.66 KB 0644
_export_format.cpython-313.pyc File 2.25 KB 0644
_extension.cpython-313.pyc File 472 B 0644
_fileno.cpython-313.pyc File 798 B 0644
_inspect.cpython-313.pyc File 11.96 KB 0644
_log_render.cpython-313.pyc File 4.17 KB 0644
_loop.cpython-313.pyc File 1.81 KB 0644
_null_file.cpython-313.pyc File 3.61 KB 0644
_palettes.cpython-313.pyc File 5 KB 0644
_pick.cpython-313.pyc File 676 B 0644
_ratio.cpython-313.pyc File 6.39 KB 0644
_spinners.cpython-313.pyc File 12.83 KB 0644
_stack.cpython-313.pyc File 984 B 0644
_timer.cpython-313.pyc File 825 B 0644
_win32_console.cpython-313.pyc File 27.6 KB 0644
_windows.cpython-313.pyc File 2.44 KB 0644
_windows_renderer.cpython-313.pyc File 3.46 KB 0644
_wrap.cpython-313.pyc File 3.21 KB 0644
abc.cpython-313.pyc File 1.59 KB 0644
align.cpython-313.pyc File 12.19 KB 0644
ansi.cpython-313.pyc File 9 KB 0644
bar.cpython-313.pyc File 4.19 KB 0644
box.cpython-313.pyc File 11.46 KB 0644
cells.cpython-313.pyc File 5.33 KB 0644
color.cpython-313.pyc File 25.87 KB 0644
color_triplet.cpython-313.pyc File 1.62 KB 0644
columns.cpython-313.pyc File 8.47 KB 0644
console.cpython-313.pyc File 110.96 KB 0644
constrain.cpython-313.pyc File 2.21 KB 0644
containers.cpython-313.pyc File 9 KB 0644
control.cpython-313.pyc File 10.59 KB 0644
default_styles.cpython-313.pyc File 9.32 KB 0644
diagnose.cpython-313.pyc File 1.37 KB 0644
emoji.cpython-313.pyc File 4.07 KB 0644
errors.cpython-313.pyc File 1.96 KB 0644
file_proxy.cpython-313.pyc File 3.58 KB 0644
filesize.cpython-313.pyc File 2.85 KB 0644
highlighter.cpython-313.pyc File 9.7 KB 0644
json.cpython-313.pyc File 5.73 KB 0644
jupyter.cpython-313.pyc File 5.21 KB 0644
layout.cpython-313.pyc File 19.61 KB 0644
live.cpython-313.pyc File 19.14 KB 0644
live_render.cpython-313.pyc File 4.7 KB 0644
logging.cpython-313.pyc File 13.64 KB 0644
markdown.cpython-313.pyc File 35.83 KB 0644
markup.cpython-313.pyc File 9.43 KB 0644
measure.cpython-313.pyc File 6.01 KB 0644
padding.cpython-313.pyc File 6.73 KB 0644
pager.cpython-313.pyc File 1.8 KB 0644
palette.cpython-313.pyc File 5.08 KB 0644
panel.cpython-313.pyc File 12.41 KB 0644
pretty.cpython-313.pyc File 40.22 KB 0644
progress.cpython-313.pyc File 73.71 KB 0644
progress_bar.cpython-313.pyc File 10.16 KB 0644
prompt.cpython-313.pyc File 15.38 KB 0644
protocol.cpython-313.pyc File 1.77 KB 0644
region.cpython-313.pyc File 582 B 0644
repr.cpython-313.pyc File 6.53 KB 0644
rule.cpython-313.pyc File 6.41 KB 0644
scope.cpython-313.pyc File 3.65 KB 0644
screen.cpython-313.pyc File 2.44 KB 0644
segment.cpython-313.pyc File 27.54 KB 0644
spinner.cpython-313.pyc File 5.97 KB 0644
status.cpython-313.pyc File 5.84 KB 0644
style.cpython-313.pyc File 33.56 KB 0644
styled.cpython-313.pyc File 2.07 KB 0644
syntax.cpython-313.pyc File 38.76 KB 0644
table.cpython-313.pyc File 43.26 KB 0644
terminal_theme.cpython-313.pyc File 3.28 KB 0644
text.cpython-313.pyc File 58.82 KB 0644
theme.cpython-313.pyc File 6.13 KB 0644
themes.cpython-313.pyc File 271 B 0644
traceback.cpython-313.pyc File 32.35 KB 0644
tree.cpython-313.pyc File 11.54 KB 0644
Filemanager