o
    +iJ                     @   s  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	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ej
dg d)deded	dfd*d+Zej
dd,gdeded	dfd-d.Zej
dd/gdeded	dfd0d1Zd4d2d3ZdS )5z*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                 C   s2   t | }|j|ksJ |jdu sJ |jrJ dS )zTest parsing short description.N)r   short_descriptionlong_descriptionmeta)r   r   	docstring r   _/var/www/html/psymed-ai/venv/lib/python3.10/site-packages/docstring_parser/tests/test_epydoc.pytest_short_description
   s   r   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                 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$   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                 C   sV   t | }|j|ksJ |j|ksJ |j|ksJ |j|ks J t|jdks)J dS )z2Test parsing newlines around description sections.   N)r   r   r   r#   blank_after_long_descriptionlenr   )r   r    r!   r,   r-   r   r   r   r   test_meta_newlinesi   s   Sr1   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   r0   r   argsdescriptionr   r   r   r   $test_meta_with_multiline_description   s   
r7   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   meta1r2   r.   meta2herp   meta3derpNr3   r6   r   r   r   test_multiple_meta   s   r?   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asdNr3   r6   r   r   r   test_meta_with_args   s   rD   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 dS )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 1r.   priorityintzdescription 2r<   senderstrzdescription 3r8   messagez"description 4, defaults to 'hello'z'hello'   	multilinez%long description 5,
defaults to 'bye'z'bye')r   r0   paramsarg_name	type_namer5   defaultis_optionalr6   r   r   r   test_params   sB   
rS   c                  C   s   t d} | jdu sJ t d} | jdusJ | jjdu sJ | jjdks&J | jjr,J t d} | jdus7J | jjdks?J | jjdksGJ | jjrMJ dS )zTest parsing returns.#
        Short description
        Nz@
        Short description
        @return: description
        r5   zT
        Short description
        @return: description
        @rtype: int
        rH   r   returnsrP   r5   is_generatorr6   r   r   r   test_returns3  $   rX   c                  C   s   t d} | jdu sJ t d} | jdusJ | jjdu sJ | jjdks&J | jjs,J t d} | jdus7J | jjdks?J | jjdksGJ | jjsMJ dS )zTest parsing yields.rT   Nz?
        Short description
        @yield: description
        r5   zS
        Short description
        @yield: description
        @ytype: int
        rH   rU   r6   r   r   r   test_yieldsT  rY   rZ   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.rT   r   z?
        Short description
        @raise: description
        r.   Nr5   zJ
        Short description
        @raise ValueError: description
        
ValueError)r   r0   raisesrP   r5   r6   r   r   r   test_raisesu  s    r]   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)pytestr\   r   r   r   r   r   r   test_broken_meta  s   



r`   ))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                 C   s   t t| |ks
J dS )zTest compose in default mode.Nr   r   r   r   r   r   test_compose  s    Irc   )ra   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                 C      t t| tjd|ksJ dS )zTest compose in clean mode.rendering_styleN)r   r   r   CLEANrb   r   r   r   test_compose_cleanp  s   )rh   )ra   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                 C   rd   )zTest compose in expanded mode.re   N)r   r   r   EXPANDEDrb   r   r   r   test_compose_expanded  s   -rj   c                  C   s    d} t | }t|| ksJ dS )z=Test abbreviated docstring with only return type information.z!Short description.

@rtype: floatN)r   r   )stringr   r   r   r   test_short_rtype  s   rl   )r   N)__doc__typingTr_   docstring_parser.commonr   r   docstring_parser.epydocr   r   markparametrizerJ   r   boolr$   Optionalr1   r7   r?   rD   rS   rX   rZ   r]   r`   rc   rh   rj   rl   r   r   r   r   <module>   s    
?K




6
!
!
 G&*