
    \Mh8                     L    d dl Z d dlZd dlmZ d dlmZmZ  G d d          ZdS )    N)empty_graph)edges_equalnodes_equalc                      e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            ddg d	f          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 Zd Zd Zd Zd Zd Z d Z!d  Z"d!S )"TestRelabelc                 
   t                      }t          j        |d          }t          |                                          g k    sJ t          |                                          g k    sJ dD ]u}t                      }t          j        |d|          }t          |                                          g k    sJ t          |                                          g k    sJ vt                      }|                    g d           t          j        |          }d |                                D             }d |                                D             }t          |          t          |          k    sJ t          j        |d          }d |                                D             }d	 |                                D             }t          |          t          |          k    sJ t          |                                g d
          sJ t          j        |d          }d |                                D             }d |                                D             }t          |          t          |          k    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ t          j        |d          }d |                                D             }d |                                D             }t          |          t          |          k    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ t          j        |dd          }d |                                D             }d |                                D             }t          |          t          |          k    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         d         dk    s|j        d         d         dk    sJ |j        d         d         dk    s|j        d         d         dk    sJ d S d S )Nd   )defaultsortedincreasing degreedecreasing degreeorderingABr   Cr   r   r   Dc              3       K   | ]	\  }}|V  
d S N .0nds      [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/tests/test_relabel.py	<genexpr>zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>   &      ))da))))))    c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>   r"   r#     c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>   r"   r#   c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>   r"   r#   )r%   i  i  i  r   c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>$   r"   r#   c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>%   r"   r#   r            r   c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>-   r"   r#   c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>.   r"   r#   labelr   label_attributec              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>8   r"   r#   c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>9   r"   r#   r   r   r   r   )
r   nxconvert_node_labels_to_integerslistnodesedgesadd_edges_fromdegreer   r   )selfGHoptdegHdegGs         r    $test_convert_node_labels_to_integersz0TestRelabel.test_convert_node_labels_to_integers	   s   MM.q#66AGGII"$$$$AGGII"$$$$R 	) 	)CA21cCHHHA		??b((((		??b(((((MM	IIIJJJ.q11))ahhjj)))))ahhjj)))d||vd||++++.q$77))ahhjj)))))ahhjj)))d||vd||++++17799&>&>&>?????.q;NOOO))ahhjj)))))ahhjj)))d||vd||++++xx{{axx{{axx{{axx{{a.q;NOOO))ahhjj)))))ahhjj)))d||vd||++++xx{{axx{{axx{{axx{{a.+W
 
 
 *)ahhjj)))))ahhjj)))d||vd||++++xx{{axx{{axx{{axx{{a wqz'"c))))wqz'"c))))wqz'"c))QWQZ-@C-G-G-G-Gwqz'"c))QWQZ-@C-G-G-G-G))-G-Gr#   c                 .   t                      }|                    g d           t          j        |d          }d |                                D             }d |                                D             }t          |          t          |          k    sJ t          j        |dd          }|j        d         d         d	k    sJ |j        d
         d         dk    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ d S )N)r   r   r   r   r   r   c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   z8TestRelabel.test_convert_to_integers2.<locals>.<genexpr>J   r"   r#   c              3       K   | ]	\  }}|V  
d S r   r   r   s      r    r!   z8TestRelabel.test_convert_to_integers2.<locals>.<genexpr>K   r"   r#   r/   r0   r   r   r*   r   r+   r   r,   r   )r   r9   r4   r5   r:   r   r7   )r;   r<   r=   r?   r@   s        r    test_convert_to_integers2z%TestRelabel.test_convert_to_integers2F   s$   MM	IIIJJJ.q8DDD))ahhjj)))))ahhjj)))d||vd||++++.'
 
 
 wqz'"c))))wqz'"c))))wqz'"c))))wqz'"c))))))r#   c                     t          j        t          j                  5  t          j                    }t          j        |d          }d d d            d S # 1 swxY w Y   d S )Nzincreasing ager   )pytestraisesr4   NetworkXErrorGraphr5   r;   r<   r=   s      r    test_convert_to_integers_raisez*TestRelabel.test_convert_to_integers_raiseV   s    ]2+,, 	Q 	Q

