o
    b[                     @   sT   d Z ddlmZmZmZ ddlZddlmZmZm	Z	 ddl
mZ G dd deZdS )z|Unit tests for the raised exception documentation checking in the
`DocstringChecker` in :mod:`pylint.extensions.check_docs`
    )divisionprint_functionabsolute_importN)CheckerTestCaseMessage
set_config)DocstringParameterCheckerc                   @   s  e Zd ZdZeZdd Zdd Zedddd	 Z	d
d Z
dd Zdd Zdd Zdd Zdd Zedd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d(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z d8d9 Z!d:d; Z"eddd<d= Z#d>d? Z$d@dA Z%dBdC Z&dDdE Z'dFdG Z(dHdI Z)edddJdK Z*dLdM Z+dNdO Z,dPdQ Z-dRdS Z.dTdU Z/dVdW Z0dXdY Z1dZS )[TestDocstringCheckerRaisez'Tests for pylint_plugin.RaiseDocCheckerc                 C   D   t d}|   | j| W d    d S 1 sw   Y  d S )NzL
        def my_func(self):
            raise RuntimeError('hi') #@
        astroidextract_nodeassertNoMessagescheckervisit_raiseself
raise_node r   k/var/www/secure340b-portal/env/lib/python3.10/site-packages/pylint/test/extensions/test_check_raise_docs.pytest_ignores_no_docstring   s   

"z3TestDocstringCheckerRaise.test_ignores_no_docstringc                 C   sN   t d}|jd }|   | j| W d    d S 1 s w   Y  d S )Np
        def my_func(self):
            """This is a docstring."""
            raise RuntimeError('hi')
        r   )r   r   bodyr   r   r   r   noder   r   r   r   test_ignores_unknown_style!   s
   


"z4TestDocstringCheckerRaise.test_ignores_unknown_styleF)Zaccept_no_raise_docc                 C   Z   t d}|jd }| td|dd | j| W d    d S 1 s&w   Y  d S )Nr   r   missing-raises-docRuntimeErrorZmsg_idr   argsr   r   r   assertAddsMessagesr   r   r   r   r   r   r   test_warns_unknown_style+   s   

"z2TestDocstringCheckerRaise.test_warns_unknown_stylec                 C   r   )Nz
        def my_func(self):
            """This is a docstring.

            :raises NameError: Never
            """
            raise RuntimeError('hi')
            raise NameError('hi')
        r   r   r   r    r"   r   r   r   r   test_find_missing_sphinx_raises:      

	"z9TestDocstringCheckerRaise.test_find_missing_sphinx_raisesc                 C   r   )Nz
        def my_func(self):
            """This is a docstring.

            Raises:
                NameError: Never
            """
            raise RuntimeError('hi')
            raise NameError('hi')
        r   r   r   r    r"   r   r   r   r   test_find_missing_google_raisesL      


"z9TestDocstringCheckerRaise.test_find_missing_google_raisesc                 C   r
   )Nz
        def my_func(self):
            """This is a google docstring.

            Raises:
                re.error: Sometimes
            """
            import re
            raise re.error('hi')  #@
        r   r   r   r   r   &test_find_google_attr_raises_exact_exc_   s   



z@TestDocstringCheckerRaise.test_find_google_attr_raises_exact_excc                 C   r
   )Nz
        def my_func(self):
            """This is a google docstring.

            Raises:
                re.error: Sometimes
            """
            from re import error
            raise error('hi')  #@
        r   r   r   r   r   'test_find_google_attr_raises_substr_excn   s   


"zATestDocstringCheckerRaise.test_find_google_attr_raises_substr_excc                 C   r   )Nz
        def my_func(self):
            """This is a google docstring.

            Raises:
                re.anothererror: Sometimes
            """
            from re import error
            raise error('hi')
           r   errorr    r"   r   r   r   r   *test_find_valid_missing_google_attr_raises|   r(   zDTestDocstringCheckerRaise.test_find_valid_missing_google_attr_raisesc                 C   r
   )Nz
        def my_func(self):
            """This is a google docstring.

            Raises:
                bogusmodule.error: Sometimes
            """
            from re import error
            raise error('hi') #@
        r   r   r   r   r   ,test_find_invalid_missing_google_attr_raises      

"zFTestDocstringCheckerRaise.test_find_invalid_missing_google_attr_raisesc              	   C   X   d}dD ]%}t |j|d}|   | j| W d    n1 s$w   Y  qd S )Nz
        def my_func(self):
            """This is a google docstring.

            Raises:
                {prefix}re.error: Sometimes
            """
            import re
            raise re.error('hi') #@
        ~!prefixr   r   formatr   r   r   r   Zcode_snippetr6   r   r   r   r   test_google_raises_with_prefix   s   

