
    iJ                        d Z ddlZddlZddlmZmZ ddlmZm	Z	 ej                  j                  dg d      deded	dfd
       Zej                  j                  dg d      dedededed	df
d       Zej                  j                  dg d      dedej                   e   dej                   e   deded	dfd       Zd%dZd%dZd%dZd%dZd%dZd%dZd%dZd%dZej                  j                  dg d      deded	dfd       Zej                  j                  dd g      deded	dfd!       Zej                  j                  dd"g      deded	dfd#       Zd%d$Zy)&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                 t    t        |       }|j                  |k(  sJ |j                  J |j                  rJ y)zTest parsing short description.N)r   short_descriptionlong_descriptionmeta)r   r   	docstrings      QC:\Projects\mas-dev\.venv\Lib\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                     t        |       }|j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ |j                  rJ y)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                     t        |       }|j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ t        |j                        dk(  sJ y)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                      t        d      } | j                  dk(  sJ t        | j                        dk(  sJ | j                  d   j                  dgk(  sJ | j                  d   j
                  dk(  sJ y)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                     t        d      } | j                  dk(  sJ t        | j                        dk(  sJ | j                  d   j                  dgk(  sJ | j                  d   j
                  dk(  sJ | j                  d   j                  dgk(  sJ | j                  d   j
                  d	k(  sJ | j                  d
   j                  dgk(  sJ | j                  d
   j
                  dk(  sJ y)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                      t        d      } | j                  dk(  sJ t        | j                        dk(  sJ | j                  d   j                  g dk(  sJ | j                  d   j
                  dk(  sJ y)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                  >   t        d      } t        | j                        dk(  sJ t        d      } t        | j                        dk(  sJ | j                  d   j                  dk(  sJ | j                  d   j                  J | j                  d   j
                  dk(  sJ | j                  d   j                  J | j                  d   j                  rJ | j                  d   j                  d	k(  sJ | j                  d   j                  d
k(  sJ | j                  d   j
                  dk(  sJ | j                  d   j                  rJ | j                  d   j                  J | j                  d   j                  dk(  sJ | j                  d   j                  dk(  sJ | j                  d   j
                  dk(  sJ | j                  d   j                  sJ | j                  d   j                  J | j                  d   j                  dk(  sJ | j                  d   j                  dk(  sJ | j                  d   j
                  dk(  sJ | j                  d   j                  sJ | j                  d   j                  dk(  sJ | j                  d   j                  dk(  sJ | j                  d   j                  dk(  sJ | j                  d   j
                  dk(  sJ | j                  d   j                  sJ | j                  d   j                  dk(  sJ y)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                     t        d      } | j                  J t        d      } | j                  J | j                  j                  J | j                  j                  dk(  sJ | j                  j                  rJ t        d      } | j                  J | j                  j                  dk(  sJ | j                  j                  dk(  sJ | j                  j                  rJ y)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                     t        d      } | j                  J t        d      } | j                  J | j                  j                  J | j                  j                  dk(  sJ | j                  j                  sJ t        d      } | j                  J | j                  j                  dk(  sJ | j                  j                  dk(  sJ | j                  j                  sJ y)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                     t        d      } t        | j                        dk(  sJ t        d      } t        | j                        dk(  sJ | j                  d   j                  J | j                  d   j                  dk(  sJ t        d      } t        | j                        dk(  sJ | j                  d   j                  dk(  sJ | j                  d   j                  dk(  sJ y)	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                     t        j                  t              5  t        d       ddd       t        j                  t              5  t        d       ddd       t        j                  t              5  t        d       ddd       t        j                  t              5  t        d       ddd       t        d       y# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   ZxY w# 1 sw Y   9xY w)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4C!C%C
CC"%C.))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                 6    t        t        |             |k(  sJ y)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                 V    t        t        |       t        j                        |k(  sJ y)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                 V    t        t        |       t        j                        |k(  sJ y)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                  >    d} t        |       }t        |      | k(  sJ y)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   