
    mh7f                       d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ ej        dk    rd dlmZ nd dlmZ d dlmZ d	d
lmZ d	dlmZ d	dlmZ d	dlmZmZmZmZ d	dlm Z  d	dl!m"Z" d	dl#m$Z$ d	dl%m&Z& d	dl'm(Z( d	dl)m*Z*m+Z+ d	dl,m-Z- d	dl.m/Z/m0Z0  G d d          Z1 G d de1          Z2 G d de1          Z3 G d de3          Z4 G d de3          Z5 G d  d!e3          Z6 G d" d#e3          Z7 G d$ d%e1          Z8 G d& d'e1          Z9 G d( d)e1          Z: G d* d+e1          Z; G d, d-e1          Z< G d. d/e1          Z= G d0 d1e1          Z> G d2 d3e3          Z? G d4 d5e3          Z@ G d6 d7e3          ZA G d8 d9          ZB G d: d;e"          ZCeDd<k    r-d dlEZEd dlZ eEjF        d=>          ZGeGH                    d?d@dAB           eGH                    dCdDdEdFddGH           eGH                    dIdJdKdLdMN           eGH                    dOdPdQddQN           eGH                    dRdSdTdFdUV           eGH                    dWdXeIdYddZ[           eGH                    d\d]d^dFd_V           eGH                    d`dadbdFdcV           eGJ                                ZKd ddlLmZ eKjM        dek    rejN        O                                ZPn? eQeKjM        dfdgh          5 ZReRO                                ZPddd           n# 1 swxY w Y    eCePeKjS        rdindjeKjT        eKjU        eKjV        k          ZWeKjX        rhd dlYZYd dlZZZ eYj[                    Z\ ee\eKj]        eKj^        l          Ze_                    eW            eZj`        e\a                                           dS  eeKj]        eKj^        dmn          Ze_                    eW           dS dS )o    )annotationsN)ClassVarDictIterableListOptionalTypeUnion)
MarkdownIt)Token)      )get_args)Table   box)
loop_first)Stack)ConsoleConsoleOptionsJustifyMethodRenderResult)Renderables)JupyterMixin)Panel)Rule)Segment)Style
StyleStack)Syntax)TextTextTypec                  ^    e Zd ZU dZded<   edd
            ZddZddZddZ	d dZ
d!dZdS )"MarkdownElementTzClassVar[bool]new_linemarkdown
'Markdown'tokenr   return'MarkdownElement'c                     |             S )zFactory to create markdown element,

        Args:
            markdown (Markdown): The parent Markdown object.
            token (Token): A node from markdown-it.

        Returns:
            MarkdownElement: A new markdown element
         clsr'   r)   s      8/usr/local/lib/python3.11/site-packages/rich/markdown.pycreatezMarkdownElement.create!   s     suu    context'MarkdownContext'Nonec                    dS )zuCalled when the node is entered.

        Args:
            context (MarkdownContext): The markdown context.
        Nr-   selfr3   s     r0   on_enterzMarkdownElement.on_enter.         r2   textr#   c                    dS )zpCalled when text is parsed.

        Args:
            context (MarkdownContext): The markdown context.
        Nr-   r8   r3   r;   s      r0   on_textzMarkdownElement.on_text5   r:   r2   c                    dS )zwCalled when the parser leaves the element.

        Args:
            context (MarkdownContext): [description]
        Nr-   r7   s     r0   on_leavezMarkdownElement.on_leave<   r:   r2   childboolc                    dS )a|  Called when a child element is closed.

        This method allows a parent element to take over rendering of its children.

        Args:
            context (MarkdownContext): The markdown context.
            child (MarkdownElement): The child markdown element.

        Returns:
            bool: Return True to render the element, or False to not render the element.
        Tr-   r8   r3   rA   s      r0   on_child_closezMarkdownElement.on_child_closeC   s	     tr2   console	'Console'options'ConsoleOptions''RenderResult'c                    dS )Nr-   r-   r8   rF   rH   s      r0   __rich_console__z MarkdownElement.__rich_console__S   s	     rr2   Nr'   r(   r)   r   r*   r+   r3   r4   r*   r5   r3   r4   r;   r#   r*   r5   r3   r4   rA   r+   r*   rB   )rF   rG   rH   rI   r*   rJ   )__name__
