o
    Ú­jµg  ã                   @  sî  d dl mZ d dlZd dlmZ d dl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 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#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) G dd„ dƒZ*G dd„ de*ƒZ+G dd„ de*ƒZ,G dd„ de,ƒZ-eG dd„ dƒƒZ.G dd„ de,ƒZ/G d d!„ d!e,ƒZ0G d"d#„ d#e,ƒZ1G d$d%„ d%e*ƒZ2G d&d'„ d'e*ƒZ3G d(d)„ d)e*ƒZ4G d*d+„ d+e*ƒZ5G d,d-„ d-e*ƒZ6G d.d/„ d/e*ƒZ7G d0d1„ d1e*ƒZ8G d2d3„ d3e,ƒZ9G d4d5„ d5e,ƒZ:G d6d7„ d7e,ƒZ;G d8d9„ d9ƒZ<G d:d;„ d;eƒZ=e>d<k�rõd dl?Z?d dlZe?j@d=d>�ZAeAjBd?d@dAdB� eAjBdCdDdEdFddGdH� eAjBdIdJdKdLdMdN� eAjBdOdPdQddQdN� eAjBdRdSdTdFdUdV� eAjBdWdXeCdYddZd[� eAjBd\d]d^dFd_dV� eAjBd`dadbdFdcdV� eA D¡ ZEd ddlFmZ eEjGdek�r�ejH I¡ ZJneKeEjGdfdg��ZLeL I¡ ZJW d  ƒ n	1 �s§w   Y  e=eJeEjM�r´dhndieEjNeEjOeEjPdj�ZQeEjR�råd dlSZSd dlTZTeS U¡ ZVeeVeEjWeEjXdk�Ze YeQ¡ eT ZeV [¡ ¡ dS eeEjWeEjXdldm�Ze YeQ¡ dS dS )né    )ÚannotationsN)Ú	dataclass)ÚClassVarÚIterableÚget_args)Ú
MarkdownIt)ÚToken)ÚTableé   )Úbox)Ú
loop_first)ÚStack)ÚConsoleÚConsoleOptionsÚJustifyMethodÚRenderResult)ÚRenderables)ÚJupyterMixin)ÚRule)ÚSegment)ÚStyleÚ
StyleStack)ÚSyntax)ÚTextÚTextTypec                   @  sZ   e Zd ZU dZded< ed"d	d
„ƒZd#dd„Zd$dd„Zd#dd„Z	d%dd„Z
d&dd „Zd!S )'ÚMarkdownElementTzClassVar[bool]Únew_lineÚmarkdownÚMarkdownÚtokenr   Úreturnc                 C  s   | ƒ S )zòFactory 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   r!   r!   úJ/var/www/html/CropPilot/venv/lib/python3.10/site-packages/rich/markdown.pyÚcreate   s   zMarkdownElement.createÚcontextÚMarkdownContextÚNonec                 C  ó   dS )zuCalled when the node is entered.

        Args:
            context (MarkdownContext): The markdown context.
        Nr!   ©Úselfr&   r!   r!   r$   Úon_enter)   ó    zMarkdownElement.on_enterÚtextr   c                 C  r)   )zpCalled when text is parsed.

        Args:
            context (MarkdownContext): The markdown context.
        Nr!   ©r+   r&   r.   r!   r!   r$   Úon_text0   r-   zMarkdownElement.on_textc                 C  r)   )zwCalled when the parser leaves the element.

        Args:
            context (MarkdownContext): [description]
        Nr!   r*   r!   r!   r$   Úon_leave7   r-   zMarkdownElement.on_leaveÚchildÚboolc                 C  r)   )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!   ©r+   r&   r2   r!   r!   r$   Úon_child_close>   s   zMarkdownElement.on_child_closeÚconsoler   Úoptionsr   r   c                 C  r)   )Nr!   r!   ©r+   r6   r7   r!   r!   r$   Ú__rich_console__L   s   z MarkdownElement.__rich_console__N©r   r   r   r   r    r   ©r&   r'   r    r(   ©r&   r'   r.   r   r    r(   ©r&   r'   r2   r   r    r3   ©r6   r   r7   r   r    r   )Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__Úclassmethodr%   r,   r0   r1   r5   r9   r!   r!   r!   r$   r      s   
 



r   c                   @  s   e Zd ZdZdS )ÚUnknownElementz’An unknown element.

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

    N)r?   r@   rA   Ú__doc__r!   r!   r!   r$   rD   R   s    rD   c                   @  s2   e Zd ZdZdZddd„Zddd„Zddd„ZdS )ÚTextElementz)Base class for elements that render text.Únoner&   r'   r    r(   c                 C  s   |  | j¡| _tdd�| _d S ©NÚleft©Újustify)Úenter_styleÚ
