o
    Ö­j•  ã                   @   s6  d dl Z d dl mZ d dlZd dlmZ d dlZdd„ Zdd„ Z	dd	„ Z
d
d„ Ze j dddg¡dd„ ƒZe j dddg¡dd„ ƒZdd„ Ze j dddg¡e j dddg¡dd„ ƒƒZe j dddg¡dd„ ƒZe j dddg¡e j dddg¡dd „ ƒƒZe j d!d"dg¡d#d$„ ƒZe j dddg¡d%d&„ ƒZdS )'é    N)Úraises)ÚDisjointSetc                  c   s®   � t tjƒ} ttj| td�ƒ}|ttj| td�ƒ7 }|ttjƒ7 }|dd„ t| ƒD ƒ7 }tj	|t
d�}tjjdd�}	 | dd¡}| ||¡}|dkrQ|d V  nt|ƒV  q;)N)Údtypec                 S   s   g | ]}d ‘qS ©N© ©Ú.0Úir   r   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/cluster/tests/test_disjoint_set.pyÚ
<listcomp>   s    z)generate_random_token.<locals>.<listcomp>r   ©Úseedé   é   )ÚlenÚstringÚascii_lettersÚlistÚnpÚarangeÚintÚfloatÚrangeÚarrayÚobjectÚrandomÚRandomStateÚrandintÚchoiceÚtuple)ÚkÚtokensÚrngÚsizeÚelementr   r   r
   Úgenerate_random_token   s   €

úr%   c                 C   s@   i }t ƒ D ]}||vrt|ƒ||< t|ƒ| kr nqt| ¡ ƒS r   )r%   r   r   Úkeys)ÚnÚelementsr$   r   r   r
   Úget_elements   s   
€r)   c                  C   s6   d} t | ƒ}t|ƒ}|j| ksJ ‚t|ƒ|ksJ ‚d S )Né
   )r)   r   Ú	n_subsetsr   ©r'   r(   Údisr   r   r
   Ú	test_init%   s
   r.   c                  C   sF   d} t | ƒ}t|ƒ}t|ƒ| ksJ ‚| d¡ t|ƒ| d ks!J ‚d S )Nr*   Údummyr   )r)   r   r   Úaddr,   r   r   r
   Útest_len-   s   
r1   r'   r*   éd   c                 C   s6   t | ƒ}t|ƒ}|D ]}||v sJ ‚q
d|vsJ ‚d S )Nr/   )r)   r   )r'   r(   r-   Úxr   r   r
   Útest_contains7   s
   r4   c                 C   s|   t | ƒ}t|ƒ}tƒ }t|ƒD ]"\}}| |¡ t|ƒ|d ks"J ‚| |¡ t|ƒ|d ks1J ‚qt|ƒt|ƒks<J ‚d S )Nr   )r)   r   Ú	enumerater0   r   r   )r'   r(   Údis1Údis2r	   r3   r   r   r
   Útest_addA   s   

r8   c                  C   s¸   t dd�} t| ƒ}ttƒ� |d  W d   ƒ n1 sw   Y  ttƒ� | | d d¡ W d   ƒ n1 s8w   Y  ttƒ� | | d d¡ W d   ƒ d S 1 sUw   Y  d S )Nr*   )r'   r/   r   )r)   r   Úassert_raisesÚKeyErrorÚmergeÚ	connected)r(   r-   r   r   r
   Útest_element_not_presentR   s   


