
    Ki                        d Z ddlmZ ddlmZ ddlmZmZ ddlZ	ddl
Z	ddlZ	ddlZ	ddl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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Z+dZ,dZ- e$         G d de      Z.d Z/d Z0 G d de	jb                  jd                        Z3 G d de      Z4e4xZ5xZ6xZ7Z8y)z
reStructuredText parser for rich

Initial few lines gotten from: https://github.com/willmcgugan/rich/discussions/1263#discussioncomment-808898
There are a lot of improvements are added by me
    )StringIO)
HTMLParser)OptionalUnionN)box)Align)ConsoleConsoleOptionsRenderResultNewLine)JupyterMixin)Panel)Style)SyntaxSyntaxTheme)Text)Table)install)Rule)guess_lexer)ClassNotFound)RSTReStructuredTextreStructuredTextRestructuredTextz$Arian Mollik Wasi (aka. Wasi Master)z1.3.2c                   .     e Zd ZdZ fdZd Zd Z xZS )
MLStripperz3Utility class to strip out html for raw html sourcec                 |    t         |           | j                          d| _        d| _        t               | _        y )NFT)super__init__resetstrictconvert_charrefsr   text)self	__class__s    ]/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/rich_rst/__init__.pyr    zMLStripper.__init__-   s/    

 $J	    c                 :    | j                   j                  |       y N)r$   write)r%   ds     r'   handle_datazMLStripper.handle_data4   s    		r(   c                 6    | j                   j                         S r*   )r$   getvalue)r%   s    r'   get_datazMLStripper.get_data7   s    yy!!##r(   )__name__
__module____qualname____doc__r    r-   r0   __classcell__r&   s   @r'   r   r   +   s    =$r(   r   c                 X    t               }|j                  |        |j                         S r*   )r   feedr0   )htmlss     r'   
strip_tagsr;   ;   s     AFF4L::<r(   c                  t   ddl ddli g ffd	} g d}|D ]  }j                  j                  j                  j                  ||        t        j                  j                  j                  j                  d      sh|j                  j                  j                  j                  j                  |<    y)a9  
    Register common Sphinx roles to gracefully handle Sphinx-specific markup.

    Sphinx roles like :func:, :class:, :meth: are very common in Python docstrings
    but are not available in standard docutils. This function registers them to
    render as inline code/literal text instead of showing errors.
    r   Nc                     |}d|v r9|j                  d      r(|j                  d      }|d| j                         }	|	r|	}j                  j	                  ||      }
|
gg fS )a  
        Generic Sphinx role handler that renders as inline literal text.

        Parameters
        ----------
        name : str
            The role name
        rawtext : str
            The entire role text including role markup
        text : str
            The interpreted text content
        lineno : int
            The line number where the interpreted text begins
        inliner : Inliner
            The inliner instance that called this role function
        options : dict
            Directive options for customization
        content : list
            The directive content for customization

        Returns
        -------
        tuple
            A tuple of (nodes, messages)
        <>N)endswithrfindstripnodesliteral)namerawtextr$   linenoinlineroptionscontentdisplay_textbracket_pospotential_displaynodedocutilss              r'   sphinx_rolez+_register_sphinx_roles.<locals>.sphinx_roleL   si    4 $;4==-**S/K $\k 2 8 8 : 0~~%%g|<vrzr(   )funcfunctionmethmethodclassmodmoduleattr	attributeobjobjectdataconstconstantexc	exceptionvarvariabletypezpy:funczpy:methzpy:classzpy:modzpy:attrzpy:objzpy:datazpy:constzpy:excroles)	docutils.parsers.rst.roles!docutils.parsers.rst.languages.enparsersrstrd   register_canonical_rolehasattr	languagesen)rP   sphinx_rolesrolerO   s      @r'   _register_sphinx_rolesro   A   s     &,BDb "HL   A""::4M8##''1144g><@H  **--33D9	Ar(   c                       e Zd ZdZ	 	 	 d9dej
                  j                  dedee	e