style_nameÚstyler   r.   r*   r!   r!   r$   r,   `   s   zTextElement.on_enterr.   r   c                 C  s(   | j  |t|tƒr|j¡ d S d ¡ d S ©N)r.   ÚappendÚ
isinstanceÚstrÚcurrent_styler/   r!   r!   r$   r0   d   s   (zTextElement.on_textc                 C  s   |  ¡  d S rO   )Úleave_styler*   r!   r!   r$   r1   g   ó   zTextElement.on_leaveNr;   r<   )r?   r@   rA   rE   rM   r,   r0   r1   r!   r!   r!   r$   rF   [   s    

rF   c                   @  s@   e Zd ZU dZdZded< edd
d„ƒZddd„Zddd„Z	dS )Ú	ParagraphzA Paragraph.zmarkdown.paragraphr   rK   r   r   r   r   r    c                 C  s   | |j pdd�S rH   rJ   r"   r!   r!   r$   r%   q   s   zParagraph.creater(   c                 C  s
   || _ d S rO   rJ   ©r+   rK   r!   r!   r$   Ú__init__u   ó   
zParagraph.__init__r6   r   r7   r   r   c                 c  s   � | j | j_ | jV  d S rO   )rK   r.   r8   r!   r!   r$   r9   x   s   €
zParagraph.__rich_console__N)r   r   r   r   r    rV   ©rK   r   r    r(   r>   )
r?   r@   rA   rE   rM   rB   rC   r%   rX   r9   r!   r!   r!   r$   rV   k   s   
 
rV   c                   @  s&   e Zd ZU dZded< dZded< dS )ÚHeadingFormatrI   r   rK   Ú rR   rN   N)r?   r@   rA   rK   rB   rN   r!   r!   r!   r$   r[      s   
 r[   c                      s`   e Zd ZU dZdddddddœZded< eddd„ƒZddd„Zd ‡ fdd„Z	d!dd„Z
‡  ZS )"ÚHeadingz
A heading.ÚcenterrI   )Úh1Úh2Úh3Úh4Úh5Úh6z"ClassVar[dict[str, JustifyMethod]]ÚLEVEL_ALIGNr   r   r   r   r    c                 C  s
   | |j ƒS rO   )Útagr"   r!   r!   r$   r%   ‘   s   
zHeading.creater&   r'   r(   c                 C  s   t ƒ | _| | j¡ d S rO   )r   r.   rL   rM   r*   r!   r!   r$   r,   •   s   zHeading.on_enterrf   rR   c                   s    || _ d|› �| _tƒ  ¡  d S )Nú	markdown.)rf   rM   ÚsuperrX   )r+   rf   ©Ú	__class__r!   r$   rX   ™   s   zHeading.__init__r6   r   r7   r   r   c                 c  s,   � | j  ¡ }| j | jd¡}||_|V  d S )NrI   )r.   Úcopyre   Úgetrf   rK   )r+   r6   r7   r.   Úheading_justifyr!   r!   r$   r9   ž   s
   €

zHeading.__rich_console__)r   r   r   r   r    r]   r;   )rf   rR   r    r(   r>   )r?   r@   rA   rE   re   rB   rC   r%   r,   rX   r9   Ú__classcell__r!   r!   ri   r$   r]   …   s   
 ú	
r]   c                   @  s6   e Zd ZdZdZeddd	„ƒZddd„Zddd„ZdS )Ú	CodeBlockz&A code block with syntax highlighting.zmarkdown.code_blockr   r   r   r   r    c                 C  s(   |j pd}| d¡d }| |pd|jƒS )Nr\   ú r   r.   )ÚinfoÚ	partitionÚ
code_theme)r#   r   r   Ú	node_infoÚ
lexer_namer!   r!   r$   r%   ¬   s   
zCodeBlock.createru   rR   Úthemer(   c                 C  s   || _ || _d S rO   )ru   rv   )r+   ru   rv   r!   r!   r$   rX   ²   ó   
zCodeBlock.__init__r6   r   r7   r   r   c                 c  s0   � t | jƒ ¡ }t|| j| jddd�}|V  d S )NTr
   )rv   Ú	word_wrapÚpadding)rR   r.   Úrstripr   ru   rv   )r+   r6   r7   ÚcodeÚsyntaxr!   r!   r$   r9   ¶   s   €ÿ