z8TestDocstringCheckerRaise.test_google_raises_with_prefixc                 C   r   )Nz
        def my_func(self):
            """This is a docstring.

            Raises
            ------
            NameError
                Never
            """
            raise RuntimeError('hi')
            raise NameError('hi')
        r   r   r   r    r"   r   r   r   r   test_find_missing_numpy_raises      

"z8TestDocstringCheckerRaise.test_find_missing_numpy_raisesc                 C   r
   )Na  
        def my_func(self):
            """This is a docstring.

            :raises RuntimeError: Always
            :except NameError: Never
            :raise OSError: Never
            :exception ValueError: Never
            """
            raise RuntimeError('Blah') #@
        r   r   r   r   r   "test_ignore_spurious_sphinx_raises      

"z<TestDocstringCheckerRaise.test_ignore_spurious_sphinx_raisesc                 C   r
   )Na  
        def my_func(self):
            """This is a docstring.

            :raises RuntimeError: Always
            :except NameError: Never
            :raise OSError: Never
            :exception ValueError: Never
            """
            raise RuntimeError('hi') #@
            raise NameError('hi')
            raise OSError(2, 'abort!')
            raise ValueError('foo')
        r   r   r   r   r   test_find_all_sphinx_raises      

"z5TestDocstringCheckerRaise.test_find_all_sphinx_raisesc                 C   r
   )Nz
        def my_func(self):
            """This is a docstring.

            Raises:
                RuntimeError: Always
                NameError: Never
            """
            raise RuntimeError('hi') #@
            raise NameError('hi')
        r   r   r   r   r   test_find_all_google_raises   r>   z5TestDocstringCheckerRaise.test_find_all_google_raisesc                 C   r
   )Na%  
        def my_func(self):
            """This is a docstring.

            Raises
            ------
            RuntimeError
                Always
            NameError
                Never
            """
            raise RuntimeError('hi') #@
            raise NameError('hi')
        r   r   r   r   r   test_find_all_numpy_raises   r@   z4TestDocstringCheckerRaise.test_find_all_numpy_raisesc                 C   X   t d}| }| td|dd | j| W d    d S 1 s%w   Y  d S )Na  
        def my_func(self):
            """This is a docstring.

            :raises NameError: Sometimes
            """
            try:
                fake_func()
            except RuntimeError:
                raise #@

            raise NameError('hi')
        r   r   r    r   r   framer#   r   r   r   r   r   r   r   r   r   !test_finds_rethrown_sphinx_raises     
"z;TestDocstringCheckerRaise.test_finds_rethrown_sphinx_raisesc                 C   rC   )Na  
        def my_func(self):
            """This is a docstring.

            Raises:
                NameError: Sometimes
            """
            try:
                fake_func()
            except RuntimeError:
                raise #@

            raise NameError('hi')
        r   r   r    rD   rF   r   r   r    test_find_rethrown_google_raises     
"z:TestDocstringCheckerRaise.test_find_rethrown_google_raisesc                 C   rC   )Na9  
        def my_func(self):
            """This is a docstring.

            Raises
            ------
            NameError
                Sometimes
            """
            try:
                fake_func()
            except RuntimeError:
                raise #@

            raise NameError('hi')
        r   r   r    rD   rF   r   r   r   test_find_rethrown_numpy_raises4     
"z9TestDocstringCheckerRaise.test_find_rethrown_numpy_raisesc                 C   rC   )Na  
        def my_func(self):
            """This is a docstring.

            :raises NameError: Sometimes
            """
            try:
                fake_func()
            except (RuntimeError, ValueError):
                raise #@

            raise NameError('hi')
        r   zRuntimeError, ValueErrorr    rD   rF   r   r   r   *test_finds_rethrown_sphinx_multiple_raisesM  rH   zDTestDocstringCheckerRaise.test_finds_rethrown_sphinx_multiple_raisesc                 C   rC   )Na*  
        def my_func(self):
            """This is a docstring.

            Raises:
                NameError: Sometimes
            """
            try:
                fake_func()
            except (RuntimeError, ValueError):
                raise #@

            raise NameError('hi')
        r   rM   r    rD   rF   r   r   r   )test_find_rethrown_google_multiple_raisesc  rJ   zCTestDocstringCheckerRaise.test_find_rethrown_google_multiple_raisesc                 C   rC   )NaG  
        def my_func(self):
            """This is a docstring.

            Raises
            ------
            NameError
                Sometimes
            """
            try:
                fake_func()
            except (RuntimeError, ValueError):
                raise #@

            raise NameError('hi')
        r   rM   r    rD   rF   r   r   r   (test_find_rethrown_numpy_multiple_raisesz  rL   zBTestDocstringCheckerRaise.test_find_rethrown_numpy_multiple_raisesc                 C   r
   )Na  
        def my_func(self):
            """This is a docstring.

            :raises NameError: Sometimes
            """
            try:
                raise RuntimeError('hi') #@
            except RuntimeError:
                pass

            raise NameError('hi')
        r   r   r   r   r   !test_ignores_caught_sphinx_raises     