f   dee   dee	   ddf fd	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8 Z< xZ=S ):
RSTVisitorz(A visitor that produces rich renderablesdocumentconsole
code_themer   default_lexerreturnNc                     t         |   |       || _        || _        g | _        t
        j                  dd      | _        t
        j                  dd      | _        g | _	        g | _
        || _        || _        i | _        y )NuG   1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ=+-*/×÷u   ¹²³⁴⁵⁶⁷⁸⁹⁰ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖᑫʳˢᵗᵘᵛʷˣʸᶻᴬᴮᶜᴰᴱᶠᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾQᴿˢᵀᵁⱽᵂˣʸᶻ⁼⁺⁻*/×÷u-   1234567890abcdefghijklmnopqrstuvwxyz=+-*/×÷ug   ₁₂₃₄₅₆₇₈₉₀abcdₑfgₕᵢⱼₖₗₘₙₒₚqᵣₛₜᵤᵥwₓyz₌₊₋*/×÷)r   r    rs   rt   renderablesstr	maketrans
supercript	subscripterrorsfooterr   ru   refname_to_renderable)r%   rr   rs   rt   r   ru   r&   s         r'   r    zRSTVisitor.__init__   s     	"$--U H
 ;  >g
 &*%'"r(   c                    t        |j                  d            dk\  r|d   d   n|j                  d      r|d   nd }|`| j                  rT	 t        |j                               }|j                  r|j                  d   n| j
                  }|dk(  r| j
                  S |S || j                  s| j
                  }|S |S # t        $ r | j
                  }Y Hw xY w)Nclasses      formatr   r$   )lengetr   astextaliasesru   r   )r%   rN   lexers      r'   _find_lexerzRSTVisitor._find_lexer   s    "%dhhy&9":a"?DOAX\X`X`aiXjd8npt 	 =T--R#DKKM2 -2MMa(t?Q?Q)))L]4#3#3&&EL ! +**+s   B> >CCc                    |j                   j                  d      }| j                  j                  dd      }|r|j	                  |      }t        |j                         j                  dd      |d      }| j                  r[t        | j                  d	   t
              r>d|_
        t        | j                  d	         }| j                  d	   j                  |       nd
}| j                  j                  |       t        | j                  d	         }|s<|j                   j                  d      }|r| j                  d	   ||f| j                  |<   t        j                   j#                         )Nrefurizrestructuredtext.referencezblue underline on defaultdefault
  styleendr   refname)
attributesr   rs   	get_styleupdate_linkr   r   replacerx   
isinstancer   r   append_textappendr   rO   rC   SkipChildren)r%   rN   r   r   
renderablestartr   r   s           r'   visit_referencezRSTVisitor.visit_reference   s5   $$X.&&'CMh&i%%f-E$++-//c:%RP

