
    0-Ph =                        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
mZmZmZmZmZ ej        ej        gZ eed          reej        gz  ZdZ	 d dlZdZn# e$ r Y nw xY wd Zd Zej                            d	eeej        ej        e ej!        ej"        g          ej                            d
g d          d                         Z#ej                            d	eej$        ej!        ej"        ej        ej        ej%        ej&        ej'        ej(        ej)        ej*        g          d             Z+ej                            d	e          ej                            dddg          d                         Z,ej                            d	ddej!         ej-        ej!                  g          d             Z.ej                            dej$        ej"        fej"        fej!        ej        ej'        fej"        fej!        ej$        fej!        fg          d             Z/ ed          ddd            Z0 ej        dg d          d             Z1 eddd          d             Z2d  Z3 ed!d"d#$           ed%d"d#$          eedfd&                        Z4 ed!d'd"d#(           ed%d)d"d#(          eedddfd*                        Z5 G d+ d,          Z6dS )-    N)testing)_supported_float_type_validate_interpolation_orderchange_default_valuechannel_as_last_axischeck_nDdeprecate_funcdeprecate_parameter
DEPRECATED
complex256FTc                     t          ddd          dd            } t          dddd	          dd
            }t          j        t                    5 } | d          dk    sJ  |d          dk    sJ 	 d d d            n# 1 swxY w Y   d}t	          |d         j                  |k    sJ t	          |d         j                  dk    sJ t          j        d          5 } | dd          dk    sJ  | dd          dk    sJ | j        dk    sJ t          j
        j        dk     r| j        dk    sJ d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Narg10.12)	new_valuechanged_versionr      c                     | ||fS Expected docstring arg0r   arg2s      `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/_shared/tests/test_utils.pyfooz&test_change_default_value.<locals>.foo!   s     T4    zCustom warning message)r   r   warning_msgc                     | ||fS r   r   r   s      r   barz&test_change_default_value.<locals>.bar&   s     T4r   )r   r   r   zThe new recommended value for arg1 is -1. Until version 0.12, the default arg1 value is 0. From version 0.12, the arg1 default value will be -1. To avoid this warning, please explicitly set arg1 value.Trecord   )r   r#   r   r   r   r   )r   r   )r   pytestwarnsFutureWarningstrmessagewarningscatch_warnings__name__sysflagsoptimize__doc__len)r   r    r"   expected_msgrecordeds        r   test_change_default_valuer4       sN   &BGGG      HG  ,	         
 
m	$	$ #s1vv""""s1vv"""""# # # # # # # # # # # # # # #
	C  vay !!\1111vay !!%===== 
	 	-	-	- 	7s1ayyI%%%%s11~~~**** |u$$$$9!!;"66666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 x==As%   #BB
B%AEE
E
c                  
   t           j                            d                              d          } | ddddf         }t          j        t
                    5  t          |d           d d d            d S # 1 swxY w Y   d S )Ni@  )   r6   
      r#   )nprandomreshaper   raises
ValueErrorr   )zxs     r   test_check_nDr@   N   s    
	  ((44A	"R%B,A	
	#	#  A                 s   A88A<?A<dtypeorder)	Nr   r   r   r#               c                    |&| t           k    rt          | d           dk    snd S J d S |dk     s|dk    rDt          j        t                    5  t          | |           d d d            d S # 1 swxY w Y   d S | t           k    rO|dk    rIt          j        t                    5  t          t           |           d d d            d S # 1 swxY w Y   d S t          | |          |k    sJ d S )Nr   r   rE   )boolr   r   r<   r=   r%   )rA   rB   s     r   !test_validate_interpolation_orderrI   U   s   
 }BG4--,UD99Q>>>>>>>>>	eaii^J'' 	8 	8)%777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8	$5A::]:&& 	7 	7)$666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 -UE::eCCCCCCs$   A,,A03A0#CC
C
c                     t          |           }| t          j        t          j        fv r|t          j        k    sJ d S |t          j        k    sJ d S N)r   r9   float16float32float64)rA   float_dtypes     r   test_supported_float_dtype_realrP   j   sW    $ (..KRZ(((bj((((((bj((((((r   allow_complexc                 "   |rIt          | |          }| t          j        k    r|t          j        k    sJ d S |t          j        k    sJ d S t	          j        t                    5  t          | |           d d d            d S # 1 swxY w Y   d S )N)rQ   )r   r9   	complex64
complex128r   r<   r=   )rA   rQ   rO   s      r   "test_supported_float_dtype_complexrU      s      F+EOOOBL  ",......"-//////^J'' 	F 	F!%}EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   %BBBfrM   c                 D    t          |           t          j        k    sJ d S rK   )r   r9   rM   )rA   s    r   &test_supported_float_dtype_input_kindsrX      s#     ''2:555555r   zdtypes, expectedc                 4    t          |           }||k    sJ d S rK   )r   )dtypesexpectedrO   s      r   #test_supported_float_dtype_sequencer\      s(     (//K(""""""r   )multichannel_outputchannel_axisc                4    |d S |dk    sJ | j         d         S )Nr   )shape)r?   r_   s     r   _decorated_channel_axis_sizerb      s*    t272;r   r_   )Nr   r   r#   r   c                     t          j        d          }t          ||           }| |J d S ||j        |          k    sJ d S )N)r#   rC   rD   r^   )r9   zerosrb   ra   )r_   r?   sizes      r   !test_decorated_channel_axis_shaperh      sV    
 	A'EEED|||||qw|,,,,,,,r   r?   yzYou are on your own.)deprecated_versionremoved_versionhintc                      dS )zDummy function used in `test_deprecate_func`.

    The decorated function must be outside the test function, otherwise it
    seems that the warning does not point at the calling location.
    Nr   r   r   r   _deprecated_funcrn      s      r   c                     t          j        t                    5 } t                       t	          j        |            d d d            n# 1 swxY w Y   t          |           dk    sJ | d         j        j        d         dk    sJ d S )Nr   r   zg`_deprecated_func` is deprecated since version x and will be removed in version y. You are on your own.)	r%   r&   r'   rn   r   assert_stacklevelr1   r)   argsr!   s    r   test_deprecate_funcrr      s    	m	$	$ *!&)))* * * * * * * * * * * * * * * v;;!!9!!$	*     s   #A		AAold10.10r   start_versionstop_versionold0c                     | |||fS )zExpected docstring.

    Parameters
    ----------
    arg0 : int
        First unchanged parameter.
    arg1 : int, optional
        Second unchanged parameter.
    r   )r   rx   rs   r   s       r   _func_deprecated_paramsrz      s     tT!!r   new0new_namerv   rw   new1c                     | |||||fS )aS  Expected docstring.

    Parameters
    ----------
    arg0 : int
        First unchanged parameter.
    new0 : int, optional
        First new parameter.

        .. versionadded:: 0.10
    new1 : int, optional
        Second new parameter.

        .. versionadded:: 0.10
    arg1 : int, optional
        Second unchanged parameter.
    r   )r   rx   rs   r{   r~   r   s         r   _func_replace_paramsr      s    , tT4--r   c                       e Zd Zej                            e d          d             Zej                            e d          d             Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd ZdS )Test_deprecate_parameterzrequires numpydoc)reasonc                 |    t           j        dk    sJ t          j        j        dk     rt           j        dk    sJ d S d S )Nrz   r#   ar  Expected docstring.


    Parameters
    ----------
    arg0 : int
        First unchanged parameter.
    arg1 : int, optional
        Second unchanged parameter.

    Other Parameters
    ----------------
    old0 : DEPRECATED
        `old0` is deprecated.

        .. deprecated:: 0.10
    old1 : DEPRECATED
        `old1` is deprecated.

        .. deprecated:: 0.10
)rz   r,   r-   r.   r/   r0   selfs    r   test_docstring_removed_paramz5Test_deprecate_parameter.test_docstring_removed_param   s\     '/3LLLLL9!! (/    "! r   c                 |    t           j        dk    sJ t          j        j        dk     rt           j        dk    sJ d S d S )Nr   r#   a1  Expected docstring.


    Parameters
    ----------
    arg0 : int
        First unchanged parameter.
    new0 : int, optional
        First new parameter.

        .. versionadded:: 0.10
    new1 : int, optional
        Second new parameter.

        .. versionadded:: 0.10
    arg1 : int, optional
        Second unchanged parameter.

    Other Parameters
    ----------------
    old0 : DEPRECATED
        Deprecated in favor of `new1`.

        .. deprecated:: 0.10
    old1 : DEPRECATED
        Deprecated in favor of `new0`.

        .. deprecated:: 0.10
)r   r,   r-   r.   r/   r0   r   s    r   test_docstring_replaced_paramz6Test_deprecate_parameter.test_docstring_replaced_param  sZ    #,0FFFFF9!! %,    "! r   c                 f   d}t          j        t          |          5  t          dd          ddt          d fk    sJ 	 d d d            n# 1 swxY w Y   t          j        t          |          5  t          ddd          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        t          |          5  t          dd          ddt          d fk    sJ 	 d d d            n# 1 swxY w Y   t          j        t          |          5  t          dd          dt          dd fk    sJ 	 d d d            n# 1 swxY w Y   t          j        d	
          5 }t          dd          dt          t          dfk    sJ 	 d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Nz.*`old[01]` is deprecated since version 0\.10 and will be removed in 0\.12.* see the documentation of .*_func_deprecated_params`.matchr   r#   rC   )r   r#   rC   Nrx   rs   Tr!   r$   r   )r%   r&   r'   rz   r   r*   r+   r1   )r   r   r"   s      r   test_warning_removed_paramz3Test_deprecate_parameter.test_warning_removed_param>  sV   O 	 \-u555 	M 	M*1a00Q:t4LLLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M\-u555 	G 	G*1a33FFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G\-u555 	 	*11555	:     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \-u555 	 	*11555	:     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $D111 	XV*11555!ZUV9WWWWWW	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X6{{asY    AAA1BBB<!C**C.1C.!D>>EE&FFFc                 P   d}t          j        t          |          5  t          dd          dt          t          d dd fk    sJ 	 d d d            n# 1 swxY w Y   t          j        t          |          5 }t          ddd          dt          t          ddd fk    sJ 	 d d d            n# 1 swxY w Y   t          |          dk    sJ d|d         j        j        d         v sJ d|d         j        j        d         v sJ t          j        t          |          5  t          dd	          dt          t          d dd fk    sJ 	 d d d            n# 1 swxY w Y   t          j        t          |          5  t          dd
          dt          t          dd d fk    sJ 	 d d d            n# 1 swxY w Y   t          j	        d          5 }t          ddd          dt          t          ddd fk    sJ 	 d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Nz.*`old[0,1]` is deprecated since version 0\.10 and will be removed in 0\.12.* see the documentation of .*_func_replace_params`.r   r   r#   rC   z`old1` is deprecatedr   z`old0` is deprecatedr   r   Tr!   )r{   r~   )
