U
    ¹mœd   ã                   @   s’  d dl Z d dlmZ d dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZmZ dZdddd	d
hZddddddhddgfddddœdddœdgZej ddg dgddgg¡ej deeeg¡d d!„ ƒƒZd"d#„ Zd$d%„ ZG d&d'„ d'ƒZd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Z d0d1„ Z!d2d3„ Z"ej d4e#dfe$dfe%d5fe&dff¡d6d7„ ƒZ'ej d8d9d:„ e(dƒD ƒe)dddgƒf¡d;d<„ ƒZ*dS )=é    N)Úcopy)ÚPythonRandomInterfaceÚarbitrary_elementÚcreate_py_random_stateÚcreate_random_stateÚdict_to_numpy_arrayÚdiscrete_sequenceÚflattenÚgroupsÚmake_list_of_intsÚpairwiseÚpowerlaw_sequence)Ú_dict_to_numpy_array1Ú_dict_to_numpy_array2)é   é   )é   é   ))é   é   )é   )é   )é	   é
   é   )é   é   ©é   é   é   é   é   é   é   )r   r   r   r   )r   r   r   r   r   )r   r   )r   r   r   )r   r    r!   r"   r#   r$   r   r   r   r   )r   r   r   r   r   ZfooÚbarZbaz)r   r   )r   r   ZqweZasd)r   r    )r!   )r"   Z19r$   ÚresultÚexistingZ	existing1Z	existing2Únestedc                 C   sz   |d kr$t | |ƒ}t|ƒdksdt‚n@t|ƒ}t|ƒ}t | |ƒ}t|ƒt|ƒ  kr^d| ksdn t‚tt|ƒtƒsvt‚d S )Nr$   )r	   ÚlenÚAssertionErrorr   Ú
issubclassÚtypeÚtuple)r(   r&   ÚvalÚ_resultZ	nexisting© r0   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/networkx/utils/tests/test_misc.pyÚtest_flatten.   s    

&r2   c                  C   sx   dddddg} t | ƒ| kst‚t | ƒ| ks.t‚tt | ƒd ƒtksFt‚t tjt ddddg¡ t tjt dddg¡ d S )	Nr   r   g      @é*   éþÿÿÿr   ZkermitgÍÌÌÌÌÌ@)r   r*   r,   ÚintÚpytestÚraisesÚnxÚNetworkXError)Zmylistr0   r0   r1   Útest_make_list_of_ints=   s    r:   c                  C   s2   t ddd�} tddddddddddddgd�} d S )	Nr$   g      @)Úexponentr   r   r   r   )Údistribution)r   r   )Úzr0   r0   r1   Útest_random_number_distributionF   s    r>   c                   @   s@   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚTestNumpyArrayc                 C   s   t  d¡ad S )NÚnumpy)r6   ÚimportorskipÚnp)Úclsr0   r0   r1   Úsetup_classM   s    zTestNumpyArray.setup_classc                 C   sŽ   t jdddgt jd�}t  dddg¡}t  dddg¡}tt|ƒƒtksJt‚t|ƒt|ƒks^t‚t|ƒ}t|d ƒtkszt‚t 	t
jt|¡ d S )Nr   r   r   )Zdtypeg      ð?gš™™™™™ñ?r   )rB   ÚarrayZint64r,   r   Úlistr*   r5   r6   r7   r8   r9   )ÚselfÚaÚbÚcÚBr0   r0   r1   Útest_numpy_to_list_of_intsR   s    z)TestNumpyArray.test_numpy_to_list_of_intsc                 C   s|   dddœ}t |dddœd�}tj |t ddg¡¡ t |dddœd�}tj |t ddg¡¡ t |ƒ}tj | ¡ d¡ d S )Nr   r   ©rH   rI   r   ©Úmapping)rI   rH   r   )r   rB   ÚtestingÚassert_allcloserE   Úsum)rG   ÚdrH   r0   r0   r1   Útest__dict_to_numpy_array1\   s    
z)TestNumpyArray.test__dict_to_numpy_array1c                 C   sj   dddœdddœdœ}dddœ}t ||d�}tj |t ddgddgg¡¡ t |ƒ}tj | ¡ d¡ d S ©	Nr   r   rM   r   r$   r   rN   é!   )r   rB   rP   rQ   rE   rR   ©rG   rS   rO   rH   r0   r0   r1   Útest__dict_to_numpy_array2f   s    
 z)TestNumpyArray.test__dict_to_numpy_array2c                 C   s    dddœdddœdœ}dddœ}t ||d�}tj |t ddgddgg¡¡ dddœ}t ||d�}tj |t ddgddgg¡¡ t|ƒ}tj | ¡ d¡ d S rU   )r   rB   rP   rQ   rE   r   rR   rW   r0   r0   r1   Útest_dict_to_numpy_array_ap   s    
 
 z)TestNumpyArray.test_dict_to_numpy_array_ac                 C   sV   dddœ}dddœ}t ||d�}tj |t ddg¡¡ t|ƒ}tj | ¡ d¡ d S )Nr   r   rM   r   rN   r   )r   rB   rP   rQ   rE   r   rR   rW   r0   r0   r1   Útest_dict_to_numpy_array_b~   s    

