
    tKg                        d dl Z d dl mZ d dlZd dlmZ d dlZd Zd Z	d Z
d Ze j                  j                  dd	d
g      d        Ze j                  j                  dd	d
g      d        Zd Ze j                  j                  dddg      e j                  j                  dd	d
g      d               Ze j                  j                  dd	d
g      d        Ze j                  j                  dddg      e j                  j                  dd	d
g      d               Ze j                  j                  ddd	g      d        Ze j                  j                  dd	d
g      d        Zy)    N)raises)DisjointSetc               #   B  K   t        t        j                        } t        t	        j
                  | t                    }|t        t	        j
                  | t                    z  }|t        t        j                        z  }|t        |       D cg c]  }d  c}z  }t	        j                  |t              }t        j                  j                  d      }	 |j                  dd      }|j                  ||      }|dk(  r|d    nt        |       ?c c}w w)N)dtyper   seed      )lenstringascii_letterslistnparangeintfloatrangearrayobjectrandomRandomStaterandintchoicetuple)ktokensirngsizeelements         i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/cluster/tests/test_disjoint_set.pygenerate_random_tokenr"      s     F  !A"))AS)*F
d299Qe,--F
d6''((F
U1X&XtX&&FXXfF+F
))

Q

'C
{{1a **VT*19!*.  	 's   BD	DBDc                     i }t               D ]%  }||vst        |      ||<   t        |      | k\  s% n t        |j                               S N)r"   r   r   keys)nelementsr    s      r!   get_elementsr(      sL    H(*(" #HHW8}!	 +
       c                  v    d} t        |       }t        |      }|j                  | k(  sJ t        |      |k(  sJ y )N
   )r(   r   	n_subsetsr   r&   r'   diss      r!   	test_initr/   %   s>    
AAH
h
C==A9   r)   c                      d} t        |       }t        |      }t        |      | k(  sJ |j                  d       t        |      | dz   k(  sJ y )Nr+   dummyr	   )r(   r   r   addr-   s      r!   test_lenr3   -   sL    
AAH
h
Cs8q==GGGs8q1ur)   r&   r+   d   c                 V    t        |       }t        |      }|D ]  }||v rJ  d|vsJ y )Nr1   )r(   r   )r&   r'   r.   xs       r!   test_containsr7   7   s:    AH
h
CCxx  #r)   c                 ,   t        |       }t        |      }t               }t        |      D ]M  \  }}|j                  |       t	        |      |dz   k(  sJ |j                  |       t	        |      |dz   k(  rMJ  t        |      t        |      k(  sJ y )Nr	   )r(   r   	enumerater2   r   r   )r&   r'   dis1dis2r   r6   s         r!   test_addr<   A   s    AHx D=D(#14yAE!!! 	4yAE!!! $ :d###r)   c                  h   t        d      } t        |       }t        t              5  |d    d d d        t        t              5  |j	                  | d   d       d d d        t        t              5  |j                  | d   d       d d d        y # 1 sw Y   dxY w# 1 sw Y   CxY w# 1 sw Y   y xY w)Nr+   )r&   r1   r   )r(   r   assert_raisesKeyErrormerge	connected)r'   r.   s     r!   test_element_not_presentrB   R   s    b!H
h
C	x	 G 
! 
x	 		(1+w' 
! 
x	 hqk7+ 
!	  
!	  
!	  
!	 s#   BB1B(BB%(B1	directionforwards	backwardsc                 `   t        |       t              }t        |      k(  sJ t        t        | dz
              }|dk(  r|d d d   }t	        |      D ]s  \  }}|j                  |   |dz            rJ |j                  |   |dz            sJ |j                  |   |dz            sJ |j                  | dz
  |z
  k(  rsJ  D cg c]  }||   	 }}|dk(  rt        fd|D              sJ t        fd|D              sJ |j                  d   d         rJ y c c}w )Nr	   rE   rD   c              3   .   K   | ]  }d    |k(    yw)r   N .0rr'   s     r!   	<genexpr>z-test_linear_union_sequence.<locals>.<genexpr>s   s     3U8A;!#U   c              3   .   K   | ]  }d    |k(    yw)NrI   rJ   s     r!   rM   z-test_linear_union_sequence.<locals>.<genexpr>u   s     4e8B<1$erN   r   )	r(   r   r   r   r9   rA   r@   r,   all)r&   rC   r.   indicesitr   rootsr'   s          @r!   test_linear_union_sequencerU   `   sL    AH
h
CtCy   5Q< GK$B$-7#A==!hq1uo>>>yy!hq1uo666}}Xa[(1q5/:::}}A
***	 $ &&XSVXE&J3U33334e4444yy!hrl3333 's   D+c                 F   t        |       }t        |      }|D ]>  }|j                  ||      sJ |j                  ||      rJ |j                  ||      r>J  |j                  t        |      k(  sJ |t        |      k(  sJ |D cg c]  }||   	 }}||k(  sJ y c c}w r$   )r(   r   rA   r@   r,   r   r   )r&   r'   r.   r6   rT   s        r!   test_self_unionsrW   y   s    AH
h
C}}Q"""99Q?""}}Q"""  ==CM)))tCy   %&XSVXE&u 's   Borderabbac                    t        |       }t        |      }t        j                  j	                  d      }t        j
                  |       }|j                  |       t        dt        |      d      D ]n  }|||      |||dz         }}|dk(  r|j                  ||      sJ |j                  ||      sJ |t        ||   ||dz               }	||   |	k(  sJ ||   |	k(  rnJ  y )Nr   r      r	   rY   )r(   r   r   r   r   r   shuffler   r   r@   min)
r&   rX   r'   r.   r   rR   r   abexpecteds
             r!   test_equal_size_orderingrb      s     AH
h
C
))

Q

'CiilGKK1c'lA&
#Xga!en%=1D=99Q?"?99Q?"?C
GAEN;<1v!!!1v!!! 'r)   kmax   c                    d| z  }t        |      }t        |      }t        j                  j	                  d      }dt        j
                  |       z  D ]  }t        d|d|z        D ]h  }|j                  d|d      \  }}|||z      |||z   |z      }
}	|j                  |	|
      rJ |j                  |	|
      sJ |j                  |	|
      rhJ  |t        |      k(  sJ |D cg c]  }||   	 }}t        j
                  |      t        j
                  |      d|z  z  z
  }|D cg c]  }||   	 }}||k(  rJ  y c c}w c c}w )Nr\   r   r   )r   )r(   r   r   r   r   r   r   r   rA   r@   r   )rc   r&   r'   r.   r   r   r   r1r2r_   r`   rT   expected_indicesra   s                 r!   test_binary_treeri      sT   	4AAH