4+;+;B+? F JN((,-ER ,,Z8E##J/$""2&'oo)))4G7;7G7G7KUTW6X**73nn))++r(   c                 >   |j                  d      }|r^|d   D ]V  }	 | j                  |   \  }}}|j                  | j                  |      }|j                  |      }|j                  |||       X t        j                  j                         # t        $ r Y w xY w)Nr   names)
r   r   KeyErrorget_style_at_offsetrs   r   stylizerO   rC   r   )r%   rN   urirE   r   r   r   r   s           r'   visit_targetzRSTVisitor.visit_target   s    hhx W 6-1-G-G-M*Js #66t||UK))#.""5%56 nn))++   s   B	BBc                     t        |d      rKt        |j                  t        j                  j
                        r| j                  |j                         y y y )Nparent)rj   r   r   rO   rC   system_messagevisit_system_messager%   rN   s     r'   visit_paragraphzRSTVisitor.visit_paragraph   s>    4"z$++x~~?\?\']%%dkk2 (^"r(   c                     | j                   rct        | j                   d   t              rEt        | j                   d   j                        dk(  r| j                   d   j                  d       y y y y )Nr   r   

)rx   r   r   r   r   r   r   s     r'   depart_paragraphzRSTVisitor.depart_paragraph   sd    
4+;+;B+? F4##B'++,1  $++F3 2 !Gr(   c                    | j                   j                  dd      }| j                  j                  t	        t        |j                         d      t        j                  |             t        j                  j                         )Nzrestructuredtext.titleboldr   center)r   r   )rs   r   rx   r   r   r   r   r   DOUBLErO   rC   r   r%   rN   r   s      r'   visit_titlezRSTVisitor.visit_title   s^    &&'?&PeDKKM8&D#**\a bcnn))++r(   c                    | j                   j                  dd      }| j                  rft        | j                  d   t              rI| j                  d   j                  t	        |j                         j                  dd      |d             y | j                  j                  t	        |j                         j                  dd      d|	             y )
Nzrestructuredtext.textz default on default not underliner   r   r   r   r   r   r   r   )	rs   r   rx   r   r   r   r   r   r   r   s      r'   
visit_TextzRSTVisitor.visit_Text   s    &&'>Hj&k
4+;+;B+? FR ,,T$++-2G2Gc2RZ_eh-ijT[[]%:%:4%E2UZ [\r(   c                 >    t         j                  j                         r*   rO   rC   r   r   s     r'   visit_commentzRSTVisitor.visit_comment       nn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.admonition
bold whiter   r   r   zAdmonition: titler   border_style
rs   r   rx   r   r   r   r   rO   rC   r   r   s      r'   visit_admonitionzRSTVisitor.visit_admonition   sc    &&'Dl&[dkkm&;&;D#&Fndix} ~nn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.attentionzbold black on yellowr   r   r   zAttention: r   r   r   s      r'   visit_attentionzRSTVisitor.visit_attention   sd    &&'CMc&ddkkm&;&;D#&Fmchw| }~nn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.cautionredr   r   r   z	Caution: r   r   r   s      r'   visit_cautionzRSTVisitor.visit_caution   sc    &&'A5&Qdkkm&;&;D#&Fkafuz {|nn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.dangerzbold white on redr   r   r   zDANGER: r   r   r   s      r'   visit_dangerzRSTVisitor.visit_danger  sd    &&'@J]&^dkkm&;&;D#&Fj`ety z{nn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.errorbold redr   r   r   zERROR: r   r   r   s      r'   visit_errorzRSTVisitor.visit_error  sc    &&'?&Tdkkm&;&;D#&Fi_dsx yznn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.hintyellowr   r   r   zHint: r   r   r   s      r'   
visit_hintzRSTVisitor.visit_hint  sc    &&'>&Qdkkm&;&;D#&Fh^crw xynn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.importantz	bold bluer   r   r   zIMPORTANT: r   r   r   s      r'   visit_importantzRSTVisitor.visit_important  sc    &&'C[&Ydkkm&;&;D#&Fmchw| }~nn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.noter   r   r   r   zNote: r   r   r   s      r'   
visit_notezRSTVisitor.visit_note  sc    &&'>&Udkkm&;&;D#&Fh^crw xynn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.tipz
bold greenr   r   r   zTip: r   r   r   s      r'   	visit_tipzRSTVisitor.visit_tip  sc    &&'=|&Tdkkm&;&;D#&Fg]bqv wxnn))++r(   c                    | j                   j                  dd      }| j                  j                  t	        |j                         j                  dd      d||             t        j                  j                         )Nzrestructuredtext.warningbold yellowr   r   r   z	Warning: r   r   r   s      r'   visit_warningzRSTVisitor.visit_warning  sc    &&'A=&Ydkkm&;&;D#&Fkafuz {|nn))++r(   c                 D   | j                   j                  dd      }| j                  rt        | j                  d   t              ro| j                  d   j                  t	        |j                         j                  | j                        |d             t        j                  j                         | j                  j                  t	        |j                         j                  | j                        d|             t        j                  j                         )	Nzrestructuredtext.subscriptnoner   r   r   r   r   r   )rs   r   rx   r   r   r   r   	translater|   rO   rC   r   r   r   s      r'   visit_subscriptzRSTVisitor.visit_subscript$  s    &&'CV&T
4+;+;B+? FR ,,T$++-2I2I$..2Yaflo-pq..--//T[[]%<%<T^^%LRT\a bcnn))++r(   c                 D   | j                   j                  dd      }| j                  rt        | j                  d   t              ro| j                  d   j                  t	        |j                         j                  | j                        |d             t        j                  j                         | j                  j                  t	        |j                         j                  | j                        d|             t        j                  j                         )	Nzrestructuredtext.superscriptr   r   r   r   r   r   r   )rs   r   rx   r   r   r   r   r   r{   rO   rC   r   r   r   s      r'   visit_superscriptzRSTVisitor.visit_superscript,  s    &&'Ev&V
4+;+;B+? FR ,,T$++-2I2I$//2Zbgmp-qr..--//T[[]%<%<T__%MSU]b cdnn))++r(   c                     | j                   j                  dd      }| j                  rt        | j                  d   t              rf| j                  d   j                  t	        |j                         j                  dd      |d             t        j                  j                         | j                  j                  t	        |j                         j                  dd      |d             t        j                  j                         )	Nzrestructuredtext.emphasisitalicr   r   r   r   r   r   rs   r   rx   r   r   r   r   r   rO   rC   r   r   r   s      r'   visit_emphasiszRSTVisitor.visit_emphasis4  s    &&'BH&U
4+;+;B+? FR ,,T$++-2G2Gc2RZ_eh-ij..--//T[[]%:%:4%EUXZ [\nn))++r(   c                     | j                   j                  dd      }| j                  rt        | j                  d   t              rf| j                  d   j                  t	        |j                         j                  dd      |d             t        j                  j                         | j                  j                  t	        |j                         j                  dd      |d             t        j                  j                         )	Nzrestructuredtext.strongr   r   r   r   r   r   r   r   r   s      r'   visit_strongzRSTVisitor.visit_strong<  s    &&'@&&Q
4+;+;B+? FR ,,T$++-2G2Gc2RZ_eh-ij..--//T[[]%:%:4%EUXZ [\nn))++r(   c                     d\  }}d|j                   v r,|j                   j                  d      d   j                         }d|j                   v r,|j                   j                  d      d   j                         }| j                  j	                  t        d      t        |j                  d|xs d      t        |j                  d|xs d      xs |j                  d	      d
            z          t        j                  j                         )N)NNz:target:r   z:alt:u   🌆 altImagetargetr   z#6088ff)linkcolorr   )	rawsourcesplitrB   rx   r   r   r   r   rO   rC   r   )r%   rN   r   r   s       r'   visit_imagezRSTVisitor.visit_imageD  s     V'^^))*5b9??AFdnn$..&&w/399;CMw/(F,=g>Q$((5/#		
 nn))++r(   c                    | j                   j                  dd      }| j                   j                  dd      }|j                  D ]  }|j                  D cg c])  }t        |t        j
                  j                        s(|+ }}|r;|j                  D ]+  }| j                  j                  t        dd      t        d	d|
      z          | j                  j                  t        |j                         j                  dd      |             t        |t        j
                  j                        s|j                  D ]{  }| j                  j                  t        dd      t        dd|
      z          | j                  j                  t        |j                         j                  dd      |             } . | j                  j                  t        dd|
             | j                  j                  t        |j                         j                  dd      |              | j                  j                  t                      t        j
                  j                         c c}w )Nz#restructuredtext.bullet_list_markerr   r   z!restructuredtext.bullet_list_textr   z  r   r   u    ∘ r   r   r   r       u    ▪ u    • )rs   r   childrenr   rO   rC   bullet_listrx   r   r   r   r   r   r   )r%   rN   marker_style