z)TestNumpyArray.test_dict_to_numpy_array_bN)
Ú__name__Ú
__module__Ú__qualname__ÚclassmethodrD   rL   rT   rX   rY   rZ   r0   r0   r0   r1   r?   L   s   



r?   c                  C   s    t dƒ} dddg}|dg }tt| ƒƒ|ks0t‚ttt| ƒƒƒ|ksHt‚tt| dd�ƒ|ks`t‚tdƒ}tt|ƒƒg ks|t‚tdƒ}tt|dd�ƒg ksœt‚d S )	Nr   )r   r   )r   r   )r   r   )r   r   T)Zcyclicr0   )ÚrangerF   r   r*   Úiter)ZnodesZ
node_pairsZnode_pairs_cycleZ
empty_iterr0   r0   r1   Útest_pairwise‰   s    

ra   c                  C   sV   t tddddddgƒƒ} t| ƒ}ddhddhd	hd
œ}||ksBt‚i ti ƒksRt‚d S )NZabcder   r   r   rH   rI   rJ   rS   Úe)r   r   r   )ÚdictÚzipr
   r*   )Zmany_to_oneÚactualÚexpectedr0   r0   r1   Útest_groups–   s
    rg   c                  C   s¸   t  d¡} | jj}ttdƒ|ƒs$t‚ttd ƒ|ƒs6t‚tt| jƒ|ƒsJt‚tt|dƒƒ|ƒs`t‚| j ¡ }tt|ƒ| jjƒs€t‚t  	t
td¡ |  |dƒ d¡tdƒ d¡k¡s´t‚d S )Nr@   r   rH   r   )r6   rA   ÚrandomÚRandomStateÚ
isinstancer   r*   Údefault_rngÚ	Generatorr7   Ú
ValueErrorÚallZrand)rB   ÚrsÚrngr0   r0   r1   Útest_create_random_statež   s    

