
    c.b                     p
   U d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
mZ d dlZ G d d          ZdZd	Zd
ZdZdZdZdZ ed                    d                    e                    d           ed                    d                    e                    d           ed                    d                    e                    d           ed                    d                    e                    d           ed                    d                    e                    d           ed                    d                    e                    d           ed                    d                    e                    dej                   ed                    d                    e                    dej                   ed                    d                    e                    dej                   edd ej                   ed!d"ej                   ed#d$ej                   ed%d&ej                  gZe
e         ed'<    G d( d)          Z ed*d+d,-           ed.d/d,-           ed0d1d,-           ed2d3d4-           ed5d6d,-           ed7d8d4-           ed9d:d4-           ed;d<d,-          gZd= eD             Ze
e         ed><    ed?d@           edAdB           edCdD          ge edEdF           edGdH           edIdJ           edKdL           edMdN           edOdP           edQdR           edSdNdTU           edVdWdXU          eZe
e         edY<   h dZZ ed[d\           ed]d^          g ed_d`          gdaZee e
e         f         edb<    edcdd          gZ!e
e         ede<   dfe fdgZ" e"dT          Z# e"dX          Z$dhe die%fdjZ& G dk dle          Z' G dm dne          Z( G do dpe(          Z) G dq dre)          Z* G ds dte)          Z+ G du dve(          Z, G dw dxe,e          Z- G dy dze,          Z. G d{ d|e,          Z/ G d} d~e-          Z0 G d de-          Z1 G d de-          Z2 G d de-          Z3 e/             e2             e1             e3             e0             e*             e+            gZ4d eD             Z5g ee!Z6dde de%die fdZ7dS )    )ABCabstractmethod)IntEnumauto)SimpleNamespace)UnionListDictNc            	       <    e Zd Z	 	 ddededeedf         defdZdS )		DirectiveNr   patternreplacementnameflagsc                 >    || _         || _        || _        || _        d S N)r   r   r   r   )selfr   r   r   r   s        9lib/python3.11/site-packages/docstring_to_markdown/rst.py__init__zDirective.__init__	   s%    
 &	


    )Nr   )__name__
__module____qualname__strr   intr    r   r   r   r      s`         "& ),CI      r   r   )	modfuncdataconstclassmethattrexcobj)	memberr   r   macrostructunionenum
enumeratortype)
anyr!   r(   r   r&   varr,   conceptr*   r+   )r   r   r"   r!   r   r#   )dirrole)r-   envvartokenkeywordoptionterm)param	parameterargargumentkeyr4   z:c:({}):`\.?(?P<name>[^`]+?)`|z
`\g<name>`r   r   z:cpp:({}):`\.?(?P<name>[^`]+?)`z:js:({}):`\.?(?P<name>[^`]+?)`z!(:py)?:({}):`\.?(?P<name>[^`]+?)`z"(:rst)?:({}):`\.?(?P<name>[^`]+?)`z:({}):`\.?(?P<name>[^`]+?)`z'^\s*:({}) (?P<type>\S+) (?P<param>\S+):z- `\g<param>` (`\g<type>`):)r   r   r   zG^\s*:({}) (?P<param>\S+): (?P<desc>.*)(\n|\r\n?):type \2: (?P<type>.*)$z"- `\g<param>` (\g<type>): \g<desc>z^\s*:({}) (?P<param>\S+):z- `\g<param>`:z^\s*:type (?P<param>\S+):z  . Type: `\g<param>`:z^\s*:(return|returns):z
- returns:z^\s*:rtype: (?P<type>\S+)z- return type: `\g<type>`z8^\s*:(raises|raise|except|exception) (?P<exception>\S+):z- raises `\g<exception>`:SPHINX_RULESc                   P    e Zd Zd	dededefdZed             Zed             ZdS )

Admonition r   labeliconc                 0    || _         || _        || _        d S r   r   rB   rC   )r   r   rB   rC   s       r   r   zAdmonition.__init__   s    	
			r   c                 &    | j          d| j         dS )Nz **z**)rC   rB   r   s    r   block_markdownzAdmonition.block_markdown   s    )..
....r   c                     | j         dz   S )N:)rH   rG   s    r   inline_markdownzAdmonition.inline_markdown   s    "S((r   N)rA   )r   r   r   r   r   propertyrH   rK   r   r   r   r@   r@      sx         S  C    
 / / X/ ) ) X) ) )r   r@   cautionCautionu   ⚠️ rE   	attention	AttentiondangerDangerhintHintu   🛈	important	ImportantnoteNotetipTipwarningWarningc                 L    g | ]!}t          d |j         d|j                  "S )z\.\. ::r=   )r   r   rK   .0
admonitions     r   
<listcomp>rb      sO     * * * 		 ,,,,.  * * *r   ADMONITION_DIRECTIVESz3\.\. versionchanged:: (?P<version>\S+)(?P<end>$|\n)z*Changed in \g<version>*\g<end>z1\.\. versionadded:: (?P<version>\S+)(?P<end>$|\n)z*Added in \g<version>*\g<end>z/\.\. deprecated:: (?P<version>\S+)(?P<end>$|\n)z%*Deprecated since \g<version>*\g<end>z-\.\. seealso::(?P<short_form>.*)(?P<end>$|\n)z*See also*\g<short_form>\g<end>z.:ref:`(?P<label>[^<`]+?)\s*<(?P<ref>[^>`]+?)>`z\g<label>: `\g<ref>`z,`(?P<label>[^<`]+?)(\n?)<(?P<url>[^>`]+)>`_+z[\g<label>](\g<url>)z:mod:`(?P<label>[^`]+)`z`\g<label>`z0\.\. currentmodule:: (?P<module>.+)(?P<end>$|\n)rA   z:math:`(?P<latex>[^`]+?)`z$\g<latex>$z*\.\. math:: (?P<latex>[^`]+?)(?P<end>$|\n)z$$\g<latex>$$\g<end>z.\.\. highlight:: (?P<language>.+)(?P<end>$|\n)	highlight)r   r   r   z?\.\. (code-block|productionlist)::(?P<language>.*)(?P<end>$|\n)z\g<end>z
code-blockRST_DIRECTIVES>   See AlsoNotesReturnsExamples
Attributes
Parameters
Referencesz#^(?P<other_args>\*\*kwargs|\*args)$z- `\g<other_args>`zA^(?P<arg1>[^:\s]+\d), (?P<arg2>[^:\s]+\d), \.\.\. : (?P<type>.+)$z)- `\g<arg1>`, `\g<arg2>`, `...`: \g<type>z-^\.\. \[(?P<number>\d+)\] (?P<first_line>.+)$z - [\g<number>] \g<first_line>)rk   rl   SECTION_DIRECTIVESz__(?P<text>\S+)__z\_\_\g<text>\_\_ESCAPING_RULESr   c                 @      fdt           D             d         j        S )Nc                 *    g | ]}|j         k    |S r   r   )r`   	directiver   s     r   rb   z+_find_directive_pattern.<locals>.<listcomp>F  s6       >T!  r   r   )re   r   rq   s   `r   _find_directive_patternrs   E  s=       #1   	 
r   valuereturnc                     t           D ]"}|dz   dt          |          z  z   dz   | v r dS #t          D ]}t          j        |j        |           r dS  t          t          j        d|           pd| v           S )N
-Tz(\s|\w)::\nz
>>> )_RST_SECTIONSlenre   researchr   bool)rt   sectionrr   s      r   looks_like_rstr   P  s       dNS3w<<//$65@ 	44	#  	9Y&.. 	44	 	.%00EH4EFFFr   c                       e Zd ZU dZeed<   dS )IBlockBeginningze
    Line that does not belong to the code block and should be prepended and analysed separately
    	remainderN)r   r   r   __doc__r   __annotations__r   r   r   r   r   \  s%           NNNNNr   r   c                       e Zd ZU ededefd            Zedededefd            Zededefd            Z	ededdfd            Z