text_style	list_iteminested_lists          r'   visit_bullet_listzRSTVisitor.visit_bullet_listV  s     ||--.S]j-k\\++,OY_+`
 	cI&/&8&8fJq(..JdJd<e1fKf!*!3!3 sI$$++D2,>gSU]iAj,jk$$++D1A1A1C1K1KDRU1V^h,ij!)X^^-G-GH)2);); sI ,,33DR4H4PW]_gsKt4tu ,,33D9I9I9K9S9STXZ]9^fp4qrs	s ##Db$MN##D)9)9);)C)CD#)NV`$ab	c 		*nn))++ gs   )I6I6c           	         | j                   j                  dd      }| j                   j                  dd      }t        |j                  d      D ]s  \  }}| j                  j                  t        d| d|             | j                  j                  t        |j                         j                  d	d      |
             u | j                  j                  t                      t        j                  j                         )Nz'restructuredtext.enumerated_list_markerr   r   z restructuredtext.enumerated_textr   r   r   r   r   r   )rs   r   	enumerater   rx   r   r   r   r   r   rO   rC   r   )r%   rN   r   r   r   r   s         r'   visit_enumerated_listz RSTVisitor.visit_enumerated_listj  s    ||--.Wan-o\\++,NX^+_
%dmmQ7 	cLAy##D1QCc$NO##D)9)9);)C)CD#)NV`$ab	c 		*nn))++r(   c                     | j                   j                  dd      }| j                  rt        | j                  d   t              rf| j                  d   j                  t	        |j                         j                  dd      |d             t        j                  j                         | j                  j                  t	        |j                         j                  dd      |d             t        j                  j                         )	Nz!restructuredtext.inline_codeblockzgrey78 on grey7r   r   r   r   r   r   r   r   s      r'   visit_literalzRSTVisitor.visit_literalt  s    &&'JTe&f
4+;+;B+? FR ,,T$++-2G2Gc2RZ_eh-ij..--//T[[]%:%:4%EUXZ [\nn))++r(   c           	      (   | j                   j                  dd      }| j                  rat        | j                  d   t              rD| j                  d   j                          | j                  d   j                  t	        d             | j                  |      }| j                  j                  t        t        |j                         || j                        |t        j                  |             t        j                   j#                         )N%restructuredtext.literal_block_bordergrey58r   r   r   themer   r   r   )rs   r   rx   r   r   rstripr   r   r   r   r   r   rt   r   SQUARErO   rC   r   )r%   rN   r   r   s       r'   visit_literal_blockzRSTVisitor.visit_literal_block|  s    &&'NX`&a
4+;+;B+? FR '')R ,,T$Z8  &&T__ETY_b_i_iqvw	
 nn))++r(   c                    | j                   j                  t        | j                  j	                  |j                               d|j                  j                  dd       d|j                  j                  dd       d|j                  j                  dd       d|j                  j                  d	d       d
	ddddd|j                  j                  d                      t        j                  j                         )NzSystem Message: rc   ?/levelz (sourcez, line linez);r   z	bold cyanr   r   )NINFOWARNINGERRORr   r   )r}   r   r   rs   