A21?OPPPA	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   *AAAc                     t          j                    }|                    g d           ddddd}t          j        ||          }t	          |                                g d          sJ d S Nr   aardvarkbearcatdogr   r   r   r   rO   rP   rQ   rR   r4   r   r9   relabel_nodesr   r7   r;   r<   mappingr=   s       r    test_relabel_nodes_copyz#TestRelabel.test_relabel_nodes_copy[   sx    N	IIIJJJ"e%HHQ((17799&H&H&HIIIIIIIr#   c                     t          j                    }|                    g d           d }t          j        ||          }t	          |                                g d          sJ d S )Nr   c                      t          |           S r   )ord)r   s    r    rX   z8TestRelabel.test_relabel_nodes_function.<locals>.mappingg   s    q66Mr#   )A   B   C   D   rU   rW   s       r    test_relabel_nodes_functionz'TestRelabel.test_relabel_nodes_functionb   sx    N	IIIJJJ	 	 	 Q((17799&6&6&67777777r#   c                     t          j        d          }t          j        |t                    }t	          |j        g d          sJ d S )N   0123)r4   
path_graphrV   strr   r7   rK   s      r     test_relabel_nodes_callable_typez,TestRelabel.test_relabel_nodes_callable_typem   sH    M!Q$$17$8$8$89999999r#   non_mc0123rd   c                     t          j        d          }t          j        t                    5  t          j        ||           ddd           dS # 1 swxY w Y   dS )zWIf `mapping` is neither a Callable or a Mapping, an exception
        should be raised.rc   N)r4   ri   rG   rH   AttributeErrorrV   )r;   rl   r<   s      r    *test_relabel_nodes_non_mapping_or_callablez6TestRelabel.test_relabel_nodes_non_mapping_or_callabler   s     M!]>** 	( 	(Q'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AAAc                     t          j        g d          }ddddd}t          j        ||          }t          |                                g d          sJ d S rN   )r4   rJ   rV   r   r7   rW   s       r    test_relabel_nodes_graphz$TestRelabel.test_relabel_nodes_graphz   sf    HEEEFF"e%HHQ((17799&H&H&HIIIIIIIr#   c                     t          j                    }|                    g d           |                    ddg           dddd}t          j        ||          }t          |j                  g dk    sJ d S )Nr*   r+   r,   )r*   r,   r+   r,   abc)rv   rw   rx   )r4   rJ   add_nodes_fromr9   rV   r6   r7   rW   s       r    test_relabel_nodes_orderedgraphz+TestRelabel.test_relabel_nodes_orderedgraph   s    HJJ	###	&&)***cc**Q((AG}}//////r#   c                     t          j        g d          }ddddd}t          j        ||d          }t          |                                g d	          sJ d S )
Nr   rO   rP   rQ   rR   rS   FcopyrT   )r4   DiGraphrV   r   r7   rW   s       r    test_relabel_nodes_digraphz&TestRelabel.test_relabel_nodes_digraph   sk    JGGGHH"e%HHQe44417799&H&H&HIIIIIIIr#   c                    t          j        ddg          }ddd}t          j        ||d          }t          |                                ddg          sJ t          |                                ddg          sJ d S N)rv   rw   rO   rP   Fr|   )rO   rP   )r4   
MultiGraphrV   r   r7   r   r8   r;   r<   rX   s      r    test_relabel_nodes_multigraphz)TestRelabel.test_relabel_nodes_multigraph   s    M:z233"00Qe44417799z6&:;;;;;17799';=Q&RSSSSSSSr#   c                    t          j        ddg          }ddd}t          j        ||d          }t          |                                ddg          sJ t          |                                ddg          sJ d S r   )r4   MultiDiGraphrV   r   r7   r   r8   r   s      r    test_relabel_nodes_multidigraphz+TestRelabel.test_relabel_nodes_multidigraph   s    OZ455"00Qe44417799z6&:;;;;;17799';=Q&RSSSSSSSr#   c                 "   t          j                    }|                    t          d                     ddi}t          j        ||d          }t          |                                t          t          d                              sJ d S )Nrc   r*   Fr|   )r4   rJ   ry   rangerV   r   r7   r6   rW   s       r    #test_relabel_isolated_nodes_to_samez/TestRelabel.test_relabel_isolated_nodes_to_same   sw    HJJ	q"""a&Qe44417799d588nn5555555r#   c                 .   t          j        g d          }ddi}t          j        ||d          }t          |j        |j                  sJ |                                }t          j        ||d           t          |j        |j                  sJ d S )Nr   r   rO   Tr|   F)r4   rJ   rV   r   r7   r}   )r;   r<   rX   r=   GGs        r    test_relabel_nodes_missingz&TestRelabel.test_relabel_nodes_missing   s    HEEEFFj/Qd33317AG,,,,,VVXX
G%000017BH-------r#   c                    t          j                    }t          j        |i d          }|j        |j        k    sJ t          j        |i d          }|j        |j        k    sJ d|_        t          j        |i d          }|j        |j        k    sJ t          j        |i d          }|j        |j        k    sJ d S )NTr|   Ffirst)r4   rJ   rV   graphnamerK   s      r    test_relabel_copy_namez"TestRelabel.test_relabel_copy_name   s    HJJQ...w!'!!!!Q///w!'!!!!Q...w!'!!!!Q///w!'!!!!!!r#   c                    t          j        d          }t          j        d          }t          j        |d t          d          D             d          }t          j        ||          sJ t          j        d          }t          j        |d t          d          D             d          }t          j        ||          sJ d S )Nrc   c                     i | ]}||d z   	S r*   r   r   is     r    
<dictcomp>z5TestRelabel.test_relabel_toposort.<locals>.<dictcomp>        < < <aAE < < <r#   Fr|   c                     i | ]}||d z
  	S r   r   r   s     r    r   z5TestRelabel.test_relabel_toposort.<locals>.<dictcomp>   r   r#   )r4   complete_graphrV   r   is_isomorphic)r;   K5r<   s      r    test_relabel_toposortz!TestRelabel.test_relabel_toposort   s    q!!a  Q < <588 < < <5IIIA&&&&&a  Q < <588 < < <5IIIA&&&&&&&r#   c                    t          j        g d          }t          j        |ddddd          }t          |                                g d          sJ t          j        g d          }t          j        |ddddd          }t          |                                g d          sJ t          j        d	g          }t          j        |d