__module____qualname__r&   __annotations__classmethodr1   r9   r>   r@   rE   rM   r-   r2   r0   r%   r%      s         #H####
 
 
 [
                  r2   r%   c                      e Zd ZdZdS )UnknownElementzAn unknown element.

    Hopefully there will be no unknown elements, and we will have a MarkdownElement for
    everything in the document.

    N)rR   rS   rT   __doc__r-   r2   r0   rX   rX   Y   s           r2   rX   c                  .    e Zd ZdZdZddZdd
ZddZdS )TextElementz)Base class for elements that render text.noner3   r4   r*   r5   c                n    |                     | j                  | _        t          d          | _        d S Nleftjustify)enter_style
style_namestyler"   r;   r7   s     r0   r9   zTextElement.on_enterg   s/    ((99
(((			r2   r;   r#   c                t    | j                             |t          |t                    r|j        nd            d S N)r;   append
isinstancestrcurrent_styler=   s      r0   r>   zTextElement.on_textk   s8    	
48M8MWw44SWXXXXXr2   c                .    |                                  d S rf   )leave_styler7   s     r0   r@   zTextElement.on_leaven   s    r2   NrO   rP   )rR   rS   rT   rY   rc   r9   r>   r@   r-   r2   r0   r[   r[   b   s_        33J) ) ) )Y Y Y Y     r2   r[   c                  J    e Zd ZU dZdZded<   edd            ZddZddZ	dS )	ParagraphzA Paragraph.zmarkdown.paragraphr   ra   r'   r(   r)   r   r*   'Paragraph'c                (     | |j         pd          S r^   r`   r.   s      r0   r1   zParagraph.createx   s    s8+5v6666r2   r5   c                    || _         d S rf   r`   r8   ra   s     r0   __init__zParagraph.__init__|   s    r2   rF   r   rH   r   r   c              #  >   K   | j         | j        _         | j        V  d S rf   )ra   r;   rL   s      r0   rM   zParagraph.__rich_console__   s#       !L	ir2   N)r'   r(   r)   r   r*   ro   ra   r   r*   r5   rF   r   rH   r   r*   r   )
rR   rS   rT   rY   rc   rU   rV   r1   rs   rM   r-   r2   r0   rn   rn   r   ss         %J7 7 7 [7        r2   rn   c                  L     e Zd ZdZedd            ZddZd fdZddZ xZ	S )Headingz
A heading.r'   r(   r)   r   r*   	'Heading'c                "     | |j                   S rf   )tagr.   s      r0   r1   zHeading.create   s    s59~~r2   r3   r4   r5   c                `    t                      | _        |                    | j                   d S rf   )r"   r;   rb   rc   r7   s     r0   r9   zHeading.on_enter   s)    FF	DO,,,,,r2   r{   ri   c                j    || _         d| | _        t                                                       d S )N	markdown.)r{   rc   superrs   )r8   r{   	__class__s     r0   rs   zHeading.__init__   s5    +c++r2   rF   r   rH   r   r   c              #     K   | j         }d|_        | j        dk    r t          |t          j        d          V  d S | j        dk    rt          d          V  |V  d S )Ncenterh1zmarkdown.h1.border)r   rd   h2 )r;   ra   r{   r   r   HEAVYr"   )r8   rF   rH   r;   s       r0   rM   zHeading.__rich_console__   s       y8tI*        x42hhJJJJJr2   )r'   r(   r)   r   r*   ry   rO   )r{   ri   r*   r5   rv   )
rR   rS   rT   rY   rV   r1   r9   rs   rM   __classcell__r   s   @r0   rx   rx      s           [- - - -     
       r2   rx   c                  >    e Zd ZdZdZedd	            ZddZddZdS )	CodeBlockz&A code block with syntax highlighting.zmarkdown.code_blockr'   r(   r)   r   r*   'CodeBlock'c                p    |j         pd}|                    d          d         } | |pd|j                  S )Nr    r   r;   )info	partition
