
    
`i4                        d Z ddlZddlZddlZddlmZmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZ  G d de	          Z G d	 d
 edd                    Z ej        d          Z ej        d          Z ej        d          Z eddej                   eddej                   eddej                   eddej                   eddej                   eddej                   eddej                   ed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" G d" d#          Z#d$e$d%efd&Z%ej&        d'fd(ed)ed*e$d%e$fd+Z'dS ),zGoogle-style docstring parsing.    N)OrderedDict
namedtuple)IntEnum   )EXAMPLES_KEYWORDSPARAM_KEYWORDSRAISES_KEYWORDSRETURNS_KEYWORDSYIELDS_KEYWORDS	DocstringDocstringExampleDocstringMetaDocstringParamDocstringRaisesDocstringReturnsDocstringStyle
ParseErrorRenderingStylec                   "    e Zd ZdZdZ	 dZ	 dZdS )SectionTypezTypes of sections.r   r      N)__name__
__module____qualname____doc__SINGULARMULTIPLESINGULAR_OR_MULTIPLE     k/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/docstring_parser/google.pyr   r      s,        H%H#..r    r   c                       e Zd ZdZdS )SectionzA docstring section.N)r   r   r   r   r   r    r!   r#   r#   (   s        r    r#   SectionBaseztitle key typez\s*(.+?)\s*\(\s*(.*[^\s]+)\s*\)z.*\. Defaults to (.+)\.z(\s*[^:\s]+:)|([^:]*\]:.*)	ArgumentsparamArgs
ParametersParamsRaisesraises
ExceptionsExcept
Attributes	attributeExampleexamplesExamplesReturnsreturnsYieldsyieldsc            	           e Zd ZdZ	 ddej        ej        e                  fdZd Z	de
de
d	efd
Zedede
d	efd            Zedede
de
d	efd            ZdefdZde
d	efdZdS )GoogleParserz#Parser for Google-style docstrings.NTsectionsc                 p    |st           }d |D             | _        || _        |                                  dS )zSetup sections.

        :param sections: Recognized sections or None to defaults.
        :param title_colon: require colon after section title.
        c                     i | ]
}|j         |S r   )title).0ss     r!   
<dictcomp>z)GoogleParser.__init__.<locals>.<dictcomp>M   s    666!666r    N)DEFAULT_SECTIONSr9   title_colon_setup)selfr9   rA   s      r!   __init__zGoogleParser.__init__C   s?      	('H66X666&r    c                     | j         rd}nd}t          j        dd                    d | j        D                       z   dz   |z   dz   t          j                  | _        d S )	N: z^(|c              3   "   K   | ]
}d | dV  dS )()Nr   )r=   ts     r!   	<genexpr>z&GoogleParser._setup.<locals>.<genexpr>X   s*      77Ax1xxx777777r    rK   z	[ 	]*$flags)rA   recompilejoinr9   M	titles_re)rC   colons     r!   rB   zGoogleParser._setupQ   s     	EEEhh77777778  	
 $
 
 
r    textr<   returnc                    | j         |         }|j        t          j        k    rt                              |          r|j        t          j        k    r|                     ||          S d|vrt          d|d          |	                    dd          \  }}|r4d|v r0|	                    dd          \  }}|t          j        |          z   }|rd|d         dk    r
|dd         n|}d|v r3|	                    dd          \  }}|dz   t          j        |          z   }|                    d          }|                     |||          S )	zBuild docstring element.

        :param text: docstring element text
        :param title: title of section containing element
        :return:
        rF   zExpected a colon in .r   
r    N)r9   typer   r   MULTIPLE_PATTERNmatchr   _build_single_metar   splitinspectcleandocstrip_build_multi_meta)rC   rV   r<   sectionbeforedesc
first_linerests           r!   _build_metazGoogleParser._build_meta_   s`    -& LK<<<$**400 =\[111**7D999d??=D===>>> zz#q)) 	9dfnn%||D!44J'"24"8"88F 	$#Aw#~~4884Dt||#'::dA#6#6 
D!D(7+;D+A+AA::d##D%%gvt<<<r    re   rg   c                 x   | j         t          t          z  v r%t          | j         g|d | j         t          v           S | j         t          v rt          | j         g|d           S | j         t          v rt          | j         gd |          S | j         t          v rt          d          t          | j         g|          S )Nargsdescription	type_nameis_generatorrm   rn   ro   )rm   snippetrn   zExpected paramenter name.rm   rn   )keyr
   r   r   r	   r   r   r   r   r   r   )re   rg   s     r!   r_   zGoogleParser._build_single_meta   s    ;*_<<<#k] $[O;	    ;/))"k]    ;+++#k]Dd    ;.((89997;-TBBBBr    rf   c                    | j         t          v rt                              |          }|r`|                    dd          \  }}|                    d          rd}|d d         }n+|                    d          rd}|d d         }n	d}n|d }}d }t                              |          }|r|                    d          nd }t          | j         |g|||||	          S | j         t          t          z  v r&t          | j         |g||| j         t          v 
          S | j         t          v rt          | j         |g||          S t          | j         |g|          S )Nr   r   