did          }t          |                                dg          sJ d S )N)r*   r*   )r*   r+   ru   OneTwoThreert   Fr|   )r   r   r   r   r*   r   )r4   r~   rV   r   r7   r   )r;   r<   s     r    test_relabel_selfloopz!TestRelabel.test_relabel_selfloop   s   J///00QEe @ @uMMM17799&=&=&=>>>>>O44455QEe @ @uMMM17799&=&=&=>>>>>OVH%%QAU33317799qc*******r#   c                 d   t           j        t           j        fD ]}dD ]} |g d          }d|d         d         d         d<   d|d         d         d         d<   d	|d         d
         d         d<   d|d         d         d         d<   |                    dddd           |                    dddd           ddddd}t          j        |||          }ddi|d         d                                         v sJ ddi|d         d                                         v sJ dd	i|d         d                                         v sJ |                                r t          |d         d                   dk    snnJ ddi|d         d                                         v sJ ddi|d         d                                         v sJ ddi|d         d                                         v sJ |                                r t          |d         d                   dk    snnJ d S )NTF)r   rc   )r*   rc   )rc   r+   )rc   r,   rv   r   rc   valuerw   r*   rx   r+   r   r,   xekeyr   f	   r   r*   r+   r,   r|   )r4   r   r   add_edgerV   valuesis_directedlen)r;   MGccr<   rX   r=   s         r    +test_relabel_multidigraph_inout_merge_nodesz7TestRelabel.test_relabel_multidigraph_inout_merge_nodes   sX   ="/2 	C 	CB# C CB77788&)!Q
7#&)!Q
7#&)!Q
7#&)!Q
7#

1aS
444

