U
    ?h                     @   sh   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d Zd	d
 Zdd Zdd ZdS )z Testing decorators module
    )assert_equal)doctest_skip_parserrun_in_parallel)testing)expected_warningswarnc               	   C   s  dd } G dd d}d}|| _ ||_ dadat| }t|}| |ksJt||ksVtd}t|j | t|j | dada|| _ ||_ t| }t|}| |kstd	}t|j | t|j | b|| _ ||_ tt t|  W 5 Q R X tt t| W 5 Q R X d S )
Nc                   S   s   d S N r
   r
   r
   T/var/www/html/venv/lib/python3.8/site-packages/skimage/_shared/tests/test_testing.pyf   s    ztest_skipper.<locals>.fc                   @   s   e Zd Zdd ZdS )ztest_skipper.<locals>.cc                 S   s
   d| _ d S )NzI think, therefore...)me)selfr
   r
   r   __init__   s    z test_skipper.<locals>.c.__init__N)__name__
__module____qualname__r   r
   r
   r
   r   c   s   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__ZHAVE_AMODULEZHAVE_BMODULEr   AssertionErrorr   r   Zraises	NameError)r   r   Z	docstringf2c2expectedr
   r
   r   test_skipper   sD    r   c                     s   g  t   fdd} |   t dks,tt dd fdd}|  t dksXtt dd fd	d
}|  t dkstd S )Nc                      s     d  d S r	   appendr
   stater
   r   change_state1S   s    z+test_run_in_parallel.<locals>.change_state1      )Znum_threadsc                      s     d  d S r	   r   r
   r   r
   r   change_state2Y   s    z+test_run_in_parallel.<locals>.change_state2   c                      s     d  d S r	   r   r
   r   r
   r   change_state3_   s    z+test_run_in_parallel.<locals>.change_state3   )r   lenr   )r   r"   r$   r
   r   r   test_run_in_parallelP   s    r'   c               	   C   sH   t  dd } tdg |   W 5 Q R X t dgddd }|  d S )Nc                   S   s   t ddd d S NTest warning for test parallelr    )
stacklevelr   r
   r
   r
   r   change_state_warns_failsg   s    z7test_parallel_warning.<locals>.change_state_warns_failsr)   )Zwarnings_matchingc                   S   s   t ddd d S r(   r   r
   r
   r
   r   change_state_warns_passesn   s    z8test_parallel_warning.<locals>.change_state_warns_passes)r   r   )r+   r,   r
   r
   r   test_parallel_warningf   s    


r-   c                
   C   s6   t dg" t d  td W 5 Q R X W 5 Q R X d S )NzExpected warnings test)r   r   r
   r
   r
   r   test_expected_warnings_noopu   s    
r.   N)r   Znumpy.testingr   Zskimage._shared.testingr   r   Zskimage._sharedr   Zskimage._shared._warningsr   warningsr   r   r'   r-   r.   r
   r
   r
   r   <module>   s   D