zCodeBlock.__rich_console__N)r   r   r   r   r    ro   )ru   rR   rv   rR   r    r(   r>   )	r?   r@   rA   rE   rM   rC   r%   rX   r9   r!   r!   r!   r$   ro   §   s    
ro   c                   @  s2   e Zd ZdZdZddd„Zddd„Zddd„ZdS )Ú
BlockQuotezA block quote.zmarkdown.block_quoter    r(   c                 C  ó   t ƒ | _d S rO   ©r   Úelements©r+   r!   r!   r$   rX   Å   rU   zBlockQuote.__init__r&   r'   r2   r   r3   c                 C  ó   | j  |¡ dS ©NF©r€   rP   r4   r!   r!   r$   r5   È   ó   zBlockQuote.on_child_closer6   r   r7   r   r   c           	      c  sd   � |j |jd d�}|j| j|| jd�}| j}tdƒ}td|ƒ}|D ]}|V  |E d H  |V  q"d S )Né   ©Úwidth©rN   Ú
u   â–Œ )ÚupdateÚ	max_widthÚrender_linesr€   rN   r   )	r+   r6   r7   Úrender_optionsÚlinesrN   r   ry   Úliner!   r!   r$   r9   Ì   s   €

ýzBlockQuote.__rich_console__N©r    r(   r=   r>   )r?   r@   rA   rE   rM   rX   r5   r9   r!   r!   r!   r$   r}   À   s    

r}   c                   @  s   e Zd ZdZdZdd	d
„ZdS )ÚHorizontalRulez%A horizontal rule to divide sections.Fr6   r   r7   r   r    r   c                 c  s*   � |j ddd�}t|dd�V  tƒ V  d S )Nzmarkdown.hrrG   ©Údefaultú-)rN   Ú
characters)Ú	get_styler   r   )r+   r6   r7   rN   r!   r!   r$   r9   ß   s   €zHorizontalRule.__rich_console__Nr>   )r?   r@   rA   rE   r   r9   r!   r!   r!   r$   r’   Ú   s    r’   c                   @  s.   e Zd ZdZddd„Zddd„Zddd„ZdS )ÚTableElementz.MarkdownElement corresponding to `table_open`.r    r(   c                 C  s   d | _ d | _d S rO   )ÚheaderÚbodyr�   r!   r!   r$   rX   ê   rw   zTableElement.__init__r&   r'   r2   r   r3   c                 C  s0   t |tƒr
|| _dS t |tƒr|| _dS tdƒ‚)Nz Couldn't process markdown table.F)rQ   ÚTableHeaderElementr™   ÚTableBodyElementrš   ÚRuntimeErrorr4   r!   r!   r$   r5   î   s   

üÿzTableElement.on_child_closer6   r   r7   r   r   c                 c  s–   � t tjddddd�}| jd ur-| jjd ur-| jjjD ]}|j ¡ }| d¡ | 	|¡ q| j
d urF| j
jD ]}dd„ |jD ƒ}|j|Ž  q6|V  d S )NFzmarkdown.table.borderT)r   Úpad_edgerN   Ú	show_edgeÚcollapse_paddingzmarkdown.table.headerc                 S  s   g | ]}|j ‘qS r!   )Úcontent)Ú.0Úelementr!   r!   r$   Ú
<listcomp>
  s    z1TableElement.__rich_console__.<locals>.<listcomp>)r	   r   ÚSIMPLEr™   ÚrowÚcellsr¡   rk   ÚstylizeÚ
add_columnrš   ÚrowsÚadd_row)r+   r6   r7   ÚtableÚcolumnÚheadingr¦   Úrow_contentr!   r!   r$   r9   ÷   s$   €û