code_theme)r/   r'   r)   	node_info
lexer_names        r0   r1   zCodeBlock.create   s@    J$"	((--a0
s:')<===r2   r   ri   themer5   c                "    || _         || _        d S rf   )r   r   )r8   r   r   s      r0   rs   zCodeBlock.__init__   s    $


r2   rF   r   rH   r   r   c              #     K   t          | j                                                  }t          || j        | j        dd          }|V  d S )NTr   )r   	word_wrappadding)ri   r;   rstripr!   r   r   )r8   rF   rH   codesyntaxs        r0   rM   zCodeBlock.__rich_console__   sS       49~~$$&&$/tQ
 
 
 r2   N)r'   r(   r)   r   r*   r   )r   ri   r   ri   r*   r5   rv   )	rR   rS   rT   rY   rc   rV   r1   rs   rM   r-   r2   r0   r   r      se        00&J> > > [>
        r2   r   c                  .    e Zd ZdZdZddZddZddZdS )
BlockQuotezA block quote.zmarkdown.block_quoter*   r5   c                ,    t                      | _        d S rf   r   elementsr8   s    r0   rs   zBlockQuote.__init__       %0]]r2   r3   r4   rA   r+   rB   c                :    | j                             |           dS NFr   rg   rD   s      r0   rE   zBlockQuote.on_child_close        	U###ur2   rF   r   rH   r   r   c              #     K   |                     |j        dz
            }|                    | j        || j                  }| j        }t          d          }t          d|          }|D ]}|V  |E d {V  |V  d S )N   widthrd   
u   ▌ )update	max_widthrender_linesr   rd   r   )	r8   rF   rH   render_optionslinesrd   r&   r   lines	            r0   rM   zBlockQuote.__rich_console__   s       !g.?!.CDD$$T]N$*$UU
4==&%(( 	 	DMMMOOOOOOONNNN	 	r2   Nr*   r5   rQ   rv   )rR   rS   rT   rY   rc   rs   rE   rM   r-   r2   r0   r   r      s[        'J3 3 3 3        r2   r   c                      e Zd ZdZdZdd	Zd
S )HorizontalRulez%A horizontal rule to divide sections.FrF   r   rH   r   r*   r   c              #  \   K   |                     dd          }t          |          V  d S )Nzmarkdown.hrr\   defaultr   )	get_styler   )r8   rF   rH   rd   s       r0   rM   zHorizontalRule.__rich_console__   s=       !!-!@@r2   Nrv   )rR   rS   rT   rY   r&   rM   r-   r2   r0   r   r      s3        //H           r2   r   c                  *    e Zd ZdZddZdd
ZddZdS )TableElementz.MarkdownElement corresponding to `table_open`.r*   r5   c                "    d | _         d | _        d S rf   )headerbodyr   s    r0   rs   zTableElement.__init__   s    15-1			r2   r3   r4   rA   r+   rB   c                    t          |t                    r|| _        n,t          |t                    r|| _        nt          d          dS )Nz Couldn't process markdown table.F)rh   TableHeaderElementr   TableBodyElementr   RuntimeErrorrD   s      r0   rE   zTableElement.on_child_close   sR     e/00 	CDKK/00 	CDIIABBBur2   rF   r   rH   r   r   c              #  *  K   t          t          j                  }| j        :| j        j        .| j        j        j        D ]}|                    |j                   | j        *| j        j	        D ]}d |j        D             } |j
        |  |V  d S )Nr   c                    g | ]	}|j         
