Ë
    ©Ó^j¨  ã                   ó~  — d Z ddlZddlZddlZddlmZ  G d„ d«      Z G d„ de«      Zej                  j                  dej                  ej                  f«      ej                  j                  d	ddgf«      d
„ «       «       Zej                  j                  dej                  ej                  f«      ej                  j                  d	ddgf«      d„ «       «       Zej                  j                  dej                  ej                  f«      d„ «       Zej                  j                  dej                  ej                  f«      d„ «       Zej                  j                  dej                  ej                  f«      d„ «       Zej                  j                  dej                  ej                  f«      d„ «       Zy)zEUnit tests for the :mod:`networkx.algorithms.structuralholes` module.é    N)Údispatch_interfacec                   ó^   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestStructuralHolesNoScipya€  Unit tests for computing measures of structural holes.

    The expected values for these functions were originally computed using the
    proprietary software `UCINET`_ and the free software `IGraph`_ , and then
    computed by hand to make sure that the results are correct.

    .. _UCINET: https://sites.google.com/site/ucinetsoftware/home
    .. _IGraph: http://igraph.org/

    c                 ó€  — t        j                  «       | _        | j                  j                  g d¢«       dddddœ| _        t        j
                  «       | _        | j                  j                  g d¢«       dddddddddd	dœ
| _        t        | j                  «      | _	        t        | j                  «      | _
        y )
N))r   é   )r   é   )r   r   )r   r   r   r   )
)ÚAÚB)r	   ÚF)r	   ÚG)r	   ÚE)r   r   )r   r   )r
   r   )r
   ÚD)r   r   )r   ÚCé   é   é   é   é
   )ÚnxÚDiGraphr   Úadd_edges_fromÚ	D_weightsÚGraphr   Ú	G_weightsÚlistÚDnodesÚGnodes)Úselfs    úy/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_structuralholes.pyÚsetup_methodz'TestStructuralHolesNoScipy.setup_method   sŸ   € Ü—‘“ˆŒØ�‰×ÑÒ>Ô?Ø"#¨Q¸À1ÑEˆŒä—‘“ˆŒØ�‰×Ñòô	
