
    _j                     :    d dl mZmZ d dlmZ ddZddZddZdS )	    )assignmurmur3hasher)sqrtreturnNc                      g dd} dt           dt           dt          ffd}t          | |d          d         dk    sJ d S )	N)abckeymemberr   c                 .                         |           S )N)index)r   r   memberss     s/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/test/segment/distributed/test_rendezvous_hash.pymock_hasherz)test_rendezvous_hash.<locals>.mock_hasher
   s    }}V$$$       r   r
   )strintr   )r   r   r   s     @r   test_rendezvous_hashr      sp    ooG
C%C %c %c % % % % % % #wQ//2c999999r   c                     d} d}d t          |           D             }|t          |          z  }t          |dt          |          z  z  ddt          |          z  z
  z            }d|z  }d |D             }t          |          D ]4}d| }t          ||t          d          d         }	||	xx         dz  cc<   5|D ] }	t          ||	         |z
            |k     sJ !d S )	N
   i  c                 ,    g | ]}t          |          S  r   .0is     r   
<listcomp>z*test_even_distribution.<locals>.<listcomp>       111SVV111r   r      c                     i | ]}|d S r   r   r   nodes     r   
<dictcomp>z*test_even_distribution.<locals>.<dictcomp>       222Da222r   key_r   )rangelenr   r   r   abs)
member_countnum_keysnodesexpectedstddev	tolerancekey_distributionr   r   r%   s
             r   test_even_distributionr3      s'   LH11U<00111E#e**$H (a#e**n-QU^1CDEEF F
I 32E2228__ $ $Qjjc5-33A6!#  B B#D)H455	AAAAAB Br   c                     d} d}d}d t          |           D             }|t          |          z  |z  }t          ||z  dt          |          z  z  ddt          |          z  z
  z            }d|z  }d |D             }t          |          D ]U}d| }	t          |	|t          |          }
t          t          |
                    |k    sJ |
D ]}||xx         dz  cc<   V|D ] }t          ||         |z
            |k     sJ !d S )Nr   i'  r!   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z7test_multi_assign_even_distribution.<locals>.<listcomp>-   r    r   r   c                     i | ]}|d S r#   r   r$   s     r   r&   z7test_multi_assign_even_distribution.<locals>.<dictcomp>4   r'   r   r(   )r)   r*   r   r   r   setr+   )r,   r-   replicationr.   r/   r0   r1   r2   r   r   nodes_assignedr%   s               r   #test_multi_assign_even_distributionr:   )   sb   LHK11U<00111E#e**${2H([(AE

N;q1s5zz>?QRSSFF
I 32E2228__ ( (QjjUM;GG3~&&'';6666" 	( 	(DT"""a'""""	(  B B#D)H455	AAAAAB Br   )r   N)chromadb.utils.rendezvous_hashr   r   mathr   r   r3   r:   r   r   r   <module>r=      s    @ @ @ @ @ @ @ @      : : : :B B B B2B B B B B Br   