S r-   )content).0elements     r0   
<listcomp>z1TableElement.__rich_console__.<locals>.<listcomp>  s    HHH7wHHHr2   )r   r   SIMPLE_HEAVYr   rowcells
add_columnr   r   rowsadd_row)r8   rF   rH   tablecolumnr   row_contents          r0   rM   zTableElement.__rich_console__   s       #*+++;"t{'B+// 1 1  00009 y~ , ,HHciHHH{+++r2   Nr   rQ   rv   )rR   rS   rT   rY   rs   rE   rM   r-   r2   r0   r   r      sV        882 2 2 2	 	 	 	     r2   r   c                  "    e Zd ZdZddZdd
ZdS )r   z@MarkdownElement corresponding to `thead_open` and `thead_close`.r*   r5   c                    d | _         d S rf   )r   r   s    r0   rs   zTableHeaderElement.__init__  s    +/r2   r3   r4   rA   r+   rB   c                B    t          |t                    sJ || _        dS r   )rh   TableRowElementr   rD   s      r0   rE   z!TableHeaderElement.on_child_close  s&     %11111ur2   Nr   rQ   rR   rS   rT   rY   rs   rE   r-   r2   r0   r   r     sB        JJ0 0 0 0     r2   r   c                  "    e Zd ZdZddZdd
ZdS )r   z@MarkdownElement corresponding to `tbody_open` and `tbody_close`.r*   r5   c                    g | _         d S rf   )r   r   s    r0   rs   zTableBodyElement.__init__  s    +-			r2   r3   r4   rA   r+   rB   c                h    t          |t                    sJ | j                            |           dS r   )rh   r   r   rg   rD   s      r0   rE   zTableBodyElement.on_child_close!  s5     %11111	ur2   Nr   rQ   r   r-   r2   r0   r   r     sB        JJ. . . .     r2   r   c                  "    e Zd ZdZddZdd
ZdS )r   z:MarkdownElement corresponding to `tr_open` and `tr_close`.r*   r5   c                    g | _         d S rf   )r   r   s    r0   rs   zTableRowElement.__init__,  s    -/


r2   r3   r4   rA   r+   rB   c                h    t          |t                    sJ | j                            |           dS r   )rh   TableDataElementr   rg   rD   s      r0   rE   zTableRowElement.on_child_close/  s6     %!122222
%   ur2   Nr   rQ   r   r-   r2   r0   r   r   )  sB        DD0 0 0 0     r2   r   c                  :    e Zd ZdZedd            ZddZddZdS )r   z[MarkdownElement corresponding to `td_open` and `td_close`
    and `th_open` and `th_close`.r'   r(   r)   r   r*   r+   c                    t          |j                            d                    pd}d|v rd}nd|v rd}n	d|v rd}nd	}|t          t                    v sJ  | |
          S )Nrd   r   ztext-align:rightrightztext-align:centerr   ztext-align:leftr_   r   r`   )ri   attrsgetr   r   )r/   r'   r)   rd   ra   s        r0   r1   zTableDataElement.create;  s    EKOOG,,--3 &&GG E))GG%''GGG(=111111s7####r2   ra   r   r5   c                @    t          d|          | _        || _        d S )Nr   r`   )r"   r   ra   rr   s     r0   rs   zTableDataElement.__init__L  s!    !"g666r2   r3   r4   r;   r#   c                    t          |t                    rt          |          n|}|                    |j                   | j                            |           d S rf   )rh   ri   r"   stylizerj   r   append_textr=   s      r0   r>   zTableDataElement.on_textP  sQ    'c22<tDzzzW*+++  &&&&&r2   NrN   ru   rP   )rR   rS   rT   rY   rV   r1   rs   r>   r-   r2   r0   r   r   7  sf        % % $ $ $ [$    ' ' ' ' ' 'r2   r   c                  B    e Zd ZdZedd            ZddZddZddZdS ) ListElementzA list element.r'   r(   r)   r   r*   'ListElement'c           	     p     | |j         t          |j                            dd                              S )Nstartr   )typeintr   r   r.   s      r0   r1   zListElement.createY  s.    s5:s5;??7A#>#>??@@@r2   	list_typeri   
