
    X
j$              	           d Z ddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZmZ dedej        e         fdZdej        e         defd	Zej        d
fdedededefdZdS )z^Epyoc-style docstring parsing.

.. seealso:: http://epydoc.sourceforge.net/manual-fields.html
    N   )	DocstringDocstringMetaDocstringParamDocstringRaisesDocstringReturnsDocstringStyle
ParseErrorRenderingStylestringreturnc                 X    |                                  } t          |           dk    r| S d S )Nr   )striplen)r   s    ]/home/kuhnn/.hermes/hermes-agent/venv/lib/python3.11/site-packages/docstring_parser/epydoc.py
_clean_strr      s(    \\^^F
6{{Q4    textc           
      P   t          t          j                  }| s|S t          j        |           } t          j        d| t
          j                  }|r9| d|                                         }| |                                d         }n| }d}|	                    dd          }|d         pd|_
        t          |          dk    rY|d         pd}|                    d          |_        |                    d	          |_        |                                pd|_        t          j        d
          }t          j        d          }t          j        d          }	t          j        d          }
t          j        d          }g }t          j        d|t
          j        t
          j        z            D ]}|                    d          }|st          j        ||          }t          j        ||          }t          j        |	|          }t          j        |
|          }t          j        ||          }|p|p|p|p|}|st-          d| d          ||                                d         }|rAd}|                    d          }|                    d                                          g}n2|r@d}|                    d          }|                    d                                          g}n|rWd}|                    d          }|                    d          g n'|                    d                                          g}n|rd}|                    d          }g }n{d}|                    d          }t1          |                    d                                                    }|g nt          j	        d|          }|dv rt-          d| d          |                                }d|v r3|	                    dd          \  }}|dz   t          j        |          z   }|                    ||||f           i }|D ]l\  }}}}|dvr|pd\  }|                    |i           }d|v rdnd}|||<   |dk    r1|dv }|                    d |          |k    rt-          d!| d          mi }|D ]\  }}}}|d"v r|                    |d         d#          s|\  }||         }|                    d          } | r"|                     d$          rd%}!| dd&         } nd#}!t          j        d'|t
          j                  }|r(|                    d                              d(          nd}"t?          ||g|                    d          || |!|")          }#d%||<   n|dk    rr|                    dd#          s\|d         }tA          |g|                    d          |                    d          |                    d d#          *          }#d%|d<   n_|dk    r|pd+\  } tC          |g|z   || ,          }#n<|dk    rtE          |g|z   |-          }#n |pd^}}$|                    |d#          sJ |j#                            |#           |S ).zZParse the epydoc-style docstring into its components.

    :returns: parsed docstring
    )stylez^@)flagsN 
r   r   z

z-(param|keyword|type)(\s+[_A-z][_A-z0-9]*\??):z((ivar|cvar|var)(\s+[_A-z][_A-z0-9]*\??):z!(raise)(\s+[_A-z][_A-z0-9]*\??)?:z(return|rtype|yield|ytype):z.([_A-z][_A-z0-9]+)((\s+[_A-z][_A-z0-9]*\??)*):z(^@.*?)(?=^@|\Z)z%Error parsing meta information near "z".param   	attributeraiser   metaz\s+)
r   ivarcvarvarkeywordtyper   rtypeyieldytype)r   r   r   )r   r#   	type_namedescription>   r%   r&   is_generatorz$Error parsing meta information for ")r   r   F?Tz.*defaults to (.+).)argsr(   arg_namer'   is_optionaldefault)r-   r(   r'   r)   )N)r-   r(   r'   )r-   r(   )$r   r	   EPYDOCinspectcleandocresearchMstartsplitshort_descriptionr   
startswithblank_after_short_descriptionendswithblank_after_long_descriptionr   long_descriptioncompilefinditerSgroupr
   endr   append
setdefaultgetmatchDOTALLrstripr   r   r   r   r   )%r   retrG   
desc_chunk
meta_chunkpartslong_desc_chunkparam_patternattribute_patternraise_patternreturn_patternmeta_patternstreamchunkparam_matchattribute_matchraise_matchreturn_match
meta_matchbasekeyr-   tokendesc
first_linerestparamsr.   infoinfo_keyr)   is_doner'   r/   r0   	meta_item_s%                                        r   parserg      sc   
 ./
