o
    h8                     @   s>   d dl Z d dlZd dlmZ d dlmZmZ G dd dZdS )    N)empty_graph)edges_equalnodes_equalc                   @   s
  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
ddg dfdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>S )?TestRelabelc                 C   s  t  }t|d}t| g ksJ t| g ksJ dD ]!}t  }tj|d|d}t| g ks6J t| g ks@J qt  }|g d t|}dd | D }dd | D }t|t|kslJ t|d}d	d | D }d
d | D }t|t|ksJ t	| g dsJ tj|dd}dd | D }dd | D }t|t|ksJ |ddksJ |ddksJ |ddksJ |ddksJ tj|dd}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 tj|ddd}dd | D }dd | D }t|t|ksQJ |ddks[J |ddkseJ |ddksoJ |ddksyJ |jd d dksJ |jd d dksJ |jd d dks|jd d dksJ |jd d dks|jd d dksJ d S d S )Nd   )defaultsortedincreasing degreedecreasing degreeorderingABr   Cr   r   r   Dc                 s       | ]\}}|V  qd S N .0ndr   r   o/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/networkx/tests/test_relabel.py	<genexpr>       zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>c                 s   r   r   r   r   r   r   r   r      r     c                 s   r   r   r   r   r   r   r   r      r   c                 s   r   r   r   r   r   r   r   r      r   )r    i  i  i  r	   c                 s   r   r   r   r   r   r   r   r   $   r   c                 s   r   r   r   r   r   r   r   r   %   r   r            r
   c                 s   r   r   r   r   r   r   r   r   -   r   c                 s   r   r   r   r   r   r   r   r   .   r   labelr   label_attributec                 s   r   r   r   r   r   r   r   r   8   r   c                 s   r   r   r   r   r   r   r   r   9   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degGr   r   r   $test_convert_node_labels_to_integers	   sd   
,4z0TestRelabel.test_convert_node_labels_to_integersc                 C   s   t  }|g d tj|dd}dd | D }dd | D }t|t|ks-J tj|ddd}|jd	 d d
ks@J |jd d dksKJ |jd d dksVJ |jd d dksaJ d S )N)r   r   r   r   r   r   c                 s   r   r   r   r   r   r   r   r   J   r   z8TestRelabel.test_convert_to_integers2.<locals>.<genexpr>c                 s   r   r   r   r   r   r   r   r   K   r   r$   r%   r   r   r!   r   r"   r   r#   r   )r   r,   r'   r(   r-   r   r*   )r.   r/   r0   r2   r3   r   r   r   test_convert_to_integers2F   s   z%TestRelabel.test_convert_to_integers2c                 C   sH   t tj t }tj|dd}W d    d S 1 sw   Y  d S )Nzincreasing ager   )pytestraisesr'   NetworkXErrorGraphr(   r.   r/   r0   r   r   r   test_convert_to_integers_raiseV   s   "z*TestRelabel.test_convert_to_integers_raisec                 C   sJ   t  }|g d ddddd}t ||}t| g ds#J d S Nr   aardvarkbearcatdogr   r   r   r   r=   r>   r?   r@   r'   r   r,   relabel_nodesr   r*   r.   r/   mappingr0   r   r   r   test_relabel_nodes_copy[   s
   z#TestRelabel.test_relabel_nodes_copyc                 C   sD   t  }|g d dd }t ||}t| g ds J d S )Nr   c                 S   s   t | S r   )ord)r   r   r   r   rF   g   s   z8TestRelabel.test_relabel_nodes_function.<locals>.mapping)A   B   C   D   rC   rE   r   r   r   test_relabel_nodes_functionb   s
   z'TestRelabel.test_relabel_nodes_functionc                 C   s.   t d}t |t}t|jg dsJ d S )N   0123)r'   
path_graphrD   strr   r*   r:   r   r   r    test_relabel_nodes_callable_typem   s   
z,TestRelabel.test_relabel_nodes_callable_typenon_mc0123rO   c                 C   sF   t d}tt t || W d   dS 1 sw   Y  dS )zWIf `mapping` is neither a Callable or a Mapping, an exception
        should be raised.rN   N)r'   rT   r6   r7   AttributeErrorrD   )r.   rW   r/   r   r   r   *test_relabel_nodes_non_mapping_or_callabler   s   