, optionalTi?F)rm   rn   arg_namero   is_optionaldefaultrl   rq   rs   )rt   r   GOOGLE_TYPED_ARG_REGEXr^   groupendswithGOOGLE_ARG_DESC_REGEXr   r
   r   r   r	   r   r   )re   rf   rg   r^   ry   ro   rz   r{   s           r!   rd   zGoogleParser._build_multi_meta   s    ;.((*0088E #&+kk!Q&7&7#)%%l33 ("&K )$3$II'',, ("&K )#2#II"'KK&,d)")//55E(-7ekk!nnn4G!k6* !#'    ;*_<<<#k6*  $[O;	    ;/))"k6*    7;"7TJJJJr    c                 L    || j         |j        <   |                                  dS )zLAdd or replace a section.

        :param section: The new section.
        N)r9   r<   rB   )rC   re   s     r!   add_sectionzGoogleParser.add_section   s#     (/gm$r    c                 t	   t          t          j                  }|s|S t          j        |          }| j                            |          }|r9|d|                                         }||                                d         }n|}d}|                    dd          }|d         pd|_	        t          |          dk    rY|d         pd}|                    d          |_        |                    d          |_        |                                pd|_        t#          | j                            |                    }|s|S g }	t'          t          |          dz
            D ]L}
|	                    ||
                                         ||
dz                                            f           M|	                    |d                                         t          |          f           t-                      }t/          |	          D ]\  }
\  }}||
                             d          }|| j        vr-|||         }t5          j        d	|          }||d|                                         }|                    d          ||<   |s|S |                                D ]\  }}t5          j        d
|          }|st9          d| d          |                                }| j        |         j        t<          j        t<          j         fv rCt          j        |          }|j!                            | "                    ||                     d|z   dz   }t#          t5          j        ||t4          j#                            }|st9          d| d| d          g }t'          t          |          dz
            D ]L}
|                    ||
                                         ||
dz                                            f           M|                    |d                                         t          |          f           t/          |          D ]S\  }
\  }}|||                             d          }|j!                            | "                    ||                     T|S )zbParse the Google-style docstring into its components.

        :returns: parsed docstring
        )styleNrG   rZ   r   r   z

rx   z\n\Sz^\s*zCan't infer indent from ""^z(?=\S)rN   zNo specification for "z": ")$r   r   GOOGLEra   rb   rT   searchstartr`   short_descriptionlen
startswithblank_after_short_descriptionr~   blank_after_long_descriptionrc   long_descriptionlistfinditerrangeappendendr   	enumerater}   r9   rP   itemsr   r\   r   r   r   metarj   rS   )rC   rV   retr^   
desc_chunk
meta_chunkpartslong_desc_chunkmatchessplitsjchunksr   r   r<   meta_detailsunknown_metachunkindent_matchindentpart_re	c_matchesc_splitss                           r!   parsezGoogleParser.parse   s   
 n3444 	J %% %%d++ 	oo.Jekkmmoo.JJJJ   q)) %a 0Du::>>#Ahn"O0?0J0J1 1C- 0?/G/G/O/OC,#2#8#8#:#:#BdC  t~..z::;; 	Js7||a'(( 	F 	FAMM71:>>++WQU^-A-A-C-CDEEEEwr{((#j//:;;;(00 	5 	5OA|sAJ$$Q''EDM)) &eCi0L9Wl;;L'+,Bl.@.@.B.B,BC(..t44F5MM 	J #LLNN 	? 	?LE59We44L H !Fe!F!F!FGGG!''))F }U#($0-   '.. 0 0u = =>>> ,*CR[e24@@@AAI O !M%!M!MU!M!M!MNNNH3y>>A-.. P P1!1!1!3!3Yq1u5E5K5K5M5M NOOOOOOYr]..00#e**=>>>#,X#6#6 ? ?<E3U3Y'--d33 0 0u = =>>>>? 