list_start
int | Noner5   c                0    g | _         || _        || _        d S rf   )itemsr   r   )r8   r   r   s      r0   rs   zListElement.__init__]  s    %'
"$r2   r3   r4   rA   r+   rB   c                h    t          |t                    sJ | j                            |           dS r   )rh   ListItemr   rg   rD   s      r0   rE   zListElement.on_child_closeb  s5     %*****
%   ur2   rF   r   rH   r   r   c              #  4  K   | j         dk    r(| j        D ]}|                    ||          E d {V  d S | j        dn| j        }|t	          | j                  z   }t          | j                  D ]&\  }}|                    ||||z   |          E d {V  'd S )Nbullet_list_openr   )r   r   render_bulletr   len	enumeraterender_number)r8   rF   rH   itemnumberlast_numberindexs          r0   rM   zListElement.__rich_console__i  s       >///
 @ @--gw??????????@ @ /1QQtF 3tz??2K(44  t--Wfunk          r2   N)r'   r(   r)   r   r*   r   )r   ri   r   r   r*   r5   rQ   rv   )	rR   rS   rT   rY   rV   r1   rs   rE   rM   r-   r2   r0   r   r   V  sx        A A A [A% % % %
        r2   r   c                  6    e Zd ZdZdZddZddZddZddZdS )r   zAn item in a list.zmarkdown.itemr*   r5   c                ,    t                      | _        d S rf   r   r   s    r0   rs   zListItem.__init__}  r   r2   r3   r4   rA   r+   rB   c                :    | j                             |           dS r   r   rD   s      r0   rE   zListItem.on_child_close  r   r2   rF   r   rH   r   r   c              #  h  K   |                     |j        dz
            }|                    | j        || j                  }|                    dd          }t          d|          }t          d|          }t          d	          }t          |          D ]\  }	}
|	r|n|V  |
E d {V  |V  d S )
Nr   r   r   zmarkdown.item.bulletr\   r   u    • z   r   )r   r   r   r   rd   r   r   r   )r8   rF   rH   r   r   bullet_stylebulletr   r&   firstr   s              r0   r   zListItem.render_bullet  s       g.?!.CDD$$T]N$*$UU(()?(PP,//'<004==%e,, 	 	KE4!.&&w...OOOOOOONNNN	 	r2   r   r   r   c              #    K   t          t          |                    dz   }|                    |j        |z
            }|                    | j        || j                  }|                    dd          }t          d          }	t          d|z  |          }
t          | 	                    |d	z
            dz   |          }t          |          D ]\  }}|r|n|
V  |E d {V  |	V  d S )
N   r   r   zmarkdown.item.numberr\   r   r   r   r   )r   ri   r   r   r   r   rd   r   r   rjustr   )r8   rF   rH   r   r   number_widthr   r   number_styler&   r   numeralr  r   s                 r0   r   zListItem.render_number  s      3{++,,q0 g.?,.NOO$$T]N$*$UU(()?(PP4==#,l;;V+++L1,<==C\RR%e,, 	 	KE4"/''///OOOOOOONNNN	 	r2   Nr   rQ   rv   )
rF   r   rH   r   r   r   r   r   r*   r   )	rR   rS   rT   rY   rc   rs   rE   r   r   r-   r2   r0   r   r   x  so         J3 3 3 3           r2   r   c                  .    e Zd Zedd            ZddZdS )Linkr'   r(   r)   r   r*   r+   c                t    |j                             dd          } | |j        t          |                    S )Nhref#)r   r   r   ri   )r/   r'   r)   urls       r0   r1   zLink.create  s1    koofc**s5=#c((+++r2   r;   ri   r  c                <    t          |          | _        || _        d S rf   )r"   r;   r  )r8   r;   r  s      r0   rs   zLink.__init__  s    JJ				r2   NrN   )r;   ri   r  ri   )rR   rS   rT   rV   r1   rs   r-   r2   r0   r  r    sF        , , , [,     r2   r  c                  T     e Zd ZdZdZedd	            Zd fdZd fdZddZ	 xZ
S )	ImageItemz#Renders a placeholder for an image.Fr'   r(   r)   r   r*   r+   c                p     | t          |j                            dd                    |j                  S )zFactory to create markdown element,

        Args:
            markdown (Markdown): The parent Markdown object.
            token (Any): A token from markdown-it.

        Returns:
            MarkdownElement: A new markdown element
        srcr   )ri   r   r   