render_strr   r   r   rO   rC   r   r   s     r'   r   zRSTVisitor.visit_system_message  s1   ''6()<)<VS)I(J!DOOL_L_`gilLmKnnpqu  rA  rA  rE  rE  FN  PS  rT  qU  U\  ]a  ]l  ]l  ]p  ]p  qw  y|  ]}  \~  ~@  A$*KMdnoOO''/	
 nn))++r(   c                    | j                   j                  dd      }| j                   j                  dd      }d }t        | j                  d   t              r]| j                  d   }|j
                  d   j                  dk(  r!|j
                  d	   j                  d
k(  r|}d}nt	        dd
d      }d}nd}|du rt	        dd
d      }|j                  t        |j                  d   j                         |      t        |j                  d	   j                         |             | j                  j                  |       n^j                  t        |j                  d   j                         |      t        |j                  d	   j                         |             t        j                  j                         )Nzrestructuredtext.field_namer   r   zrestructuredtext.field_valuer   r   r   z
Field Namer   zField ValueT)
show_linesFr   )rs   r   r   rx   r   columnsheaderadd_rowr   r   r   r   rO   rC   r   )r%   rN   field_name_stylefield_value_styleprevious_tablepossible_tabletables          r'   visit_fieldzRSTVisitor.visit_field  s   <<112OY_1` LL223Q[a2bd&&r*E2!--b1N&&q)00L@~G]G]^_G`GgGgkxGx&!%lMdK!&"NU",$GEMM$t}}Q/668@PQSWX\XeXefgXhXoXoXq  zK  TL  M##E*MM$t}}Q/668@PQSWX\XeXefgXhXoXoXq  zK  TL  Mnn))++r(   c                    | j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }|j                  D ]  }	 |j                  \  }}}| j                  j	                  t        d      t        |j                         |d	      z   t        d
d      z   t        |j                         |      z   t        dd      z   t        |j                         j                  dd      |      z   t        dd      z           t        j                  j-                         # t        $ r |j                  d   |j                  d   }}t        |j                        dkD  r|j                  dd  D ]  }	t        |	t        j                  j                        r| j                  |	       9t        |	t        j                  j                        r| j!                  |	       ot        |	t        j                  j"                        r| j%                  |	       t        |	t        j                  j&                        s| j)                  |	        n| j                  j	                  t        j*                  d| d|j                          d| d      t        dd      z   t        |j                         j                  dd      |      z   t        dd      z          Y w xY w)Nzrestructuredtext.term_styler   r   z!restructuredtext.classifier_stylecyanz"restructuredtext.definitions_styler   r   r   z : r   r   z
      r   r   r   r   r   []z[/
    )rs   r   r   rx   r   r   r   r   
ValueErrorr   r   rO   rC   r   r   literal_blockr
  rD   r  block_quotevisit_block_quotefrom_markupr   )
r%   rN   
term_styleclassifier_styledefinitions_stylechildterm
classifierdefinitionsr   s
             r'   visit_definition_listz RSTVisitor.visit_definition_list  s   \\++,ISY+Z
