
    0-Phl                     4   d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ d	 Zej                            ed
          d             Zej                            ed          d             Zd Z G d d          ZdS )zTesting decorators module    N)assert_equal)doctest_skip_parserrun_in_parallelassert_stacklevel)testing)is_wasm)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       b/var/www/html/test/jupyter/venv/lib/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&      s/     . . . . . . . .I AIAI LL	Q		B	Q		B77777777H X&&&X&&&LLAIAI	Q		B	Q		B7777H X&&&X&&&AIAI			"	"  A              			"	"  A                 s$   D!!D%(D%E""E&)E&zCannot start threads in WASM)reasonc                  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_run_in_parallel.<locals>.change_state1Y       Tr         )num_threadsc                  2                          d            d S r   r*   r,   s   r   change_state2z+test_run_in_parallel.<locals>.change_state2`   r/   r      c                  2                          d            d S r   r*   r,   s   r   change_state3z+test_run_in_parallel.<locals>.change_state3g   r/   r      )r   len)r.   r4   r7   r-   s      @r   test_run_in_parallelr:   U   s    E     MOOOu::????###    $# MOOOu::????###    $# MOOOu::??????r   z Cannot run parallel code in WASMc                      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 parallelr0   
stacklevelr
   r   r   r   change_state_warns_failsz7test_parallel_warning.<locals>.change_state_warns_failsq       -!<<<<<<r   r>   )warnings_matchingc                  (    t          dd           d S r=   r
   r   r   r   change_state_warns_passesz8test_parallel_warning.<locals>.change_state_warns_passesx   rB   r   )r   r	   )rA   rE   s     r   test_parallel_warningrF   o   s    = = = 
<=	>	> # #  """# # # # # # # # # # # # # # # (H'IJJJ= = KJ= 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_nooprH      s    	45	6	6 + +t$$ 	+ 	+)***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	++ + + + + + + + + + + + + + + + + +s1   A=AA	AA	AAAc                   f    e Zd Zd Zd Zej                            dddg          d             ZdS )Test_assert_stacklevelc                 (    t          j        |i | d S r   )warningsr   )r   argskwargss      r   raise_warningz$Test_assert_stacklevel.raise_warning   s    t&v&&&&&r   c                     t          j        t          d          5 }|                     dt          d           d d d            n# 1 swxY w Y   t	          |           d S )Npassesmatchr0   r?   )pytestwarnsUserWarningrO   r   )r   records     r   test_correct_stacklevelz.Test_assert_stacklevel.test_correct_stacklevel   s    \+X666 	D&xCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D&!!!!!s   AA
A
levelr1   r5   c                    t          j        t          d          5 }|                     dt          |           d d d            n# 1 swxY w Y   t	          j                    j        dz
  }dt          j        dt           d|           z   }t          j
        t          |          5  t          |d	           d d d            d S # 1 swxY w Y   d S )
NwrongrR   r?   r0   z.*z
Expected: :)offset)rT   rU   rV   rO   inspectcurrentframef_linenoreescape__file__r    AssertionErrorr   )r   rY   rW   line_numberregexs        r   test_wrong_stacklevelz,Test_assert_stacklevel.test_wrong_stacklevel   s_    \+W555 	GwFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G *,,59ry!Fh!F!F!F!FGGG]>777 	1 	1fR0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s#   AA
A
)CCCN)	r   r   r   rO   rX   rT   markparametrizerh   r   r   r   rJ   rJ      sd        ' ' '" " " [Wq!f--1 1 .-1 1 1r   rJ   )r   r_   rb   rL   rT   numpy.testingr   skimage._shared.testingr   r   r   skimage._sharedr   "skimage._shared._dependency_checksr   skimage._shared._warningsr	   r   r&   ri   skipifr:   rF   rH   rJ   r   r   r   <module>rq      st      				   & & & & & &         
 $ # # # # # 6 6 6 6 6 6 7 7 7 7 7 7      = = =@ G$BCC  DC2 G$FGG    HG + + +1 1 1 1 1 1 1 1 1 1r   