L ij dZddlZddlZddlmZmZddlmZm Z m Z m Z m Z d,dZ d,dZd,dZd,d Zej"j%d gd d ed eddfdZej"j%dgdd ededededdf dZej"j%dgdd edej.edej.edededdf dZd,dZd,dZd,dZd,dZd,dZd,dZd,d Zd,d!Z d,d"Z!d,d#Z"d,d$Z#d,d%Z$ej"j%d gd&d ed eddfd'Z%ej"j%d d(gd ed eddfd)Z&ej"j%d d*gd ed eddfd+Z'y)-z*Tests for Google-style docstring routines.N) ParseErrorRenderingStyle) GoogleParserSection SectionTypecomposeparsereturnct}|jd}|jdk(sJ|jdk(sJt |j dk(sJy)zQTest parsing an unknown section with default GoogleParser configuration. z. Unknown: spam: a zUnknown:zspam: arN)rr short_descriptionlong_descriptionlenmetaparser docstrings h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/docstring_parser/tests/test_google.py"test_google_parser_unknown_sectionrs_^F  I  & &* 44 4  % % 22 2 y~~ ! ## #cvt}|jd}|jdjdk(sJy)zBTest parsing a multi-line parameter type with default GoogleParseraDescription of the function. Args: output_type (Literal["searchResults", "sourcedAnswer", "structured"]): The type of output. This can be one of the following: - "searchResults": Represents the search results. - "sourcedAnswer": Represents a sourced answer. - "structured": Represents a structured output format. Returns: bool: Indicates success or failure. r output_typeN)rr paramsarg_namers r,test_google_parser_multi_line_parameter_typer s= ^F  I   A  ' '= 88 8rc `ttddtjtddtjtddtjtddtjgd }|j d }|j J|jJt|jd k(sJ|jdjdgk(sJ|jdjdk(sJ|jdjddgk(sJ|jdjdk(sJ|jdjddgk(sJ|jdjdk(sJ|jdjddgk(sJ|jdjdk(sJ|jdjddgk(sJ|jdjdk(sJ|jdjdgk(sJ|jdjdk(sJy )zPTest parsing an unknown section with custom GoogleParser configuration. DESCRIPTIONdesc ARGUMENTSparam ATTRIBUTES attributeEXAMPLESexamplesF title_colona/ DESCRIPTION This is the description. ARGUMENTS arg1: first arg arg2: second arg ATTRIBUTES attr1: first attribute attr2: second attribute EXAMPLES Many examples More examples NrzThis is the description.arg1z first argarg2z second argattr1zfirst attributeattr2zsecond attributezMany examples More examples) rrrSINGULARMULTIPLEr r r rrargs descriptionrs r"test_google_parser_custom_sectionsr46s* M6;+?+? @ K+*>*> ? L+{/C/C D J K,@,@ A  F  I&  & & .. .  % % -- - y~~ ! ## # >>!  ! !fX -- - >>!  ( (,F FF F >>!  ! !gv%6 66 6 >>!  ( (K 77 7 >>!  ! !gv%6 66 6 >>!  ( (L 88 8 >>!  ! !k7%; ;; ; >>!  ( (,= == = >>!  ! !k7%; ;; ; >>!  ( (,> >> > >>!  ! !j\ 11 1 >>!  ( (,J JJ Jrc td}|jtddtj|j d}|j dk(sJ|jdk(sJ|j d}|j dk(sJ|jd k(sJ|j d }t|jd k(sJ|jd jdgk(sJ|jd jd k(sJy)zjTest parsing an unknown section with custom GoogleParser configuration that was set at a runtime. Fr$NotenotezE short description Note: a note zshort descriptionzNote: a notez8 short description Note a note z Note a notezD short description Note a note r'rza noteN) r add_sectionrrr0r r r rrr2r3rs r(test_google_parser_custom_sections_afterr9gse ,F wvv{/C/CDE  I  & &*= == =  % %)< << <  I  & &*= == =  % % 66 6  I y~~ ! ## # >>!  ! !fX -- - >>!  ( (H 44 4rzsource, expected))N) NShort descriptionr=z Short description r=z Short description r=sourceexpectedctt|}|j|k(sJ|jJ|jrJy)zTest parsing short description.N)r r r r)r@rArs rtest_short_descriptionrCsBf I  & &( 22 2  % % -- -~~ ~rz?source, expected_short_desc, expected_long_desc, expected_blank))#Short description Long descriptionr=Long descriptionT)I Short description Long description r=rET)a Short description Long description Second line r=Long description Second lineT)"Short description Long descriptionr=rEF)H Short description Long description r=rEF)$ Short description Long description r=rEF)` Short description Long description Second line r=rHFexpected_short_descexpected_long_descexpected_blankct|}|j|k(sJ|j|k(sJ|j|k(sJ|jrJy)zTest parsing long description.N)r r r blank_after_short_descriptionr)r@rMrNrOrs rtest_long_descriptionrRs[Lf I  & &*= == =  % %); ;; ;  2 2n DD D~~ ~rzdsource, expected_short_desc, expected_long_desc, expected_blank_short_desc, expected_blank_long_desc))zR Short description Args: asd: r=NFF)zo Short description Long description Args: asd: r=rEFF)z Short description First line Second line Args: asd: r=First line Second lineFF)z Short description First line Second line Args: asd: r=rSTF)z Short description First line Second line Args: asd: r=rSTT)z4 Args: asd: NNFFexpected_blank_short_descexpected_blank_long_descct|}|j|k(sJ|j|k(sJ|j|k(sJ|j|k(sJt |j dk(sJy)z2Test parsing newlines around description sections.r'N)r r r rQblank_after_long_descriptionrr)r@rMrNrTrUrs rtest_meta_newlinesrXsyrf I  & &*= == =  % %); ;; ;  2 26O OO O  1 15M MM M y~~ ! ## #rc(td}|jdk(sJt|jdk(sJ|jdjddgk(sJ|jdj dk(sJ|jdj dk(sJy) z*Test parsing multiline meta documentation.z Short description Args: spam: asd 1 2 3 r=r'rrspam asd 1 2 3N)r r rrr2rr3rs r$test_meta_with_multiline_descriptionr]Os  I  & &*= == = y~~ ! ## # >>!  ! !gv%6 66 6 >>!  % % // / >>!  ( (,> >> >rctd}|Jt|jdk(sJ|jd}|jdk(sJ|jsJ|j dk(sJ|j dk(sJ|jdk(sJy) zTest parsing default arguments.aA sample function A function the demonstrates docstrings Args: arg1 (int): The firsty arg arg2 (str): The second arg arg3 (float, optional): The third arg. Defaults to 1.0. arg4 (Optional[Dict[str, Any]], optional): The last arg. Defaults to None. arg5 (str, optional): The fifth arg. Defaults to DEFAULT_ARG5. Returns: Mapping[str, Any]: The args packed in a mapping Nr/r+arg4zOptional[Dict[str, Any]]NonezThe last arg. Defaults to None.)r rrr is_optional type_namedefaultr3)rr_s rtest_default_argsrdcs I   y A %% %   A D ==F "" "     >>7 77 7 <<6 !! !   @ @@ @rctd}|jdk(sJt|jdk(sJ|jdjddgk(sJ|jdj dk(sJ|jdj dk(sJ|jdjd d gk(sJ|jdjd k(sJ|jdj d k(sJ|jd jd d gk(sJ|jd jd k(sJ|jd j dk(sJy)zTest parsing multiple meta.z Short description Args: spam: asd 1 2 3 Raises: bla: herp yay: derp r=r+rrrZr[r'raisesblaherpr)yayderpN)r r rrr2rr3rbr\s rtest_multiple_metarksT I  & &*= == = y~~ ! ## # >>!  ! !gv%6 66 6 >>!  % % // / >>!  ( (,> >> > >>!  ! !h%6 66 6 >>!  & &% // / >>!  ( (F 22 2 >>!  ! !h%6 66 6 >>!  & &% // / >>!  ( (F 22 2rctd}t|jdk(sJtd}t|jdk(sJ|jdjdk(sJ|jdjJ|jdj dk(sJ|jdj rJ|jdjd k(sJ|jdjd k(sJ|jdj d k(sJ|jdj rJ|jd jd k(sJ|jd jdk(sJ|jd j dk(sJ|jd j sJ|jdjdk(sJ|jdjdk(sJ|jdj dk(sJ|jdj sJtd}t|jd k(sJ|jdjdk(sJ|jdjJ|jdj dk(sJ|jdjd k(sJ|jdjd k(sJ|jdj d k(sJy)zTest parsing params.r=rz Short description Args: name: description 1 priority (int): description 2 sender (str?): description 3 ratio (Optional[float], optional): description 4 r-nameN description 1r'priorityint description 2r)senderstr description 3r+ratioOptional[float] description 4z Short description Args: name: description 1 with multi-line text priority (int): description 2 "description 1 with multi-line textr rrrrbr3rar\s r test_paramsrz)*I y A %% %  I y A %% %   A  ' '6 11 1   A  ( ( 00 0   A  * *o == ="... .   A  ' ': 55 5   A  ( (E 11 1   A  * *o == ="... .   A  ' '8 33 3   A  ( (E 11 1   A  * *o == =   A  * ** *   A  ' '7 22 2   A  ( (,= == =   A  * *o == =   A  * ** *  I y A %% %   A  ' '6 11 1   A  ( ( 00 0   A  * *-     A  ' ': 55 5   A  ( (E 11 1   A  * *o == =rctd}t|jdk(sJtd}t|jdk(sJ|jdjdk(sJ|jdjJ|jdj dk(sJ|jdj rJ|jdjd k(sJ|jdjd k(sJ|jdj d k(sJ|jdj rJ|jd jd k(sJ|jd jdk(sJ|jd j dk(sJ|jd j sJ|jdjdk(sJ|jdjdk(sJ|jdj dk(sJ|jdj sJtd}t|jd k(sJ|jdjdk(sJ|jdjJ|jdj dk(sJ|jdjd k(sJ|jdjd k(sJ|jdj d k(sJy)zTest parsing attributes.r=rz Short description Attributes: name: description 1 priority (int): description 2 sender (str?): description 3 ratio (Optional[float], optional): description 4 r-rmNrnr'rorprqr)rrrsrtr+rurvrwz Short description Attributes: name: description 1 with multi-line text priority (int): description 2 rxryr\s rtest_attributesr}r{rcvtd}|jJ|jJt|jdk(sJtd}|jJ|jjJ|jj dk(sJ|jJt|jdk(sJ|jd|jk(sJtd}|jJ|jjJ|jj dk(sJ|jJt|jdk(sJ|jd|jk(sJtd }|jJ|jjd k(sJ|jj dk(sJ|jJt|jdk(sJ|jd|jk(sJtd }|jJ|jjd k(sJ|jj d k(sJ|jJt|jdk(sJ|jd|jk(sJtd}|jJ|jjd k(sJ|jj dk(sJ|jJt|jdk(sJ|jd|jk(sJtd}|jJ|jjd k(sJ|jj dk(sJ|jJt|jdk(sJ|jd|jk(sJy)zTest parsing returns.# Short description NrzL Short description Returns: description r3r'z[ Short description Returns: description with: a colon! zdescription with: a colon!zQ Short description Returns: int: description rpze Returns: Optional[Mapping[str, List[int]]]: A description: with a colon z!Optional[Mapping[str, List[int]]]zA description: with a colonzP Short description Yields: int: description z Short description Returns: int: description with much text even some spacing z-description with much text even some spacing)r returns many_returnsrrbr3r\s r test_returnsr s I    $$ $  ! ! -- - y%% &! ++ + I    (( (    & & .. .    ( (M 99 9  ! ! -- - y%% &! ++ +  ! !! $ (9(9 99 9 I    (( (    & & .. .    ( (,H HH H  ! ! -- - y%% &! ++ +  ! !! $ (9(9 99 9 I    (( (    & &% // /    ( (M 99 9  ! ! -- - y%% &! ++ +  ! !! $ (9(9 99 9 I    (( (    & &*M MM M    ( (,I II I  ! ! -- - y%% &! ++ +  ! !! $ (9(9 99 9 I    (( (    & &% // /    ( (M 99 9  ! ! -- - y%% &! ++ +  ! !! $ (9(9 99 9  I    (( (    & &% // /    ( (:    ! ! -- - y%% &! ++ +  ! !! $ (9(9 99 9rctd}t|jdk(sJtd}t|jdk(sJ|jdjdk(sJ|jdjdk(sJy)zTest parsing raises.rrzW Short description Raises: ValueError: description r' ValueErrorr3N)r rrfrbr3r\s r test_raisesrps I y A %% % I y A %% %   A  ( (L 88 8   A  * *m ;; ;rctd}t|jdk(sJ|jdjdk(sJ|jdjdk(sJy)zTest parsing examples.z Short description Example: example: 1 Examples: long example more here r)rz example: 1r'zlong example more hereN)r rr#r3r\s r test_examplesrsk  I y!! "a '' '   a , , << <   a , ,0K KK Krctjt5tddddtjt5tddddy#1swY7xYw#1swYyxYw)zTest parsing broken meta.zArgs:NzArgs: herp derppytestrfrr rrtest_broken_metars[ z " g z "& $%&&&&s A A(A%(A1c td}|jdjdk(sJ|jdjdk(sJ|jdjdk(sJ|jdjdk(sJy) zTest parsing unknown meta.zShort desc Unknown 0: title0: content0 Args: arg0: desc0 arg1: desc1 Unknown1: title1: content1 Unknown2: title2: content2 rarg0desc0r'r(desc1N)r rrr3r\s rtest_unknown_metars I$   A  ' '6 11 1   A  * *g 55 5   A  ' '6 11 1   A  * *g 55 5rcvtjt5tddddy#1swYyxYw)zTest parsing broken arguments.zWThis is a test Args: param - poorly formatted Nrrrrtest_broken_argumentsrs0 z "       s /8ctd}t|jdk(sJ|jdjdgk(sJ|jdjdk(sJy)z$Test parsing empty examples section.z]Short description Example: Raises: IOError: some error r'rr#r:N)r rr#r2r3r\s rtest_empty_examplersl I y!! "a '' '   a % %* 55 5   a , , 22 2r))r:r:)r;r:r<r>r?)rDrD)rFrD)rGz/Short description Long description Second line)rIrI)rJrI)rKrI)rLz.Short description Long description Second line)zQ Short description Meta: asd zShort description Meta: asd)zn Short description Long description Meta: asd z0Short description Long description Meta: asd)z Short description First line Second line Meta: asd z:Short description First line Second line Meta: asd)z Short description First line Second line Meta: asd z;Short description First line Second line Meta: asd)z Short description First line Second line Meta: asd z f ~/C/CD   r)ra1Short description Args: name: description 1 priority (int): description 2 sender (str, optional): description 3 message (str, optional): description 4, defaults to 'hello' multiline (str, optional): long description 5, defaults to 'bye'cVtt|tj|k(sJy)zTest compose in expanded mode.rN)rr rEXPANDEDrs rtest_compose_expandedrs+H f ~/F/FG   r)r N)(__doc__typingTrdocstring_parser.commonrrdocstring_parser.googlerrrrr rrr4r9mark parametrizersrCboolrROptionalrXr]rdrkrzr}rrrrrrrrrrrrrrs^0 > $ 9,.Kb%5P 3#$ E;>~        >~ :LPb $  $C $ 3 $ $ $ # $  $cPb $ ?(A:3<4>n4>na:H<*L$&64  3"~AD....EAD.  8scd98  B#C Br