<<112U_e1f LL223Wag2h]]  	E05-j+,   ''L4;;=
CD5b)* :,,.6FGH :2.	/
 ;--/77cBJ[\] 4R()1 	B nn))++=  #(>>!#4ennQ6Gju~~&*$)NN12$6 =%h0J0JK 228<'(..2N2NO 44X>'(..2H2HI ..x8'(..2L2LM 228<= $$++((1-=,>abQaPbbc)dexR01z002::4EM^_` zr23s   (EDL
$B"L
	L
c                    | j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }|j                  D ]  }|j                  \  }}t        d      }	|j                  D ]  }
	 |
j                  \  }}|	t        |j                         |
      |rt        |j                         |
      n	t               z   t        |j                        dkD  rt        |j                  |
      ndz   z  }	 |r,|	t        d      z  }	|	t        |j                         |
      z  }	| j                  j                  |	t        d      z           t        j                  j                         # t        $ r |
j                  d	   d }}Y w xY w)Nzrestructuredtext.option_stringr   r   z restructuredtext.option_argumentz,restructuredtext.option_child_text_separatorz#restructuredtext.option_descriptionr   r   r   r   r   r%  r   )rs   r   r   r   r&  r   r   child_text_separatorrx   r   rO   rC   r   )r%   rN   option_string_styleoption_argument_style!option_child_text_separator_styleoption_description_styleoption_list_itemoption_groupdescriptionoption_textoptionoption_stringoption_arguments                r'   visit_option_listzRSTVisitor.visit_option_list  s   "ll445U_e4f $ 6 67Yci 6 j,0LL,B,B:F -C -
) $(<<#9#9:_io#9#p  $ 	>(8(A(A%L+2,K&// N5;__2M? --/7JKVetO224<QRkokqs |4459 \>>Fgh tH~-tK$6$6$8@XYY##K$t*$<=+	>, nn))++ " N5;__Q5G?MNs   0F//GGc           	      *   | j                   j                  dd      }| j                  j                  t	        t        |j                         d| j                        |t        j                               t        j                  j                         )Nr  r  r   pyconr  )r   r   )rs   r   rx   r   r   r   r   rt   r   r	  rO   rC   r   r   s      r'   visit_doctest_blockzRSTVisitor.visit_doctest_block  sn    &&'NX`&at{{}gT__E"JJ	
 nn))++r(   c           
         | j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }	 |j                  \  }}| j                  j	                  t        d|	      t        |j                         |	      z   t        d
      z   t        d|j                         z   |	      z          t        j                  j                         # t        $ rn |j                  d   }| j                  j	                  t        d      t        |j                         j                  d
d      |	      z   t        d      z          Y w xY w)Nz restructuredtext.blockquote_textwhiter   z.restructuredtext.blockquote_attribution_markerbright_magentaz,restructuredtext.blockquote_attribution_textgrey89u   ▌ r   r   z  - r   r   r   r   )rs   r   r   rx   r   r   r   r&  r   rO   rC   r   )r%   rN   r   r   author_style	paragraphattributions          r'   r)  zRSTVisitor.visit_block_quote  sQ   \\++,NX_+`
||--<FV . 
 ||--.\fn-o	%)]]"I{ ##V<0y'')<=t* v 2 2 44LIJ nn))++  	a(I##Vy'')11$<JOPv,	s   C3 3A4E*)E*c                     |j                   D ]4  }| j                  j                  t        |j	                                      6 t
        j                  j                         r*   )r   rx   r   r   r   rO   rC   r   )r%   rN   r  s      r'   visit_line_blockzRSTVisitor.visit_line_block  sG    MM 	9D##D$78	9nn))++r(   c                 t   t        |j                        dkD  r|j                  \  }}}n |j                  d   d|j                  d   }}}| j                  j                  t	        |j                         |j                         |j                         d             t        j                  j                         )Nr   r   r   r   F)r   subtitleexpand)	r   r   rx   r   r   r   rO   rC   r   )r%   rN   r   rN  rI  s        r'   visit_sidebarzRSTVisitor.visit_sidebar  s    t}}!)-&E8Y)-q)92t}}Q?OY8E)""$ELLNX__EV_de	
 nn))++r(   c                     | j                   j                  dd      }| j                  j                  t	        |             y )Nzrestructuredtext.hrr   r   r   )rs   r   rx   r   r   r   s      r'   visit_transitionzRSTVisitor.visit_transition#  s5    &&'<h&O5 12r(   c                 &    | j                  |       y r*   )r   r   s     r'   visit_rubriczRSTVisitor.visit_rubric'  s    r(   c                    | j                   rrt        | j                   d   t              rU| j                   d   j                  t        |j	                         d             t
        j                  j                         | j                   j                  t        |j	                                      t
        j                  j                         )Nr   r   r   )rx   r   r   r   r   rO   rC   r   r   s     r'   visit_math_blockzRSTVisitor.visit_math_block*  s    