ed	edefd
            Z	 dZed         ed<   dS )IParserlineru   c                     dS )z>Whether the line looks like a valid beginning of parsed block.Nr   r   r   s     r   	can_parsezIParser.can_parsee        r   current_languagec                     dS )zInitiate parsing of given line.

        Arguments:
            line: first line to be parsed (that passed `can_parse()` test)
            current_language: language to use if highlighting code and no other language is specified in `line`
        Nr   r   r   r   s      r   initiate_parsingzIParser.initiate_parsingi  r   r   c                     dS )zMWhether the line can be parsed, or does it look like an end of parsable area?Nr   r   s     r   can_consumezIParser.can_consumer  r   r   Nc                     dS )zParse given line.Nr   r   s     r   consumezIParser.consumev  r   r   finalc                     dS )z>Finish parsing and return the converted part of the docstring.Nr   )r   r   s     r   finish_consumptionzIParser.finish_consumptionz  r   r   r   Nfollower)r   r   r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c  s*        Mc Md M M M ^M S C O    ^ \ \ \ \ \ ^\  C  D       ^  M M M M M ^M Q'+HeO$+++++r   r   c                      e Zd ZU  G d de          Zeed<   eed<   eed<   eed<   eed<   ee         ed<   eed	<   ee         ed
<   eee                  ed<   ee         ed<   eed<   d Z	d Z
dedefdZdededefdZdedefdZdeddfdZdefdZdedee         fdZej        fdee         defdZdedefdZdS )TableParserc                   r    e Zd Z e            Z e            Z e            Z e            Z e            ZdS )TableParser.StateN)	r   r   r   r   AWAITSPARSING_HEADERPARSED_HEADERPARSING_ROWSFINISHEDr   r   r   Stater     sE        tvv466r   r   outer_border_patterncolumn_top_prefixcolumn_top_bordercolumn_end_offset_state_column_starts_columns_end_columns_rows
_max_sizes_indentc                 .    |                                   d S r   )_reset_staterG   s    r   r   zTableParser.__init__  s    r   c                     t           j        j        | _        g | _        d| _        g | _        g | _        g | _        d| _	        d S )NrA   )
r   r   r   r   r   r   r   r   r   r   rG   s    r   r   zTableParser._reset_state  s?    !'. 
r   r   ru   c                 P    t          t          j        | j        |                    S r   )r}   r{   matchr   r   s     r   r   zTableParser.can_parse  s    BHT6==>>>r   r   c                    |                                   t          j        | j        |          }|sJ |                                }|d         pd| _        g | _        |                    d          | _        | j	        }t          |          D ]7\  }}|| j        k    r%|| j	        k    r| j                            |           |}8d | j        D             | _        t          j        j        | _        t%          d          S )NindentrA   columnc                     g | ]}d S )r   r   )r`   is     r   rb   z0TableParser.initiate_parsing.<locals>.<listcomp>  s    :::1:::r   r   )r   r{   r   r   	groupdictr   r   endr   r   	enumerater   appendr   r   r   r   r   r   )r   r   r   r   groupspreviousr   chars           r   r   zTableParser.initiate_parsing  s   2D99""h'-2 !IIh//)  	 	GAtt-- .(d>T2T .#**1---HH::d&9:::!'6,,,,r   c                 P    t          | j        t          j        j        k              S r   )r}   r   r   r   r   r   s     r   r   zTableParser.can_consume  s    DK;#4#==>>>r   Nc                 (   t           j        }| j        |j        k    r,|                     |          | _        | xj        dz  c_        d S | j        |j        k    r| xj        dz  c_        d S | j        |j        k    r|                     |           d S d S N   )	r   r   r   r   _splitr   r   r   _consume_row)r   r   statess      r   r   zTableParser.consume  s    ";&// 	$ KK--DMKK1KKKK[F00 	$KK1KKKK[F// 	$d#####	$ 	$r   c                     t          j        | j        |          }|r| xj        dz  c_        d S | j                            |                     |                     d S r   )r{   r   r   r   r   r   r   )r   r   r   s      r   r   zTableParser._consume_row  sZ    2D99 	1KK1KKKKJdkk$//00000r   c                    | j         sJ g }t          | j                   D ]\  }}|t          | j                   dz
  k     r| j         |dz            | j        z   n| j        }|||                                         }t          |d          }t          | j        |         t          |                    | j        |<   |	                    |           |S )Nr   F)extract_signature)
r   r   rz   r   r   striprst_to_markdownmaxr   r   )r   r   	fragmentsr   startr   fragments          r   r   zTableParser._split  s    """"	!$"566 		' 		'HAu s4.//!33"#AE*T-CCC! 
 E#I,,..H&x5IIIH!$T_Q%7X!G!GDOAX&&&&r   rowc                       fdt          |          D             } j        dz   d                    |          z   dz   S )Nc                 D    g | ]\  }} |j         |                   S r   )r   )r`   r   ealignr   s      r   rb   z%TableParser._wrap.<locals>.<listcomp>  s@     
 
 