hyperlinksr.   s      r0   r1   zImageItem.create  s1     s3u{ub1122H4GHHHr2   destinationri   r  rB   r5   c                r    || _         || _        d | _        t                                                       d S rf   )r  r  linkr   rs   )r8   r  r  r   s      r0   rs   zImageItem.__init__  s5    &$#'	r2   r3   r4   c                    |j         j        | _        t          d          | _        t	                                          |           d S r^   )rj   r  r"   r;   r   r9   )r8   r3   r   s     r0   r9   zImageItem.on_enter  s@    ).	(((	!!!!!r2   rF   r   rH   r   r   c              #  F  K   t          | j        p| j        pd           }| j        p@t	          | j                            d                              dd          d                   }| j        r|                    |           t	          j	        d|dd          }|V  d S )	Nr  /r   u   🌆 r   r   )end)
r   r  r  r;   r"   striprsplitr  r   assemble)r8   rF   rH   
link_styletitler;   s         r0   rM   zImageItem.__rich_console__  s       	 ET-= EFFF
	QT$"2"8"8"="="D"DS!"L"LR"PQQ? 	&MM*%%%}WeSb999




r2   rN   )r  ri   r  rB   r*   r5   rO   rv   )rR   rS   rT   rY   r&   rV   r1   rs   r9   rM   r   r   s   @r0   r  r    s        --H
I 
I 
I [
I     " " " " " "
       r2   r  c                  P    e Zd ZdZ	 	 dddZedd            ZddZddZddZ	dS )MarkdownContextz!Manages the console render state.NmonokairF   r   rH   r   rd   r   inline_code_lexerOptional[str]inline_code_themeri   r*   r5   c                    || _         || _        t          |          | _        t	                      | _        d | _        |t          d||          | _        d S d S )Nr   )r   )rF   rH   r    style_stackr   stack_syntaxr!   )r8   rF   rH   rd   r(  r*  s         r0   rs   zMarkdownContext.__init__  s^     '1%'8'8-2WW
)-(!"&7?PQQQDLLL )(r2   c                    | j         j        S )z>Current style which is the product of all styles on the stack.)r,  currentr   s    r0   rj   zMarkdownContext.current_style  s     ''r2   r;   	node_typec                8   |dv ru| j         n| j                             |          }|                                 | j        j                            | t          j        || j        j	                             dS | j        j                            | |           dS )z#Called when the parser visits text.>   fencecode_inlineNr   )
r.  	highlightr   r-  topr>   r"   r"  r,  r0  )r8   r;   r1  highlight_texts       r0   r>   zMarkdownContext.on_text  s    000T\5M!\33D99N!!###JN""dmN$:J:RSSS     JN""4.....r2   rc   Union[str, Style]c                |    | j                             |d          }| j                            |           | j        S )zEnter a style context.r\   r   )rF   r   r,  pushrj   )r8   rc   rd   s      r0   rb   zMarkdownContext.enter_style  s<    &&z6&BBe$$$!!r2   c                8    | j                                         }|S )zLeave a style context.)r,  pop)r8   rd   s     r0   rl   zMarkdownContext.leave_style  s     $$&&r2   )Nr'  )rF   r   rH   r   rd   r   r(  r)  r*  ri   r*   r5   )r*   r   )r;   ri   r1  ri   r*   r5   )rc   r8  r*   r   )
rR   rS   rT   rY   rs   propertyrj   r>   rb   rl   r-   r2   r0   r&  r&    s        ++ ,0!*R R R R R" ( ( ( X(	/ 	/ 	/ 	/" " " "     r2   r&  c                      e Zd ZU dZi dedededededede	d	e	d
e
dededededededeZded<   h dZ	 	 	 	 	 	 d1d2d'Zd3d*Zd4d0ZdS )5Markdowna  A Markdown renderable.

    Args:
        markup (str): A string containing markdown.
        code_theme (str, optional): Pygments theme for code blocks. Defaults to "monokai".
        justify (JustifyMethod, optional): Justify value for paragraphs. Defaults to None.
        style (Union[str, Style], optional): Optional style to apply to markdown.
        hyperlinks (bool, optional): Enable hyperlinks. Defaults to ``True``.
        inline_code_lexer: (str, optional): Lexer to use if inline code highlighting is
            enabled. Defaults to None.
        inline_code_theme: (Optional[str], optional): Pygments theme for inline code
            highlighting, or None for no highlighting. Defaults to None.
    paragraph_openheading_openr3  