0
0
0C 
D!!DIdD---E /EKKMM/*
%++--//*



T1%%E!!H,C
5zzA~~(.b,;,F,Ft,L,L)+:+C+CF+K+K(.4466>$J8 M 
#NOOJCDDMZ >??N:9 L
 ;=FZrtbd{   D/ D/ A 	iu55)$5u==iu55y77Y|U33
     	  	PNUNNNOOO599;;==)
 &	D{{1~~CKKNN((**+DD "	D{{1~~CKKNN((**+DD 	D{{1~~CQ/22ekk!nn6J6J6L6L5MDD 	D{{1~~CDDD{{1~~Cu{{1~~335566E22BHVU,C,CD     !EEEEE   !!4<<#zz$22J$w'7'='==DtS$-.... /1F!'  c4777)k  2.."(C--;;]X8"44L~|<<LL G8GGG   "$G!' 2# 2#c4)))'++d1gu2M2M)KX(#D--I $Y//44 $"%crcN		#H2D	JJJE49Cekk!nn++C000tG&8_ HH]33!#'  I !%GHXgkk(E&B&B(#D(U HH]33((;//!XXne<<	  I !%GHW__?7LY'UT\ #  II
 V^^%UT\   II
 +IS1;;sE*****	""""Jr   z    	docstringrendering_styleindentc                    dt           j        t                   dt          dt          ffd}g }| j        r|                    | j                   | j        r|                    d           | j        r|                    | j                   | j        r|                    d           | j	        D ]}t          |t                    r|j        rG|j        r
|j         dn|j        }d|j         d}| ||d	          z  }|                    |           d
|j         d ||j        d          z   }|                    |           t          |t                     rx|j        rdnd\  }}	|j        r-d|	 d ||j        d	          z   }|                    |           |j        r-d| d ||j        d          z   }|                    |           &t          |t$                    r?|j        rd|j         dnd}| ||j        d          z  }|                    |           zdd                    |j                   d}| ||j        d          z  }|                    |           d                    |          S )a  Render a parsed docstring into docstring text.

    :param docstring: parsed docstring representation
    :param rendering_style: the style to render docstrings
    :param indent: the characters used as indentation in the docstring string
    :returns: docstring text
    r^   is_typer   c                 N   | sdS t           j        k    st           j        k    rC|sA|                                 ^}}d                    dz   |z   gfd|D             z             S |                                 ^}}d                    d|z   gfd|D             z             S )Nr   r   c                     g | ]}|z   S  ro   .0linerj   s     r   
<listcomp>z1compose.<locals>.process_desc.<locals>.<listcomp>   s    *J*J*JT6D=*J*J*Jr    c                     g | ]}|z   S ro   ro   rp   s     r   rs   z1compose.<locals>.process_desc.<locals>.<listcomp>   s    )I)I)ID&4-)I)I)Ir   )r   EXPANDEDCLEAN
splitlinesjoin)r^   rl   firstr`   rj   ri   s       r   process_desczcompose.<locals>.process_desc   s     	2n555~333G3!__..NUT99&'*J*J*J*JT*J*J*JJ   **yy#+)I)I)I)ID)I)I)IIJJJr   r   r*   z@type :Tz@param F)r%   r&   )r   r$   @z@raise z@raise:rt   r   )TOptionalstrboolr9   rD   r;   r>   r=   r   
isinstancer   r'   r/   r.   r(   r   r)   r   ry   r-   )
rh   ri   rj   r{   rM   r   r'   r   arg_keytype_keys
    ``       r   composer      s   K1:c? KT Kc K K K K K K K E" 2Y0111. R! 1Y/000- R " "dN++ !	~ # '(t~(((( 
 1000Y555T"""-T]--- %1 1 D LL.// 	 $)""(  Wh
 ~ #&8dnd)K)KKT""" #%7~~~T5Eu(M(MMT"""o.. 	26.O.T^....iDLL!15999DLL-sxx	**---DLL!15999DLL99Ur   )__doc__r2   r4   typingr~   commonr   r   r   r   r   r	   r
   r   r   r   r   rg   COMPACTr   ro   r   r   <module>r      sG   
  				    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s qz#    s
3 sI s s s sp '5&<I II#I I 		I I I I I Ir   