o
    jl                     @   s   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	d
 Zejjedddd Zejjedddd Zdd ZG d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                  C   s6  dd } G d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 sQJ d	}t|j | t|j | b|| _ ||_ tt t|  W d    n1 szw   Y  tt t| W d    d S 1 sw   Y  d S )
Nc                   S   s   d S N r   r   r   c/var/www/html/Deteccion_Ine/venv/lib/python3.10/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   r   r   raises	NameError)r   r   	docstringf2c2expectedr   r   r   test_skipper   sB   

"r   zCannot start threads in WASM)reasonc                     s   g  t   fdd} |   t dksJ t dd fdd}|  t dks,J t dd fd	d
}|  t dksBJ d S )Nc                           d  d S r   appendr   stater   r   change_state1Y      z+test_run_in_parallel.<locals>.change_state1      )Znum_threadsc                      r   r   r    r   r"   r   r   change_state2`   r%   z+test_run_in_parallel.<locals>.change_state2   c                      r   r   r    r   r"   r   r   change_state3g   r%   z+test_run_in_parallel.<locals>.change_state3   )r   len)r$   r(   r*   r   r"   r   test_run_in_parallelU   s   r-   z Cannot run parallel code in WASMc                  C   s\   t  dd } tdg |   W d    n1 sw   Y  t dgddd }|  d S )Nc                   S      t ddd d S NTest warning for test parallelr&   
stacklevelr	   r   r   r   r   change_state_warns_failsq      z7test_parallel_warning.<locals>.change_state_warns_failsr0   )Zwarnings_matchingc                   S   r.   r/   r	   r   r   r   r   change_state_warns_passesx   r4   z8test_parallel_warning.<locals>.change_state_warns_passes)r   r   )r3   r5   r   r   r   test_parallel_warningo   s   



r6   c                	   C   sp   t dg) t d  td W d    n1 sw   Y  W d    d S W d    d S 1 s1w   Y  d S )NzExpected warnings test)r   r
   r   r   r   r   test_expected_warnings_noop   s   

"r7   c                   @   s6   e Zd Zdd Zdd Zejdddgdd	 Zd
S )Test_assert_stacklevelc                 O   s   t j|i | d S r   )warningsr
   )r   argskwargsr   r   r   raise_warning   s   z$Test_assert_stacklevel.raise_warningc                 C   sJ   t jtdd}| jdtdd W d    n1 sw   Y  t| d S )NZpassesmatchr&   r1   )pytestwarnsUserWarningr<   r   )r   recordr   r   r   test_correct_stacklevel   s   z.Test_assert_stacklevel.test_correct_stacklevellevelr'   r)   c                 C   s   t jtdd}| jdt|d W d    n1 sw   Y  t jd }dtdt	 d|  }t j
t|d t|dd	 W d    d S 1 sLw   Y  d S )
NZwrongr=   r1   r&   z.*z
Expected: :)offset)r?   r@   rA   r<   inspectcurrentframef_linenoreescape__file__r   AssertionErrorr   )r   rD   rB   line_numberregexr   r   r   test_wrong_stacklevel   s   "z,Test_assert_stacklevel.test_wrong_stacklevelN)	r   r   r   r<   rC   r?   markZparametrizerQ   r   r   r   r   r8      s
    r8   )r   rH   rK   r9   r?   Znumpy.testingr   Zskimage._shared.testingr   r   r   Zskimage._sharedr   Z"skimage._shared._dependency_checksr   Zskimage._shared._warningsr   r
   r   rR   Zskipifr-   r6   r7   r8   r   r   r   r   <module>   s$    @