"z;TestDocstringCheckerRaise.test_ignores_caught_sphinx_raisesc                 C   r
   )Na(  
        def my_func(self):
            """This is a docstring.

            Raises:
                NameError: Sometimes
            """
            try:
                raise RuntimeError('hi') #@
            except RuntimeError:
                pass

            raise NameError('hi')
        r   r   r   r   r   !test_ignores_caught_google_raises  r@   z;TestDocstringCheckerRaise.test_ignores_caught_google_raisesc                 C   r
   )NaK  
        def my_func(self):
            """This is a numpy docstring.

            Raises
            ------
            NameError
                Sometimes
            """
            try:
                raise RuntimeError('hi') #@
            except RuntimeError:
                pass

            raise NameError('hi')
        r   r   r   r   r    test_ignores_caught_numpy_raises  s   

"z:TestDocstringCheckerRaise.test_ignores_caught_numpy_raisesc                 C   r
   )Nz
        def my_func(self):
            """This is a numpy docstring.

            Raises
            ------
            re.error
                Sometimes
            """
            import re
            raise re.error('hi')  #@
        r   r   r   r   r   %test_find_numpy_attr_raises_exact_exc  s   


z?TestDocstringCheckerRaise.test_find_numpy_attr_raises_exact_excc                 C   r
   )Nz
        def my_func(self):
            """This is a numpy docstring.

            Raises
            ------
            re.error
                Sometimes
            """
            from re import error
            raise error('hi')  #@
        r   r   r   r   r   &test_find_numpy_attr_raises_substr_exc  r0   z@TestDocstringCheckerRaise.test_find_numpy_attr_raises_substr_excc                 C   r   )Nz
        def my_func(self):
            """This is a numpy docstring.

            Raises
            ------
            re.anothererror
                Sometimes
            """
            from re import error
            raise error('hi')
        r+   r   r,   r    r"   r   r   r   r   )test_find_valid_missing_numpy_attr_raises  r<   zCTestDocstringCheckerRaise.test_find_valid_missing_numpy_attr_raisesc                 C   r
   )Nz
        def my_func(self):
            """This is a numpy docstring.

            Raises
            ------
            bogusmodule.error
                Sometimes
            """
            from re import error
            raise error('hi') #@
        r   r   r   r   r   +test_find_invalid_missing_numpy_attr_raises   r@   zETestDocstringCheckerRaise.test_find_invalid_missing_numpy_attr_raisesc              	   C   r1   )Nz
        def my_func(self):
            """This is a numpy docstring.

            Raises
            ------
            {prefix}re.error
                Sometimes
            """
            import re
            raise re.error('hi') #@
        r2   r5   r7   r9   r   r   r   test_numpy_raises_with_prefix  s   
z7TestDocstringCheckerRaise.test_numpy_raises_with_prefixc                 C   rC   )Nz
        def my_func(self):
            """This is a docstring.

            :raises NameError: Never
            """
            my_exception = RuntimeError('hi')
            raise my_exception #@
            raise NameError('hi')
        r   r   r    rD   rF   r   r   r   3test_find_missing_sphinx_raises_infer_from_instance%  s   

"zMTestDocstringCheckerRaise.test_find_missing_sphinx_raises_infer_from_instancec                 C   rC   )Na
  
        def my_func(self):
            """This is a docstring.

            :raises NameError: Never
            """
            def ex_func(val):
                return RuntimeError(val)
            raise ex_func('hi') #@
            raise NameError('hi')
        r   r   r    rD   rF   r   r   r   3test_find_missing_sphinx_raises_infer_from_function8  s   
