
    wg8                     D    d dl Z d dlZd dlmZ d dlmZmZ  G d d      Zy)    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                  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"y!)"TestRelabelc                    t               }t        j                  |d      }t        |j	                               g k(  sJ t        |j                               g k(  sJ dD ]`  }t               }t        j                  |d|      }t        |j	                               g k(  sJ t        |j                               g k(  r`J  t               }|j                  g d       t        j                  |      }d |j                         D        }d |j                         D        }t        |      t        |      k(  sJ t        j                  |d      }d |j                         D        }d	 |j                         D        }t        |      t        |      k(  sJ t        |j	                         g d
      sJ t        j                  |d      }d |j                         D        }d |j                         D        }t        |      t        |      k(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ t        j                  |d      }d |j                         D        }d |j                         D        }t        |      t        |      k(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ t        j                  |dd      }d |j                         D        }d |j                         D        }t        |      t        |      k(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |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 y y )Nd   )defaultsortedincreasing degreedecreasing degreeorderingABr   Cr   r   r   Dc              3   &   K   | ]	  \  }}|  y wN .0nds      `/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/networkx/tests/test_relabel.py	<genexpr>zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>        )da)   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>   r"   r#     c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>   r"   r#   c              3   &   K   | ]	  \  }}|  y w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   | ]	  \  }}|  y wr   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>$   r"   r#   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>%   r"   r#   r            r   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>-   r"   r#   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>.   r"   r#   labelr   label_attributec              3   &   K   | ]	  \  }}|  y wr   r   r   s      r    r!   zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>8   r"   r#   c              3   &   K   | ]	  \  }}|  y w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   M..q#6AGGI"$$$AGGI"$$$R 	)CA221cCHA	?b(((	?b(((		) M	IJ..q1)ahhj))ahhj)d|vd|+++..q$7)ahhj))ahhj)d|vd|+++1779&>???..q;NO)ahhj))ahhj)d|vd|+++xx{axx{axx{axx{a..q;NO)ahhj))ahhj)d|vd|+++xx{axx{axx{axx{a..+W
 *ahhj))ahhj)d|vd|+++xx{axx{axx{axx{a wwqz'"c)))wwqz'"c)))wwqz'"c)QWWQZ-@C-GGGwwqz'"c)QWWQZ-@C-GGG-G)    c                    t               }|j                  g d       t        j                  |d      }d |j	                         D        }d |j	                         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 y )N)r   r   r   r   r   r   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r    r!   z8TestRelabel.test_convert_to_integers2.<locals>.<genexpr>J   r"   r#   c              3   &   K   | ]	  \  }}|  y w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    M	IJ..q8D)ahhj))ahhj)d|vd|+++..'
 wwqz'"c)))wwqz'"c)))wwqz'"c)))wwqz'"c)))rB   c                     t        j                  t        j                        5  t        j                         }t        j
                  |d      }d d d        y # 1 sw Y   y xY w)Nzincreasing ager   )pytestraisesr4   NetworkXErrorGraphr5   r;   r<   r=   s      r    test_convert_to_integers_raisez*TestRelabel.test_convert_to_integers_raiseV   sK    ]]2++, 	Q
A221?OPA	Q 	Q 	Qs   ,AA"c                     t        j                         }|j                  g d       ddddd}t        j                  ||      }t	        |j                         g d      sJ y Nr   aardvarkbearcatdogr   r   r   r   rP   rQ   rR   rS   r4   r   r9   relabel_nodesr   r7   r;   r<   mappingr=   s       r    test_relabel_nodes_copyz#TestRelabel.test_relabel_nodes_copy[   sT    NN	IJ"e%HQ(1779&HIIIrB   c                     t        j                         }|j                  g d       d }t        j                  ||      }t	        |j                         g d      sJ y )Nr   c                     t        |       S r   )ord)r   s    r    rY   z8TestRelabel.test_relabel_nodes_function.<locals>.mappingg   s    q6MrB   )A   B   C   D   rV   rX   s       r    test_relabel_nodes_functionz'TestRelabel.test_relabel_nodes_functionb   sM    NN	IJ	 Q(1779&6777rB   c                     t        j                  d      }t        j                  |t              }t	        |j
                  g d      sJ y )N   0123)r4   
path_graphrW   strr   r7   rL   s      r     test_relabel_nodes_callable_typez,TestRelabel.test_relabel_nodes_callable_typem   s7    MM!Q$177$8999rB   non_mc0123re   c                     t        j                  d      }t        j                  t              5  t        j
                  ||       ddd       y# 1 sw Y   yxY w)zWIf `mapping` is neither a Callable or a Mapping, an exception
        should be raised.rd   N)r4   rj   rH   rI   AttributeErrorrW   )r;   rm   r<   s      r    *test_relabel_nodes_non_mapping_or_callablez6TestRelabel.test_relabel_nodes_non_mapping_or_callabler   sC     MM!]]>* 	(Q'	( 	( 	(s   AAc                     t        j                  g d      }ddddd}t        j                  ||      }t        |j	                         g d      sJ y rO   )r4   rK   rW   r   r7   rX   s       r    test_relabel_nodes_graphz$TestRelabel.test_relabel_nodes_graphz   sH    HHEF"e%HQ(1779&HIIIrB   c                     t        j                         }|j                  g d       |j                  ddg       dddd}t        j                  ||      }t        |j                        g dk(  sJ y )Nr*   r+   r,   )r*   r,   r+   r,   abc)rw   rx   ry   )r4   rK   add_nodes_fromr9   rW   r6   r7   rX   s       r    test_relabel_nodes_orderedgraphz+TestRelabel.test_relabel_nodes_orderedgraph   sb    HHJ	#	&&)*cc*Q(AGG}///rB   c                     t        j                  g d      }ddddd}t        j                  ||d      }t        |j	                         g d	      sJ y )
Nr   rP   rQ   rR   rS   rT   FcopyrU   )r4   DiGraphrW   r   r7   rX   s       r    test_relabel_nodes_digraphz&TestRelabel.test_relabel_nodes_digraph   sJ    JJGH"e%HQe41779&HIIIrB   c                     t        j                  ddg      }ddd}t        j                  ||d      }t        |j	                         ddg      sJ t        |j                         ddg      sJ y N)rw   rx   rP   rQ   Fr}   )rP   rQ   )r4   
MultiGraphrW   r   r7   r   r8   r;   r<   rY   s      r    test_relabel_nodes_multigraphz)TestRelabel.test_relabel_nodes_multigraph   sk    MM:z23"0Qe41779z6&:;;;1779';=Q&RSSSrB   c                     t        j                  ddg      }ddd}t        j                  ||d      }t        |j	                         ddg      sJ t        |j                         ddg      sJ y r   )r4   MultiDiGraphrW   r   r7   r   r8   r   s      r    test_relabel_nodes_multidigraphz+TestRelabel.test_relabel_nodes_multidigraph   sk    OOZ45"0Qe41779z6&:;;;1779';=Q&RSSSrB   c                     t        j                         }|j                  t        d             ddi}t        j                  ||d      }t        |j                         t        t        d                  sJ y Nrd   r*   Fr}   )r4   rK   rz   rangerW   r   r7   r6   rX   s       r    #test_relabel_isolated_nodes_to_samez/TestRelabel.test_relabel_isolated_nodes_to_same   sZ    HHJ	q"a&Qe41779d58n555rB   c                 B   t        j                  g d      }ddi}t        j                  ||d      }t        |j                  |j                        sJ |j                         }t        j                  ||d       t        |j                  |j                        sJ y )Nr   r   rP   Tr}   F)r4   rK   rW   r   r7   r~   )r;   r<   rY   r=   GGs        r    test_relabel_nodes_missingz&TestRelabel.test_relabel_nodes_missing   s{    HHEFj/Qd3177AGG,,,VVX
G%0177BHH---rB   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 y )NTr}   Ffirst)r4   rK   rW   graphnamerL   s      r    test_relabel_copy_namez"TestRelabel.test_relabel_copy_name   s    HHJQ.ww!''!!!Q/ww!''!!!Q.ww!''!!!Q/ww!''!!!rB   c           	         t        j                  d      }t        j                  d      }t        j                  |t        d      D ci c]  }||dz   
 c}d      }t        j                  ||      sJ t        j                  d      }t        j                  |t        d      D ci c]  }||dz
  
 c}d      }t        j                  ||      sJ y c c}w c c}w r   )r4   complete_graphrW   r   is_isomorphic)r;   K5r<   is       r    test_relabel_toposortz!TestRelabel.test_relabel_toposort   s    q!a Q58 <aAE <5IA&&&a Q58 <aAE <5IA&&&	 != !=s   C
(C
c                    t        j                  g d      }t        j                  |ddddd      }t        |j	                         g d      sJ t        j
                  g d      }t        j                  |ddddd      }t        |j	                         g d      sJ t        j
                  d	g      }t        j                  |d
did      }t        |j	                         dg      sJ y )N)r*   r*   )r*   r+   rv   OneTwoThreeru   Fr}   )r   r   r   r   r*   r   )r4   r   rW   r   r7   r   )r;   r<   s     r    test_relabel_selfloopz!TestRelabel.test_relabel_selfloop   s    JJ/0QEe @uM1779&=>>>OO45QEe @uM1779&=>>>OOVH%QAU31779qc***rB   c                 h   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<   |j                  dddd       |j                  dddd       ddddd}t        j                  |||      }ddi|d   d   j                         v sJ ddi|d   d   j                         v sJ dd	i|d   d   j                         v sJ |j                         rt        |d   d         dk(  sJ 	 ddi|d   d   j                         v sJ ddi|d   d   j                         v sJ ddi|d   d   j                         v sJ |j                         rt        |d   d         dk(  rJ   y )NTF)r   rd   )r*   rd   )rd   r+   )rd   r,   rw   r   rd   valuerx   r*   ry   r+   r   r,   xekeyr   f	   r   r*   r+   r,   r}   )r4   r   r   add_edgerW   valuesis_directedlen)r;   MGccr<   rY   r=   s         r    +test_relabel_multidigraph_inout_merge_nodesz7TestRelabel.test_relabel_multidigraph_inout_merge_nodes   s   =="//2 	CB# C78&)!Q
7#&)!Q
7#&)!Q
7#&)!Q
7#

1aS
4

1aS
4A!2$$Qb9~1a)9999~1a)9999~1a)9999,-MMOs1Q47|q(BB~1a)9999~1a)9999~1a)9999,-MMOs1Q47|q(BB%C	CrB   c                 j   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
   j                         v sJ ddi|d   d
   j                         v sJ ddi|d   d
   j                         v sJ y )N)r   r*   r   r+   r   r,   r   r   r   rw   r   r*   r   rx   r+   ry   r,   rd   ru   Fr}   r4   r   rW   r   r   s      r    %test_relabel_multigraph_merge_inplacez1TestRelabel.test_relabel_multigraph_merge_inplace   s    MMJK!!Q
7!!Q
7!!Q
7A!$
G%0~1a!1111~1a!1111~1a!1111rB   c                 j   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
   j                         v sJ ddi|d   d
   j                         v sJ ddi|d   d
   j                         v sJ y )Nr   r   r   rw   r   r*   r   rx   r+   ry   r,   rd   ru   Fr}   r4   r   rW   r   r   s      r    'test_relabel_multidigraph_merge_inplacez3TestRelabel.test_relabel_multidigraph_merge_inplace   s    OO45!!Q
7!!Q
7!!Q
7A!$
G%0~1a!1111~1a!1111~1a!1111rB   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<   |j                  dddd       |j                  dddd       ddddd}t        j                  ||d      }ddi|d   d   j	                         v sJ ddi|d   d   j	                         v sJ ddi|d   d   j	                         v sJ t        |d   d         dk(  sJ dd
i|d   d   j	                         v sJ ddi|d   d   j	                         v sJ ddi|d   d   j	                         v sJ t        |d   d         dk(  sJ y )Nr   rw   r   rd   r   rx   r*   ry   r+   r   r,   r   r   r   r   r   r   Tr}   )r4   r   r   rW   r   r   rX   s       r    $test_relabel_multidigraph_inout_copyz0TestRelabel.test_relabel_multidigraph_inout_copy   s   OO<=!!Q
7!!Q
7!!Q
7!!Q
7	

1aS
,	

1aS
,A!*Qd3~1a!1111~1a!1111~1a!11111Q47|q   ~1a!1111~1a!1111~1a!11111Q47|q   rB   c                 j   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
   j                         v sJ ddi|d   d
   j                         v sJ ddi|d   d
   j                         v sJ y Nr   rw   r   r*   r   rx   r+   ry   r,   rd   ru   Tr}   r   rX   s       r    "test_relabel_multigraph_merge_copyz.TestRelabel.test_relabel_multigraph_merge_copy  s    MM23!!Q
7!!Q
7!!Q
7A!$Qd3~1a!1111~1a!1111~1a!1111rB   c                 j   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
   j                         v sJ ddi|d   d
   j                         v sJ ddi|d   d
   j                         v sJ y r   r   rX   s       r    $test_relabel_multidigraph_merge_copyz0TestRelabel.test_relabel_multidigraph_merge_copy  s    OO45!!Q
7!!Q
7!!Q
7A!$Qd3~1a!1111~1a!1111~1a!1111rB   c                 .   t         j                  t         j                  fD ]  }dD ]  }t        j                         }|j                  dddd       |j                  dddd	       |j                  dd
dd       dddd}t        j                  ||d       ddi|d   d   j                         v sJ dd	i|d   d   j                         v sJ ddi|d   d   j                         v sJ d|d   d   v sJ d|d   d   v sJ d|d   d   v rJ   y )Nr   r   r*   Irw   r   r+   IIrx   r,   ry   rd   ru   Fr}   r   )r4   r   r   r   rW   r   )r;   r   r   r<   rY   s        r    &test_relabel_multigraph_nonnumeric_keyz2TestRelabel.test_relabel_multigraph_nonnumeric_key&  s1   =="//2 	'B# 'MMO

1aS
4

1aT
5

1aT
5A!,  G%8~1a)9999~1a)9999~1a)9999AaDG|#|ad1g~%~qtAw&'	'rB   c                    t        j                  d      }ddd}t        j                  ||d      }t        j                  t         j
                        5  t        j                  ||d      }d d d        y # 1 sw Y   y xY w)Nr,   r*   r   r   Tr}   F)r4   rj   rW   rH   rI   NetworkXUnfeasiblerX   s       r    test_relabel_circularz!TestRelabel.test_relabel_circular6  sh    MM!A,Qd3]]2001 	9  G%8A	9 	9 	9s   A88Bc                 "   t        j                  d      }t        |j                               }dddd}t        j                  ||d      }t        |j                               }|D cg c]  }|j                  ||       c}|k(  sJ y c c}w )Nr,   rw   rx   ry   r+   r*   r   Tr}   )r4   rj   r6   r7   rW   getr;   r<   original_orderrY   r=   	new_orderr   s          r    <test_relabel_preserve_node_order_full_mapping_with_copy_truezHTestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_true=  su    MM!aggicc*Qd3O	+9:aAq!:iGGG:s   *Bc                     t        j                  d      }t        |      }dddd}t        j                  ||d      }t        |      }|D cg c]  }|j	                  ||       c}|k(  sJ y c c}w )Nr,   rw   rx   ry   r   Fr}   r4   rj   r6   rW   r   r   s          r    =test_relabel_preserve_node_order_full_mapping_with_copy_falsezITestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_falseE  si    MM!acc*Qe4G	+9:aAq!:iGGG:s   A0c                     t        j                  d      }t        |      }ddd}t        j                  ||d      }t        |      }|D cg c]  }|j	                  ||       c}|k(  sJ y c c}w )Nr,   rw   rx   r*   r   Tr}   r   r   s          r    ?test_relabel_preserve_node_order_partial_mapping_with_copy_truezKTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_trueM  sg    MM!ac"Qd3G	+9:aAq!:iGGG:   A/c                     t        j                  d      }t        |      }ddd}t        j                  ||d      }t        |      }|D cg c]  }|j	                  ||       c}|k7  sJ y c c}w )Nr,   rw   rx   r   Fr}   r   r   s          r    @test_relabel_preserve_node_order_partial_mapping_with_copy_falsezLTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_falseU  sg    MM!ac"Qe4G	+9:aAq!:iGGG:r   N)#__name__
__module____qualname__rA   rF   rM   rZ   rb   rl   rH   markparametrizerq   rs   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   r    r   r      s    ;Hz* Q
J	8:
 [[X0D'EF( G(J0JTT6	.
"'	+C,
2
2!(	2	2' 9HHHHrB   r   )	rH   networkxr4   networkx.generators.classicr   networkx.utilsr   r   r   r   rB   r    <module>r      s      3 3SH SHrB   