r%   r&   r'   r   r   r1   r)   rq   r*   r+   )r   r   recordsr"   s       r   test_warning_replaced_paramz4Test_deprecate_parameter.test_warning_replaced_paramZ  s   L 	
 \-u555 	 	'1--2     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \-u555 	'1a005     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7||q    %);)@)CCCCC%);)@)CCCCC\-u555 	 	'2227     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \-u555 	 	'2227     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $D111 	V':::?     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 6{{asY   'AAA8(B--B14B1 (EEE;(F00F47F4)HH
H
c                     t          dddd          }dd}t          j        t          d          5   ||           d d d            n# 1 swxY w Y   t          fd	}  ||          d
          d
k    sJ d S )Noldrt   r   r#   rv   rw   
stacklevelc                 
    | |fS rK   r   r   r   s     r   r   z=Test_deprecate_parameter.test_missing_DEPRECATED.<locals>.foo  s    9r   zExpected .* <DEPRECATED>r   c                     | S rK   r   r   s     r   r    z=Test_deprecate_parameter.test_missing_DEPRECATED.<locals>.bar  s    Kr   r   rK   )r
   r%   r<   RuntimeErrorr   )r   decorater   r    s       r   test_missing_DEPRECATEDz0Test_deprecate_parameter.test_missing_DEPRECATED  s    &f
 
 
	 	 	 	 ]</IJJJ 	 	HSMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 % 	 	 	 	 xx}}Q1$$$$$$s   AAAc                 p   t          dddd          t          fdd dd            }t          j        d	
          5 } |d          dk    sJ  |ddd          dk    sJ  |dd          dk    sJ  |dd          dk    sJ 	 d d d            n# 1 swxY w Y   t	          |          dk    sJ d S )Nr   new0.190.21r|   r   )r   arg3c                    | ||fS r   r   )r   r   r   r   s       r   r   z;Test_deprecate_parameter.test_new_keyword_only.<locals>.foo  s     d?"r   Tr!   r   )r   r   Nr#   )r   r   r#   )r   )r   r#   N)r   )r
   r   r*   r+   r1   )r   r   r3   s      r   test_new_keyword_onlyz.Test_deprecate_parameter.test_new_keyword_only  sP   	 	

 

 

 % 	#QT 	# 	# 	# 	#

 

	# $D111 	/X3q66\))))3qaa(((I55553qa===L00003qq>>>Y.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 8}}!!!!!!s   ABBBc           	         d}t          j        t          |          5  t          j        t          d          5  t          ddd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        t          d          5  t          ddd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        t          d          5  t          dddd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 )	N.*`old[0,1]` is deprecatedr   z.* avoid conflicting valuesr   r#   )rx   r~   )rs   r{   )rx   rs   r{   r~   )r%   r&   r'   r<   r=   r   )r   r   s     r   test_conflicting_old_and_newz5Test_deprecate_parameter.test_conflicting_old_and_new  s   -\-u555 	8 	8z1NOOO 8 8$QQQ77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 \-u555 	8 	8z1NOOO 8 8$QQQ77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 \-u555 	H 	Hz1NOOO H H$QQQQQGGGGH H H H H H H H H H H H H H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   A0AA0A	A0 A	!A00A47A4C(2CC(C	C(C	C((C,/C,E#*E?E#E	E#E	E##E'*E'c                 z   t          j        t          d          5  t                       ddd           n# 1 swxY w Y   t          j        t
          d          5  t          j        t          d          5  t          dd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 )	z8Check that normal errors for faulty calls are unchanged.z(.* required positional argument\: 'arg0'r   Nr   z&.* multiple values for argument 'old0'r   r#   r   )r%   r<   	TypeErrorr   r&   r'   rz   r   s    r   test_wrong_call_signaturez2Test_deprecate_parameter.test_wrong_call_signature  s   ]H
 
 
 	# 	# !"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 \-/LMMM 	6 	6!I   6 6 (1155556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6sB   7;;B09BB0B	B0B	 B00B47B4c                 B   t          j        t          d          5  t          ddd          d             }d d d            n# 1 swxY w Y   t          j        t          d          5  t          dd	dd
          d             }d d d            d S # 1 swxY w Y   d S )Nz'old' is not in listr   r   rt   r   ru   c                     d S rK   r   )r   s    r   r   z;Test_deprecate_parameter.test_wrong_param_name.<locals>.foo  s    r   z'new' is not in listr   r|   c                     d S rK   r   )r   r   r   s      r   r    z;Test_deprecate_parameter.test_wrong_param_name.<locals>.bar  s	     r   )r%   r<   r=   r
   )r   r   r    s      r   test_wrong_param_namez.Test_deprecate_parameter.test_wrong_param_name  sG   ]:-CDDD 	 	 f6RRR  SR	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:-CDDD 	 	 V&    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA*BBBc                     t          j        t                    5 }t          ddd           t	          j        |           d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Nr   r#   )rx   rs   )r%   r&   r'   rz   r   rp   r1   )r   r   s     r   test_warning_locationz.Test_deprecate_parameter.test_warning_location  s    \-(( 	/G#AAA6666%g...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 7||q      s   'AAAc                    t          ddd          t          fd            }t          j        t          d          5   |dd	           d d d            n# 1 swxY w Y   t          dddd
          t          fd            }t          j        t          d          5 } |dd	           t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   ru   c                     d S rK   r   r   s     r   r   z5Test_deprecate_parameter.test_stacklevel.<locals>.foo  s	     Dr   zSet stacklevel manuallyr   r   r   r#   r   c                     d S rK   r   r   s     r   r    z5Test_deprecate_parameter.test_stacklevel.<locals>.bar  s	     Dr   z`old` is deprecated)	r
   r   r%   r<   r   r&   r'   r   rp   )r   r   r    r   s       r   test_stacklevelz(Test_deprecate_parameter.test_stacklevel  s   	 

 

 


 % 	 	 	

 


	 ]</HIII 	 	C1III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
 	

 

 

 % 	 	 	

 

	 \-/DEEE 	/C1III%g...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s#   AAA !CCCN)r,   