zTableElement.__rich_console__Nr‘   r=   r>   )r?   r@   rA   rE   rX   r5   r9   r!   r!   r!   r$   r˜   ç   s
    

	r˜   c                   @  ó$   e Zd ZdZddd„Zddd„ZdS )r›   z@MarkdownElement corresponding to `thead_open` and `thead_close`.r    r(   c                 C  s
   d | _ d S rO   )r¦   r�   r!   r!   r$   rX     rY   zTableHeaderElement.__init__r&   r'   r2   r   r3   c                 C  s   t |tƒsJ ‚|| _dS rƒ   )rQ   ÚTableRowElementr¦   r4   r!   r!   r$   r5     s   z!TableHeaderElement.on_child_closeNr‘   r=   ©r?   r@   rA   rE   rX   r5   r!   r!   r!   r$   r›     ó    
r›   c                   @  r°   )rœ   z@MarkdownElement corresponding to `tbody_open` and `tbody_close`.r    r(   c                 C  ó
   g | _ d S rO   )rª   r�   r!   r!   r$   rX     rY   zTableBodyElement.__init__r&   r'   r2   r   r3   c                 C  ó   t |tƒsJ ‚| j |¡ dS rƒ   )rQ   r±   rª   rP   r4   r!   r!   r$   r5   "  ó   zTableBodyElement.on_child_closeNr‘   r=   r²   r!   r!   r!   r$   rœ     r³   rœ   c                   @  r°   )r±   z:MarkdownElement corresponding to `tr_open` and `tr_close`.r    r(   c                 C  r´   rO   )r§   r�   r!   r!   r$   rX   +  rY   zTableRowElement.__init__r&   r'   r2   r   r3   c                 C  rµ   rƒ   )rQ   ÚTableDataElementr§   rP   r4   r!   r!   r$   r5   .  r¶   zTableRowElement.on_child_closeNr‘   r=   r²   r!   r!   r!   r$   r±   (  r³   r±   c                   @  s2   e Zd ZdZeddd	„ƒZddd„Zd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                 C  s\   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 ‚| |d
�S )NrN   r\   ztext-align:rightÚrightztext-align:centerr^   ztext-align:leftrI   r”   rJ   )rR   Úattrsrl   r   r   )r#   r   r   rN   rK   r!   r!   r$   r%   8  s   
zTableDataElement.createrK   r   r(   c                 C  s   t d|d�| _|| _d S )Nr\   rJ   )r   r¡   rK   rW   r!   r!   r$   rX   I  s   
zTableDataElement.__init__r&   r'   r.   r   c                 C  s.   t |tƒr| j ||j¡ d S | j |¡ d S rO   )rQ   rR   r¡   rP   rS   Úappend_textr/   r!   r!   r$   r0   M  s   
zTableDataElement.on_textNr:   rZ   r<   )r?   r@   rA   rE   rC   r%   rX   r0   r!   r!   r!   r$   r·   4  s    
r·   c                   @  s<   e Zd ZdZeddd„ƒZd dd„Zd!dd„Zd"dd„ZdS )#ÚListElementzA list element.r   r   r   r   r    c                 C  s   | |j t|j dd¡ƒƒS )NÚstartr
   )ÚtypeÚintr¹   rl   r"   r!   r!   r$   r%   W  s   zListElement.createÚ	list_typerR   Ú
list_startú
int | Noner(   c                 C  s   g | _ || _|| _d S rO   )Úitemsr¿   rÀ   )r+   r¿   rÀ   r!   r!   r$   rX   [  s   
zListElement.__init__r&   r'   r2   r   r3   c                 C  rµ   rƒ   )rQ   ÚListItemrÂ   rP   r4   r!   r!   r$   r5   `  r¶   zListElement.on_child_closer6   r   r7   r   r   c                 c  s‚   � | j dkr| jD ]}| ||¡E d H  q	d S | jd u rdn| j}|t| jƒ }t| jƒD ]\}}| |||| |¡E d H  q-d S )NÚbullet_list_openr
   )r¿   rÂ   Úrender_bulletrÀ   ÚlenÚ	enumerateÚrender_number)r+   r6   r7   ÚitemÚnumberÚlast_numberÚindexr!   r!   r$   r9   e  s   €

ÿÿÿzListElement.__rich_console__N)r   r   r   r   r    r»   )r¿   rR   rÀ   rÁ   r    r(   r=   r>   )	r?   r@   rA   rE   rC   r%   rX   r5   r9   r!   r!   r!   r$   r»   T  s    

