o
    +i<q                     @   s<  d Z ddlZddl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dOddZejdg dde	dedeje	 deje	 ddf
dd ZdOd!d"ZdOd#d$ZdOd%d&ZdOd'd(ZdOd)d*ZdOd+d,ZdOd-d.ZdOd/d0ZdOd1d2Zejd3d4d5gfd6d7gfd8d9gfd:d;gfd<d=gfd>d;d?gfd@d=dAgfdBd=dAgfgdCejejeje	 e	f  ddfdDdEZejdFg dGde	dHeje	 dIeje	 ddfdJdKZejdg dLde	de	ddfdMdNZdS )Pz,Tests for numpydoc-style docstring routines.    N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   a/var/www/html/psymed-ai/venv/lib/python3.10/site-packages/docstring_parser/tests/test_numpydoc.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))zi
            Short description
            Parameters
            ----------
            asd
            r   NFF)z
            Short description
            Long description
            Parameters
            ----------
            asd
            r   r   FF)z
            Short description
            First line
                Second line
            Parameters
            ----------
            asd
            r   First line
    Second lineFF)z
            Short description

            First line
                Second line
            Parameters
            ----------
            asd
            r   r#   TF)z
            Short description

            First line
                Second line

            Parameters
            ----------
            asd
            r   r#   TT)zK
            Parameters
            ----------
            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_newlinesh   s   _r)   c                  C   sl   t d} | jdksJ t| jdksJ | jd jddgks J | jd jdks*J | jd jdks4J dS )	z*Test parsing multiline meta documentation.z
        Short description

        Parameters
        ----------
        spam
            asd
            1
                2
            3
        r   r&   r   paramspamasd
1
    2
3N)r   r   r(   r   argsarg_namedescriptionr   r   r   r   $test_meta_with_multiline_description   s   r1   zBsource, expected_is_optional, expected_type_name, expected_default))z
                Parameters
                ----------
                arg1 : int
                    The first arg
                FintN)z
                Parameters
                ----------
                arg2 : str
                    The second arg
                FstrN)z
                Parameters
                ----------
                arg3 : float, optional
                    The third arg. Default is 1.0.
                Tfloatz1.0)z
                Parameters
                ----------
                arg4 : Optional[Dict[str, Any]], optional
                    The fourth arg. Defaults to None
                TzOptional[Dict[str, Any]]None)z
                Parameters
                ----------
                arg5 : str, optional
                    The fifth arg. Default: DEFAULT_ARGS
                Tr3   DEFAULT_ARGS)z
                Parameters
                ----------
                parameter_without_default : int
                    The parameter_without_default is required.
                Fr2   Nexpected_is_optionalexpected_type_nameexpected_defaultc                 C   s^   t | }|dus
J t|jdksJ |jd }|j|ksJ |j|ks&J |j|ks-J dS )zTest parsing default arguments.Nr&   r   )r   r(   paramsis_optional	type_namedefault)r   r7   r8   r9   r   arg1r   r   r   test_default_args   s   N
r?   c                  C   s   t d} | jdksJ t| jdksJ | jd jddgks J | jd jdks*J | jd jdks4J | jd jd	d
gks@J | jd jd
ksJJ | jd jdksTJ | jd jd	dgks`J | jd jdksjJ | jd jdkstJ dS )zTest parsing multiple meta.z
        Short description

        Parameters
        ----------
        spam
            asd
            1
                2
            3

        Raises
        ------
        bla
            herp
        yay
            derp
        r      r   r*   r+   r,   r&   raisesblaherp   yayderpN)r   r   r(   r   r-   r.   r/   r<   r0   r   r   r   test_multiple_meta=  s   rG   c                  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du s.J | jd jdks8J | jd jr@J | jd jd	ksJJ | jd jd
ksTJ | jd jdks^J | jd jrfJ | jd jdkspJ | jd jdkszJ | 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sJ t d} t| jdksJ | jd jdk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dksJ dS )zTest parsing params.r   r   a  
        Short description

        Parameters
        ----------
        name
            description 1
        priority : int
            description 2
        sender : str, optional
            description 3
        ratio : Optional[float], optional
            description 4
           nameNdescription 1r&   priorityr2   description 2rD   senderr3   description 3r@   ratioOptional[float]description 4z
        Short description

        Parameters
        ----------
        name
            description 1
            with multi-line text
        priority : int
            description 2
        "description 1
with multi-line textr   r(   r:   r.   r<   r/   r;   r0   r   r   r   test_params`  D   
rU   c                  C   rH   )zTest parsing attributes.r   r   a  
        Short description

        Attributes
        ----------
        name
            description 1
        priority : int
            description 2
        sender : str, optional
            description 3
        ratio : Optional[float], optional
            description 4
        rI   rJ   NrK   r&   rL   r2   rM   rD   rN   r3   rO   r@   rP   rQ   rR   z
        Short description

        Attributes
        ----------
        name
            description 1
            with multi-line text
        priority : int
            description 2
        rS   rT   r0   r   r   r   test_attributes  rV   rW   c                  C   s   t d} t| jdksJ | jd jddgksJ | jd jdks#J | jd jdks-J | jd js5J | jd jdks?J | jd jdd	gksKJ d
