o
    +i[;                     @   sz  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
dg ddeded	dfd
dZej
dg ddedededed	df
ddZe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dZd4ddZd4ddZd4ddZd4d d!Zd4d"d#Zd4d$d%Zd4d&d'Zd4d(d)Zd4d*d+Zej
d,ejd-fejd-fejd.fgd/eded	dfd0d1Zd4d2d3ZdS )5z(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                 C   s@   t | }|j|ksJ |j|ksJ |jdu sJ |jrJ dS )zTest parsing short description.N)r   short_descriptiondescriptionlong_descriptionmeta)r	   r
   	docstring r   ]/var/www/html/psymed-ai/venv/lib/python3.10/site-packages/docstring_parser/tests/test_rest.pytest_short_description
   s
   r   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                 C   s@   t | }|j|ksJ |j|ksJ |j|ksJ |jrJ dS )zTest parsing long description.N)r   r   r   blank_after_short_descriptionr   )r	   r   r   r   r   r   r   r   test_long_description   s
   F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                 C   sd   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s0J dS )z2Test parsing newlines around description sections.   N)r   r   r   r   blank_after_long_descriptionr   lenr   )r	   r   r   r   r   r    r   r   r   r   test_meta_newlinesj   s   [r$   c                  C   sV   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 dS )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   r   r   r   $test_meta_with_multiline_description   s   
r)   c                  C   s   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s4J | jd jd	ks>J | jd
 jdgksIJ | jd
 jdksSJ dS )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(   r   r   r   test_multiple_meta   s   r1   c                  C   sX   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 dS )z,Test parsing meta with additional arguments.zD
        Short description

        :meta ene due rabe: asd
        r   r!   r   )r   eneduerabeasdNr&   r(   r   r   r   test_meta_with_args   s   r6   c                  C   s  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du s.J | jd jdks8J | jd jdu sBJ | jd jrJJ | jd jd	ksTJ | jd jd
ks^J | jd jdkshJ | jd jrpJ | jd jdu szJ | jd jdksJ | jd jdksJ | jd jdksJ | jd jsJ | jd jdu sJ | jd jdksJ | jd jdksJ | jd jdksJ | jd jsJ | jd jdksJ | jd jdksJ | jd jdksJ | jd jdksJ | 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s0J | jd jdks;J | jd jdu sFJ | jd jrOJ dS )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 2r.   senderstrzdescription 3r*   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(   r   r   r   test_params  sT   
	rF   c                  C   s6  t d} | jdu sJ | jdusJ t| jdksJ t d} | jdus&J | jjdu s.J | jjdks6J | jjr<J | j| jgksEJ t d} | jdusPJ | jjdksXJ | jjdks`J | jjrfJ | j| jgksoJ t d} | jduszJ | jjdksJ | jjdksJ | jjrJ | j| jgksJ dS )	zTest parsing returns.#
        Short description
        Nr   zA
        Short description
        :returns: description
        r   zE
        Short description
        :returns int: description
        r:   zU
        Short description
        :returns: description
        :rtype: int
        r   returnsmany_returnsr#   rC   r   is_generatorr(   r   r   r   test_returnsI  s<   rL   c                  C   s&  t d} | jdu sJ | jdusJ t| jdksJ t d} | jdus&J | jjdu s.J | jjdks6J | jjs<J | jdusCJ t| jdksLJ | jd | jksVJ t d} | jdusaJ | jjdksiJ | jjdksqJ | jjswJ | jdus~J t| jdksJ | jd | jksJ dS )	zTest parsing yields.rG   Nr   z@
        Short description
        :yields: description
        r   r!   zD
        Short description
        :yields int: description
        r:   rH   r(   r   r   r   test_yieldsz  s4   rM   c                  C   s   t d} t| jdksJ t d} t| jdksJ | jd jdu s$J | jd jdks.J t d} t| jdks;J | jd jdksEJ | jd jdksOJ dS )	zTest parsing raises.rG   r   z@
        Short description
        :raises: description
        r!   Nr   zK
        Short description
        :raises ValueError: description
        
ValueError)r   r#   raisesrC   r   r(   r   r   r   test_raises  s    rP   c                   C   s   t t td W d   n1 sw   Y  t t td W d   n1 s-w   Y  t t td W d   n1 sFw   Y  t t td W d   n1 s_w   Y  td dS )zTest parsing broken meta.:Nz:param herp derpz:param: invalidz:param with too many args: descz:sthstrange: desc)pytestrO   r   r   r   r   r   r   test_broken_meta  s   



rS   c                  C   sp   t d} | jdusJ | jjdksJ | jjdksJ t d} | jdus&J | jjdu s.J | jjdks6J dS )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(   r   r   r   test_deprecation  s   rV   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                 C   s    t d}t|| d|ksJ dS )zTest composez
        Short description.

        Long description.

        :param int foo: a description
        :param int bar: another description
        :return float: a return
        rW   N)r   r   )rW   r
   r   r   r   r   test_compose  s   ,rY   c                  C   s*   d} t | }tj}t||d| ksJ dS )z=Test abbreviated docstring with only return type information.z!Short description.

:rtype: floatrX   N)r   r   EXPANDEDr   )stringr   rW   r   r   r   test_short_rtype  s   r\   )r   N) __doc__typingTrR   docstring_parser.commonr   r   docstring_parser.restr   r   markparametrizer<   r   boolr   Optionalr$   r)   r1   r6   rF   rL   rM   rP   rS   rV   COMPACTCLEANrZ   rY   r\   r   r   r   r   <module>   s    
	?R




B
1
(

)