r»   c                   @  s<   e Zd ZdZdZddd„Zddd„Zddd„Zddd„ZdS )rÃ   zAn item in a list.zmarkdown.itemr    r(   c                 C  r~   rO   r   r�   r!   r!   r$   rX   y  rU   zListItem.__init__r&   r'   r2   r   r3   c                 C  r‚   rƒ   r„   r4   r!   r!   r$   r5   |  r…   zListItem.on_child_closer6   r   r7   r   r   c                 c  s†   � |j |jd d�}|j| j|| jd�}|jddd�}td|ƒ}td|ƒ}td	ƒ}t|ƒD ]\}	}
|	r5|n|V  |
E d H  |V  q-d S )
Né   r‡   r‰   zmarkdown.item.bulletrG   r“   u    â€¢ z   rŠ   )r‹   rŒ   r�   r€   rN   r—   r   r   )r+   r6   r7   rŽ   r�   Úbullet_styleÚbulletry   r   Úfirstr�   r!   r!   r$   rÅ   €  s   €


ýzListItem.render_bulletrÊ   r¾   rË   c                 c  sª   � t t|ƒƒd }|j|j| d�}|j| j|| jd�}|jddd�}tdƒ}	td| |ƒ}
t|›  	|d	 ¡d |ƒ}t
|ƒD ]\}}|rG|n|
V  |E d H  |	V  q?d S )
Né   r‡   r‰   zmarkdown.item.numberrG   r“   rŠ   rp   r
   )rÆ   rR   r‹   rŒ   r�   r€   rN   r—   r   Úrjustr   )r+   r6   r7   rÊ   rË   Únumber_widthrŽ   r�   Únumber_styler   ry   ÚnumeralrÐ   r�   r!   r!   r$   rÈ   �  s   €
ýzListItem.render_numberNr‘   r=   r>   )
r6   r   r7   r   rÊ   r¾   rË   r¾   r    r   )	r?   r@   rA   rE   rM   rX   r5   rÅ   rÈ   r!   r!   r!   r$   rÃ   t  s    


rÃ   c                   @  s$   e Zd Zeddd„ƒZddd„ZdS )ÚLinkr   r   r   r   r    r   c                 C  s   |j  dd¡}| |jt|ƒƒS )NÚhrefú#)r¹   rl   r¡   rR   )r#   r   r   Úurlr!   r!   r$   r%   Ÿ  s   zLink.creater.   rR   r×   c                 C  s   t |ƒ| _|| _d S rO   )r   r.   r×   )r+   r.   r×   r!   r!   r$   rX   ¤  s   

zLink.__init__Nr:   )r.   rR   r×   rR   )r?   r@   rA   rC   r%   rX   r!   r!   r!   r$   rÖ   ž  s    rÖ   c                      sL   e Zd ZdZdZedd	d
„ƒZd‡ fdd„Zd‡ fdd„Zd dd„Z	‡  Z
S )!Ú	ImageItemz#Renders a placeholder for an image.Fr   r   r   r   r    r   c                 C  s   | t |j dd¡ƒ|jƒS )zñFactory 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\   )rR   r¹   rl   Ú
hyperlinksr"   r!   r!   r$   r%   ®  s   zImageItem.createÚdestinationrR   rÜ   r3   r(   c                   s    || _ || _d | _tƒ  ¡  d S rO   )rÝ   rÜ   Úlinkrh   rX   )r+   rÝ   rÜ   ri   r!   r$   rX   »  s   zImageItem.__init__r&   r'   c                   s&   |j j| _tdd�| _tƒ  |¡ d S rH   )rS   rÞ   r   r.   rh   r,   r*   ri   r!   r$   r,   Á  s   
zImageItem.on_enterr6   r   r7   r   r   c                 c  sf   � t | jp	| jp	d d�}| jpt| j d¡ dd¡d ƒ}| jr%| |¡ tj	d|ddd�}|V  d S )	N©rÞ   ú/r
   éÿÿÿÿu   ðŸŒ† rp   r\   )Úend)
r   rÞ   rÝ   r.   r   ÚstripÚrsplitrÜ   r¨   Úassemble)r+   r6   r7   Ú
link_styleÚtitler.   r!   r!   r$   r9   Æ  s   €"

