
    hJ                        S r SSKrSSKrSSKJrJr  SSKJrJ	r	  \R                  R                  S/ SQ5      S\S\S	S4S
 j5       r\R                  R                  S/ SQ5      S\S\S\S\S	S4
S j5       r\R                  R                  S/ SQ5      S\S\R                   \   S\R                   \   S\S\S	S4S j5       rS%S jrS%S jrS%S jrS%S jrS%S jrS%S jrS%S jrS%S jr\R                  R                  S/ SQ5      S\S\S	S4S j5       r\R                  R                  SS /5      S\S\S	S4S! j5       r\R                  R                  SS"/5      S\S\S	S4S# j5       rS%S$ jrg)&z*Tests for epydoc-style docstring routines.    N)
ParseErrorRenderingStylecomposeparsezsource, expected)) N)
NShort descriptionr   z
Short description
r   z
   Short description
r   sourceexpectedreturnc                     [        U 5      nUR                  U:X  d   eUR                  b   eUR                  (       a   eg)zTest parsing short description.N)r   short_descriptionlong_descriptionmeta)r   r   	docstrings      \/home/james-whalen/.local/lib/python3.13/site-packages/docstring_parser/tests/test_epydoc.pytest_short_descriptionr   
   sB     fI&&(222%%---~~~    z?source, expected_short_desc, expected_long_desc, expected_blank))#Short description

Long descriptionr   Long descriptionT)I
            Short description

            Long description
            r   r   T)a
            Short description

            Long description
            Second line
            r   Long description
Second lineT)"Short description
Long descriptionr   r   F)H
            Short description
            Long description
            r   r   F)$