S )zTest parsing other parameters.z
        Short description
        Other Parameters
        ----------------
        only_seldom_used_keywords : type, optional
            Explanation
        common_parameters_listed_above : type, optional
            Explanation
        rD   r   other_paramonly_seldom_used_keywordstypeExplanationr&   common_parameters_listed_aboveN)r   r(   r   r-   r.   r<   r;   r/   r0   r   r   r   test_other_params  s    


r]   c                  C   s   t d} 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ks,J | jd jdu s6J | jd js>J dS )zTest parsing yields.ze
        Short description
        Yields
        ------
        int
            description
        r&   r   yieldsr2   r/   N)r   r(   r   r-   r<   r/   return_nameis_generatorr0   r   r   r   test_yields  s   	ra   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ks.J | jjdu s6J | jdus=J t| jdksFJ | jd | jksPJ t d} | jdus[J | jjdkscJ | jjd	kskJ | jdusrJ t| jdks{J | jd | jksJ t d
} | jdusJ | jjdksJ | jjdksJ | jdusJ t| jdksJ | jd | jksJ t d} | jdusJ | jjdksJ | jjdksJ | jdusJ t| jdksJ | jd | jksJ t d} | jdusJ | jjdksJ | jjdksJ | jdusJ t| jdksJ | jd jdks)J | jd jdks4J | jd jdks?J | jd jdksJJ | jd jdksUJ | jd jdks`J dS )zTest parsing returns.#
        Short description
        Nr   zP
        Short description
        Returns
        -------
        type
        rZ   r&   zg
        Short description
        Returns
        -------
        int
            description
        r2   r/   z{
        Returns
        -------
        Optional[Mapping[str, List[int]]]
            A description: with a colon
        z!Optional[Mapping[str, List[int]]]zA description: with a colonz
        Short description
        Returns
        -------
        int
            description
            with much text

            even some spacing
        z-description
with much text

even some spacingz
        Short description
        Returns
        -------
        a : int
            description for a
        b : str
            description for b
        zdescription for arD   ar3   zdescription for bb)r   returnsmany_returnsr(   r<   r/   r_   r0   r   r   r   test_returns  st   	rg   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ks.J dS )zTest parsing raises.rb   r   zl
        Short description
        Raises
        ------
        ValueError
            description
        r&   
ValueErrorr/   N)r   r(   rA   r<   r/   r0   r   r   r   test_raisest  s   	ri   c                  C   sF   t d} t| jdksJ | jd jdksJ | jd jdks!J dS )zTest parsing warns.zk
        Short description
        Warns
        -----
        UserWarning
            description
        r&   r   UserWarningr/   N)r   r(   r   r<   r/   r0   r   r   r   
test_warns  s   	rk   c                  C   s   t d} 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s7J | jd	 jd
gksBJ | jd	 jdksLJ | jd jdgksWJ dS )zTest parsing simple sections.a  
        Short description

        See Also
        --------
        something : some thing you can also see
        actually, anything can go in this section

        Warnings
        --------
        Here be dragons

        Notes
        -----
        None of this is real

        References
        ----------
        Cite the relevant literature, e.g. [1]_.  You may also cite these
        references in the notes section above.

        .. [1] O. McNoleg, "The integration of GIS, remote sensing,
           expert systems and adaptive co-kriging for environmental habitat
           modelling of the Highland Haggis using object-oriented, fuzzy-logic
           and neural-network techniques," Computers & Geosciences, vol. 22,
           pp. 585-588, 1996.
        rI   r   see_alsozQsomething : some thing you can also see
actually, anything can go in this sectionr&   warningszHere be dragonsrD   noteszNone of this is realr@   
referencesN)r   r(   r   r-   r/   r0   r   r   r   test_simple_sections  s   
rp   zsource, expected_resultsz5Description
Examples
--------
long example

more here)Nzlong example

more herez&Description
Examples
--------
>>> test)z>>> testr   z1Description
Examples
--------
>>> testa
>>> testb)z>>> testa
>>> testbr   z-Description
Examples
--------
>>> test1
desc1)z	>>> test1desc1zADescription
Examples
--------
>>> test1a
>>> test1b
desc1a
desc1b)z>>> test1a
>>> test1bzdesc1a
desc1bz=Description
Examples
--------
>>> test1
desc1
>>> test2
desc2)z	>>> test2desc2zfDescription
Examples
--------
>>> test1a
>>> test1b
desc1a
desc1b
>>> test2a
>>> test2b
desc2a
desc2b
)z>>> test2a
>>> test2bzdesc2a
desc2bzDescription
Examples
--------
    >>> test1a
    >>> test1b
    desc1a
    desc1b
    >>> test2a
    >>> test2b
    desc2a
    desc2b
expected_resultsc                 C   s   t | }t|jt|ksJ t|j|D ]\}}|j|d ks"J qt|jt|ks.J t|j|D ]\}}|j|d ksAJ |j|d ksJJ q4dS )zTest parsing examples.r&   r   N)r   r(   r   zipr/   examplessnippet)r   rs   r   r   expected_resultexampler   r   r   test_examples  s   Bry   z1source, expected_depr_version, expected_depr_desc))z<Short description

.. deprecated:: 1.6.0
    This is busted!1.6.0zThis is busted!)zUShort description

.. deprecated:: 1.6.0
    This description has
    multiple lines!rz   z$This description has
multiple lines!)z(Short description

.. deprecated:: 1.6.0rz   N)z2Short description

.. deprecated::
    No version!NzNo version!expected_depr_versionexpected_depr_descc                 C   s:   t | }|jdusJ |jj|ksJ |jj|ksJ dS )zTest parsing deprecation notes.N)r   deprecationversionr/   )r   r{   r|   r   r   r   r   test_deprecation  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)zc
            Short description
            Meta:
            -----
                asd
            z%Short description
Meta:
-----
    asd)z
            Short description
            Long description
            Meta:
            -----
                asd
            z6Short description
Long description
Meta:
-----
    asd)z
            Short description
            First line
                Second line
            Meta:
            -----
                asd
            z@Short description
First line
    Second line
Meta:
-----
    asd)z
            Short description

            First line
                Second line
            Meta:
            -----
                asd
            zAShort description

First line
    Second line
Meta:
-----
    asd)z
            Short description

            First line
                Second line

            Meta:
            -----
                asd
            zBShort description

First line
    Second line

Meta:
-----
    asd)z
            Short description

            Meta:
            -----
                asd
                    1
                        2
                    3
            zHShort description

Meta:
-----
    asd
        1
            2
        3)a  
            Short description

            Meta1:
            ------
                asd
                1
                    2
                3
            Meta2:
            ------
                herp
            Meta3:
            ------
                derp
            zlShort description

Meta1:
------
    asd
    1
        2
    3
Meta2:
------
    herp
Meta3:
------
    derp)a  
            Short description

            Parameters:
            -----------
                name
                    description 1
                priority: int
                    description 2
                sender: str, optional
                    description 3
                message: str, optional
                    description 4, defaults to 'hello'
                multiline: str, optional
                    long description 5,
                        defaults to 'bye'
            a>  Short description

Parameters:
-----------
    name
        description 1
    priority: int
        description 2
    sender: str, optional
        description 3
    message: str, optional
        description 4, defaults to 'hello'
    multiline: str, optional
        long description 5,
            defaults to 'bye')z
            Short description
            Raises:
            -------
                ValueError
                    description
            zDShort description
Raises:
-------
    ValueError
        description)z
            Description
            Examples:
            --------
            >>> test1a
            >>> test1b
            desc1a
            desc1b
            >>> test2a
            >>> test2b
            desc2a
            desc2b
            zfDescription
Examples:
--------
>>> test1a
>>> test1b
desc1a
desc1b
>>> test2a
>>> test2b
desc2a
desc2bc                 C   s   t t| |ks
J dS )zTest compose in default mode.Nr   )r   r   r   r   r   test_compose=  s     r   )r   N)__doc__typingTpytestdocstring_parser.numpydocr   r   markparametrizer3   r   boolr"   Optionalr)   r1   r?   rG   rU   rW   r]   ra   rg   ri   rk   rp   ListTuplery   r   r   r   r   r   r   <module>   s   
?W
G

#
?
?


f

/	
>  