zImageItem.__rich_console__r:   )rÝ   rR   rÜ   r3   r    r(   r;   r>   )r?   r@   rA   rE   r   rC   r%   rX   r,   r9   rn   r!   r!   ri   r$   rÚ   ©  s    rÚ   c                   @  sL   e Zd ZdZ		dddd„Zed dd„ƒZd!dd„Zd"dd„Zd dd„Z	dS )#r'   z!Manages the console render state.NÚmonokair6   r   r7   r   rN   r   Úinline_code_lexerú
str | NoneÚinline_code_themerR   r    r(   c                 C  sD   || _ || _t|ƒ| _tƒ | _d | _|d ur td||d�| _d S d S )Nr\   )rv   )r6   r7   r   Ústyle_stackr   ÚstackÚ_syntaxr   )r+   r6   r7   rN   ré   rë   r!   r!   r$   rX   Ô  s   
ÿzMarkdownContext.__init__c                 C  s   | j jS )z>Current style which is the product of all styles on the stack.)rì   Úcurrentr�   r!   r!   r$   rS   å  s   zMarkdownContext.current_styler.   Ú	node_typec                 C  s\   |dv r$| j dur$| j  |¡}| ¡  | jj | tj|| jj	d�¡ dS | jj | |¡ dS )z#Called when the parser visits text.>   ÚfenceÚcode_inlineNr‰   )
rî   Ú	highlightrz   rí   Útopr0   r   rå   rì   rï   )r+   r.   rð   Úhighlight_textr!   r!   r$   r0   ê  s   ÿzMarkdownContext.on_textrM   ústr | Stylec                 C  s"   | j j|dd�}| j |¡ | jS )zEnter a style context.rG   r“   )r6   r—   rì   ÚpushrS   )r+   rM   rN   r!   r!   r$   rL   õ  s   zMarkdownContext.enter_stylec                 C  s   | j  ¡ }|S )zLeave a style context.)rì   Úpop)r+   rN   r!   r!   r$   rT   û  s   
zMarkdownContext.leave_style)Nrè   )r6   r   r7   r   rN   r   ré   rê   rë   rR   r    r(   )r    r   )r.   rR   rð   rR   r    r(   )rM   rö   r    r   )
r?   r@   rA   rE   rX   ÚpropertyrS   r0   rL   rT   r!   r!   r!   r$   r'   Ñ  s    ú

r'   c                   @  s²   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						d4d5d'd(„Zd6d+d,„Zd7d2d3„ZdS )8r   aÿ  A Markdown renderable.

    Args:
        markup (str): A string containing markdown.
        code_theme (str, optional): Pygments theme for code blocks. Defaults to "monokai". See https://pygments.org/styles/ for code themes.
        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_openrñ   Ú
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è   NrG   TÚmarkuprR   rs   rK   úJustifyMethod | NonerN   rö   rÜ   r3   ré   rê   rë   r    r(   c           	      C  sP   t ƒ  d¡ d¡}|| _| |¡| _|| _|| _|| _|| _|| _	|p$|| _
d S )NÚstrikethroughr¬   )r   Úenabler  ÚparseÚparsedrs   rK   rN   rÜ   ré   rë   )	r+   r  rs   rK   rN   rÜ   ré   rë   Úparserr!   r!   r$   rX   %  s   
zMarkdown.__init__ÚtokensúIterable[Token]c                 c  sL   � |D ] }|j dk}|jdk}|jr |s |s |  |j¡E dH  q|V  qdS )zFlattens the token stream.rñ   ÚimgN)r½   rf   ÚchildrenÚ_flatten_tokens)r+   r  r   Úis_fenceÚis_imager!   r!   r$   r  9  s   €

