
    ^Mh                        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                            dd	d
g          d             Ze j                            dd	d
g          d             Zd Ze j                            dddg          e j                            dd	d
g          d                         Ze j                            dd	d
g          d             Ze j                            dddg          e j                            dd	d
g          d                         Ze j                            ddd	g          d             Ze j                            dd	d
g          d             ZdS )    N)raises)DisjointSetc               #   d  K   t          t          j                  } t          t	          j        | t                              }|t          t	          j        | t                              z  }|t          t          j                  z  }|d t          |           D             z  }t	          j	        |t                    }t          j                            d          }	 |                    dd          }|                    ||          }|dk    r|d         V  nt          |          V  O)N)dtypec                     g | ]}d S N ).0is     e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/cluster/tests/test_disjoint_set.py
<listcomp>z)generate_random_token.<locals>.<listcomp>   s    &&&t&&&    r   seed      )lenstringascii_letterslistnparangeintfloatrangearrayobjectrandomRandomStaterandintchoicetuple)ktokensrngsizeelements        r   generate_random_tokenr(      s     F !!A")AS)))**F
d29Qe,,,---F
d6'(((F
&&U1XX&&&&FXfF+++F
)

Q

'
'C!{{1a  **VT**199!*..   !r   c                     i }t                      D ]-}||vr't          |          ||<   t          |          | k    r n.t          |                                          S r   )r(   r   r   keys)nelementsr'   s      r   get_elementsr-      sd    H(**  ("" #HHW8}}!!   r   c                      d} t          |           }t          |          }|j        | k    sJ t          |          |k    sJ d S )N
   )r-   r   	n_subsetsr   r+   r,   diss      r   	test_initr3   %   sO    
AAH
h

C=A99      r   c                      d} t          |           }t          |          }t          |          | k    sJ |                    d           t          |          | dz   k    sJ d S )Nr/   dummyr   )r-   r   r   addr1   s      r   test_lenr7   -   se    
AAH
h

Cs88q====GGGs88q1ur   r+   r/   d   c                 d    t          |           }t          |          }|D ]}||v sJ 	d|vsJ d S )Nr5   )r-   r   )r+   r,   r2   xs       r   test_containsr;   7   sO    AH
h

C  Cxxxxx#r   c                    t          |           }t          |          }t                      }t          |          D ]_\  }}|                    |           t	          |          |dz   k    sJ |                    |           t	          |          |dz   k    sJ `t          |          t          |          k    sJ d S )Nr   )r-   r   	enumerater6   r   r   )r+   r,   dis1dis2r   r:   s         r   test_addr@   A   s    AHx  D==D(## " "14yyAE!!!! 	4yyAE!!!!!::d######r   c                     t          d          } t          |           }t          t                    5  |d          d d d            n# 1 swxY w Y   t          t                    5  |                    | d         d           d d d            n# 1 swxY w Y   t          t                    5  |                    | d         d           d d d            d S # 1 swxY w Y   d S )Nr/   )r+   r5   r   )r-   r   assert_raisesKeyErrormerge	connected)r,   r2   s     r   test_element_not_presentrF   R   s   b!!!H
h

C	x	 	   G               
x	 	  ( (		(1+w'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
x	 	  , ,hqk7+++, , , , , , , , , , , , , , , , , ,s5   	A		AA(BBB0CC!C	directionforwards	backwardsc                    t          |           t                    t                    k    sJ t          t          | dz
                      }|dk    r|d d d         }t	          |          D ]\  }}                    |         |dz                      rJ                     |         |dz                      sJ                     |         |dz                      sJ j        | dz
  |z
  k    sJ fdD             }|dk    rt          fd|D                       sJ nt          fd|D                       sJ                     d         d                   rJ d S )	Nr   rI   c                      g | ]
}|         S r	   r	   r
   r   r2   s     r   r   z.test_linear_union_sequence.<locals>.<listcomp>q       &&&SV&&&r   rH   c              3   0   K   | ]}d          |k    V  dS )r   Nr	   r
   rr,   s     r   	<genexpr>z-test_linear_union_sequence.<locals>.<genexpr>s   s,      338A;!#333333r   c              3   0   K   | ]}d          |k    V  dS )Nr	   rP   s     r   rR   z-test_linear_union_sequence.<locals>.<genexpr>u   s,      448B<1$444444r   r   )	r-   r   r   r   r=   rE   rD   r0   all)r+   rG   indicesitr   rootsr2   r,   s         @@r   test_linear_union_sequencerY   `   s    AH
h