1aS
444A!22$Qb999~1a)9)99999~1a)9)99999~1a)9)99999,-MMOOBs1Q47||q((((((~1a)9)99999~1a)9)99999~1a)9)99999,-MMOOBs1Q47||q((((((%C	C 	Cr#   c                    t          j        g d          }d|d         d         d         d<   d|d         d         d         d<   d|d         d	         d         d<   d
d
d
d}t          j        ||d           ddi|d         d
                                         v sJ ddi|d         d
                                         v sJ ddi|d         d
                                         v sJ d S )N)r   r*   r   r+   r   r,   r   r   r   rv   r   r*   r   rw   r+   rx   r,   rc   rt   Fr|   r4   r   rV   r   r   s      r    %test_relabel_multigraph_merge_inplacez1TestRelabel.test_relabel_multigraph_merge_inplace   s    MJJJKK!!Q
7!!Q
7!!Q
7A!$$
G%0000~1a!1!11111~1a!1!11111~1a!1!1111111r#   c                    t          j        g d          }d|d         d         d         d<   d|d         d         d         d<   d|d         d	         d         d<   d
d
d
d}t          j        ||d           ddi|d         d
                                         v sJ ddi|d         d
                                         v sJ ddi|d         d
                                         v sJ d S )Nr   r   r   rv   r   r*   r   rw   r+   rx   r,   rc   rt   Fr|   r4   r   rV   r   r   s      r    'test_relabel_multidigraph_merge_inplacez3TestRelabel.test_relabel_multidigraph_merge_inplace   s    O44455!!Q
7!!Q
7!!Q
7A!$$
G%0000~1a!1!11111~1a!1!11111~1a!1!1111111r#   c                    t          j        g d          }d|d         d         d         d<   d|d         d         d         d<   d|d         d	         d         d<   d
|d         d         d         d<   |                    dddd           |                    dddd           ddddd}t          j        ||d          }ddi|d         d                                         v sJ ddi|d         d                                         v sJ ddi|d         d                                         v sJ t          |d         d                   dk    sJ dd
i|d         d                                         v sJ ddi|d         d                                         v sJ ddi|d         d                                         v sJ t          |d         d                   dk    sJ d S )Nr   rv   r   rc   r   rw   r*   rx   r+   r   r,   r   r   r   r   r   r   Tr|   )r4   r   r   rV   r   r   rW   s       r    $test_relabel_multidigraph_inout_copyz0TestRelabel.test_relabel_multidigraph_inout_copy   s   O<<<==!!Q
7!!Q
7!!Q
7!!Q
7	

1aS
,,,	

1aS
,,,A!**Qd333~1a!1!11111~1a!1!11111~1a!1!111111Q47||q    ~1a!1!11111~1a!1!11111~1a!1!111111Q47||q      r#   c                    t          j        g d          }d|d         d         d         d<   d|d         d         d         d<   d|d         d	         d         d<   d
d
d
d}t          j        ||d          }ddi|d         d
                                         v sJ ddi|d         d
                                         v sJ ddi|d         d
                                         v sJ d S Nr   rv   r   r*   r   rw   r+   rx   r,   rc   rt   Tr|   r   rW   s       r    "test_relabel_multigraph_merge_copyz.TestRelabel.test_relabel_multigraph_merge_copy  s    M22233!!Q
7!!Q
7!!Q
7A!$$Qd333~1a!1!11111~1a!1!11111~1a!1!1111111r#   c                    t          j        g d          }d|d         d         d         d<   d|d         d         d         d<   d|d         d	         d         d<   d
d
d
d}t          j        ||d          }ddi|d         d
                                         v sJ ddi|d         d
                                         v sJ ddi|d         d
                                         v sJ d S r   r   rW   s       r    $test_relabel_multidigraph_merge_copyz0TestRelabel.test_relabel_multidigraph_merge_copy  s    O44455!!Q