4+;+;B+? FR ''T[[](DE..--//T[[] 34nn))++r(   c                     | j                   j                  dd      }| j                  j                  t	        |j                         d|             t        j                  j                         )Nz restructuredtext.citation_bordergrey74r   citationr  )	rs   r   rx   r   r   r   rO   rC   r   )r%   rN   r   s      r'   visit_citationzRSTVisitor.visit_citation1  sT    ||--.PZb-cdkkm:T` abnn))++r(   c                    | j                   j                  dd      }| j                  ryt        | j                  d   t              r\| j                  d   j                  |j                         j                  dd      |       t        j                  j                         | j                  j                  t	        |j                         j                  dd      |d	             t        j                  j                         )
Nz#restructuredtext.citation_referencerX  r   r   r   r   r   r   r   )rs   r   rx   r   r   r   r   r   rO   rC   r   r   s      r'   visit_citation_referencez#RSTVisitor.visit_citation_reference6  s    &&'LV^&_
4+;+;B+? FR ''(=(=dC(HPU'V..--//T[[]%:%:4%EUXZ [\nn))++r(   c           	         | j                   j                  dd      }| j                  j                  dt	        t        |j                         d      dt        j                  |             t        j                  j                         )Nzrestructuredtext.captionr   r   r   r   caption)r   r   r   )rs   r   rx   insertr   r   r   r   r   rO   rC   r   r   s      r'   visit_headerzRSTVisitor.visit_header>  se    &&'A6&R5t{{}h)Gy^a^h^hpu#vwnn))++r(   c                     | j                   j                  t        |j                         d             t        j
                  j                         Nr   r~   r   r   r   rO   rC   r   r   s     r'   visit_footerzRSTVisitor.visit_footerC  4    59:nn))++r(   c                     | j                   j                  t        |j                         d             t        j
                  j                         rb  rc  r   s     r'   visit_footnotezRSTVisitor.visit_footnoteG  re  r(   c                     | j                   j                  t        |j                         d             t        j
                  j                         rb  rc  r   s     r'   visit_generatedzRSTVisitor.visit_generatedK  re  r(   c                 >    t         j                  j                         r*   r   r   s     r'   visit_pendingszRSTVisitor.visit_pendingsO  r   r(   c           	          | j                   j                  t        t        |j	                         d| j
                        dd             y )Nrh   )r   r  z#System Message: Problematic Elementr   r  )r}   r   r   r   r   rt   r   s     r'   visit_problematiczRSTVisitor.visit_problematicR  s8    t{{}EI;'	
r(   c           	         | j                   j                  dd      }| j                  |      }|j                         }d|dk(  rdn|z   }|dk(  r;t	        |      }| j
                  rt        |      j                  d   n| j                  }| j                  j                  t        t        ||| j                        |t        j                  |	             t        j                   j#                         )
Nr  r  r   zraw r9   zstripped raw htmlr   r  r  )rs   r   r   r   r;   r   r   ru   rx   r   r   r   rt   r   r	  rO   rC   r   )r%   rN   r   r   r$   r   s         r'   	visit_rawzRSTVisitor.visit_raw[  s    &&'NX`&a  &{{}&-eLF?d#D484D4DK%--a0$J\J\E&uDOO<5VYV`V`hmn	
 nn))++r(   )monokaiTpython)>r1   r2   r3   r4   rO   rC   rr   r	   r   ry   r   r   boolr    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r   r   r2  r@  rC  r)  rL  rP  rR  rT  rV  rZ  r\  r`  rd  rg  ri  rk  rm  ro  r5   r6   s   @r'   rq   rq      sY   2 /8&*'/(..))( ( #{*+	(
 d^(  }( 
(2&,,,34
,
],,
,
,
,
,
,
,
,
,
,
,,,,,$,(,,	,
,,,%,N,>	,,0,

,3,,
,,
,,,,
,r(   rq   c                       e Zd ZdZ	 	 	 	 	 	 ddedeeeef      dee   dee   dee   dee   dee   d	d
fdZ	de
ded	efdZy
)r   a  A reStructuredText renderable for rich.

    Parameters
    ----------
    markup : str
        A string containing reStructuredText markup.
    code_theme : Optional[Union[str, SyntaxTheme]]
        Pygments theme for code blocks. Defaults to "monokai".
    show_errors : Optional[bool]
        Whether to show system_messages aka errors and warnings.
    guess_lexer : Optional[bool]
        Whether to guess lexers for code blocks without specified language.
    default_lexer : Optional[str]
        Which lexer to use if no lexer is guessed or found. Defaults to "python"
    sphinx_compat : Optional[bool]
        Enable compatibility with Sphinx roles (func, meth, class, etc.) commonly used in
        Python docstrings. When enabled, these roles render as inline code instead of errors.
        Defaults to True for better compatibility with Python documentation.
    filename : Optional[str]
        A file name to use for error messages, useful for debugging purposes. Defaults to "<rst-document>"
    markuprt   show_errorsr   ru   sphinx_compatfilenamerv   Nc                 f    || _         || _        || _        || _        || _        || _        || _        y r*   )rt  rt   
log_errorsr   ru   rv  rw  )r%   rt  rt   ru  r   ru   rv  rw  s           r'   r    zRestructuredText.__init__  s8     $%&** r(   rs   rI   c           	   #     K   | j                   r
t                t        t        j                  d      rBt        j                  j                  t        j                  j                  j                        }nQt        j                  j                  t        j                  j                  j                  f      j                         }d|_        t        j                  j                  | j                        }t        j                  j!                  | j"                  |      }t        j                  j                  j                         }|j%                  |j'                         |       t)        ||| j*                  | j,                  | j.                        }|j1                  |       |j2                  rt5        |j2                  d   t6              r\|j2                  d   j9                          d|j2                  d   _        |j2                  d   rna|j2                  j=                          n9t5        |j2                  d   t>              r|j2                  j=                          nn|j2                  r|j2                  D ]  }|jA                  ||      E d {     | jB                  r7|jD                  r+|jD                  D ]  }	|jA                  |	|      E d {     |jG                  dd	      }
|jG                  d
d	      }d}|jH                  D ]  }|} |r6|jA                  tK        |dtL        jN                  ||
            E d {    y y 7 7 |7 
w)Nget_default_settings)
componentsE   )rs   rt   r   ru   r   r   zrestructuredtext.footerr   r   zrestructuredtext.footer_borderrX  r   Footer)r   r   r   r   )(rv  ro   rj   rO   frontendr{  rg   rh   ParserOptionParserget_default_valuesreport_levelioStringInputrt  utilsnew_documentrw  parsereadrq   rt   r   ru   	walkaboutrx   r   r   r  r   popr   renderry  r}   r   r~   r   r   r	  )r%   rs   rI   settingsr  rr   
rst_parservisitorr   errorr   r   footer_textelements                 r'   __rich_console__z!RestructuredText.__rich_console__  s    "$ 8$$&<=((==h>N>N>R>R>Y>YZH  ((55(BRBRBVBVB]B]A_5`ssuH "((5>>..t}}hG%%))002
1 ((,,
 	7# !!'--b148##B'..0.2##B'+&&r*''++-G//3W=##'') !! "-- 	;J~~j':::	;??w~~  :">>%999:!!";V!L(()IS[(\~~ 	"G!K	"~~kszzP\dij    ; :s>   I/M2$MMAMMA3MMMMM)rp  TFrq  Tz<rst-document>)r1   r2   r3   r4   ry   r   r   r   rr  r    r	   r
   r   r   r(   r'   r   r   k  s    2 9B&*&+'/(,"2!! U3#345! d^	!
 d^!  }!  ~! 3-! 
!$6 6. 6\ 6r(   r   )9r4   r  r   html.parserr   typingr   r   docutils.iorO   docutils.nodesdocutils.parsers.rstdocutils.utilsrichr   
rich.alignr   rich.consoler	   r
   r   r   rich.jupyterr   
rich.panelr   
rich.styler   rich.syntaxr   r   	rich.textr   
rich.tabler   rich.tracebackr   	rich.ruler   pygments.lexersr   pygments.utilr   __all__
__author____version__r   r;   ro   rC   SparseNodeVisitorrq   r   r   reSTr   r   r  r(   r'   <module>r     s     " "        G G %   +   "  ' '
M3
 	$ $ CAN`,11 `,F_| _D 4D C Cd C 0r(   