
    fi                     4   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	        
                    dej        ej        f          ej	        
                    d	ddgf          d
                         Zej	        
                    dej        ej        f          ej	        
                    d	ddgf          d                         Zej	        
                    dej        ej        f          d             Zej	        
                    dej        ej        f          d             Zej	        
                    dej        ej        f          d             Zej	        
                    dej        ej        f          d             ZdS )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dS )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                 v   t          j                    | _        | j                            g d           ddddd| _        t          j                    | _        | j                            g d           dddddddddd	d
| _        t          | j                  | _	        t          | j                  | _
        d S )
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    /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/algorithms/tests/test_structuralholes.pysetup_methodz'TestStructuralHolesNoScipy.setup_method   s    >>>???"#Q1EE  	
 	
 	
 
 
 46ll46ll    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 d S )	Nnodesr   g?5^I?MbP?absr   r   gMbX9?)r   
constraintr   r   pytestapproxr   r(   s     r   test_constraint_directedz3TestStructuralHolesNoScipy.test_constraint_directed:   s    ]46===
!}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 d S )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@   s    *46EEEa FM%T$B$B$BBBBBa FM%T$B$B$BBBBBa FM!$>$>$>>>>>>>r!   c                 r   | 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 d S )Nweightr2   r$   r   gz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    FKKMM
q$.(;;;]1XT[III
!}e > > >>>>>!}e > > >>>>>!}e > > >>>>>>>r!   c                 r   | 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 d S )
Nr2   r3   r   gOn?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    FKKMM
q$.(;;;*1XT[QQQa FM%T$B$B$BBBBBa FM%T$B$B$BBBBBa FM!$>$>$>>>>>>>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 d S )
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   s    ]46===
#&-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 d S )
Nr#   r   Gz@{Gz?r&   r	         @r   r   )r   r.   r   r   r)   r*   r/   s     r   'test_effective_size_undirected_borgattizBTestStructuralHolesNoScipy.test_effective_size_undirected_borgatti\   s    *46EEEc"fmDd&C&C&CCCCCc"fmDd&C&C&CCCCCc"fmA4&@&@&@@@@@@@r!   c                 h   | 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 d S )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    FKKMM
q!X...*1XT[QQQc"fmDd&C&C&CCCCCc"fmDd&C&C&CCCCCc"fmA4&@&@&@@@@@@@r!   c                 r   | 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 d S )Nr2   r3   r   gA`"?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    FKKMM
q$.(;;;]1XT[III
#&-4"@"@"@@@@@#&-4"@"@"@@@@@#&-t"<"<"<<<<<<<r!   c                 r   | 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 d S )Nr2   r3   r   gz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    FKKMM
q$.(;;;*1XT[QQQc"fmDd&C&C&CCCCCc"fmDd&C&C&CCCCCc"fmA4&@&@&@@@@@@@r!   c                     | j                                         }|                    d           t          j        || j        dgz             }t          j        |d                   sJ d S Nr   r#   )r   r4   add_noder   r(   r   mathisnanrD   s      r   test_constraint_isolatedz3TestStructuralHolesNoScipy.test_constraint_isolatedz   s]    FKKMM	

1]1DK1#,=>>>
z*Q-(((((((r!   c                    | j                                         }|                    d           t          j        || j        d           t          j        |d| j        dgz             }t          j	        |d                   sJ d S )Nr   r2   r3   )
r   r4   rJ   r   r5   r   r.   r   rK   rL   rA   s      r   test_effective_size_isolatedz7TestStructuralHolesNoScipy.test_effective_size_isolated   sz    FKKMM	

1
q$.(;;;*1XT[TUSVEVWWWz.+,,,,,,,r!   c                     | j                                         }|                    d           t          j        || j        dgz             }t          j        |d                   sJ d S rI   )r   r4   rJ   r   r.   r   rK   rL   rA   s      r   %test_effective_size_borgatti_isolatedz@TestStructuralHolesNoScipy.test_effective_size_borgatti_isolated   s_    FKKMM	

1*1DK1#4EFFFz.+,,,,,,,r!   N)__name__
__module____qualname____doc__r    r,   r0   r6   r8   r:   r?   rB   rE   rG   rM   rO   rQ    r!   r   r   r      s        	 	!# !# !#F? ? ?? ? ?? ? ?? ? ?= = =A A AA A A= = =A A A) ) )- - -- - - - -r!   r   c                   6    e Zd Z ej        d           dZdZdS )TestStructuralHolesscipyN)rR   rS   rT   r)   importorskipr   r   rV   r!   r   rX   rX      s+        F   FFFFr!   rX   graphr$   c                 ~     | dg          }t          j        t          j        ||          d                   sJ dS )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`      sD     	vhA:b'777:;;;;;;;r!   c                      |             }|                     dg           t          j        t          j        ||          d                   sJ dS )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      sV     	Azl+++:b'777:;;;;;;;r!   c                 z     | dg          }t          j        t          j        |          d                   sJ dS )r]   r^   r   N)rK   rL   r   r(   r[   r   s     r   +test_constraint_isolated_node_with_selflooprh      s>     	vhA:bmA&&q)*******r!   c                 d     | dg          }t          j        |dg          d         dk    sJ dS )r]   r^   r   r#   r   N)r   r(   rg   s     r   =test_constraint_isolated_node_with_selfloop_using_nodes_kwargrj      s@     	vhA=1#&&&q)Q......r!   c                      |             }|                     dg           t          j        t          j        |          d                   sJ dS )rb   rc   r   N)rd   rK   rL   r   r(   rg   s     r   4test_constraint_isolated_node_with_selfloop_weightedrl      sP     	Azl+++:bmA&&q)*******r!   c                      |             }|                     dg           t          j        |dg          d         dk    sJ d S )Nrc   r   r#   r   )rd   r   r(   rg   s     r   Ftest_constraint_isolated_node_with_selfloop_weighted_using_nodes_kwargrn      sP    Azl+++=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      s1   K K       5 5 5 5 5 5@- @- @- @- @- @- @- @-F    4    28RZ"8994!+..< < /. :9< 28RZ"8994!+..< < /. :9< 28RZ"899+ + :9+ 28RZ"899/ / :9/ 28RZ"899+ + :9+ 28RZ"899/ / :9/ / /r!   