h
C
))

Q

'C		$q!QU#A[[AA[.FBAF#Xa!ebj%9qA}}Q***99Q?"?==A&&& $ 49$$$!)*AQ*99Q<"))A,!a%*@@)9:)9AHQK)9:      +:s   &E)Ec                    t        |       }t        |      }t        j                  j	                  d      }|j                  d| | df      D ]  \  }}||   }||   }|D ch c]  }||   h||   hk(  s| }	}|j                  |      t        |j                  |            k(  sJ |	|j                  |      k(  sJ |D ci c]  }||   t                }	}|D ]  }|	||      j                  |        t        |	j                               }	|	|j                         k(  sJ |j                  ||       |j                  |      |j                  |      k(  rJ  y c c}w c c}w )Nr   r   r\   )r(   r   r   r   r   r   subset_sizer   subsetsetr2   r   valuessubsetsr@   )
r&   r'   r.   r   r   jr6   yr    ra   s
             r!   test_subsetsrr      sY   AH
h
C
))

Q

'CAq1a&)1QKQK+.M33w<.SVH2LG3Mq!SA%77773::a=(((7:;sGCL#%'s;GS\"&&w/ )*3;;=(((		!Qzz!}

1--- * N <s   !E 4E E%)pytestr   r>   numpyr   scipy.cluster.hierarchyr   r   r"   r(   r/   r3   markparametrizer7   r<   rB   rU   rW   rb   ri   rr   rI   r)   r!   <module>rx      s    *  / !$!! r3i( ) r3i($ )$ , z;&?@r3i(4 ) A4. r3i( ) 4,/r3i(" ) 0"( !R)! *!* r3i(. ).r)   