Short description
Long description
r   r   F)`
            Short description
            Long description
            Second line
            r   r   Fexpected_short_descexpected_long_descexpected_blankc                     [        U 5      nUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eUR                  (       a   eg)zTest parsing long description.N)r   r   r   blank_after_short_descriptionr   )r   r"   r#   r$   r   s        r   test_long_descriptionr'      s[    L fI&&*====%%);;;;22nDDD~~~r   zdsource, expected_short_desc, expected_long_desc, expected_blank_short_desc, expected_blank_long_desc))B
            Short description
            @meta: asd
            r   NFF)_
            Short description
            Long description
            @meta: asd
            r   r   FF)u
            Short description
            First line
                Second line
            @meta: asd
            r   First line
    Second lineFF)v
            Short description

            First line
                Second line
            @meta: asd
            r   r+   TF)w
            Short description

            First line
                Second line

            @meta: asd
            r   r+   TT)$
            @meta: asd
            NNFFexpected_blank_short_descexpected_blank_long_descc                     [        U 5      nUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   e[        UR                  5      S:X  d   eg)z2Test parsing newlines around description sections.   N)r   r   r   r&   blank_after_long_descriptionlenr   )r   r"   r#   r/   r0   r   s         r   test_meta_newlinesr5   i   sy    f fI&&*====%%);;;;226OOOO115MMMMy~~!###r   c                      [        S5      n U R                  S:X  d   e[        U R                  5      S:X  d   eU R                  S   R                  S/:X  d   eU R                  S   R
                  S:X  d   eg)z*Test parsing multiline meta documentation.ze
        Short description

        @meta: asd
            1
                2
            3
        r   r2   r   r   asd
1
    2
3Nr   r   r4   r   argsdescriptionr   s    r   $test_meta_with_multiline_descriptionr<      s|    		I &&*====y~~!###>>!!!fX--->>!((,>>>>r   c                     [        S5      n U R                  S:X  d   e[        U R                  5      S:X  d   eU R                  S   R                  S/:X  d   eU R                  S   R
                  S:X  d   eU R                  S   R                  S/:X  d   eU R                  S   R
                  S	:X  d   eU R                  S
   R                  S/:X  d   eU R                  S
   R
                  S:X  d   eg)zTest parsing multiple meta.z
        Short description

        @meta1: asd
            1
                2
            3
        @meta2: herp
        @meta3: derp
        r      r   meta1r7   r2   meta2herp   meta3derpNr8   r;   s    r   test_multiple_metarE      s    		I &&*====y~~!###>>!!!gY...>>!((,>>>>>>!!!gY...>>!((F222>>!!!gY...>>!((F222r   c                      [        S5      n U R                  S:X  d   e[        U R                  5      S:X  d   eU R                  S   R                  / SQ:X  d   eU R                  S   R
                  S:X  d   eg)z,Test parsing meta with additional arguments.zD
        Short description

        @meta ene due rabe: asd
        r   r2   r   )r   eneduerabeasdNr8   r;   s    r   test_meta_with_argsrK      sz    	I &&*====y~~!###>>!!!%CCCC>>!((E111r   c                     [        S5      n [        U R                  5      S:X  d   e[        S5      n [        U R                  5      S:X  d   eU R                  S   R                  S:X  d   eU R                  S   R                  b   eU R                  S   R
                  S:X  d   eU R                  S   R                  b   eU R                  S   R                  (       a   eU R                  S   R                  S	:X  d   eU R                  S   R                  S
:X  d   eU R                  S   R
                  S:X  d   eU R                  S   R                  (       a   eU R                  S   R                  b   eU R                  S   R                  S:X  d   eU R                  S   R                  S:X  d   eU R                  S   R
                  S:X  d   eU R                  S   R                  (       d   eU R                  S   R                  b   eU R                  S   R                  S:X  d   eU R                  S   R                  S:X  d   eU R                  S   R
                  S:X  d   eU R                  S   R                  (       d   eU R                  S   R                  S:X  d   eU R                  S   R                  S:X  d   eU R                  S   R                  S:X  d   eU R                  S   R
                  S:X  d   eU R                  S   R                  (       d   eU R                  S   R                  S:X  d   eg)zTest parsing params.r   r   a  
        Short description

        @param name: description 1
        @param priority: description 2
        @type priority: int
        @param sender: description 3
        @type sender: str?
        @param message: description 4, defaults to 'hello'
        @type message: str?
        @param multiline: long description 5,
        defaults to 'bye'
        @type multiline: str?
           nameNzdescription 1r2   priorityintzdescription 2rB   senderstrzdescription 3r>   messagez"description 4, defaults to 'hello'z'hello'   	multilinez%long description 5,
defaults to 'bye'z'bye')r   r4   paramsarg_name	type_namer:   defaultis_optionalr;   s    r   test_paramsr[      sB   )*Iy A%%%	I  y A%%%A''6111A((000A**o===A&&..."....A'':555A((E111A**o==="....A&&...A''8333A((E111A**o===A****A&&...A''9444A((E111''+OOOA****A&&)333A'';666A((E111''3	4	4 A****A&&'111r   c                     [        S5      n U R                  b   e[        S5      n U R                  c   eU R                  R                  b   eU R                  R                  S:X  d   eU R                  R                  (       a   e[        S5      n U R                  c   eU R                  R                  S:X  d   eU R                  R                  S:X  d   eU R                  R                  (       a   eg)zTest parsing returns.#
        Short description
        Nz@
        Short description
        @return: description
        r:   zT
        Short description
        @return: description
        @rtype: int
        rP   r   returnsrX   r:   is_generatorr;   s    r   test_returnsra   3  s    	I
 $$$	I (((&&...((M999  ----	I (((&&%///((M999  -----r   c                     [        S5      n U R                  b   e[        S5      n U R                  c   eU R                  R                  b   eU R                  R                  S:X  d   eU R                  R                  (       d   e[        S5      n U R                  c   eU R                  R                  S:X  d   eU R                  R                  S:X  d   eU R                  R                  (       d   eg)zTest parsing yields.r]   Nz?
        Short description
        @yield: description
        r:   zS
        Short description
        @yield: description
        @ytype: int
        rP   r^   r;   s    r   test_yieldsrc   T  s    	I
 $$$	I (((&&...((M999))))	I (((&&%///((M999))))r   c                     [        S5      n [        U R                  5      S:X  d   e[        S5      n [        U R                  5      S:X  d   eU R                  S   R                  b   eU R                  S   R                  S:X  d   e[        S5      n [        U R                  5      S:X  d   eU R                  S   R                  S:X  d   eU R                  S   R                  S:X  d   eg)	zTest parsing raises.r]   r   z?
        Short description
        @raise: description
        r2   Nr:   zJ
        Short description
        @raise ValueError: description
        
ValueError)r   r4   raisesrX   r:   r;   s    r   test_raisesrg   u  s    	I
 y A%%%	I y A%%%A((000A**m;;;	I y A%%%A((L888A**m;;;r   c                     [         R                  " [        5         [        S5        SSS5        [         R                  " [        5         [        S5        SSS5        [         R                  " [        5         [        S5        SSS5        [         R                  " [        5         [        S5        SSS5        [        S5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       NM= f)zTest parsing broken meta.@Nz@param herp derpz@param: invalidz@param with too many args: descz@sthstrange: desc)pytestrf   r   r    r   r   test_broken_metarl     s    	z	"c
 
# 
z	" ! 
# 
z	"  
# 
z	"/0 
# 

 
#	" 
#	" 
#	" 
#	"s/   C	C7C'%C8
C
C$'
C58
D))r   r   )r	   r   r
   r   r   )r   r   )r   r   )r   z/Short description

Long description
Second line)r   r   )r   r   )r    r   )r!   z.Short description
Long description
Second line)r(   zShort description
@meta: asd)r)   z-Short description
Long description
@meta: asd)r*   z7Short description
First line
    Second line
@meta: asd)r,   z8Short description

First line
    Second line
@meta: asd)r-   z9Short description

First line
    Second line

@meta: asd)r.   z
@meta: asd)z}
            Short description

            @meta: asd
                1
                    2
                3
            z3Short description

@meta: asd
    1
        2
    3)z
            Short description

            @meta1: asd
                1
                    2
                3
            @meta2: herp
            @meta3: derp
            zNShort description

@meta1: asd
    1
        2
    3
@meta2: herp
@meta3: derp)zP
            Short description

            @meta ene due rabe: asd
            z*Short description

@meta ene due rabe: asd)  
            Short description

            @param name: description 1
            @param priority: description 2
            @type priority: int
            @param sender: description 3
            @type sender: str?
            @type message: str?
            @param message: description 4, defaults to 'hello'
            @type multiline: str?
            @param multiline: long description 5,
                defaults to 'bye'
            a)  Short description

@param name: description 1
@type priority: int
@param priority: description 2
@type sender: str?
@param sender: description 3
@type message: str?
@param message: description 4, defaults to 'hello'
@type multiline: str?
@param multiline: long description 5,
    defaults to 'bye')zK
            Short description
            @raise: description
            z%Short description
@raise: description)zV
            Short description
            @raise ValueError: description
            z0Short description
@raise ValueError: descriptionc                 8    [        [        U 5      5      U:X  d   eg)zTest compose in default mode.Nr   r   r   s     r   test_composerp     s    P 5=!X---r   )rm   a=  Short description

@param name:
    description 1
@type priority: int
@param priority:
    description 2
@type sender: str?
@param sender:
    description 3
@type message: str?
@param message:
    description 4, defaults to 'hello'
@type multiline: str?
@param multiline:
    long description 5,
    defaults to 'bye'c                 R    [        [        U 5      [        R                  S9U:X  d   eg)zTest compose in clean mode.rendering_styleN)r   r   r   CLEANro   s     r   test_compose_cleanru   p  s+    R 	f~/C/CD		r   )rm   aM  Short description

@param name:
    description 1
@type priority:
    int
@param priority:
    description 2
@type sender:
    str?
@param sender:
    description 3
@type message:
    str?
@param message:
    description 4, defaults to 'hello'
@type multiline:
    str?
@param multiline:
    long description 5,
    defaults to 'bye'c                 R    [        [        U 5      [        R                  S9U:X  d   eg)zTest compose in expanded mode.rr   N)r   r   r   EXPANDEDro   s     r   test_compose_expandedrx     s+    Z 	f~/F/FG		r   c                  @    Sn [        U 5      n[        U5      U :X  d   eg)z=Test abbreviated docstring with only return type information.z!Short description.

@rtype: floatN)r   r   )stringr   s     r   test_short_rtyper{     s#    2FfI9'''r   )r   N)__doc__typingTrj   docstring_parser.commonr   r   docstring_parser.epydocr   r   markparametrizerR   r   boolr'   Optionalr5   r<   rE   rK   r[   ra   rc   rg   rl   rp   ru   rx   r{   rk   r   r   <module>r      s1   0   > 2 	3 # $ 	 E;>~  	
 
>~ :FJV$$C$ 

3$  $	$
 #$ 
$WJV$ ?$30232l.B*B<<$ BEL. . . .MEL.
  	
"%Ls c d M%L $	
&)T#   U)T(r   