
    i[;                        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ej                   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d&dZej                  j                  d ej6                  d!fej8                  d!fej:                  d"fg      d#eded	dfd$       Zd&d%Zy)'z(Tests for ReST-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        |       }|j                  |k(  sJ |j                  |k(  sJ |j                  J |j                  rJ y)zTest parsing short description.N)r   short_descriptiondescriptionlong_descriptionmeta)r
   r   	docstrings      OC:\Projects\mas-dev\.venv\Lib\site-packages\docstring_parser/tests/test_rest.pytest_short_descriptionr   
   sV     fI&&(222  H,,,%%---~~~    z?source, expected_short_desc, expected_long_desc, expected_blank))z#Short description

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

            Long description
            r	   r   T)za
            Short description

            Long description
            Second line
            r	   Long description
Second lineT)"Short description
Long descriptionr	   r   F)zH
            Short description
            Long description
            r	   r   F)z$
Short description
Long description
r	   r   F)z`
            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   zxsource, expected_short_desc, expected_long_desc, expected_blank_short_desc, expected_blank_long_desc, expected_full_desc))zB
            Short description
            :meta: asd
            r	   NFFr	   )z_
            Short description
            Long description
            :meta: asd
            r	   r   FFr   )zu
            Short description
            First line
                Second line
            :meta: asd
            r	   First line
    Second lineFFz,Short description
First line
    Second line)zv
            Short description

            First line
                Second line
            :meta: asd
            r	   r   TF-Short description

First line
    Second line)zw
            Short description

            First line
                Second line

            :meta: asd
            r	   r   TTr    )z$
            :meta: asd
            NNFFNexpected_blank_short_descexpected_blank_long_descexpected_full_descc                     t        |       }|j                  |k(  sJ |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_descriptionr   lenr   )r
   r   r   r!   r"   r#   r   s          r   test_meta_newlinesr(   j   s    v fI&&*====%%);;;;226OOOO115MMMM  $6666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	   r%   r   r   asd
1
    2
3Nr   r   r'   r   argsr   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   meta1r*   r%   meta2herp   meta3derpNr+   r-   s    r   test_multiple_metar7      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	   r%   r   )r   eneduerabeasdNr+   r-   s    r   test_meta_with_argsr=      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 t        d      } t        | 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                  J | j                  d   j                  rJ y)zTest parsing params.r	   r   a)  
        Short description

        :param name: description 1
        :param int priority: description 2
        :param str? sender: description 3
        :param str? message: description 4, defaults to 'hello'
        :param str? multiline: long description 5,
        defaults to 'bye'
           nameNzdescription 1r%   priorityintzdescription 2r4   senderstrzdescription 3r0   messagez"description 4, defaults to 'hello'z'hello'   	multilinez%long description 5,
defaults to 'bye'z'bye'z}
        Short description

        :param a: description a
        :type a: int
        :param int b: description b
        azdescription a)r   r'   paramsarg_name	type_namer   defaultis_optionalr-   s    r   test_paramsrN     s   )*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1	I y A%%%A''3...A((E111A**o===A&&...".....r   c                     t        d      } | j                  J | j                  J t        | j                        dk(  sJ t        d      } | j                  J | j                  j                  J | j                  j
                  dk(  sJ | j                  j                  rJ | j                  | j                  gk(  sJ t        d      } | j                  J | j                  j                  dk(  sJ | j                  j
                  dk(  sJ | j                  j                  rJ | j                  | j                  gk(  sJ t        d      } | j                  J | j                  j                  dk(  sJ | j                  j
                  dk(  sJ | j                  j                  rJ | j                  | j                  gk(  sJ y)	zTest parsing returns.#
        Short description
        Nr   zA
        Short description
        :returns: description
        r   zE
        Short description
        :returns int: description
        rB   zU
        Short description
        :returns: description
        :rtype: int
        r   returnsmany_returnsr'   rK   r   is_generatorr-   s    r   test_returnsrU   I  s   	I
 $$$!!---y%%&!+++	I (((&&...((M999  ----!!i&7&7%8888	I (((&&%///((M999  ----!!i&7&7%8888	I (((&&%///((M999  ----!!i&7&7%8888r   c                  4   t        d      } | j                  J | j                  J t        | j                        dk(  sJ t        d      } | j                  J | j                  j                  J | j                  j
                  dk(  sJ | j                  j                  sJ | j                  J t        | j                        dk(  sJ | j                  d   | j                  k(  sJ t        d      } | j                  J | j                  j                  dk(  sJ | j                  j
                  dk(  sJ | j                  j                  sJ | j                  J t        | j                        dk(  sJ | j                  d   | j                  k(  sJ y)	zTest parsing yields.rP   Nr   z@
        Short description
        :yields: description
        r   r%   zD
        Short description
        :yields int: description
        rB   rQ   r-   s    r   test_yieldsrW   z  s   	I
 $$$!!---y%%&!+++	I (((&&...((M999))))!!---y%%&!+++!!!$	(9(9999	I (((&&%///((M999))))!!---y%%&!+++!!!$	(9(9999r   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.rP   r   z@
        Short description
        :raises: description
        r%   Nr   zK
        Short description
        :raises ValueError: description
        
ValueError)r   r'   raisesrK   r   r-   s    r   test_raisesr[     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)pytestrZ   r   r    r   r   test_broken_metar`     s    	z	"c
 
# 
z	" ! 
# 
z	"  
# 
z	"/0 
# 

 
#	" 
#	" 
#	" 
#	"s/   CC4C!C%C
CC"%C.c                  :   t        d      } | j                  J | j                  j                  dk(  sJ | j                  j                  dk(  sJ t        d      } | j                  J | j                  j                  J | j                  j                  dk(  sJ y)zTest parsing deprecation notes.z1:deprecation: 1.1.0 this function will be removedNz1.1.0zthis function will be removedz+:deprecation: this function will be removed)r   deprecationversionr   r-   s    r   test_deprecationrd     s    IJI  ,,,  ((G333  ,,0OOOOCDI  ,,,  ((000  ,,0OOOOr   zrendering_style, expectedzShort description.

Long description.

:param int foo: a description
:param int bar: another description
:returns float: a returnzShort description.

Long description.

:param foo:
    a description
:type foo: int
:param bar:
    another description
:type bar: int
:returns:
    a return
:rtype: floatrendering_stylec                 >    t        d      }t        ||       |k(  sJ y)zTest composez
        Short description.

        Long description.

        :param int foo: a description
        :param int bar: another description
        :return float: a return
        re   N)r   r   )re   r   r   s      r   test_composerh     s+    X 	
I 9o>(JJJr   c                  b    d} t        |       }t        j                  }t        ||      | k(  sJ y)z=Test abbreviated docstring with only return type information.z!Short description.

:rtype: floatrg   N)r   r   EXPANDEDr   )stringr   re   s      r   test_short_rtyperl     s0    2FfI$--O9o>&HHHr   )r   N) __doc__typingTr^   docstring_parser.commonr   r   docstring_parser.restr   r   markparametrizerD   r   boolr   Optionalr(   r.   r7   r=   rN   rU   rW   r[   r`   rd   COMPACTCLEANrj   rh   rl   r_   r   r   <module>rx      s   .   > 0 	3 # $ 	 E;>~  	
 
>~ L	Qd$$C$ 

3$  $	$
 #$ 

3$ 
$eQd$$?$302?/D.9b%:P<<$
P  ""'		
   '		
 ##	
+%(RK. KC KD KS(RK"Ir   