CtCyy    5Q<<  GK$$B$-7## + +A==!hq1uo>>>>>yy!hq1uo66666}}Xa[(1q5/:::::}A
*****&&&&X&&&EJ3333U3333333334444e44444444yy!hrl3333333r   c                 h   t          |           }t          |          |D ]J}                    ||          sJ                     ||          rJ                     ||          sJ Kj        t          |          k    sJ |t                    k    sJ fd|D             }||k    sJ d S )Nc                      g | ]
}|         S r	   r	   )r
   r:   r2   s     r   r   z$test_self_unions.<locals>.<listcomp>   rN   r   )r-   r   rE   rD   r0   r   r   )r+   r,   r:   rX   r2   s       @r   test_self_unionsr\   y   s    AH
h

C # #}}Q"""""99Q??"""}}Q""""""=CMM))))tCyy    &&&&X&&&Eur   orderabbac                 D   t          |           }t          |          }t          j                            d          }t          j        |           }|                    |           t          dt          |          d          D ]}|||                  |||dz                     }}|dk    r|	                    ||          sJ n|	                    ||          sJ |t          ||         ||dz                               }	||         |	k    sJ ||         |	k    sJ d S )Nr   r      r   r^   )r-   r   r   r   r   r   shuffler   r   rD   min)
r+   r]   r,   r2   r%   rV   r   abexpecteds
             r   test_equal_size_orderingrg      s&    AH
h

C
)

Q

'
'CillGKK1c'llA&& 	" 	"
#Xga!en%=1D==99Q??""""99Q??"""C
GAEN;;<1v!!!!1v!!!!!	" 	"r   kmax   c                    d| z  }t          |          t                    t          j                            d          }dt          j        |           z  D ]}t          d|d|z            D ]~}|                    d|d          \  }}||z            ||z   |z            }}                    ||          rJ 	                    ||          sJ                     ||          sJ t                    k    sJ fdD             }	t          j        |          t          j        |          d|z  z  z
  }
fd|
D             }|	|k    sJ d S )Nra   r   r   )r&   c                      g | ]
}|         S r	   r	   rM   s     r   r   z$test_binary_tree.<locals>.<listcomp>   s    ***AQ***r   c                      g | ]
}|         S r	   r	   )r
   r   r,   s     r   r   z$test_binary_tree.<locals>.<listcomp>   s    :::AHQK:::r   )r-   r   r   r   r   r   r   r    rE   rD   r   )rh   r+   r%   r#   r   r1r2rd   re   rX   expected_indicesrf   r2   r,   s               @@r   test_binary_treerp      s   	4AAH
h

C
)

Q

'
'C	$ ! !q!QU## 	' 	'A[[AA[..FBAF#Xa!ebj%9qA}}Q*****99Q??"""==A&&&&&&499$$$$*******9Q<<")A,,!a%*@@::::)9:::     ! !r   c                   	 t          |           }t          |          t          j                            d          }|                    d| | df          D ].\  }}||         	||         }	fdD             }                    	          t                              	                    k    sJ |                    	          k    sJ fdD             }D ]#}||                  	                    |           $t          |                                          }|                                k    sJ                     	|                               	                              |          k    sJ 0d S )Nr   r   ra   c                 <    h | ]}|         h         hk    |S r	   r	   )r
   r'   r2   r:   s     r   	<setcomp>ztest_subsets.<locals>.<setcomp>   s/    MMM3w<.SVH2L2LG2L2L2Lr   c                 :    i | ]}|         t                      S r	   )set)r
   r'   r2   s     r   
<dictcomp>z test_subsets.<locals>.<dictcomp>   s#    ;;;GCL#%%;;;r   )r-   r   r   r   r   r    subset_sizer   subsetr6   r   valuessubsetsrD   )
r+   r,   r%   r   jyrf   r'   r2   r:   s
           @@r   test_subsetsr}      s   AH
h

C
)

Q

'
'CAq1a&)) . .1QKQKMMMMM3MMMq!!SA%7%777773::a==((((;;;;s;;; 	0 	0GS\"&&w////))**3;;==((((		!Qzz!}}

1-----. .r   )pytestr   rB   numpyr   scipy.cluster.hierarchyr   r   r(   r-   r3   r7   markparametrizer;   r@   rF   rY   r\   rg   rp   r}   r	   r   r   <module>r      s>    * * * * * *     / / / / / / ! ! !$! ! !! ! !   r3i((  )( r3i(($ $ )($ , , , z;&?@@r3i((4 4 )( A@4. r3i((  )( 4,//r3i((" " )( 0/"( !R))! ! *)!* r3i((. . )(. . .r   