code_blockblockquote_openhrr   ordered_list_openlist_item_openimage
table_open
tbody_open
thead_opentr_opentd_openth_openz*ClassVar[Dict[str, Type[MarkdownElement]]]r   >   semr   strongr'  Nr\   Tmarkupri   r   ra   Optional[JustifyMethod]rd   r8  r  rB   r(  r)  r*  r*   r5   c                   t                                          d                              d          }|| _        |                    |          | _        || _        || _        || _        || _        || _	        |p|| _
        d S )Nstrikethroughr   )r   enablerQ  parseparsedr   ra   rd   r  r(  r*  )	r8   rQ  r   ra   rd   r  r(  r*  parsers	            r0   rs   zMarkdown.__init__+  sz     $$_55<<WEEll6**$07
$!2!2!@jr2   tokensIterable[Token]c              #     K   |D ]H}|j         dk    }|j        dk    }|j        r%|s#|s!|                     |j                  E d{V  D|V  IdS )zFlattens the token stream.r3  imgN)r   r{   children_flatten_tokens)r8   rY  r)   is_fenceis_images        r0   r^  zMarkdown._flatten_tokens?  s       	 	EzW,HyE)H~ x 8 //??????????	 	r2   rF   r   rH   r   r   c              #  \
  K   |                     | j        d          }|                    d          }t          |||| j        | j                  }| j        }| j        }d}t          j	                    }| 
                    |          D ]}	|	j        }
|	j        }|	j        dk    }|	j        dk    }|	j        d	k    }|
d
k    r|                    |	j        |
           T|
dk    r|                    d|
           q|
dk    r|                    d|
           |
dk    rt!          |	j                            dd                    }| j        rA|                     dd          }|t)          |          z  }|                    |           |j                            t0                              | |	                     9|
dk    r6| j        r|                                 ]|j                                        }t9          |t0                    sJ |                     dd          }|                    |           |                    |j        j        |
           |                                 |                    d|
           |                     dd          }|                    |           |                    |j        |
           |                                 |                    d|
           v||v r|
dk    r|
dk    r|r|                    d|            |r|                                 |                    d|            |	j        r|                    |	j        |
           |                                 