"z6TestRelabel.test_relabel_nodes_non_mapping_or_callablec                 C   sB   t g d}ddddd}t ||}t| g dsJ d S r<   )r'   r9   rD   r   r*   rE   r   r   r   test_relabel_nodes_graphz   s   z$TestRelabel.test_relabel_nodes_graphc                 C   sV   t  }|g d |ddg dddd}t ||}t|jg dks)J d S )Nr!   r"   r#   )r!   r#   r"   r#   abc)r^   r_   r`   )r'   r9   add_nodes_fromr,   rD   r)   r*   rE   r   r   r   test_relabel_nodes_orderedgraph   s   z+TestRelabel.test_relabel_nodes_orderedgraphc                 C   sF   t g d}ddddd}t j||dd}t| g d	s!J d S )
Nr   r=   r>   r?   r@   rA   FcopyrB   )r'   DiGraphrD   r   r*   rE   r   r   r   test_relabel_nodes_digraph   s   z&TestRelabel.test_relabel_nodes_digraphc                 C   X   t ddg}ddd}t j||dd}t| ddgsJ t| ddgs*J d S N)r^   r_   r=   r>   Frc   )r=   r>   )r'   
MultiGraphrD   r   r*   r   r+   r.   r/   rF   r   r   r   test_relabel_nodes_multigraph   
   
z)TestRelabel.test_relabel_nodes_multigraphc                 C   rg   rh   )r'   MultiDiGraphrD   r   r*   r   r+   rj   r   r   r   test_relabel_nodes_multidigraph   rl   z+TestRelabel.test_relabel_nodes_multidigraphc                 C   sL   t  }|td ddi}t j||dd}t| ttds$J d S )NrN   r!   Frc   )r'   r9   ra   rangerD   r   r*   r)   rE   r   r   r   #test_relabel_isolated_nodes_to_same   s
   z/TestRelabel.test_relabel_isolated_nodes_to_samec                 C   sf   t g d}ddi}t j||dd}t|j|jsJ | }t j||dd t|j|js1J d S )Nr   r   r=   Trc   F)r'   r9   rD   r   r*   rd   )r.   r/   rF   r0   GGr   r   r   test_relabel_nodes_missing   s   z&TestRelabel.test_relabel_nodes_missingc                 C   s   t  }t j|i dd}|j|jksJ t j|i dd}|j|jks$J d|_t j|i dd}|j|jks7J t j|i dd}|j|jksGJ d S )NTrc   Ffirst)r'   r9   rD   graphnamer:   r   r   r   test_relabel_copy_name   s   z"TestRelabel.test_relabel_copy_namec                 C   s~   t d}t d}t j|dd tdD dd}t ||s!J t d}t j|dd tdD dd}t ||s=J d S )NrN   c                 S   s   i | ]}||d  qS r!   r   r   ir   r   r   
<dictcomp>       z5TestRelabel.test_relabel_toposort.<locals>.<dictcomp>Frc   c                 S   s   i | ]}||d  qS rw   r   rx   r   r   r   rz      r{   )r'   complete_graphrD   ro   is_isomorphic)r.   K5r/   r   r   r   test_relabel_toposort   s   


z!TestRelabel.test_relabel_toposortc                 C   s   t g d}t j|dddddd}t| g dsJ t g d}t j|dddddd}t| g ds<J t d	g}t j|d
didd}t| dgsVJ d S )N)r!   r!   )r!   r"   r]   OneTwoThreer\   Frc   )r   r   r   r   r!   r   )r'   re   rD   r   r*   rm   )r.   r/   r   r   r   test_relabel_selfloop   s   z!TestRelabel.test_relabel_selfloopc                 C   s  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d |jddddd ddddd}t j|||d}ddi|d d  v siJ ddi|d d  v swJ dd	i|d d  v sJ | rt|d d dksJ 	 ddi|d d  v sJ ddi|d d  v sJ ddi|d d  v sJ | rt|d d dksJ 	 q
qd S )NTF)r   rN   )r!   rN   )rN   r"   )rN   r#   r^   r   rN   valuer_   r!   r`   r"   r   r#   xekeyr   f	   r   r!   r"   r#   rc   )r'   ri   rm   add_edgerD   valuesis_directedlen)r.   MGccr/   rF   r0   r   r   r   +test_relabel_multidigraph_inout_merge_nodes   s,   ""z7TestRelabel.test_relabel_multidigraph_inout_merge_nodesc                 C      t 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di|d d
  v sAJ ddi|d d
  v sOJ ddi|d d
  v s]J d S )N)r   r!   r   r"   r   r#   r   r   r   r^   r   r!   r   r_   r"   r`   r#   rN   r\   Frc   r'   ri   rD   r   rj   r   r   r   %test_relabel_multigraph_merge_inplace       z1TestRelabel.test_relabel_multigraph_merge_inplacec                 C   r   )Nr   r   r   r^   r   r!   r   r_   r"   r`   r#   rN   r\   Frc   r'   rm   rD   r   rj   r   r   r   'test_relabel_multidigraph_merge_inplace   r   z3TestRelabel.test_relabel_multidigraph_merge_inplacec                 C   s|  t 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d |jddddd ddddd}t j||dd}ddi|d d  v s^J ddi|d d  v slJ ddi|d d  v szJ t|d d dksJ dd