1 E!T_Q'((
 
 
r   z| z | z |
)r   r   join)r   r   r   
padded_rows   ` ` r   _wrapzTableParser._wrap  s\    
 
 
 
 
!#
 
 

 |d"ejj&<&<=FFr   r   c                     |                      | j        t          j                  }||                      d | j        D                       z  }| j        D ]}||                      |          z  }|S )N)r   c                     g | ]}d |z  S )rx   r   )r`   sizes     r   rb   z2TableParser.finish_consumption.<locals>.<listcomp>  s,     
 
 
 $J
 
 
r   )r   r   r   centerr   r   )r   r   resultr   s       r   r   zTableParser.finish_consumption  s    DM<<$** 
 

 
 
   	
 : 	& 	&Cdjjoo%FFr   )r   r   r   r   r   r   r   r   r	   r   r   r}   r   r   r   r   r   r   r   ljustr   r   r   r   r   r   r     s                KKKI3iS	?S	LLL    ?c ?d ? ? ? ?-S -C -O - - - -"? ? ? ? ? ?	$C 	$D 	$ 	$ 	$ 	$1 1 1 1 13 49     +.) G Gc G G G G G
 
 
 
 
 
 
 
r   r   c                       e Zd ZdZdZdZdZdS )SimpleTableParserz$^(?P<indent>\s*)=+(?P<column> +=+)+$ =r   N)r   r   r   r   r   r   r   r   r   r   r   r     s(        Br   r   c                   f     e Zd ZU dZdZdZdZeed<    fdZ	de
defd	Zde
defd
Zde
fdZ xZS )GridTableParserz$^(?P<indent>\s*)(?P<column>\+-+)+\+$+rx   r   _expecting_row_contentc                 V    t                                                       d| _        d S NT)superr   r   r   	__class__s    r   r   zGridTableParser._reset_state  s'    &*###r   r   ru   c                     |                                 }| j        r|                    d          S |                    d          S )Nr<   z+-)lstripr   
startswith)r   r   strippeds      r   _is_correct_rowzGridTableParser._is_correct_row  sB    ;;==& 	-&&s+++&&t,,,r   c                     t          | j        t          j        j        k              o.| j        t          j        j        k    p|                     |          S r   )r}   r   r   r   r   r   r   r   s     r   r   zGridTableParser.can_consume
  sI     1 ::;; Z[K-::Xd>R>RSW>X>X	
r   c                     |                      |          rC| j        r-| j                            |                     |                     | j         | _        d S | xj        dz  c_        d S r   )r   r   r   r   r   r   r   s     r   r   zGridTableParser._consume_row  sm    %% 	* 5
!!$++d"3"3444.2.I*ID'''KK1KKKKr   )r   r   r   r   r   r   r   r}   r   r   r   r   r   r   __classcell__r   s   @r   r   r     s         B    + + + + +-C -D - - - -
 
 
 
 
 
        r   r   c                       e Zd ZU dZdZed         ed<   ee         ed<   e	ed<   d Z
eded	e	fd
            ZdefdZdefdZde	d	efdZdS )BlockParserz```Nr   r   _buffer_block_startedc                 "    g | _         d| _        d S NF)r   r   rG   s    r   r   zBlockParser.__init__   s    #r   r   ru   c                     dS )zKAll children should call _start_block in initiate_parsing() implementation.Nr   r   s     r   r   zBlockParser.can_parse$  r   r   languagec                 X    | j                             | j        |z              d| _        d S r   )r   r   	enclosurer   )r   r   s     r   _start_blockzBlockParser._start_block(  s-    DNX5666"r   c                 f    | j         st          d          | j                            |           d S )NzBlock has not started)r   
ValueErrorr   r   r   s     r   r   zBlockParser.consume,  s8    " 	64555D!!!!!r   r   c                 J   | j         t          | j                   dz
                                           dk    r| j                                          | j                             | j        dz              d                    | j                   }|s|dz  }g | _         d| _        |S )Nr   rA   rw   F)r   rz   r   popr   r   r   r   )r   r   r   s      r   r   zBlockParser.finish_consumption1  s    <DL))A-.4466"< 	LDNT12224<(( 	dNF#r   )r   r   r   r   r   r   r   r	   r   r}   r   r   r   r   r   r   r   r   r   r   r     s         I'+HeO$+++#Y$ $ $ Zc Zd Z Z Z ^Z#S # # # #"C " " " "

 
 
 
 
 
 
 
r   r   c                        e Zd ZU eed<   eedf         ed<    fdZdef fdZ	dedefd	Z
def fd
Zdedef fdZ xZS )IndentedBlockParser_is_block_beginningN_block_indent_sizec                 d    t          t          |                                            d| _        d S r   )r   r  r   r  r   s    r   r   zIndentedBlockParser.__init__B  s.    !4((11333#(   r   r   c                 f    t                                          |           d | _        d| _        d S r   )r   r   r  r  )r   r   r   s     r   r   z IndentedBlockParser._start_blockF  s1    X&&&"&#'   r   r   ru   c                     | j         r|                                dk    rdS t          t          |          dk    rt	          j        d|d                   pt          |          dk              S )NrA   Tr   z^\s)r  r   r}   rz   r{   r   r   s     r   r   zIndentedBlockParser.can_consumeK  sc    # 	

(: 	4SYY]@rxQ'@'@SSYYRS^TTTr   c                 .   | j         r!d| _         |                                dk    rd S | j        6t          |          t          |                                          z
  | _        t                                          || j        d                     d S )NFrA   )r  r   r  rz   r   r   r   r   r   r   s     r   r   zIndentedBlockParser.consumeP  s    # 	',D$zz||r! " 	E&)$ii#dkkmm2D2D&DD#T455677777r   r   c                 b    d| _         d | _        t                                          |          S r   )r  r  r   r   )r   r   r   s     r   r   z&IndentedBlockParser.finish_consumptionZ  s+    #( "&ww))%000r   )r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   s   @r   r  r  >  s         c4i(((() ) ) ) )(S ( ( ( ( ( (
U U U U U U
8C 8 8 8 8 8 81 1 1 1 1 1 1 1 1 1 1 1r   r  c                   B    e Zd ZdedefdZdedefdZdededefdZdS )PythonOutputBlockParserr   ru   c                 ^    |                                 dk    o|                    d           S )NrA   >>>)r   r   r   s     r   r   z#PythonOutputBlockParser.can_consumea  s)    zz||r!@$//%*@*@&@@r   c                 2    |                                 dk    S )NrA   r   r   s     r   r   z!PythonOutputBlockParser.can_parsed  s    zz||r!!r   r   c                 v    |                      d           |                     |           t          d          S NrA   r   r   r   r   r   s      r   r   z(PythonOutputBlockParser.initiate_parsingg  s9    "T,,,,r   N)	r   r   r   r   r}   r   r   r   r   r   r   r   r  r  `  s        A A A A A A"c "d " " " "-S -C -O - - - - - -r   r  c                   |     e Zd ZdedefdZdededefdZdedefdZdef fdZ	dedefdZ
 e            Z xZS )	PythonPromptCodeBlockParserr   ru   c                 ,    |                     d          S )Nr  r   r   s     r   r   z%PythonPromptCodeBlockParser.can_parsen  s    u%%%r   r   c                 v    |                      d           |                     |           t          d          S )NpythonrA   r   r  r   s      r   r   z,PythonPromptCodeBlockParser.initiate_parsingq  s9    (###T,,,,r   c                 V    |                     d          p|                     d          S )Nr  z...r  r   s     r   r   z'PythonPromptCodeBlockParser.can_consumev  s%    u%%?)?)??r   c                 p    t                                          |                     |                     d S r   )r   r   _strip_promptr  s     r   r   z#PythonPromptCodeBlockParser.consumey  s-    **40011111r   c                 r    |                     d          s|                     d          rdnd}||d          S )Nz>>> z...       r  )r   r   r   s      r   r  z)PythonPromptCodeBlockParser._strip_prompt|  s;    __V,,N0G0GNQEFF|r   )r   r   r   r   r}   r   r   r   r   r   r  r  r   r   r   s   @r   r  r  m  s        &c &d & & & &-S -C -O - - - -
@ @ @ @ @ @2C 2 2 2 2 2 2# #     '&((HHHHHr   r  c                   *    e Zd ZdefdZdedefdZdS )DoubleColonBlockParserr   c                 P    |                                                     d          S )Nr^   )rstripendswithr   s     r   r   z DoubleColonBlockParser.can_parse  s    {{}}%%d+++r   r   c                     |}|                                 dk    rd}d}nt          j        dd|          }|                     |           t	          |                                dz             S )Nz.. autosummary::rA   z::$z

r   )r   r{   subr   r   r&  )r   r   r   r   s       r   r   z'DoubleColonBlockParser.initiate_parsing  sn    #::<<-- 	,HDD6&"d++D(###)?@@@@r   N)r   r   r   r   r   r   r   r   r   r$  r$    sY        ,c , , , ,	AS 	AC 	A 	A 	A 	A 	A 	Ar   r$  c                   .    e Zd ZdZdefdZdedefdZdS )MathBlockParserz$$r   c                 2    |                                 dk    S )Nz	.. math::r  r   s     r   r   zMathBlockParser.can_parse  s    zz||{**r   r   c                 L    |                      d           t          d          S r  )r   r   r   s      r   r   z MathBlockParser.initiate_parsing  s'    ",,,,r   N)r   r   r   r   r   r   r   r   r   r   r+  r+    sV        I+c + + + +-S -C - - - - - -r   r+  c                   F    e Zd ZdZd eD             ZdefdZdedefdZdS )NoteBlockParserz
---c                 &    i | ]}d |j          d|S )z.. r^   rq   r_   s     r   
<dictcomp>zNoteBlockParser.<dictcomp>  s7        	"jo!!!:  r   r   c                 8    |                                 | j        v S r   )r   
directivesr   s     r   r   zNoteBlockParser.can_parse  s    zz||t..r   r   c                     | j         |                                         }|                     d|j         d           t	          d          S )Nrw   rA   r   )r3  r   r   rH   r   )r   r   r   ra   s       r   r   z NoteBlockParser.initiate_parsing  sJ    _TZZ\\2
<z8<<<===,,,,r   N)	r   r   r   r   ADMONITIONSr3  r   r   r   r   r   r   r/  r/    st        I %  J
/c / / / /-S -C - - - - - -r   r/  c                   2    e Zd ZdedefdZdededefdZdS )ExplicitCodeBlockParserr   ru   c                 :    t          j        t          |          d uS r   )r{   r   CODE_BLOCK_PATTERNr   s     r   r   z!ExplicitCodeBlockParser.can_parse  s    x*D11==r   r   c                     t          j        t          |          }|sJ |                     |                    d                                          p|           t          d          S )Nr   rA   r   )r{   r   r9  r   groupr   r   )r   r   r   r   s       r   r   z(ExplicitCodeBlockParser.initiate_parsing  s`    +T22%++j117799M=MNNN,,,,r   N)r   r   r   r   r}   r   r   r   r   r   r   r7  r7    s_        >c >d > > > >-S -C -O - - - - - -r   r7  c                 F    i | ]}|d |z   d z   dt          |          z  z   S )rw   rx   )rz   )r`   r~   s     r   r1  r1    sC        TG^d"S3w<<%77  r   Ttextr   c                    d}d}d}g d}d}fd}|                      d          D ]}|rN|rJt          j        d|          }	|	r3|	                    d                                          r|d	|z   d
z   z  }Qd}|                                }
|r|                    |          r|                    |           n^| |            z  }||                    d          z  }|j	        }|r.|
                    |          r|}|                    ||           nd}|st          D ]8}|
                    |          r!|}|                    ||          }|j        } n9t          j        d|          }|rK|                    d          dz   |                    d          z   dz   |                    d          z   dz   }n|t          v rLt          |         D ]>}t          j        |j        |
          r"t          j        |j        |j        |
          } n?|
                                t&          v r|
                                }t          j        t*          |          }|rR|                    d                                          dk    r'|                    d                                          }                    |           | |            z  }|r||                    d          z  }|S )am  
    Try to parse docstrings in following formats to markdown:
    - https://www.python.org/dev/peps/pep-0287/
    - https://www.python.org/dev/peps/pep-0257/
    - https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_numpy.html
    - https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#literal-blocks

    It is intended to improve the UX while better the solutions at the backend
    are being investigated rather than provide a fully-featured implementation.

    Supported features:
    - code blocks:
      - PEP0257 (formatting of code with highlighting, formatting of output without highlighting)
      - after ::
      - production lists,
      - explicit code blocks
    - NumPy-like list items
    - external links (inline only)
    - as subset of paragraph-level and inline directives

    Arguments:
        text - the input docstring
    r  rA   NTc                     d                               } t          D ])}t          j        |j        |j        | |j                  } *t                                          D ]!\  }}| 	                    |d|z   dz             } "g | S )Nrw   )r   z
#### )
r   
DIRECTIVESr{   r)  r   r   r   RST_SECTIONSitemsreplace)linesrr   r~   headerlines_buffers       r   flush_bufferz%rst_to_markdown.<locals>.flush_buffer  s    		,''# 	c 	cIF9,i.CUR[RabbbEE!-!3!3!5!5 	F 	FWfMM&)g*=*DEEEEr   rw   z!^(?P<name>\S+)\((?P<params>.*)\)$r   z
```python
z
```
Fz5^(?P<indent>\s*)(?P<argument>[^:\s]+) : (?P<type>.+)$r   z- `r:   z`: r,   r   )splitr{   r   r;  isidentifierr   r   r   r   r   r   r   BLOCK_PARSERSr   rm   r   r)  r   r&  rA  r|   HIGHLIGHT_PATTERNr   r   )r=  r   r   markdownactive_parsermost_recent_sectionis_first_linerG  r   signature_matchtrimmed_liner   parserblock_startr   section_directivehighlight_matchrF  s                    @r   r   r     ss   0 HH*.M L,0M     

4   8& 8& 	"  "$(+OQU"V"V" '<'<V'D'D'Q'Q'S'S  4y @@H!M{{}} 	)((.. 
)%%d++++LLNN*M<<UCCC(1 ) 2 24 8 8 )$,M!224BBBB$(M  	&'  ##D)) $*M"("9"9$"I"IK&0DE	 HUW[\\E 	@{{8,,u4u{{:7N7NNQVVY^YdYdekYlYlloqq&*<< "-?@S-T " ")8$5$=|LL "#%6*;*CEVEbdp#q#qD!E"  &&((L8 @*6*=*=*?*?'
 !i(94@@O E?#8#8#D#D#J#J#L#LPR#R E*00<<BBDD%%%H ;M44T:::Or   )T)8abcr   r   r*   r   r   typesr   typingr   r	   r
   r{   r   SPHINX_CROSS_REF_PYTHONSPHINX_CROSS_REF_CSPHINX_CROSS_REF_CPPSPHINX_CROSS_REF_JSSPHINX_CROSS_REF_RSTSPHINX_CROSS_REF_OTHERSPHINX_PARAMformatr   	MULTILINEr>   r   r@   r5  rc   re   ry   rm   r   rn   rs   rK  r9  r}   r   r   r   r   r   r   r   r  r  r  r$  r+  r/  r7  rJ  rA  r@  r   r   r   r   <module>rb     s
   # # # # # # # # #         ! ! ! ! ! ! $ $ $ $ $ $ $ $ $ $ 					 	 	 	 	 	 	 	
 
      I077AS8T8TUU!   I299#((CW:X:XYY!   I188BU9V9VWW!   I4;;CHHE\<]<]^^!   I5<<SXXFZ=[=[\\!   I.55chh?U6V6VWW!   I:AA#((<BXBXYY2l  
 IZaabebjbjkwbxbxyy9l  
 I,33CHH\4J4JKK%l  
 I,-l  
 I)!l  
 I,0l  
 IK0l  o<!d9o < < <~) ) ) ) ) ) ) )  J  
 J  
 J  
 J  
 J  
 J  
 J  
 J  I)X* * "* * * tI    IF6   ID4   IB<  5# 5# I@6  5#$ IA+  %5#, I?+  -5#4 I*"  55#< IC  =5#D I,"  E5#L I=+  M5#T IA  U5#^ IR  _5#h i5#Y 5 5 5p   		:-	
 	
 	
 		XD	
 	
 	
	 		D9	
 	
 	
2 2 Dd9o-.   * I$'  #Y   #     ,+K88 ,,\:: 	G# 	G$ 	G 	G 	G 	G    o   , , , , ,c , , ,>k k k k k' k k k\                k      F! ! ! ! !' ! ! !H1 1 1 1 1+s 1 1 1D
- 
- 
- 
- 
-k 
- 
- 
-) ) ) ) )+ ) ) ),A A A A A0 A A A$- - - - -) - - -- - - - -) - - - 	- 	- 	- 	- 	-1 	- 	- 	-  !!OOO    

j j# j$ j# j j j j j jr   