| j                             |	j                  ptB          }|                    | |	          }|s|r/|j                            |           |"                    |           |rr|j                                        }|j         p&|j        o|j        j#        $                    ||          }|r'|r|V  |%                    ||j&                  E d{V  n|r|j                                         |	j        }||                    ||           |j         p&|j        o|j        j#        $                    ||          }|r'|r|V  |%                    ||j&                  E d{V  |s|r|'                    |           |j(        }dS )zRender markdown to the console.r\   r   N)height)r(  r*  Fr   r  r   r;   	hardbreakr   	softbreakr   	link_openr  r   zmarkdown.link_urlr  
link_closezmarkdown.linkz ()r3  rB  r~   ))r   rd   r   r&  r(  r*  rW  inlinesr   r   r^  r   r{   nestingr>   r   ri   r   r   r  r   rb   r-  r:  r  r1   rl   r<  rh   r;   plainr  r   rX   r9   r6  rE   renderrH   r@   r&   )r8   rF   rH   rd   r3   rY  inline_style_tagsr&   _new_line_segmentr)   r1  r{   enteringexitingself_closingr  r#  r   link_url_styleelement_classshould_renderr;   s                         r0   rM   zMarkdown.__rich_console__I  s      !!$*f!==...--!"4"4
 
 
  L#LNN))&11 c	0 c	0E
I)C})Hmr)G =A-LF""y9999k))i0000k))Y////k))5;??626677? A!(!2!23FPV!2!W!WJ%T"2"2"22J''
3333M&&t{{4'?'?@@@@l**? 4''))))%m//11G%gt44444!(!2!2?F!2!S!SJ''
333OOGL$6	BBB'')))OOD)444%,%6%6+V &7 & &N ''777OOGL)<<<'')))OOC3333(((((-- * ''(9C(9(9:::: 	* '')))) ''(9C(9(9:::} ByAAA'')))) !% 1 1%* = = O'..tU;; .| .M&&w///$$W--- L%m//11G(/$5 % O#M-<<WgNN "
 % L# 4"3333#*>>'7?#K#KKKKKKKK! LM%%''' =D'666 $M) O"= O#M-<<WgNN "
 % L# 4"3333#*>>'7?#K#KKKKKKKK 0l 0$$W---&/HGc	0 c	0r2   )r'  Nr\   TNN)rQ  ri   r   ri   ra   rR  rd   r8  r  rB   r(  r)  r*  r)  r*   r5   )rY  rZ  r*   rZ  rv   )rR   rS   rT   rY   rn   rx   r   r   r   r   r   r  r   r   r   r   r   r   rU   rh  rs   r^  rM   r-   r2   r0   r?  r?    sh         <)<< 	< 	i	<
 	:< 	n< 	K< 	[< 	(< 	< 	l< 	&< 	(< 	?< 	#<  	#!<H    & ,++G
 $+/#)+/+/A A A A A(   u0 u0 u0 u0 u0 u0r2   r?  __main__z(Render Markdown to the console with Rich)descriptionpathPATHz%path to markdown file, or - for stdin)metavarhelpz-cz--force-colorforce_color
store_truezforce color for non-terminals)destactionr   ry  z-tz--code-themer   r'  zpygments code theme)r|  r   ry  z-iz--inline-code-lexerr(  z-yz--hyperlinksr  zenable hyperlinks)r|  r}  ry  z-wz--widthr   z*width of output (default will auto-detect))r   r|  r   ry  z-jz	--justifyra   zenable full text justifyz-pz--pagepagezuse pager to scroll output)r   -rtzutf-8)encodingfullr_   )ra   r   r  r(  )fileforce_terminalr   T)r  r   record)b
__future__r   systypingr   r   r   r   r   r	   r
   markdown_itr   markdown_it.tokenr   version_infor   typing_extensions
rich.tabler   r   r   _loopr   _stackr   rF   r   r   r   r   
containersr   jupyterr   panelr   ruler   segmentr   rd   r   r    r   r!   r;   r"   r#   r%   rX   r[   rn   rx   r   r   r   r   r   r   r   r   r   r   r  r  r&  r?  rR   argparseArgumentParserrX  add_argumentr   
parse_argsargsrich.consolerv  stdinreadmarkdown_bodyopenmarkdown_filera   r   r  r(  r'   r~  iopydocStringIOfileiorz  r   printpagergetvaluer-   r2   r0   <module>r     sP   " " " " " " 



 H H H H H H H H H H H H H H H H H H " " " " " " # # # # # #v******                         I I I I I I I I I I I I # # # # # # ! ! ! ! ! !                   $ $ $ $ $ $ $ $                      8 8 8 8 8 8 8 8v    _       /           (         k      F       2       8	  	  	  	  	 _ 	  	  	          ?      F                  o   ' ' ' ' ' ' ' '>    /   D) ) ) ) ){ ) ) )X    ;   % % % % % % % %P- - - - - - - -`w0 w0 w0 w0 w0| w0 w0 w0t zOOOJJJ$X$>  F 4    
 ,     "                  9     '     )     D$$$$$$yC	((T$)TG444 	1)..00M	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 x,2F??0  H y  			'(8

 
 
 	hFOO%%&&&&& '+4:d
 
 
 	h s   #LLL