a
    
d                     @   sL  d dl Zd dlmZmZ d dlmZ d dlmZ d dl	Z	dd Z
dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Ze	jdejejejeejejejejejejf
e	jdddd Zdd Zdd Z e	jdde	jddd d! Z!e	jdd"e	jd#de	jd$dd%d& Z"d'd( Z#d)d* Z$d+d, Z%d-d. Z&dS )/    N)join_segmentationsrelabel_sequential)testingassert_array_equalc                  C   s   t g dg dg dg} t g dg dg dg}t| |}t g dg dg dg}t|| t| |d	d
\}}}t|| |  t|| | t g dg dg}tt t| | W d    n1 s0    Y  d S )N)r   r      r   )r      r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r      r   )r      r	   r   )   r
   r
   r	   T)Zreturn_mapping)r   r   r   r   )nparrayr   r   r   raises
ValueError)s1s2jZj_refm1m2Zs3 r   m/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/skimage/segmentation/tests/test_join.pytest_join_segmentations	   s(    




r   c                 C   s    t ||  | t || |  d S Nr   )arar_relabfwinvr   r   r   _check_maps&   s    r   c                  C   s   t g d} t| \}}}t| ||| t g d}t|| t dt}d|d< d|d< d|d< d	|d
< d|d< t|| t g d}t|| d S )Nr   r   r
   r
      c   *   )r   r   r   r   r	   r
   r   d   r   r   r
   r	   r   r   r!   r    )r   r   r
   r   r!   r    r   r   r   r   r   zerosintr   r   r   r   ar_relab_refZfw_refZinv_refr   r   r   test_relabel_sequential_offset1+   s    

r(   c                  C   s   t g d} t| dd\}}}t| ||| t g d}t|| t dt}d|d< d|d< d|d	< d	|d
< d|d< t|| t g d}t|| d S )Nr   r
   offset)r
   r
      r+      	   r   r"   r   r+   r,   r   r!   r-   r    
r   r   r   r   r   r   r
   r   r!   r    r#   r&   r   r   r   test_relabel_sequential_offset5<   s    

r/   c                  C   s   t g d} t| dd\}}}t| ||| t g d}t|| t dt}d|d< d|d< d|d	< d	|d
< d|d< t|| t g d}t|| d S )Nr   r   r
   r
   r   r    r!   r   r
   r)   r
   r
   r+   r+   r,   r-   r   r   r"   r   r+   r,   r   r!   r-   r    r.   r#   r&   r   r   r   %test_relabel_sequential_offset5_with0M   s    

r2   c                  C   s   t jg dt jd} t| dd\}}}t| t||| t g d}t|| t dt}d|d< d|d< d	|d
< d
|d< d|d< t|| t g d}t|| d S )Nr0   dtyper
   r)   r1   r"   r   r+   r,   r   r!   r-   r    r.   )	r   r   uint8r   r   astyper%   r   r$   r&   r   r   r   test_relabel_sequential_dtype^   s    

r7   c                  C   sx   t t jj} t jg dt jd}t|| d\}}}t jd| | d | d | d gt jd}t|| |j|jkstJ d S )N)r   r   r    r!   r!   r3   r)   r   r   r   )	r   iinfoint32maxr   r   Zuint32r   r4   )imaxlabelsoutputr   r   	referencer   r   r   'test_relabel_sequential_signed_overflowo   s    
r?   c                  C   sT   t t jj} t jdd| ddgt jd}t|| d\}}}t || d ksPJ d S )Nr   r   r!   r3   r)   r   )r   r8   int64r:   r   r   )r;   r<   r=   r   r   r   r   r   test_very_large_labelsy   s    rA   r4   data_already_sequential)FTc                    sL   | rt jg d d}nt jg d d}t fddt|D sHJ d S )Nr   r	   r   r   r
   r   r3   r0   c                 3   s   | ]}|j  kV  qd S r   r3   .0ar3   r   r   	<genexpr>       z>test_relabel_sequential_int_dtype_stability.<locals>.<genexpr>)r   r   allr   )rB   r4   r   r   r3   r   +test_relabel_sequential_int_dtype_stability   s    rJ   c                  C   s   t jg dt jd} d}t| |d\}}}t| ||| tdd ||fD sRJ |j| jksbJ t | dk| t	| d d}t
|| d S )	NrC   r3      r)   c                 s   s   | ]}|j tjkV  qd S r   )r4   r   Zuint16rD   r   r   r   rG      rH   z=test_relabel_sequential_int_dtype_overflow.<locals>.<genexpr>r   r   )r   r   r5   r   r   rI   r4   wherer6   r%   r   )r   r*   r   r   r   r'   r   r   r   *test_relabel_sequential_int_dtype_overflow   s     rM   c                  C   sD   t g d} tt t|  W d    n1 s60    Y  d S )N)r   r   r
   r   r    r!   r   r   r   pytestr   r   r   )r   r   r   r   'test_relabel_sequential_negative_values   s    rQ   r*   )r   c                 C   s\   | rt g d}nt g d}tt t||d W d    n1 sN0    Y  d S )NrC   r0   r)   rO   )rB   r*   r   r   r   r   *test_relabel_sequential_nonpositive_offset   s
    rS   )r   r
   with0input_starts_at_offsetc                 C   s   |rt g d}nt g d}|r>||dk  | d 7  < t|| d\}}}t|||| |rh|}nt |dk||  d d}t|| d S )NrC   )r   r	   r   r
   r   r   r   r)   )r   r   r   r   rL   r   )r*   rT   rU   r   r   r   r   r'   r   r   r   *test_relabel_sequential_already_sequential   s    rV   c                  C   sH   t jg dtd} tt t| }W d    n1 s:0    Y  d S )N)r   r   r   r   r   r   r3   )r   r   floatr   r   	TypeErrorr   )r<   _r   r   r   test_incorrect_input_dtype   s    rZ   c                  C   sF   t jg dt jd} t| \}}}t|||  t| || d S )Nr0   r3   )r   r   intpr   r   r   r   Z	relabeledr   r   r   r   r   test_arraymap_call   s    r]   c                  C   sz   t jg dt jd} t| \}}}t|dks2J t|tt |ksLJ t|dks\J t|tt |ksvJ d S )Nr0   r3   r"   r+   )r   r   r[   r   lenr\   r   r   r   test_arraymap_len   s    r_   c                  C   s>   t jg dt jd} t| \}}}d|d< |d dks:J d S )Nr0   r3   r+   H   )r   r   r[   r   r\   r   r   r   test_arraymap_set   s    ra   )'numpyr   Zskimage.segmentationr   r   Zskimage._sharedr   Zskimage._shared.testingr   rP   r   r   r(   r/   r2   r7   r?   rA   markZparametrizebyteshortZintcr%   ZlonglongZubyteZushortZuintcZuintZ	ulonglongrJ   rM   rQ   rS   rV   rZ   r]   r_   ra   r   r   r   r   <module>   s>   
	
	