
    (ph                        S SK r S SK Jr  S SKrS SKJr  S SKrS rS r	S r
S r\ R                  R                  SS	S
/5      S 5       r\ R                  R                  SS	S
/5      S 5       rS r\ R                  R                  SSS/5      \ R                  R                  SS	S
/5      S 5       5       r\ R                  R                  SS	S
/5      S 5       r\ R                  R                  SSS/5      \ R                  R                  SS	S
/5      S 5       5       r\ R                  R                  SSS	/5      S 5       r\ R                  R                  SS	S
/5      S 5       rg)    N)raises)DisjointSetc               #   8  #    [        [        R                  5      n [        [        R
                  " U [        S95      nU[        [        R
                  " U [        S95      -  nU[        [        R                  5      -  nU[        U 5       Vs/ s H  nS PM     sn-  n[        R                  " U[        S9n[        R                  R                  SS9n UR                  SS5      nUR                  X5      nUS:X  a  US   v   O[        U5      v   M@  s  snf 7f)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         X/var/www/html/venv/lib/python3.13/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 **V*19!*.  	 's   BDDBDc                     0 n[        5        H(  nX!;  d  M
  [        U5      X'   [        U5      U :  d  M(    O   [        UR                  5       5      $ N)r"   r   r   keys)nelementsr    s      r!   get_elementsr(      sH    H(*" #HH8}!	 +
       c                  z    Sn [        U 5      n[        U5      nUR                  U :X  d   e[        U5      U:X  d   eg )N
   )r(   r   	n_subsetsr   r&   r'   diss      r!   	test_initr/   %   s>    
AAH
h
C==A9   r)   c                      Sn [        U 5      n[        U5      n[        U5      U :X  d   eUR                  S5        [        U5      U S-   :X  d   eg )Nr+   dummyr	   )r(   r   r   addr-   s      r!   test_lenr3   -   sL    
AAH
h
Cs8q==GGGs8q1ur)   r&   r+   d   c                 `    [        U 5      n[        U5      nU H
  nX2;   a  M
   e   SU;  d   eg )Nr1   )r(   r   )r&   r'   r.   xs       r!   test_containsr7   7   s8    AH
h
Cxx  #r)   c                 4   [        U 5      n[        U5      n[        5       n[        U5       HO  u  pEUR                  U5        [	        U5      US-   :X  d   eUR                  U5        [	        U5      US-   :X  a  MO   e   [        U5      [        U5      :X  d   eg )Nr	   )r(   r   	enumerater2   r   r   )r&   r'   dis1dis2r   r6   s         r!   test_addr<   A   s    AHx D=D(#4yAE!!! 	4yAE!!! $ :d###r)   c                     [        SS9n [        U 5      n[        [        5         US     S S S 5        [        [        5         UR	                  U S   S5        S S S 5        [        [        5         UR                  U S   S5        S S S 5        g ! , (       d  f       Ni= f! , (       d  f       NM= f! , (       d  f       g = f)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.B/
B
B,/
B=	directionforwards	backwardsc                   ^ [        U 5      m[        T5      nT[        U5      :X  d   e[        [        U S-
  5      5      nUS:X  a  US S S2   n[	        U5       H  u  pEUR                  TU   TUS-      5      (       a   eUR                  TU   TUS-      5      (       d   eUR                  TU   TUS-      5      (       d   eUR                  U S-
  U-
  :X  a  M   e   T Vs/ s H  oRU   PM	     nnUS:X  a  [        U4S jU 5       5      (       d   eO[        U4S jU 5       5      (       d   eUR                  TS   TS   5      (       a   eg s  snf )Nr	   rE   rD   c              3   4   >#    U  H  nTS    U:H  v   M     g7f)r   N .0rr'   s     r!   	<genexpr>-test_linear_union_sequence.<locals>.<genexpr>s   s     3U8A;!#U   c              3   4   >#    U  H  nTS    U:H  v   M     g7f)NrI   rJ   s     r!   rM   rN   u   s     4e8B<1$erO   r   )	r(   r   r   r   r9   rA   r@   r,   all)r&   rC   r.   indicesitr   rootsr'   s          @r!   test_linear_union_sequencerV   `   sZ    AH
h
CtCy   5Q< GK$B$-7#==!hq1uo>>>>yy!hq1uo6666}}Xa[(1q5/::::}}A
***	 $ &&XVXE&J3U333334e44444yy!hrl33333 's   $Ec                 j   [        U 5      n[        U5      nU HK  nUR                  X35      (       d   eUR                  X35      (       a   eUR                  X35      (       a  MK   e   UR                  [        U5      :X  d   eU[        U5      :X  d   eU Vs/ s H  o2U   PM	     nnX:X  d   eg s  snf r$   )r(   r   rA   r@   r,   r   r   )r&   r'   r.   r6   rU   s        r!   test_self_unionsrX   y   s    AH
h
C}}Q""""99Q??""}}Q""""  ==CM)))tCy   %&XVXE& 's   B0orderabbac                    [        U 5      n[        U5      n[        R                  R	                  SS9n[        R
                  " U 5      nUR                  U5        [        S[        U5      S5       Ht  nX%U      X%US-         pUS:X  a  UR                  Xx5      (       d   eOUR                  X5      (       d   eU[        XV   XVS-      5         n	X7   U	:X  d   eX8   U	:X  a  Mt   e   g )Nr   r      r	   rZ   )r(   r   r   r   r   r   shuffler   r   r@   min)
r&   rY   r'   r.   r   rS   r   abexpecteds
             r!   test_equal_size_orderingrc      s     AH
h
C
))

Q

'CiilGKK1c'lA&
#Xa!en%=1D=99Q??"?99Q??"?C
GEN;<v!!!v!!! 'r)   kmax   c                    SU -  n[        U5      n[        U5      n[        R                  R	                  SS9nS[        R
                  " U 5      -   H  n[        SUSU-  5       Hn  nUR                  SUSS9u  pxX&U-      X&U-   U-      pUR                  X5      (       a   eUR                  X5      (       d   eUR                  X5      (       a  Mn   e   U[        U5      :X  d   eU Vs/ s H  ocU   PM	     nn[        R
                  " U5      [        R
                  " U5      SU-  -  -
  nU Vs/ s H  obU   PM	     nnX:X  a  M   e   g s  snf s  snf )Nr]   r   r   )r   )r(   r   r   r   r   r   r   r   rA   r@   r   )rd   r&   r'   r.   r   r   r   r1r2r`   ra   rU   expected_indicesrb   s                 r!   test_binary_treerj      sH   	4AAH
