
    a6d                     b    d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ d Zd Zd	 Zd
 ZdS )z Testing decorators module
    )assert_equal)doctest_skip_parsertest_parallel)testing)expected_warningswarnc                     d }  G d d          }d}|| _         ||_         dadat          |           }t          |          }| |u sJ ||u sJ d}t	          |j         |           t	          |j         |           dada|| _         ||_         t          |           }t          |          }| |u sJ d}t	          |j         |           t	          |j         |           b|| _         ||_         t          j        t                    5  t          |            d d d            n# 1 swxY w Y   t          j        t                    5  t          |           d d d            d S # 1 swxY w Y   d S )	Nc                      d S N r       Blib/python3.11/site-packages/skimage/_shared/tests/test_testing.pyfztest_skipper.<locals>.f   s    r   c                       e Zd Zd ZdS )test_skipper.<locals>.cc                     d| _         d S )NzI think, therefore...)me)selfs    r   __init__z test_skipper.<locals>.c.__init__   s    -DGGGr   N)__name__
__module____qualname__r   r   r   r   cr      s#        	. 	. 	. 	. 	.r   r   z Header

            >>> something # skip if not HAVE_AMODULE
            >>> something + else
            >>> a = 1 # skip if not HAVE_BMODULE
            >>> something2   # skip if HAVE_AMODULE
        FTz Header

            >>> something # doctest: +SKIP
            >>> something + else
            >>> a = 1
            >>> something2
        z Header

            >>> something
            >>> something + else
            >>> a = 1 # doctest: +SKIP
            >>> something2   # doctest: +SKIP
        )__doc__HAVE_AMODULEHAVE_BMODULEr   r   r   raises	NameError)r   r   	docstringf2c2expecteds         r   test_skipperr$      s8     . . . . . . . .	  AIAI LL	Q		B	Q		B77777777	  X&&&X&&&LLAIAI	Q		B	Q		B7777	  X&&&X&&&AIAI			"	"  A              			"	"  A                 s$   D!!D%(D%E""E&)E&c                  d   g t                      fd            }  |              t                    dk    sJ t          d          fd            } |             t                    dk    sJ t          d          fd            } |             t                    dk    sJ d S )	Nc                  2                          d            d S r   appendstates   r   change_state1z)test_test_parallel.<locals>.change_state1S       Tr         )num_threadsc                  2                          d            d S r   r'   r)   s   r   change_state2z)test_test_parallel.<locals>.change_state2Y   r,   r      c                  2                          d            d S r   r'   r)   s   r   change_state3z)test_test_parallel.<locals>.change_state3_   r,   r      )r   len)r+   r1   r4   r*   s      @r   test_test_parallelr7   P   s    E__    _MOOOu::????q!!!    "!MOOOu::????q!!!    "!MOOOu::??????r   c                      t                      d             } t          dg          5   |              d d d            n# 1 swxY w Y   t          dg          d             } |             d S )Nc                  (    t          dd           d S NTest warning for test parallelr-   )
stacklevelr   r   r   r   change_state_warns_failsz7test_parallel_warning.<locals>.change_state_warns_failsg       -!<<<<<<r   r;   )warnings_matchingc                  (    t          dd           d S r:   r   r   r   r   change_state_warns_passesz8test_parallel_warning.<locals>.change_state_warns_passesn   r>   r   )r   r   )r=   rA   s     r   test_parallel_warningrB   f   s    __= = _= 
<=	>	> # #  """# # # # # # # # # # # # # # # &F%GHHH= = IH= s   ?AAc                      t          dg          5  t          d           5  t          d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzExpected warnings test)r   r	   r   r   r   test_expected_warnings_nooprD   u   s    	45	6	6 + + t$$ 	+ 	+)***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	++ + + + + + + + + + + + + + + + + +s1   A=AA	AA	AAAN)r   numpy.testingr   skimage._shared.testingr   r   skimage._sharedr   skimage._shared._warningsr   warningsr	   r$   r7   rB   rD   r   r   r   <module>rJ      s     ' & & & & & F F F F F F F F # # # # # # 7 7 7 7 7 7      A A AH  ,     + + + + +r   