ð ØØØØØØØØØñ
ˆŒô ˜4Ÿ6™6“lˆŒÜ˜4Ÿ6™6“lˆ�ó    c                 ó  — t        j                  | j                  | j                  ¬«      }|d   t	        j
                  dd¬«      k(  sJ ‚|d   t	        j
                  dd¬«      k(  sJ ‚|d   t	        j
                  dd¬«      k(  sJ ‚y )	N©Únodesr   g?5^ºIð?çü©ñÒMbP?©Úabsr   r   gÓMbX9ö?)r   Ú
constraintr   r   ÚpytestÚapprox©r   r(   s     r   Útest_constraint_directedz3TestStructuralHolesNoScipy.test_constraint_directed:   sq   € Ü—]‘] 4§6¡6°·±Ô=ˆ
Ø˜!‰}¤§¡¨e¸Ô >Ò>Ð>Ð>Ø˜!‰}¤§¡¨e¸Ô >Ò>Ð>Ð>Ø˜!‰}¤§¡¨e¸Ô >Ò>Ð>Ñ>r!   c                 ó  — t        j                  | j                  | j                  ¬«      }|d   t	        j
                  dd¬«      k(  sJ ‚|d   t	        j
                  dd¬«      k(  sJ ‚|d   t	        j
                  dd¬«      k(  sJ ‚y )Nr#   r   gyé&1¬ò?r%   r&   r   r   )r   Úeffective_sizer   r   r)   r*   ©r   r.   s     r   Útest_effective_size_directedz7TestStructuralHolesNoScipy.test_effective_size_directed@   sv   € Ü×*Ñ*¨4¯6©6¸¿¹ÔEˆØ˜aÑ ¤F§M¡M°%¸TÔ$BÒBÐBÐBØ˜aÑ ¤F§M¡M°%¸TÔ$BÒBÐBÐBØ˜aÑ ¤F§M¡M°!¸Ô$>Ò>Ð>Ñ>r!   c                 óx  — | j                   j                  «       }t        j                  || j                  d«       t        j
                  |d| j                  ¬«      }|d   t        j                  dd¬«      k(  sJ ‚|d   t        j                  dd¬«      k(  sJ ‚|d	   t        j                  d
d¬«      k(  sJ ‚y )NÚweight©r2   r$   r   gáz®Gáê?r%   r&   r   g}?5^ºIò?r   g?5^ºIö?)	r   Úcopyr   Úset_edge_attributesr   r(   r   r)   r*   )r   r   r(   s      r   Ú!test_constraint_weighted_directedz<TestStructuralHolesNoScipy.test_constraint_weighted_directedF   s”   € Ø�F‰F�K‰K‹MˆÜ
×Ñ˜q $§.¡.°(Ô;Ü—]‘] 1¨X¸T¿[¹[ÔIˆ
Ø˜!‰}¤§¡¨e¸Ô >Ò>Ð>Ð>Ø˜!‰}¤§¡¨e¸Ô >Ò>Ð>Ð>Ø˜!‰}¤§¡¨e¸Ô >Ò>Ð>Ñ>r!   c                 óx  — | j                   j                  «       }t        j                  || j                  d«       t        j
                  |d| j                  ¬«      }|d   t        j                  dd¬«      k(  sJ ‚|d   t        j                  dd¬«      k(  sJ ‚|d	   t        j                  dd¬«      k(  sJ ‚y )
Nr2   r3   r   gßO�—nù?r%   r&   r   g‡ÙÎ÷Sñ?r   )	r   r4   r   r5   r   r.   r   r)   r*   )r   r   r.   s      r   Ú%test_effective_size_weighted_directedz@TestStructuralHolesNoScipy.test_effective_size_weighted_directedN   s™   € Ø�F‰F�K‰K‹MˆÜ
×Ñ˜q $§.¡.°(Ô;Ü×*Ñ*¨1°XÀTÇ[Á[ÔQˆØ˜aÑ ¤F§M¡M°%¸TÔ$BÒBÐBÐBØ˜aÑ ¤F§M¡M°%¸TÔ$BÒBÐBÐBØ˜aÑ ¤F§M¡M°!¸Ô$>Ò>Ð>Ñ>r!   c                 ó  — t        j                  | j                  | j                  ¬«      }|d   t	        j
                  dd¬«      k(  sJ ‚|d   t	        j
                  dd¬«      k(  sJ ‚|d   t	        j
                  d	d¬«      k(  sJ ‚y )
Nr#   r   gš™™™™™Ù?r%   r&   r	   g
×£p=
ã?r   r   )r   r(   r   r   r)   r*   r+   s     r   Útest_constraint_undirectedz5TestStructuralHolesNoScipy.test_constraint_undirectedV   sq   € Ü—]‘] 4§6¡6°·±Ô=ˆ
Ø˜#‰¤&§-¡-°¸4Ô"@Ò@Ð@Ð@Ø˜#‰¤&§-¡-°¸4Ô"@Ò@Ð@Ð@Ø˜#‰¤&§-¡-°°tÔ"<Ò<Ð<Ñ<r!   c                 ó  — t        j                  | j                  | j                  ¬«      }|d   t	        j
                  dd¬«      k(  sJ ‚|d   t	        j
                  dd¬«      k(  sJ ‚|d   t	        j
                  d	d¬«      k(  sJ ‚y )
Nr#   r   ç®Gáz®@ç{®Gáz„?r&   r	   ç      @r   r   )r   r.   r   r   r)   r*   r/   s     r   Ú'test_effective_size_undirected_borgattizBTestStructuralHolesNoScipy.test_effective_size_undirected_borgatti\   sv   € Ü×*Ñ*¨4¯6©6¸¿¹ÔEˆØ˜cÑ"¤f§m¡m°D¸dÔ&CÒCÐCÐCØ˜cÑ"¤f§m¡m°D¸dÔ&CÒCÐCÐCØ˜cÑ"¤f§m¡m°A¸4Ô&@Ò@Ð@Ñ@r!   c                 ód  — | j                   j                  «       }t        j                  |dd«       t        j                  |d| j
                  ¬«      }|d   t        j                  dd¬«      k(  sJ ‚|d   t        j                  d	d¬«      k(  sJ ‚|d
   t        j                  dd¬«      k(  sJ ‚y )Nr   r2   r3   r   r<   r=   r&   r	   r>   r   )r   r4   r   r5   r.   r   r)   r*   ©r   r   r.   s      r   Útest_effective_size_undirectedz9TestStructuralHolesNoScipy.test_effective_size_undirectedb   s•   € Ø�F‰F�K‰K‹MˆÜ
×Ñ˜q ! XÔ.Ü×*Ñ*¨1°XÀTÇ[Á[ÔQˆØ˜cÑ"¤f§m¡m°D¸dÔ&CÒCÐCÐCØ˜cÑ"¤f§m¡m°D¸dÔ&CÒCÐCÐCØ˜cÑ"¤f§m¡m°A¸4Ô&@Ò@Ð@Ñ@r!   c                 óx  — | j                   j                  «       }t        j                  || j                  d«       t        j
                  |d| j                  ¬«      }|d   t        j                  dd¬«      k(  sJ ‚|d   t        j                  dd¬«      k(  sJ ‚|d	   t        j                  d
d¬«      k(  sJ ‚y )Nr2   r3   r   g‰A`åÐ"Ó?r%   r&   r	   gq=
×£pé?r   r   )	r   r4   r   r5   r   r(   r   r)   r*   ©r   r   r(   s      r   Ú#test_constraint_weighted_undirectedz>TestStructuralHolesNoScipy.test_constraint_weighted_undirectedj   s”   € Ø�F‰F�K‰K‹MˆÜ
×Ñ˜q $§.¡.°(Ô;Ü—]‘] 1¨X¸T¿[¹[ÔIˆ
Ø˜#‰¤&§-¡-°¸4Ô"@Ò@Ð@Ð@Ø˜#‰¤&§-¡-°¸4Ô"@Ò@Ð@Ð@Ø˜#‰¤&§-¡-°°tÔ"<Ò<Ð<Ñ<r!   c                 óx  — | j                   j                  «       }t        j                  || j                  d«       t        j
                  |d| j                  ¬«      }|d   t        j                  dd¬«      k(  sJ ‚|d   t        j                  dd¬«      k(  sJ ‚|d	   t        j                  d
d¬«      k(  sJ ‚y )Nr2   r3   r   gáz®Gá@r=   r&   r	   gÃõ(\�Â@r   r   )	r   r4   r   r5   r   r.   r   r)   r*   rA   s      r   Ú'test_effective_size_weighted_undirectedzBTestStructuralHolesNoScipy.test_effective_size_weighted_undirectedr   s™   € Ø�F‰F�K‰K‹MˆÜ
×Ñ˜q $§.¡.°(Ô;Ü×*Ñ*¨1°XÀTÇ[Á[ÔQˆØ˜cÑ"¤f§m¡m°D¸dÔ&CÒCÐCÐCØ˜cÑ"¤f§m¡m°D¸dÔ&CÒCÐCÐCØ˜cÑ"¤f§m¡m°A¸4Ô&@Ò@Ð@Ñ@r!   c                 óØ   — | j                   j                  «       }|j                  d«       t        j                  || j
                  dgz   ¬«      }t        j                  |d   «      sJ ‚y ©Nr   r#   )r   r4   Úadd_noder   r(   r   ÚmathÚisnanrD   s      r   Útest_constraint_isolatedz3TestStructuralHolesNoScipy.test_constraint_isolatedz   sM   € Ø�F‰F�K‰K‹MˆØ	�
‰
�1ŒÜ—]‘] 1¨D¯K©K¸1¸#Ñ,=Ô>ˆ
Ü�z‰z˜* Q™-Ô(Ð(Ñ(r!   c                 ó  — | j                   j                  «       }|j                  d«       t        j                  || j
                  d«       t        j                  |d| j                  dgz   ¬«      }t        j                  |d   «      sJ ‚y )Nr   r2   r3   )
r   r4   rJ   r   r5   r   r.   r   rK   rL   rA   s      r   Útest_effective_size_isolatedz7TestStructuralHolesNoScipy.test_effective_size_isolated€   sj   € Ø�F‰F�K‰K‹MˆØ	�
‰
�1ŒÜ
×Ñ˜q $§.¡.°(Ô;Ü×*Ñ*¨1°XÀTÇ[Á[ÐTUÐSVÑEVÔWˆÜ�z‰z˜.¨Ñ+Ô,Ð,Ñ,r!   c                 óØ   — | j                   j                  «       }|j                  d«       t        j                  || j
                  dgz   ¬«      }t        j                  |d   «      sJ ‚y rI   )r   r4   rJ   r   r.   r   rK   rL   rA   s      r   Ú%test_effective_size_borgatti_isolatedz@TestStructuralHolesNoScipy.test_effective_size_borgatti_isolated‡   sP   € Ø�F‰F�K‰K‹MˆØ	�
‰
�1ŒÜ×*Ñ*¨1°D·K±KÀ1À#Ñ4EÔFˆÜ�z‰z˜.¨Ñ+Ô,Ð,Ñ,r!   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r,   r0   r6   r8   r:   r?   rB   rE   rG   rM   rO   rQ   © r!   r   r   r      sL   „ ñ	ò!#òF?ò?ò?ò?ò=òAòAò=òAò)ò-ó-r!   r   c                   ó8   — e Zd Z ej                  d«       dZdZy)ÚTestStructuralHolesÚscipyN)rR   rS   rT   r)   Úimportorskipr   r   rV   r!   r   rX   rX   Ž   s   „ Ø€F×Ñ˜Ô Ø€FØ�Fr!   rX   Úgraphr$   c                 ót   —  | dg«      }t        j                  t        j                  ||¬«      d   «      sJ ‚y)úEBehavior consistent with isolated node without self-loop. See gh-6916©r   r   r#   r   N)rK   rL   r   r.   ©r[   r$   r   s      r   Ú/test_effective_size_isolated_node_with_selfloopr`   ”   s3   € ñ 	ˆvˆh‹€AÜ�:‰:”b×'Ñ'¨°Ô7¸Ñ:Ô;Ð;Ñ;r!   c                 ó”   —  | «       }|j                  dg«       t        j                  t        j                  ||¬«      d   «      sJ ‚y)úWeighted self-loop. See gh-6916©r   r   r   r#   r   N)Úadd_weighted_edges_fromrK   rL   r   r.   r_   s      r   Ú8test_effective_size_isolated_node_with_selfloop_weightedre   œ   s?   € ñ 	‹€AØ×Ñ˜z˜lÔ+Ü�:‰:”b×'Ñ'¨°Ô7¸Ñ:Ô;Ð;Ñ;r!   c                 óp   —  | dg«      }t        j                  t        j                  |«      d   «      sJ ‚y)r]   r^   r   N)rK   rL   r   r(   ©r[   r   s     r   Ú+test_constraint_isolated_node_with_selflooprh   ¥   s/   € ñ 	ˆvˆh‹€AÜ�:‰:”b—m‘m AÓ& qÑ)Ô*Ð*Ñ*r!   c                 óV   —  | dg«      }t        j                  |dg¬«      d   dk(  sJ ‚y)r]   r^   r   r#   r   N)r   r(   rg   s     r   Ú=test_constraint_isolated_node_with_selfloop_using_nodes_kwargrj   ¬   s/   € ñ 	ˆvˆh‹€AÜ�=‰=˜ 1 #Ô& qÑ)¨QÒ.Ð.Ñ.r!   c                 ó�   —  | «       }|j                  dg«       t        j                  t        j                  |«      d   «      sJ ‚y)rb   rc   r   N)rd   rK   rL   r   r(   rg   s     r   Ú4test_constraint_isolated_node_with_selfloop_weightedrl   ³   s;   € ñ 	‹€AØ×Ñ˜z˜lÔ+Ü�:‰:”b—m‘m AÓ& qÑ)Ô*Ð*Ñ*r!   c                 óv   —  | «       }|j                  dg«       t        j                  |dg¬«      d   dk(  sJ ‚y )Nrc   r   r#   r   )rd   r   r(   rg   s     r   ÚFtest_constraint_isolated_node_with_selfloop_weighted_using_nodes_kwargrn   »   s9   € á‹€AØ×Ñ˜z˜lÔ+Ü�=‰=˜ 1 #Ô& qÑ)¨QÒ.Ð.Ñ.r!   )rU   rK   r)   Únetworkxr   Únetworkx.classes.testsr   r   rX   ÚmarkÚparametrizer   r   r`   re   rh   rj   rl   rn   rV   r!   r   ú<module>rs      s˜  ðÙ Kã ã ã Ý 5÷@-ñ @-ôFÐ4ô ð ‡�×Ñ˜ 2§8¡8¨R¯Z©ZÐ"8Ó9Ø‡�×Ñ˜ 4¨!¨ +Ó.ñ<ó /ó :ð<ð ‡�×Ñ˜ 2§8¡8¨R¯Z©ZÐ"8Ó9Ø‡�×Ñ˜ 4¨!¨ +Ó.ñ<ó /ó :ð<ð ‡�×Ñ˜ 2§8¡8¨R¯Z©ZÐ"8Ó9ñ+ó :ð+ð ‡�×Ñ˜ 2§8¡8¨R¯Z©ZÐ"8Ó9ñ/ó :ð/ð ‡�×Ñ˜ 2§8¡8¨R¯Z©ZÐ"8Ó9ñ+ó :ð+ð ‡�×Ñ˜ 2§8¡8¨R¯Z©ZÐ"8Ó9ñ/ó :ñ/r!   