"zMTestDocstringCheckerRaise.test_find_missing_sphinx_raises_infer_from_functionc                 C   r
   )Nz
        def my_func(self):
            """This is a sphinx docstring.

            :raises re.error: Sometimes
            """
            import re
            raise re.error('hi')  #@
        r   r   r   r   r   &test_find_sphinx_attr_raises_exact_excL     

	"z@TestDocstringCheckerRaise.test_find_sphinx_attr_raises_exact_excc                 C   r
   )Nz
        def my_func(self):
            """This is a sphinx docstring.

            :raises re.error: Sometimes
            """
            from re import error
            raise error('hi')  #@
        r   r   r   r   r   'test_find_sphinx_attr_raises_substr_excY  r]   zATestDocstringCheckerRaise.test_find_sphinx_attr_raises_substr_excc                 C   r   )Nz
        def my_func(self):
            """This is a sphinx docstring.

            :raises re.anothererror: Sometimes
            """
            from re import error
            raise error('hi')
        r+   r   r,   r    r"   r   r   r   r   *test_find_valid_missing_sphinx_attr_raisesf  r&   zDTestDocstringCheckerRaise.test_find_valid_missing_sphinx_attr_raisesc                 C   r
   )Nz
        def my_func(self):
            """This is a sphinx docstring.

            :raises bogusmodule.error: Sometimes
            """
            from re import error
            raise error('hi') #@
        r   r   r   r   r   ,test_find_invalid_missing_sphinx_attr_raisesx  r>   zFTestDocstringCheckerRaise.test_find_invalid_missing_sphinx_attr_raisesc              	   C   s   d}dD ]%}t |j|d}|   | j| W d    n1 s$w   Y  q|   | j| W d    d S 1 s@w   Y  d S )Nz
        def my_func(self):
            """This is a sphinx docstring.

            :raises {prefix}re.error: Sometimes
            """
            import re
            raise re.error('hi') #@
        r2   r5   r7   r9   r   r   r   test_sphinx_raises_with_prefix  s   	

"z8TestDocstringCheckerRaise.test_sphinx_raises_with_prefixc                 C   r
   )Nz
        from unknown import Unknown

        def my_func(self):
            """This is a docstring.

            :raises NameError: Never
            """
            raise Unknown('hi') #@
            raise NameError('hi')
        r   r   r   r   r   test_ignores_raise_uninferable  r>   z8TestDocstringCheckerRaise.test_ignores_raise_uninferablec                 C   rC   )Na[  
        def my_func(self):
            """This is a docstring.

            :raises NameError: Never
            """
            def ex_func(val):
                def inner_func(value):
                    return OSError(value)
                return RuntimeError(val)
            raise ex_func('hi') #@
            raise NameError('hi')
        r   r   r    rD   rF   r   r   r   )test_ignores_returns_from_inner_functions  s   
"zCTestDocstringCheckerRaise.test_ignores_returns_from_inner_functionsc                 C   r
   )Nz
        def myfunc():
            """This is a docstring

            :raises NameError: Never
            """
            def inner_func():
                return 42

            raise inner_func() #@
        r   r   r   r   r   #test_ignores_returns_use_only_names  r>   z=TestDocstringCheckerRaise.test_ignores_returns_use_only_namesc                 C   r
   )Na  
        def myfunc():
            """This is a docstring

            :raises MyException: Never
            """
            class MyException(Exception):
                pass
            def inner_func():
                return MyException

            raise inner_func() #@
        r   r   r   r   r   1test_ignores_returns_use_only_exception_instances  rR   zKTestDocstringCheckerRaise.test_ignores_returns_use_only_exception_instancesc                 C   r
   )Nz
        import collections

        def test():
           """raises

           :raise U: pass
           """
           try:
              pass
           except collections.U as exc:
              raise #@
        r   r   r   r   r   %test_no_crash_when_inferring_handlers  rR   z?TestDocstringCheckerRaise.test_no_crash_when_inferring_handlersc                 C   r
   )Nz
        import collections

        def test():
           """raises

           :raise U: pass
           """
           try:
              pass
           except U as exc:
              raise #@
        r   r   r   r   r   &test_no_crash_when_cant_find_exception  rR   z@TestDocstringCheckerRaise.test_no_crash_when_cant_find_exceptionc                 C   r
   )Nz
        def my_func():
            """
            Raises:
                NotImplementedError: When called.
            """
            raise NotImplementedError #@
        r   r   r   r   r   'test_no_error_notimplemented_documented  s   

"zATestDocstringCheckerRaise.test_no_error_notimplemented_documentedN)2__name__
__module____qualname____doc__r   ZCHECKER_CLASSr   r   r   r$   r%   r'   r)   r*   r.   r/   r:   r;   r=   r?   rA   rB   rG   rI   rK   rN   rO   rP   rQ   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   r   r   r   r   r	      sd    




r	   )rl   
__future__r   r   r   r   Zpylint.testutilsr   r   r   Zpylint.extensions.docparamsr   r	   r   r   r   r   <module>   s   	