Ë
    ©Ó^j„  ã                   óH  — d Z ddlZddlZddlmZmZ ddlmZm	Z	m
Z
mZmZmZmZmZ 	 ddlZdZ G d„ d«      Zd	„ Zd
„ Zej.                  j1                  d ej
                  «        ej2                  dg«      f«      d„ «       Z G d„ d«      Z G d„ d«      Zy# e$ r dZY Œrw xY w)z:Generators - Directed Graphs
----------------------------
é    N)ÚGraphÚMultiDiGraph)Ú_random_k_out_graph_numpyÚ_random_k_out_graph_pythonÚgn_graphÚ	gnc_graphÚ	gnr_graphÚrandom_k_out_graphÚrandom_uniform_k_out_graphÚscale_free_graphTFc                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestGeneratorsDirectedc                 óÈ   — t        d«       t        dd«       t        d«       t        d«       t        dd¬«       t        ddd¬«       t        dd¬«       t        dd¬«       y )Néd   ç      à?é*   ©Úseed)r   r	   r   r   ©Úselfs    úr/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/networkx/generators/tests/test_directed.pyÚtest_smoke_test_random_graphsz4TestGeneratorsDirected.test_smoke_test_random_graphs   sL   € Ü�ŒÜ�#�sÔÜ�#ŒÜ˜Ôä�˜2ÕÜ�#�s Õ$Ü�#˜BÕÜ˜ 2Ö&ó    c                 ó®  — t        j                  t        j                  t        dt        «       ¬«       t        j                  t        j                  t        ddt        «       ¬«       t        j                  t        j                  t        dt        «       ¬«       t	        dd¬«      }t	        dt        «       d¬«      }t        |j                  «       «      t        |j                  «       «      k(  sJ ‚t        ddd¬«      }t        ddt        «       d¬«      }t        |j                  «       «      t        |j                  «       «      k(  sJ ‚t        dd¬«      }t        dt        «       d¬«      }t        |j                  «       «      t        |j                  «       «      k(  sJ ‚t        dddddd	t        j                  d
t        ¬«      d¬«      }t        j                  t        t        dddd«       t        j                  t        t        dd¬«       t        j                  t        t        dd¬«       t        j                  t        t        dd¬«       y )Nr   )Úcreate_usingr   é   r   )r   r   g333333Ó?gš™™™™™Ù?gš™™™™™¹?é   )ÚalphaÚbetaÚgammaÚdelta_inÚ	delta_outÚinitial_graphr   g333333Ó¿)r   )r   )r    )ÚpytestÚraisesÚnxÚNetworkXErrorr   r   r	   r   r   ÚsortedÚedgesr   Úcycle_graphÚ
ValueError)r   ÚGÚMGs      r   Ú#test_create_using_keyword_argumentsz:TestGeneratorsDirected.test_create_using_keyword_arguments(   s•  € Ü�‰”b×&Ñ&¬°#ÄEÃGÕLÜ�‰”b×&Ñ&¬	°3¸Ì%Ë'ÕRÜ�‰”b×&Ñ&¬	°3ÄUÃWÕMÜ�S˜qÔ!ˆÜ�c¬«¸QÔ?ˆÜ�a—g‘g“iÓ ¤F¨2¯8©8«:Ó$6Ò6Ð6Ð6Ü�c˜3 QÔ'ˆÜ�s˜C¬l«nÀ1ÔEˆÜ�a—g‘g“iÓ ¤F¨2¯8©8«:Ó$6Ò6Ð6Ð6Ü�c Ô"ˆÜ�s¬«¸aÔ@ˆÜ�a—g‘g“iÓ ¤F¨2¯8©8«:Ó$6Ò6Ð6Ð6äØØØØØØÜŸ.™.¨¼ÔFØô	
ˆô 	�‰”jÔ"2°C¸¸cÀ3ÔGÜ�‰”jÔ"2°C¸tÕDÜ�‰”jÔ"2°C¸dÕCÜ�‰”jÔ"2°C¸tÖDr   c                 ób  — t        j                  «       }|j                  d«       d„ }t        j                  t	        d«      |«      sJ ‚t        j                  t	        d|¬«      |«      sJ ‚t        j                  t        d«      |«      sJ ‚t        j                  t        dd«      |«      sJ ‚y )Nr   c                 ó   — | S ©N© )Úxs    r   Úkernelz6TestGeneratorsDirected.test_parameters.<locals>.kernelI   s   € ØˆHr   r   )r4   r   )r&   ÚDiGraphÚadd_nodeÚis_isomorphicr   r   r	   )r   r,   r4   s      r   Útest_parametersz&TestGeneratorsDirected.test_parametersE   s�   € Ü�J‰J‹LˆØ	�
‰
�1Œò	ô ×Ñ¤¨£¨QÔ/Ð/Ð/Ü×Ñ¤¨°6Ô :¸AÔ>Ð>Ð>Ü×Ñ¤	¨!£¨aÔ0Ð0Ð0Ü×Ñ¤	¨!¨SÓ 1°1Ô5Ð5Ñ5r   N)Ú__name__Ú
__module__Ú__qualname__r   r.   r8   r2   r   r   r   r      s   „ ò	'òEó:
6r   r   c                  óø   — t        j                  t        d¬«      5  t        dd¬«       d d d «       t        j                  t        d¬«      5  t        dd¬«       d d d «       y # 1 sw Y   Œ;xY w# 1 sw Y   y xY w)Nzdelta_in must be >= 0.©Úmatché
   éÿÿÿÿ)r!   zdelta_out must be >= 0.)r"   )r$   r%   r+   r   r2   r   r   Ú$test_scale_free_graph_negative_deltarA   R   sc   € Ü	�‰”zÐ)AÔ	Bñ *Ü˜ bÕ)÷*ä	�‰”zÐ)BÔ	Cñ +Ü˜ rÕ*÷+ð +÷*ð *ú÷+ð +ús   œA$ÁA0Á$A-Á0A9c                  óŒ   — t        g d¢«      } t        d| ¬«      }t        |«      dk(  sJ ‚t        |j                  «      dk(  sJ ‚y )N))ÚaÚb)rD   Úc)rE   rC   é   ©r#   )r   r   Úlenr)   )r,   Úss     r   Útest_non_numeric_orderingrJ   Y   s?   € ÜÒ9Ó:€AÜ˜¨!Ô,€AÜˆq‹6�QŠ;Ðˆ;Üˆq�w‰w‹<˜1ÒÐÑr   Úig)r   r   c                 óŽ   — t        j                  t        j                  «      5  t	        d| ¬«       d d d «       y # 1 sw Y   y xY w)Nr   rG   )r$   r%   r&   r'   r   )rK   s    r   Ú)test_scale_free_graph_initial_graph_kwargrM   `   s3   € ä	�‰”r×'Ñ'Ó	(ñ 0Ü˜¨BÕ/÷0÷ 0ñ 0ús	   ¤;»Ac            	       óð   — e Zd ZdZ ej
                   ej                  eej                  j                  e
 d¬«      ¬«      eg¬«      d„ «       Z ej
                  g d¢¬«      d„ «       Zd	„ Zd