ÿ
ÿ
"ÿr=   Ú	directionÚforwardsÚ	backwardsc                    s.  t | ƒ‰tˆƒ‰ ˆtˆ ƒksJ ‚tt| d ƒƒ}|dkr#|d d d… }t|ƒD ]9\}}ˆ  ˆ| ˆ|d  ¡r9J ‚ˆ  ˆ| ˆ|d  ¡sGJ ‚ˆ  ˆ| ˆ|d  ¡sUJ ‚ˆ j| d | ks`J ‚q'‡ fdd„ˆD ƒ}|dkr|t‡fdd„|D ƒƒs{J ‚nt‡fd	d„|D ƒƒs‰J ‚ˆ  ˆd
 ˆd ¡r•J ‚d S )Nr   r@   éÿÿÿÿc                    ó   g | ]}ˆ | ‘qS r   r   r   ©r-   r   r
   r   q   ó    z.test_linear_union_sequence.<locals>.<listcomp>r?   c                 3   ó   � | ]	}ˆ d  |kV  qdS )r   Nr   ©r   Úr©r(   r   r
   Ú	<genexpr>s   ó   € z-test_linear_union_sequence.<locals>.<genexpr>c                 3   rE   )éþÿÿÿNr   rF   rH   r   r
   rI   u   rJ   r   )	r)   r   r   r   r5   r<   r;   r+   Úall)r'   r>   ÚindicesÚitr	   Úrootsr   ©r-   r(   r
   Útest_linear_union_sequence`   s    rQ   c                    sŽ   t | ƒ}t|ƒ‰ |D ]}ˆ  ||¡sJ ‚ˆ  ||¡rJ ‚ˆ  ||¡s$J ‚q
ˆ jt|ƒks.J ‚|tˆ ƒks6J ‚‡ fdd„|D ƒ}||ksEJ ‚d S )Nc                    rB   r   r   )r   r3   rC   r   r
   r   …   rD   z$test_self_unions.<locals>.<listcomp>)r)   r   r<   r;   r+   r   r   )r'   r(   r3   rO   r   rC   r
   Útest_self_unionsy   s   rR   ÚorderÚabÚbac           
      C   sÎ   t | ƒ}t|ƒ}tjjdd�}t | ¡}| |¡ tdt|ƒdƒD ]C}|||  |||d   }}|dkr?| 	||¡s>J ‚n| 	||¡sGJ ‚|t
|| ||d  ƒ }	|| |	ks\J ‚|| |	ksdJ ‚q!d S )Nr   r   é   r   rT   )r)   r   r   r   r   r   Úshuffler   r   r;   Úmin)
r'   rS   r(   r-   r"   rM   r	   ÚaÚbÚexpectedr   r   r
   Útest_equal_size_ordering‰   s   

÷r\   Úkmaxé   c                    s  d|  }t |ƒ‰tˆƒ‰ tjjdd�}dt | ¡ D ]l}td|d| ƒD ]3}|jd|dd�\}}ˆ||  ˆ|| |  }}ˆ  ||¡rGJ ‚ˆ  	||¡sOJ ‚ˆ  ||¡sWJ ‚q$ˆt
ˆ ƒks`J ‚‡ fdd„ˆD ƒ}	t |¡t |¡d|   }
‡fdd„|
D ƒ}|	|ks†J ‚qd S )NrV   r   r   )r#   c                    rB   r   r   r   rC   r   r
   r   ¯   rD   z$test_binary_tree.<locals>.<listcomp>c                    rB   r   r   r   rH   r   r
   r   ±   rD   )r)   r   r   r   r   r   r   r   r<   r;   r   )r]   r'   r"   r    r	   Úr1Úr2rY   rZ   rO   Úexpected_indicesr[   r   rP   r
   Útest_binary_treeŸ   s"   ôrb   c                    sþ   t | ƒ}t|ƒ‰ tjjdd�}| d| | df¡D ]d\}}|| ‰|| }‡ ‡fdd„ˆ D ƒ}ˆ  ˆ¡tˆ  ˆ¡ƒks<J ‚|ˆ  ˆ¡ksEJ ‚‡ fdd„ˆ D ƒ}ˆ D ]}|ˆ |   	|¡ qPt
| ¡ ƒ}|ˆ  ¡ ksjJ ‚ˆ  ˆ|¡ ˆ  ˆ¡ˆ  |¡ks|J ‚qd S )Nr   r   rV   c                    s$   h | ]}ˆ | hˆ ˆ hkr|’qS r   r   ©r   r$   ©r-   r3   r   r
   Ú	<setcomp>¿   s   $ ztest_subsets.<locals>.<setcomp>c                    s   i | ]}ˆ | t ƒ “qS r   )Úsetrc   rC   r   r
   Ú
<dictcomp>Ã   s    z test_subsets.<locals>.<dictcomp>)r)   r   r   r   r   r   Úsubset_sizer   Úsubsetr0   r   ÚvaluesÚsubsetsr;   )r'   r(   r"   r	   ÚjÚyr[   r$   r   rd   r
   Útest_subsetsµ   s"   ñrn   )Úpytestr   r9   Únumpyr   Úscipy.cluster.hierarchyr   r   r%   r)   r.   r1   ÚmarkÚparametrizer4   r8   r=   rQ   rR   r\   rb   rn   r   r   r   r
   Ú<module>   s4    

	


