o
    :ήc'                     @   s2  d dl 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mZmZmZmZ d dlmZ d dlmZ ejejgZeedrIeejg7 ZdZzd dlZdZW n	 ey\   Y nw d	d
 Zdd Zdd Zdd Zej !de"e#ej$ej%e&ej'ej(gej !dg d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j0gdd Z1ej !deej !dddgdd Z2ej !dddej'e3ej'gdd Z4ej !dej*ej(fej(fej'ej%ej-gej(fej'ej*hej'fgd d! Z5edd"dd#d$d%Z6e!d&g d'd(d) Z7d*d+ Z8dS ),    N)testing)check_nDdeprecate_kwarg_validate_interpolation_orderchange_default_value
remove_arg_supported_float_typechannel_as_last_axis)hog)pyramid_gaussian
complex256FTc                  C   s  t dddddd} t dddd	dd
d}d}tt}| dddks(J W d    n1 s2w   Y  t|d j|ksBJ tt}| ddddksRJ W d    n1 s\w   Y  t|d j|kslJ d}tt}|dddks}J W d    n1 sw   Y  t|d j|ksJ tt}|ddddksJ W d    n1 sw   Y  t|d j|ksJ tjdd.}| ddksJ | ddddksJ | jdksJ t	j
jdk r| jdksJ W d    n1 sw   Y  t|dksJ d S )Narg10.12)changed_versionr      c                 S   
   | ||fS Expected docstring arg0r   arg2r   r   G/tmp/pip-target-vg8gfxp4/lib/python/skimage/_shared/tests/test_utils.pyfoo      
z!test_remove_argument.<locals>.fooz"Some indication on future behavior)r   help_msgc                 S   r   r   r   r   r   r   r   bar$      
z!test_remove_argument.<locals>.barzarg1 argument is deprecated and will be removed in version 0.12. To avoid this warning, please do not use the arg1 argument. Please see foo documentation for more details.)r   r   r   r   zarg1 argument is deprecated and will be removed in version 0.12. To avoid this warning, please do not use the arg1 argument. Please see bar documentation for more details. Some indication on future behaviorTrecordr   r   r   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   expected_msgr    recordedr   r   r   test_remove_argument   sB   
r4   c                  C   s:  t ddddddd} t dddd	d
ddd}tt}| ddks'J |ddks/J W d    n1 s9w   Y  d}t|d j|ksKJ t|d jd	ksVJ tjdd/}| dddksfJ | ddddkspJ | jdkswJ t	j
jdk r| jdksJ W d    n1 sw   Y  t|dksJ d S )Nr   r   )	new_valuer   r   r   c                 S   r   r   r   r   r   r   r   r   Y   r   z&test_change_default_value.<locals>.fooCustom warning message)r6   r   warning_msgc                 S   r   r   r   r   r   r   r   r   ^   r   z&test_change_default_value.<locals>.barr!   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.Tr   r#   )r   r#   r   r   r   r   r$   )r   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   )r   r   r    r2   r3   r   r   r   test_change_default_valueW   s,   r9   c                  C   s  t ddidddd} t ddiddddd	d
}tt}| ddddks*J |ddddks4J W d    n1 s>w   Y  d}t|d j|ksPJ t|d jdks[J tjddk}| ddksjJ | dddkssJ | ddddks}J | dddddksJ | ddddksJ | ddddksJ | dddddksJ | jdksJ t	j
jdk rts| jdksJ n| jdksJ W d    n1 sw   Y  t|dksJ d S )Nold_arg1new_arg1z0.19r   c                 S   r   r   r   r   r;   r   r   r   r   r      r   z!test_deprecate_kwarg.<locals>.foor7   )deprecated_versionr8   c                 S   r   r   r   r<   r   r   r   r      s   
z!test_deprecate_kwarg.<locals>.barr   )r:   )r   r   NzR`old_arg1` is a deprecated argument name for `foo`. Please use `new_arg1` instead.Tr   r#   )r   r#   N)r   r   r#   )r;   r   )r;   r"   r   r   zExpected docstring


    Other Parameters
    ----------------
    old_arg1 : DEPRECATED
        Deprecated in favor of `new_arg1`.

        .. deprecated:: 0.19
)r   N)r   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   have_numpydocr0   r1   )r   r   r    msgr3   r   r   r   test_deprecate_kwarg   s<   r@   c                  C   s`   t jdd} | ddddf }tt t|d W d    d S 1 s)w   Y  d S )Ni@  )   rA   
      r#   )nprandomreshaper   raises
ValueErrorr   )zxr   r   r   test_check_nD   s
   "rK   dtypeorder)	Nr5   r   r   r#               c                 C   s   |d u r| t krt| d dksJ 	d S d S |dk s|dkr;tt t| | W d    d S 1 s4w   Y  d S | t kr`|dkr`tt tt | W d    d S 1 sYw   Y  d S t| ||ksiJ d S )Nr   r   rP   )boolr   r   rG   rH   r%   )rL   rM   r   r   r   !test_validate_interpolation_order   s   ""rS   c                 C   s<   t | }| tjtjfv r|tjksJ d S |tjksJ d S N)r   rD   float16float32float64)rL   float_dtyper   r   r   test_supported_float_dtype_real   s   rY   allow_complexc                 C   sz   |rt | |d}| tjkr|tjksJ d S |tjksJ d S tt t | |d W d    d S 1 s6w   Y  d S )N)rZ   )r   rD   	complex64
complex128r   rG   rH   )rL   rZ   rX   r   r   r   "test_supported_float_dtype_complex   s   
"r]   frV   c                 C   s   t | tjks	J d S rT   )r   rD   rV   )rL   r   r   r   &test_supported_float_dtype_input_kinds   s   r_   zdtypes, expectedc                 C   s   t | }||ks
J d S rT   )r   )dtypesexpectedrX   r   r   r   #test_supported_float_dtype_sequence   s   	rb   )multichannel_outputchannel_axisc                C   s"   |d u rd S |dksJ | j d S )Nr5   )shape)rJ   re   r   r   r   _decorated_channel_axis_size  s   
rg   re   )Nr   r   r#   r5   c                 C   sD   t d}t|| d}| d u r|d u sJ d S ||j|  ks J d S )N)r#   rN   rO   rd   )rD   zerosrg   rf   )re   rJ   sizer   r   r   !test_decorated_channel_axis_shape  s
   
rl   c                  C   s   t t} tddd t jd }W d   n1 sw   Y  | d j|ks+J | d jt	ks4J t
jddd}t t} t|dd t jd }W d   n1 sYw   Y  | d j|ksgJ | d jt	kspJ dS )zaAssert that warning message issued by decorator points to
    expected file and line number.
    NT)multichannelr   r   d   rN   )r%   r&   r'   r   inspectcurrentframef_linenolinenofilename__file__rD   rE   randr
   )r    expected_linenoimgr   r   r   test_decorator_warnings  s   rx   )9r-   r*   ro   numpyrD   r%   skimage._sharedr   skimage._shared.utilsr   r   r   r   r   r   r	   skimage.featurer
   skimage.transformr   r[   r\   complex_dtypeshasattrr   r>   numpydocImportErrorr4   r9   r@   rK   markparametrizerR   intuint8uint16floatrV   rW   rS   rU   uint32uint64int8int16int32int64rY   r]   rL   r_   rb   rg   rl   rx   r   r   r   r   <module>   sn    $
:):