r    )NT)r   r   r   r   TOptionalListr#   rD   rB   strr   rj   staticmethodr_   rd   r   r   r   r   r    r!   r8   r8   @   sR       -- IM 
16'?3   
 
 
"= "=C "=M "= "= "= "=H CG C3 C= C C C \C( )K)K"%)K-0)K	)K )K )K \)KV7    X# X) X X X X X Xr    r8   rV   rW   c                 D    t                                          |           S )zZParse the Google-style docstring into its components.

    :returns: parsed docstring
    )r8   r   )rV   s    r!   r   r   (  s    
 >>%%%r    z    	docstringrendering_styler   c                    dt           j        t          t          t          f         ffddt
          dt           j        t           j                 ffd}g | j        r	                    | j                   | j
        r	                    d           | j        r	                    | j                   | j        r	                    d            |dd | j        pg D                         |d	d
 | j        pg D                         |dd | j        pg D                         |dd | j        pg D                         |d| j        pg            | j        r]| j        sV| j        }	                    |rdnd           	                    dt#          d                   z              |           | j        D ]}t'          |t          t          t          f          r%	                    |j        d                             dd                                          dz              |j        rMfd|j                                        D             }	                    d                    |                     	                    d           ؉r&d         s                                 rd         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
    onec                    d}t          | t                    r|| j        pdz  }n!t          | t                    r|| j        pdz  }t          | t                    r| j        rt          j        k    rdnd}nd}| j        r|r|d| j         | dz  }n| j        r|| j         | dz  }n|dz  }|z   }| j	        r\t          j
        k    rLd                      |g| j	                                        z             }                    |           d S | j	        rV| j	                                        ^}}d                      |dz   |z   g|z             }                    |           d S                     |           d S )	NrG   rw   rv   z (z):rF   rZ   r[   )
isinstancer   ry   r   return_namerz   r   COMPACTro   rn   EXPANDEDrR   
splitlinesr   )	r   headoptionalbodyfirstri   r   r   r   s	         r!   process_onezcompose.<locals>.process_one=  s    c>** 	*CL&B&DD-.. 	*CO)r)Dc>** 	s 	 #n&<<< ! H H= 	T 	444444DD] 	s}1h1111DDCKD}? 
	.2III((((--33555 D LL_ 	 _7799NUT((((--tczE/A.BT.IJJDLLLLr    namerm   c                     |r<                     |            |D ]} |                                d           d S d S )NrG   )r   )r   rm   argr   r   s      r!   process_sectzcompose.<locals>.process_sectd  sa     	LL ! !C    LL		 	r    rG   zArgs:c                 4    g | ]}|j         d          dk    |S )r   r&   rm   r=   ps     r!   
<listcomp>zcompose.<locals>.<listcomp>w  s(    LLLqvayG7K7K!7K7K7Kr    zAttributes:c                 4    g | ]}|j         d          dk    |S )r   r/   r   r   s     r!   r   zcompose.<locals>.<listcomp>|  s(    GGGqafQi;.F.F.F.F.Fr    zReturns:c                      g | ]}|j         	|S r   rp   r   s     r!   r   zcompose.<locals>.<listcomp>  s    GGGqGGGGr    zYields:c                      g | ]}|j         	|S r   r   r   s     r!   r   zcompose.<locals>.<listcomp>  s    NNN!q~NANNNr    zRaises:-rx   r   _rF   c                     g | ]}|z   S r   r   )r=   lr   s     r!   r   zcompose.<locals>.<listcomp>  s    GGGAVaZGGGr    rZ   )r   Unionr   r   r   r   r   Anyr   r   r   r   r   paramsmany_returnsr+   r4   r   r   r   rm   replacer<   rn   r   rR   pop)	r   r   r   r   r   r   linesr   r   s	    ``    @@r!   composer   0  sh   %W^%5FG% % % % % % % %N3 afQUm        E" 2Y0111. R! 1Y/000- RLLLY-3LLL   LGGI$*GGG  
 LGGI*0bGGG  
 LNNy5;NNN   LI,2333 !7 #5YY:666S3uRy>>)***C 	 	>#3_E
 
 	 TYq\))#r2288::S@AAA 	+GGGG)9)D)D)F)FGGGELL5))***R
 b	 		  b	  99Ur    )(r   ra   rP   typingr   collectionsr   r   enumr   commonr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r#   rQ   r|   r   r]   r   r   r   r@   r8   r   r   r   r   r   r    r!   <module>r      s9   % %  				     / / / / / / / /                                     $
/ 
/ 
/ 
/ 
/' 
/ 
/ 
/    jj(899    $$FGG "
#=>> 2:;<<  GK+"677GFG[122GL';#788GHg{344GHh 455GL(K$899GHh 455GL+{';<<GIz;#788GJ
K$899GIy+"BCCGHh @AA  e e e e e e e eP& &	 & & & & '5&<n nn#n n 		n n n n n nr    