7!!Q
7!!Q
7A!$$Qd333~1a!1!11111~1a!1!11111~1a!1!1111111r#   c                    t           j        t           j        fD ]-}dD ]&}t          j                    }|                    dddd           |                    dddd	           |                    dd
dd           dddd}t          j        ||d           ddi|d         d                                         v sJ dd	i|d         d                                         v sJ ddi|d         d                                         v sJ d|d         d         v sJ d|d         d         v sJ d|d         d         v sJ (/d S )Nr   r   r*   Irv   r   r+   IIrw   r,   rx   rc   rt   Fr|   r   )r4   r   r   r   rV   r   )r;   r   r   r<   rX   s        r    &test_relabel_multigraph_nonnumeric_keyz2TestRelabel.test_relabel_multigraph_nonnumeric_key&  sn   ="/2 	' 	'B# ' 'MOO

1aS
444

1aT
555

1aT
555A!,, G%8888~1a)9)99999~1a)9)99999~1a)9)99999AaDG||||ad1g~~~~qtAw'	' 	'r#   c                    t          j        d          }ddd}t          j        ||d          }t          j        t           j                  5  t          j        ||d          }d d d            d S # 1 swxY w Y   d S )Nr,   r*   r   r   Tr|   F)r4   ri   rV   rG   rH   NetworkXUnfeasiblerW   s       r    test_relabel_circularz!TestRelabel.test_relabel_circular6  s    M!A,,Qd333]2011 	9 	9 G%888A	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   A44A8;A8c                    t          j        d          }t          |                                          }ddddt          j        |d          }t          |                                          }fd|D             |k    sJ d S )	Nr,   rv   rw   rx   r+   r*   r   Tr|   c                 <    g | ]}                     ||          S r   getr   r   rX   s     r    
<listcomp>z\TestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_true.<locals>.<listcomp>C  '    :::aAq!!:::r#   )r4   ri   r6   r7   rV   r;   r<   original_orderr=   	new_orderrX   s        @r    <test_relabel_preserve_node_order_full_mapping_with_copy_truezHTestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_true=  s    M!aggiicc**Qd333OO	::::>:::iGGGGGGr#   c                     t          j        d          }t          |          }ddddt          j        |d          }t          |          }fd|D             |k    sJ d S )	Nr,   rv   rw   rx   r   Fr|   c                 <    g | ]}                     ||          S r   r   r   s     r    r   z]TestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_false.<locals>.<listcomp>K  r   r#   r4   ri   r6   rV   r   s        @r    =test_relabel_preserve_node_order_full_mapping_with_copy_falsezITestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_falseE  sy    M!acc**Qe444GG	::::>:::iGGGGGGr#   c                     t          j        d          }t          |          }dddt          j        |d          }t          |          }fd|D             |k    sJ d S )Nr,   rv   rw   r*   r   Tr|   c                 <    g | ]}                     ||          S r   r   r   s     r    r   z_TestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_true.<locals>.<listcomp>S  r   r#   r   r   s        @r    ?test_relabel_preserve_node_order_partial_mapping_with_copy_truezKTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_trueM  sw    M!ac""Qd333GG	::::>:::iGGGGGGr#   c                     t          j        d          }t          |          }dddt          j        |d          }t          |          }fd|D             |k    sJ d S )Nr,   rv   rw   r   Fr|   c                 <    g | ]}                     ||          S r   r   r   s     r    r   z`TestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_false.<locals>.<listcomp>[  r   r#   r   r   s        @r    @test_relabel_preserve_node_order_partial_mapping_with_copy_falsezLTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_falseU  sw    M!ac""Qe444GG	::::>:::iGGGGGGr#   N)#__name__
__module____qualname__rA   rE   rL   rY   ra   rk   rG   markparametrizerp   rr   rz   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      s       ;H ;H ;Hz* * * Q Q Q
J J J	8 	8 	8: : :
 [X0D0D0D'EFF( ( GF(J J J0 0 0J J JT T TT T T6 6 6	. 	. 	.
" 
" 
"' ' '	+ 	+ 	+C C C,
2 
2 
2
2 
2 
2! ! !(	2 	2 	2	2 	2 	2' ' ' 9 9 9H H HH H HH H HH H H H Hr#   r   )	rG   networkxr4   networkx.generators.classicr   networkx.utilsr   r   r   r   r#   r    <module>r      s         3 3 3 3 3 3 3 3 3 3 3 3 3 3SH SH SH SH SH SH SH SH SH SHr#   