h
C
))

Q

'C		$q!QU#A[[AA[.FBF#X!ebj%9q}}Q****99Q??"?==&&&& $ 49$$$!)*AQ*99Q<"))A,!a%*@@)9:)9AQK)9:      +:s   ,E3Ec                    [        U 5      n[        U5      n[        R                  R	                  SS9nUR                  SX S45       GH  u  pEX   nX   nU Vs1 s H  oU   1X&   1:X  d  M  UiM     n	nUR                  U5      [        UR                  U5      5      :X  d   eXR                  U5      :X  d   eU Vs0 s H  oU   [        5       _M     n	nU H  nXU      R                  U5        M     [        U	R                  5       5      n	XR                  5       :X  d   eUR                  Xg5        UR                  U5      UR                  U5      :X  a  GM   e   g s  snf s  snf )Nr   r   r]   )r(   r   r   r   r   r   subset_sizer   subsetsetr2   r   valuessubsetsr@   )
r&   r'   r.   r   r   jr6   yr    rb   s
             r!   test_subsetsrs      sC   AH
h
C
))

Q

'CAqa&)KK+.M3w<.SVH2LG3Mq!SA%7777::a=(((7:;sGL#%'s;G\"&&w/ )*;;=(((		!zz!}

1--- * N <s   E".E"?E')pytestr   r>   numpyr   scipy.cluster.hierarchyr   r   r"   r(   r/   r3   markparametrizer7   r<   rB   rV   rX   rc   rj   rs   rI   r)   r!   <module>ry      s    *  / !$!! r3i( ) r3i($ )$ , z;&?@r3i(4 ) A4. r3i( ) 4,/r3i(" ) 0"( !R)! *!* r3i(. ).r)   