__module____qualname__r%   markskipifhave_numpydocr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s
       [M)2EFF  GF< [M)2EFF# # GF#J     8;  ;  ; z% % % " " ",H H H6 6 6  ! ! !/ / / / /r   r   )7r-   r*   numpyr9   r%   skimage._sharedr   skimage._shared.utilsr   r   r   r   r   r	   r
   r   rS   rT   complex_dtypeshasattrr   r   numpydocImportErrorr4   r@   r   parametrizerH   intuint8uint16floatrM   rN   rI   rL   uint32uint64int8int16int32int64rP   rU   rA   rX   r\   rb   rh   rn   rr   rz   r   r   r   r   r   <module>r      s   



       # # # # # #	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ,.
72| &r}o%N	OOOMM 	 	 	D	+ + +\   dC29eRZL  "A"A"ABBD D CB D" 







	
	
	



 ") )# ") .115$-88	F 	F 98 21	F 3	2:xrx
?S?S"TUU6 6 VU6 
*bj	!2:.
*bi	)2:6
*bj	!2:. # # #
 %00048     10 ^%@%@%@AA
- 
- BA
- C6L    	 	 	 V6GGGV6GGG'1
 
" 
" 
" HG HG
" VfFQWXXXVfFQWXXX
Dt. . . YX YX..L/ L/ L/ L/ L/ L/ L/ L/ L/ L/s   A A"!A"