úzMarkdown._flatten_tokensr6   r   r7   r   r   c                 c  sÆ  � |j | jdd�}|jdd�}t|||| j| jd�}| j}| j}d}t 	¡ }|  
|¡D �]´}	|	j}
|	j}|	jdk}|	jdk}|	jd	k}|
d
krO| |	j|
¡ q+|
dkrZ| d|
¡ q+|
dkre| d|
¡ q+|
dkr”t|	j dd¡ƒ}| jr‰|j ddd�}|t|d�7 }| |¡ q+|j t | |	¡¡ q+|
dkrµ|	jdkrª|j ddd�}| |¡ q+|	jdkr´| ¡  q+q+|
dk�r
| jrÂ| ¡  q+|j ¡ }t|tƒsÎJ ‚|j ddd�}| |¡ | |jj|
¡ | ¡  | d|
¡ |j ddd�}| |¡ | |j|
¡ | ¡  | d|
¡ q+||v �rE|
dk�rE|
dk�rE|�r%| d|› �¡ q+|�r-| ¡  q+| d|› �¡ |	j�r@| |	j|
¡ | ¡  q+| j  |	j¡�pNt!}| | |	¡}|�s[|�rf|j |¡ | "|¡ |�r“|j ¡ }|j �p~|j�o~|jj# $||¡}|�r’|�rˆ|V  | %||j&¡E dH  n?|�rÒ|j ¡  |	j}|du�r©| ||¡ |j �p¹|j�o¹|jj# $||¡}|�rÒ|�rÈ|
d k�rÈ|V  | %||j&¡E dH  |�sØ|�rà| '|¡ |j(}q+dS )!zRender markdown to the console.rG   r“   N)Úheight)ré   rë   Fr
   rá   r   r.   Ú	hardbreakrŠ   Ú	softbreakrp   Ú	link_openr×   r\   zmarkdown.link_urlrß   Úhtml_inlinez<kbd>zmarkdown.kbdÚboldz</kbd>Ú
link_closezmarkdown.linkz (ú)rñ   rü   rg   Úinline))r—   rN   r‹   r'   ré   rë   r  Úinlinesr   r�   r  r½   rf   Únestingr0   r¡   rR   r¹   rl   rÜ   r   rL   rí   r÷   rÖ   r%   rT   rø   rQ   r.   Úplainr×   r€   rD   r,   rô   r5   Úrenderr7   r1   r   )r+   r6   r7   rN   r&   r  Úinline_style_tagsr   Ú_new_line_segmentr   rð   rf   ÚenteringÚexitingÚself_closingr×   ræ   Ú	kbd_styler£   Úlink_url_styleÚelement_classÚshould_renderr.   r!   r!   r$   r9   C  sÌ   €û









ÿ








þ€


ý
€•zMarkdown.__rich_console__)rè   NrG   TNN)r  rR   rs   rR   rK   r  rN   rö   rÜ   r3   ré   rê   rë   rê   r    r(   )r  r  r    r  r>   )r?   r@   rA   rE   rV   r]   ro   r}   r’   r»   rÃ   rÚ   r˜   rœ   r›   r±   r·   r€   rB   r"  rX   r  r9   r!   r!   r!   r$   r     sZ   
 ÿþýüûúùø	÷
öõôóòñðø

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”   r4  z-tz--code-themers   rè   zpygments code theme)r7  r”   r4  z-iz--inline-code-lexerré   z-yz--hyperlinksrÜ   zenable hyperlinks)r7  r8  r4  z-wz--widthrˆ   z*width of output (default will auto-detect))r½   r7  r”   r4  z-jz	--justifyrK   zenable full text justifyz-pz--pageÚpagezuse pager to scroll output)r   r•   zutf-8)ÚencodingÚfullrI   )rK   rs   rÜ   ré   )ÚfileÚforce_terminalrˆ   T)r=  rˆ   Úrecord)\Ú
__future__r   ÚsysÚdataclassesr   Útypingr   r   r   Úmarkdown_itr   Úmarkdown_it.tokenr   Ú
rich.tabler	   r\   r   Ú_loopr   Ú_stackr   r6   r   r   r   r   Ú
containersr   Újupyterr   Úruler   Úsegmentr   rN   r   r   r|   r   r.   r   r   r   rD   rF   rV   r[   r]   ro   r}   r’   r˜   r›   rœ   r±   r·   r»   rÃ   rÖ   rÚ   r'   r   r?   ÚargparseÚArgumentParserr  Úadd_argumentr¾   Ú
parse_argsÚargsÚrich.consoler1  ÚstdinÚreadÚmarkdown_bodyÚopenÚmarkdown_filerK   rs   rÜ   ré   r   r9  ÚioÚpydocÚStringIOÚfileior5  rˆ   ÚprintÚpagerÚgetvaluer!   r!   r!   r$   Ú<module>   s   9	")  *(0 
Cÿýúûûûúûû
ÿû
ÿ

ÿ¡