rq   c                  C   sä   t j} ttdƒ| ƒst‚ttd ƒ| ƒs*t‚tt| dƒƒ| ƒs@t‚t ttd¡ t d¡}|j j	}|j  
d¡}|j  |j  ¡ ¡}t}tt|j ƒ|ƒs–t‚tt|dƒƒ|ƒs¬t‚tt|ƒ|ƒs¾t‚tt|ƒ|ƒsÐt‚ttƒ |ƒsàt‚d S )Nr   rH   r@   iè  )rh   ÚRandomrj   r   r*   r6   r7   rm   rA   ri   rk   rl   ZSFC64r   )ZpyrsrB   ro   rp   Zrng_explicitZnprsr0   r0   r1   Útest_create_py_random_state®   s    
rs   c                     sH  t  d¡} | jj}t|dƒƒ‰ |dƒ‰ˆ  dd¡ˆ dd¡ksBt‚ˆ  dddg¡ˆ dddg¡ksft‚ˆ  	dd¡ˆ 
dd¡ks‚t‚ˆ  d¡ˆ d	¡ksšt‚|  ˆ  dddg¡ˆ dddg¡k¡sÄt‚|  ˆ  dddgd¡ˆjdddgd
dd�k¡söt‚|  ‡ fdd„tdƒD ƒ‡fdd„tdƒD ƒk¡�s.t‚ˆ  ¡ ˆ ¡ k�sDt‚d S )Nr@   r3   r   r   r   r   r   ç      ø?çUUUUUUå?©r   F©Úreplacec                    s   g | ]}ˆ   d d¡‘qS ©r   r   ©Úrandint©Ú.0Ú_©rp   r0   r1   Ú
<listcomp>Õ   s     z:test_PythonRandomInterface_RandomState.<locals>.<listcomp>éd   c                    s   g | ]}ˆ   d d¡‘qS ©r   r   rz   r|   )Úrs42r0   r1   r€   Ö   s     )r6   rA   rh   ri   r   Ú	randranger{   r*   ÚchoiceÚgaussÚnormalÚexpovariateÚexponentialrn   ÚshuffleÚsampler_   Zrandom_sample)rB   ro   r0   )rp   rƒ   r1   Ú&test_PythonRandomInterface_RandomStateÄ   s$    
$*&ÿÿÿ
rŒ   c                     sH  t  d¡} | j d¡‰t| j d¡ƒ‰ ˆ  dd¡ˆ dd¡ksBt‚ˆ  dddg¡ˆ dddg¡ksft‚ˆ  	dd¡ˆ 
dd¡ks‚t‚ˆ  d¡ˆ d	¡ksšt‚|  ˆ  dddg¡ˆ dddg¡k¡sÄt‚|  ˆ  dddgd¡ˆjdddgd
dd�k¡söt‚|  ‡ fdd„tdƒD ƒ‡fdd„tdƒD ƒk¡�s.t‚ˆ  ¡ ˆ ¡ k�sDt‚d S )Nr@   r3   r   r   r   r   r   rt   ru   rv   Frw   c                    s   g | ]}ˆ   d d¡‘qS ry   rz   r|   )Úprir0   r1   r€   ë   s     z8test_PythonRandomInterface_Generator.<locals>.<listcomp>r�   c                    s   g | ]}ˆ   d d¡‘qS r‚   )Úintegersr|   r   r0   r1   r€   ì   s     )r6   rA   rh   rk   r   r„   rŽ   r*   r…   r†   r‡   rˆ   r‰   rn   rŠ   r‹   r_   )rB   r0   )r�   rp   r1   Ú$test_PythonRandomInterface_GeneratorÛ   s"    
$*&ÿÿÿ
r�   )Úiterable_typerf   ú[c                 C   s"   | dddgƒ}t |ƒ|kst‚d S )Nr   r   r   )r   r*   )r�   rf   Úiterabler0   r0   r1   Útest_arbitrary_elementñ   s    r“   Úiteratorc                 c   s   | ]
}|V  qd S )Nr0   )r}   Úir0   r0   r1   Ú	<genexpr>ú   s     r–   c              	   C   s&   t jtdd�� t| ƒ W 5 Q R X dS )z0Value error is raised when input is an iterator.zfrom an iterator)ÚmatchN)r6   r7   rm   r   )r”   r0   r0   r1   Útest_arbitrary_element_raisesù   s    r˜   )+rh   r   r6   Znetworkxr8   Znetworkx.utilsr   r   r   r   r   r   r	   r
   r   r   r   Znetworkx.utils.miscr   r   Znested_depthZ
nested_setZnested_mixedÚmarkZparametrizer2   r:   r>   r?   ra   rg   rq   rs   rŒ   r�   rF   r-   ÚstrÚsetr“   r_   r`   r˜   r0   r0   r0   r1   Ú<module>   sP   4û	
û		= ÿ
 ÿ