
    h"              	           S r SSKrSSKrSSKrSSKJrJrJrJ	r	J
r
JrJrJr  S\S\R                  \   4S jrS\S\4S	 jr\R$                  S
4S\S\S\S\4S jjrg)z^Epyoc-style docstring parsing.

.. seealso:: http://epydoc.sourceforge.net/manual-fields.html
    N   )	DocstringDocstringMetaDocstringParamDocstringRaisesDocstringReturnsDocstringStyle
ParseErrorRenderingStylestringreturnc                 F    U R                  5       n [        U 5      S:  a  U $ g )Nr   )striplen)r   s    Q/home/james-whalen/.local/lib/python3.13/site-packages/docstring_parser/epydoc.py
_clean_strr      s     \\^F
6{Q    textc           
      (   [        [        R                  S9nU (       d  U$ [        R                  " U 5      n [
        R                  " SU [
        R                  S9nU(       a&  U SUR                  5        nXR                  5       S nOU nSnUR                  SS5      nUS   =(       d    SUl
        [        U5      S:  aX  US   =(       d    SnUR                  S5      Ul        UR                  S	5      Ul        UR!                  5       =(       d    SUl        [
        R$                  " S
5      n[
        R$                  " S5      n[
        R$                  " S5      n	[
        R$                  " S5      n
/ n[
        R&                  " SU[
        R(                  [
        R                  -  S9 GH*  nUR+                  S5      nU(       d  M  [
        R                  " X|5      n[
        R                  " X5      n[
        R                  " X5      n[
        R                  " X5      nU=(       d    U=(       d    U=(       d    UnU(       d  [-        SU S35      eXR/                  5       S nU(       a4  SnUR+                  S5      nUR+                  S5      R!                  5       /nOU(       aH  SnUR+                  S5      nUR+                  S5      c  / OUR+                  S5      R!                  5       /nOU(       a  SnUR+                  S5      n/ nOlSnUR+                  S5      n[1        UR+                  S5      R!                  5       5      nUc  / O[
        R                  " SU5      nUS;   a  [-        SU S35      eUR!                  5       nSU;   a1  UR                  SS5      u  nnUS-   [        R                  " U5      -   nUR3                  UUUU45        GM-     0 nU Hp  u  nnnnUS;  a  M  U=(       d    Su  nUR5                  U0 5      nSU;   a  SOSnUUU'   US:X  d  MF  US;   nUR5                  SU5      U:w  d  Mc  [-        SU S35      e   0 nU GH  u  nnnnUS:X  a  UR7                  US   S 5      (       d  Uu  nUU   nUR7                  S5      nU(       a  UR                  S!5      (       a  S"nUSS# nOS n[
        R8                  " S$U[
        R:                  S9nU(       a   UR+                  S5      R=                  S%5      OSn [?        UU/UR7                  S5      UUUU S&9n!S"UU'   OUS:X  a]  UR7                  SS 5      (       dF  US   n[A        U/UR7                  S5      UR7                  S5      UR7                  SS 5      S'9n!S"US'   OaUS:X  a  U=(       d    S(u  n[C        U/U-   UUS)9n!O>US:X  a  [E        U/U-   US*9n!O)U=(       d    Stnn"UR7                  US 5      (       d   eGM  URF                  R3                  U!5        GM     U$ )+zRParse 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!(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   raiser   metaz\s+)r   keywordtyper   rtypeyieldytype)r   r   )r   r   	type_namedescription>   r!   r"   is_generatorz$Error parsing meta information for "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   retrC   
desc_chunk
meta_chunkpartslong_desc_chunkparam_patternraise_patternreturn_patternmeta_patternstreamchunkparam_matchraise_matchreturn_match
meta_matchbasekeyr)   tokendesc
first_linerestparamsr*   infoinfo_keyr%   is_doner#   r+   r,   	meta_item_s#                                      r   parsera      s   
 .//
0C
D!DIIdD-E/EKKM*
++-/*


T1%E!!H,C
5zA~(.b,;,F,Ft,L)+:+C+CF+K(.446>$JJ8M JJCDMZZ >?N::9L
 ;=FZrttbdd{ Aii5ii5yy7YY|3
H{HlHjDUG2NOO99;=)
D{{1~CKKN((*+DD{{1~CQ/2ekk!n6J6J6L5MDD{{1~CDD{{1~Cu{{1~3356E2BHHVU,CD    !;E7"E  !4<#zz$2J$w'7'7'==DtS$-.mr /1F!'c4**)k  2."(C-;]X8"44L~|<L :8*BG  "(  "$G!'c47?7;;tAw#>#>KX(#D-IY//44"%crN	#HH2D		JE49ekk!n++C0tG&8_ HH]3!#'I !%GHXgkk(E&B&B(#D(U HH]3((;/!XXne<	I !%GHW_?7LY'UT\ #I
 V^%UT\ I
 +IS1;;sE****	"e "(h Jr   z    	docstringrendering_styleindentc                   ^^ S[         R                  [           S[        S[        4UU4S jjn/ nU R                  (       a  UR                  U R                  5        U R                  (       a  UR                  S5        U R                  (       a  UR                  U R                  5        U R                  (       a  UR                  S5        U R                   GH	  n[        U[        5      (       a  UR                  (       aX  UR                  (       a  UR                   S3OUR                  nSUR                   S3nXs" US	5      -  nUR                  U5        S
UR                   S3U" UR                  S5      -   nUR                  U5        M  [        U[         5      (       a  UR"                  (       a  SOSu  pUR                  (       a+  SU	 S3U" UR                  S	5      -   nUR                  U5        UR                  (       a.  SU S3U" UR                  S5      -   nUR                  U5        GM`  GMc  [        U[$        5      (       aL  UR                  (       a  SUR                   S3OSnXs" UR                  S5      -  nUR                  U5        GM  SSR'                  UR(                  5       S3nXs" UR                  S5      -  nUR                  U5        GM     SR'                  U5      $ )zRender 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
rX   is_typer   c                   > U (       d  gT[         R                  :X  d  T[         R                  :X  aG  U(       d@  U R                  5       tp#SR	                  ST-   U-   /U Vs/ s H  nTU-   PM
     sn-   5      $ U R                  5       tp#SR	                  SU-   /U Vs/ s H  nTU-   PM
     sn-   5      $ s  snf s  snf )Nr   r    )r   EXPANDEDCLEAN
splitlinesjoin)rX   rf   firstrZ   linerd   rc   s        r   process_desccompose.<locals>.process_desc   s    n555~333G!__.NU99&'T*JTT6D=T*JJ  *yy#+D)IDD&4-D)IIJJ	 +K *Js   !B6
B;
r   r&   z@type :Tz@param F)r!   r"   )r   r    @z@raise z@raise:rh   r   )TOptionalstrboolr5   r@   r7   r:   r9   r   
isinstancer   r#   r+   r*   r$   r   r%   r   rl   r)   )
rb   rc   rd   ro   rI   r   r#   r   arg_keytype_keys
    ``       r   composerz      sz   K1::c? KT Kc K K E""Y001..R!!Y//0--RdN++~~ '' ~~&a( 
  a0Y55T"T]]O1-  %1 D LL.// $$ #(  W
 ~~8*Adnnd)KKT"7)1~T5E5Eu(MMT"   o..26..WT^^,A.iDL!1!1599DLLsxx		*+1-DL!1!1599DLLE F 99Ur   )__doc__r.   r0   typingrs   commonr   r   r   r   r   r	   r
   r   ru   rt   r   ra   COMPACTrz    r   r   <module>r      s   
  	 	 	 	s qzz# d d	 dR '5&<&<II#I I 		Ir   