i|d d  v sJ ddi|d d  v sJ ddi|d d  v sJ t|d d dksJ d S )Nr   r^   r   rN   r   r_   r!   r`   r"   r   r#   r   r   r   r   r   r   Trc   )r'   rm   r   rD   r   r   rE   r   r   r   $test_relabel_multidigraph_inout_copy   s"   z0TestRelabel.test_relabel_multidigraph_inout_copyc                 C      t 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di|d d
  v sAJ ddi|d d
  v sOJ ddi|d d
  v s]J d S Nr   r^   r   r!   r   r_   r"   r`   r#   rN   r\   Trc   r   rE   r   r   r   "test_relabel_multigraph_merge_copy      z.TestRelabel.test_relabel_multigraph_merge_copyc                 C   r   r   r   rE   r   r   r   $test_relabel_multidigraph_merge_copy  r   z0TestRelabel.test_relabel_multidigraph_merge_copyc                 C   s
  t jt jfD ]|}dD ]w}t  }|jddddd |jdddd	d |jdd
ddd dddd}t j||dd ddi|d d  v sGJ dd	i|d d  v sUJ ddi|d d  v scJ d|d d v smJ d|d d v swJ d|d d v sJ q
qd S )Nr   r   r!   Ir^   r   r"   IIr_   r#   r`   rN   r\   Frc   r   )r'   ri   rm   r   rD   r   )r.   r   r   r/   rF   r   r   r   &test_relabel_multigraph_nonnumeric_key&  s    z2TestRelabel.test_relabel_multigraph_nonnumeric_keyc                 C   sf   t d}ddd}t j||dd}tt j t j||dd}W d    d S 1 s,w   Y  d S )Nr#   r!   r   r   Trc   F)r'   rT   rD   r6   r7   NetworkXUnfeasiblerE   r   r   r   test_relabel_circular6  s   

"z!TestRelabel.test_relabel_circularc                    s\   t d}t| }dddd t j| dd}t| } fdd	|D |ks,J d S )
Nr#   r^   r_   r`   r"   r!   r   Trc   c                       g | ]}  ||qS r   getrx   rF   r   r   
<listcomp>C      z\TestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_true.<locals>.<listcomp>)r'   rT   r)   r*   rD   r.   r/   original_orderr0   	new_orderr   r   r   <test_relabel_preserve_node_order_full_mapping_with_copy_true=  s   
zHTestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_truec                    sT   t d}t|}dddd t j| dd}t|} fdd	|D |ks(J d S )
Nr#   r^   r_   r`   r   Frc   c                    r   r   r   rx   r   r   r   r   K  r   z]TestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_false.<locals>.<listcomp>r'   rT   r)   rD   r   r   r   r   =test_relabel_preserve_node_order_full_mapping_with_copy_falseE  s   
zITestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_falsec                    sR   t d}t|}ddd t j| dd}t|} fdd|D |ks'J d S )	Nr#   r^   r_   r!   r   Trc   c                    r   r   r   rx   r   r   r   r   S  r   z_TestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_true.<locals>.<listcomp>r   r   r   r   r   ?test_relabel_preserve_node_order_partial_mapping_with_copy_trueM     

zKTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_truec                    sR   t d}t|}ddd t j| dd}t|} fdd|D |ks'J d S )	Nr#   r^   r_   r   Frc   c                    r   r   r   rx   r   r   r   r   [  r   z`TestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_false.<locals>.<listcomp>r   r   r   r   r   @test_relabel_preserve_node_order_partial_mapping_with_copy_falseU  r   zLTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_falseN)#__name__
__module____qualname__r4   r5   r;   rG   rM   rV   r6   markparametrizerZ   r[   rb   rf   rk   rn   rp   rr   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s>    =
	r   )	r6   networkxr'   networkx.generators.classicr   networkx.utilsr   r   r   r   r   r   r   <module>   s
    