„ Zd„ Zd„ Zy)ÚTestRandomKOutGraphz_Unit tests for the
    :func:`~networkx.generators.directed.random_k_out_graph` function.

    znumpy not installed)Úreason)Úmarks)Úparamsc              #   ó(   K  — |j                   –— y ­wr1   ©Úparam©r   Úrequests     r   ÚfzTestRandomKOutGraph.fl   s   è ø€ ð �m‰mÓùó   ‚))r?   rF   r   )é   é   r   )é   r   r?   c              #   ó(   K  — |j                   –— y ­wr1   rT   rV   s     r   ÚnkalphazTestRandomKOutGraph.nkalphax   s   è ø€ à�m‰mÓùrY   c                 ój   ‡— |\  }Š} ||‰|d¬«      }t        ˆfd„|j                  D «       «      sJ ‚y)z1Test that the generated graph is `k`-out-regular.r   r   c              3   ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr1   r2   ©Ú.0Ú_ÚdÚks      €r   ú	<genexpr>z6TestRandomKOutGraph.test_regularity.<locals>.<genexpr>€   ó   øè ø€ Ò3™d˜a �1˜•6Ñ3ùó   ƒN)ÚallÚ
out_degree)r   rX   r^   Únr   r,   re   s         @r   Útest_regularityz#TestRandomKOutGraph.test_regularity|   s6   ø€ à‰ˆˆ1ˆeÙˆa��E Ô#ˆÜÓ3 a§l¡lÔ3Ô3Ð3Ñ3r   c                 ó^   — |\  }}} ||||dd¬«      }t        j                  |«      dk(  sJ ‚y)zTest for forbidding self-loops.Fr   )Ú
self_loopsr   r   N)r&   Únumber_of_selfloops)r   rX   r^   rk   re   r   r,   s          r   Útest_no_self_loopsz&TestRandomKOutGraph.test_no_self_loops‚   s8   € à‰ˆˆ1ˆeÙˆa��E e°"Ô5ˆÜ×%Ñ% aÓ(¨AÒ-Ð-Ñ-r   c                 ó�   ‡— |\  }Š}t        |‰|d¬«      }t        |«      |k(  sJ ‚t        ˆfd„|j                  D «       «      sJ ‚y)zFTest that the interface function `random_k_out_graph` works correctly.r   r   c              3   ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr1   r2   ra   s      €r   rf   z>TestRandomKOutGraph.test_random_k_out_graph.<locals>.<genexpr>�   rg   rh   N)r
   rH   ri   rj   )r   r^   rk   r   r,   re   s        @r   Útest_random_k_out_graphz+TestRandomKOutGraph.test_random_k_out_graphˆ   sF   ø€ à‰ˆˆ1ˆeÜ˜q ! U°Ô4ˆÜ�1‹v˜Š{Ðˆ{ÜÓ3 a§l¡lÔ3Ô3Ð3Ñ3r   c                 ó~   — t        j                  t        d¬«      5  t        ddd«       d d d «       y # 1 sw Y   y xY w)Nzalpha must be positiver=   r?   rF   r@   )r$   r%   r+   r
   r   s    r   Útest_negative_alphaz'TestRandomKOutGraph.test_negative_alpha�   s2   € Ü�]‰]œ:Ð-EÔFñ 	*Ü˜r 1 bÔ)÷	*÷ 	*ñ 	*ús   œ3³<N)r9   r:   r;   Ú__doc__r$   ÚfixturerU   r   ÚmarkÚskipifÚ	has_numpyr   rX   r^   rl   rp   rs   ru   r2   r   r   rO   rO   f   s�   „ ñð
 €V‡^�^àˆF�L‰LØ)Ø—k‘k×(Ñ(¨Y¨Ð?TÐ(ÓUôð 'ð
ôñóðð €V‡^�^Ò?Ô@ñó Aðò4ò.ò4ó*r   rO   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚTestUniformRandomKOutGraphzkUnit tests for the
    :func:`~networkx.generators.directed.random_uniform_k_out_graph`
    function.

    c                 óÒ   ‡— d}dŠt        |‰«      }t        ˆfd„|j                  «       D «       «      sJ ‚t        |‰d¬«      }t        ˆfd„|j                  «       D «       «      sJ ‚y)z2Tests that the generated graph is `k`-out-regular.r?   rF   c              3   ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr1   r2   ©rb   Úvrd   re   s      €r   rf   z=TestUniformRandomKOutGraph.test_regularity.<locals>.<genexpr>    ó   øè ø€ Ò5™d˜a �1˜•6Ñ5ùrh   r   r   c              3   ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr1   r2   r   s      €r   rf   z=TestUniformRandomKOutGraph.test_regularity.<locals>.<genexpr>¢   r�   rh   N)r   ri   rj   ©r   rk   r,   re   s      @r   rl   z*TestUniformRandomKOutGraph.test_regularity›   s[   ø€ àˆØˆÜ& q¨!Ó,ˆÜÓ5 a§l¡l£nÔ5Ô5Ð5Ð5Ü& q¨!°"Ô5ˆÜÓ5 a§l¡l£nÔ5Ô5Ð5Ñ5r   c                 ó¦   ‡— d}dŠt        |‰d¬«      }t        j                  |«      dk(  sJ ‚t        ˆfd„|j	                  «       D «       «      sJ ‚y)z Tests for forbidding self-loops.r?   rF   F)rn   r   c              3   ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr1   r2   r   s      €r   rf   z@TestUniformRandomKOutGraph.test_no_self_loops.<locals>.<genexpr>ª   r�   rh   N)r   r&   ro   ri   rj   rƒ   s      @r   rp   z-TestUniformRandomKOutGraph.test_no_self_loops¤   sN   ø€ àˆØˆÜ& q¨!¸Ô>ˆÜ×%Ñ% aÓ(¨AÒ-Ð-Ð-ÜÓ5 a§l¡l£nÔ5Ô5Ð5Ñ5r   c                 ó8  ‡— d}dŠt        |‰d¬«      }|j                  «       sJ ‚t        ˆfd„|j                  «       D «       «      sJ ‚d}dŠt        |‰dd¬«      }t	        j
                  |«      d	k(  sJ ‚t        ˆfd
„|j                  «       D «       «      sJ ‚y )Nr?   rF   T©Úwith_replacementc              3   ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr1   r2   r   s      €r   rf   zCTestUniformRandomKOutGraph.test_with_replacement.<locals>.<genexpr>±   r�   rh   é	   F)rˆ   rn   r   c              3   ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr1   r2   r   s      €r   rf   zCTestUniformRandomKOutGraph.test_with_replacement.<locals>.<genexpr>¶   r�   rh   )r   Úis_multigraphri   rj   r&   ro   rƒ   s      @r   Útest_with_replacementz0TestUniformRandomKOutGraph.test_with_replacement¬   s“   ø€ ØˆØˆÜ& q¨!¸dÔCˆØ�‰Ô Ð Ð ÜÓ5 a§l¡l£nÔ5Ô5Ð5Ð5ØˆØˆÜ& q¨!¸eÐPUÔVˆÜ×%Ñ% aÓ(¨AÒ-Ð-Ð-ÜÓ5 a§l¡l£nÔ5Ô5Ð5Ñ5r   c                 ó–   ‡— d}dŠt        |‰d¬«      }|j                  «       rJ ‚t        ˆfd„|j                  «       D «       «      sJ ‚y )Nr?   rF   Fr‡   c              3   ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr1   r2   r   s      €r   rf   zFTestUniformRandomKOutGraph.test_without_replacement.<locals>.<genexpr>½   r�   rh   )r   rŒ   ri   rj   rƒ   s      @r   Útest_without_replacementz3TestUniformRandomKOutGraph.test_without_replacement¸   sE   ø€ ØˆØˆÜ& q¨!¸eÔDˆØ—?‘?Ô$Ð$Ð$ÜÓ5 a§l¡l£nÔ5Ô5Ð5Ñ5r   N)r9   r:   r;   rv   rl   rp   r�   r�   r2   r   r   r|   r|   ”   s   „ ñò6ò6ò
6ó6r   r|   )rv   r$   Únetworkxr&   Únetworkx.classesr   r   Únetworkx.generators.directedr   r   r   r   r	   r
   r   r   ÚnumpyÚnprz   ÚImportErrorr   rA   rJ   rx   Úparametrizer5   rM   rO   r|   r2   r   r   ú<module>r˜      s²   ðñó ã ß 0÷	÷ 	ó 	ðÛà€I÷
36ñ 36òl+òð ‡�×Ñ˜  §¡£
¨J¨B¯J©J¸°xÓ,@ÐAÓBñ0ó Cð0÷
+*ñ +*÷\)6ò )6øðy ò Ø‚Iðús   ¨B ÂB!Â B!