
    fi#                         d dl Z d dlmZmZmZ d dlmZ d dlZd dlZ	d dl
mZmZ d Z G d d          Zd Zd	 Zd
 Zd Zd Z G d d          Z G d d          Zd Z G d d          Z G d d          ZdS )    N)chainislicetee)inf)FORWARDREVERSEc                    t          |           dk    rd S t          j        d          }t          j        d          }t          j                    }| D ]}t          j        ||           t          j        |d          }|j                            |	                                d d          }|j
        d         |z
  t          |           k    sJ d S )	Nr   numpyscipyT)orientedF)tol	hermitian   )lenpytestimportorskipnxGraph	add_cycleincidence_matrixlinalgmatrix_ranktoarrayshape)basisnpspHbincranks          }/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/algorithms/tests/test_cycles.pycheck_independentr#      s    
5zzQ		W	%	%B		W	%	%B


A  
Q

a$
/
/
/C9  DE JJD9Q<$#e**,,,,,,    c                   ~    e Zd Ze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 )
TestCyclesc                     t          j                    }t          j        |g d           t          j        |g d           t          j        |g d           |                    dd           || _        d S )Nr   r         r   r*         r   r            r1   	   )r   r   r   add_edgeG)clsr4   s     r"   setup_classzTestCycles.setup_class   sn    HJJ
Q%%%
Q%%%
Q(((	

1ar$   c                     t          |          t                    k    rdS ||z   t          fdt                    D                       S )NFc              3   :   K   | ]}||z            k    V  d S N ).0ir   lns     r"   	<genexpr>z3TestCycles.is_cyclic_permutation.<locals>.<genexpr>)   s4      771QQY<1$777777r$   )r   anyrange)selfar   r=   r>   s     `@@r"   is_cyclic_permutationz TestCycles.is_cyclic_permutation$   s\    FFq66Q;;5E777777eAhh777777r$   c                 z   | j         }t          j        |d          }t          d |D                       }|g dg dg dgk    sJ t          j        |d          }t          d |D                       }|g dg dg dgk    sJ t          j        |d          }t          d	 |D                       }|g dg dg dgk    sJ t          j        |d
           t          j        |d          }t          d |d d         D                       t          |d                   gz   }|g dg dg dg dgk    sJ d S )Nr   c              3   4   K   | ]}t          |          V  d S r9   sortedr;   cs     r"   r?   z.TestCycles.test_cycle_basis.<locals>.<genexpr>.   (      //q//////r$   r(   r.   r+   r   c              3   4   K   | ]}t          |          V  d S r9   rG   rI   s     r"   r?   z.TestCycles.test_cycle_basis.<locals>.<genexpr>1   rK   r$   r2   c              3   4   K   | ]}t          |          V  d S r9   rG   rI   s     r"   r?   z.TestCycles.test_cycle_basis.<locals>.<genexpr>4   rK   r$   ABCc              3   4   K   | ]}t          |          V  d S r9   rG   rI   s     r"   r?   z.TestCycles.test_cycle_basis.<locals>.<genexpr>9   s(      44q444444r$   )ABC)r4   r   cycle_basisrH   r   rB   r4   cysort_cys       r"   test_cycle_basiszTestCycles.test_cycle_basis+   s   F^Aq!!//B/////<<<,,,GGGGG^Aq!!//B/////<<<,,,GGGGG^Aq!!//B/////<<<,,,GGGGG
Q^Aq!!44BssG44444r"v7GG<<<,,,XXXXXXXr$   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 Nr   )r   raisesr   NetworkXNotImplementedDiGraphrT   rB   r4   rV   s      r"   test_cycle_basis2zTestCycles.test_cycle_basis2<   s    ]2455 	& 	&
A1%%B	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   )AAA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 rZ   )r   r[   r   r\   
MultiGraphrT   r^   s      r"   test_cycle_basis3zTestCycles.test_cycle_basis3A   s    ]2455 	& 	&A1%%B	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r`   c                 F   t          j        d          }|                    t          j        t          dd                               t          j        |          }dddt          j        |          }fdt          j        |          D             }||k    sJ d S )Nr-   r*   r1   r   r   r   r   c                 ,    g | ]}fd |D             S )c                 <    g | ]}                     ||          S r:   )get)r;   r>   perms     r"   
<listcomp>zBTestCycles.test_cycle_basis_ordered.<locals>.<listcomp>.<listcomp>N   s%    ,,,1A,,,r$   r:   )r;   cycri   s     r"   rj   z7TestCycles.test_cycle_basis_ordered.<locals>.<listcomp>N   s.    JJJ,,,,,,,JJJr$   )r   cycle_graphupdaterA   rT   relabel_nodes)rB   r4   cbGr   cbHri   s        @r"   test_cycle_basis_orderedz#TestCycles.test_cycle_basis_orderedF   s    N1	a,,---nQ||Q%%JJJJq8I8IJJJczzzzzzr$   c                    t          j                    }t          j        |g d           t          j        |g d           t          j        |          }t	          d |D                       }|dgg dg dg dgk    sJ dS )	z-Tests the function for graphs with self loopsr(   )r   r   r/   r)   c              3   4   K   | ]}t          |          V  d S r9   rG   rI   s     r"   r?   z8TestCycles.test_cycle_basis_self_loop.<locals>.<genexpr>W   rK   r$   r   r   r   r)   )r   r)   r*   )r   r)   r/   N)r   r   r   rT   rH   rU   s       r"   test_cycle_basis_self_loopz%TestCycles.test_cycle_basis_self_loopQ   s    HJJ
Q%%%
Q%%%^A//B/////A3			999iii@@@@@@@r$   c                 $    g d}t          j        |          }t          t          j        |                    }dgg dddgddgdgg}t	          |          t	          |          k    sJ |D ] t           fd|D                       sJ !d S )N)r   r   r   r   r   r)   r   r)   r)   r   r)   r   r)   r)   r   rt   r)   r   c              3   D   K   | ]}                     |          V  d S r9   rD   r;   rcrJ   rB   s     r"   r?   z0TestCycles.test_simple_cycles.<locals>.<genexpr>a   3      FFRt11!R88FFFFFFr$   )r   r]   rH   simple_cyclesr   r@   )rB   edgesr4   cccarJ   s   `    @r"   test_simple_cycleszTestCycles.test_simple_cyclesZ   s    HHHJuB$Q''((c999q!fq!fqc22ww#b''!!!! 	G 	GAFFFFF2FFFFFFFFF	G 	Gr$   c                     t          j        dg          }t          t          j        |                    dggk    sJ d S )Nrw   r   )r   r   listr   rB   r4   s     r"   test_simple_cycles_singletonz'TestCycles.test_simple_cycles_singletonc   sA    HfXB$Q''((aSE111111r$   c                     t          j                    }t          j        |ddg           t          t          j        |                    }t          |          dk    sJ d S )NrC   r   )r   r]   r   r   r   r   rB   r4   rJ   s      r"   test_unsortablezTestCycles.test_unsortableg   sT     JLL
Qa!!!!!$$%%1vv{{{{{{r$   c                     t          j                    }t          j        |g d           t          t          j        |                    t                    dk    sJ                      d         g d          sJ t          j        |g d           t          t          j        |                    }t          |          dk    sJ g dg dg}|D ] t           fd|D                       sJ !d S )N)r   r)   r*   r   r   )
         r)   c              3   D   K   | ]}                     |          V  d S r9   r   r   s     r"   r?   z6TestCycles.test_simple_cycles_small.<locals>.<genexpr>z   r   r$   )r   r]   r   rH   r   r   rD   r@   )rB   r4   r   r   rJ   s   `   @r"   test_simple_cycles_smallz#TestCycles.test_simple_cycles_smallo   s   JLL
Q			"""2#A&&''1vv{{{{))!A$			:::::
Q%%%B$Q''((2ww!||||ii& 	G 	GAFFFFF2FFFFFFFFF	G 	Gr$   c                 z    t          j                    }t          t          j        |                    g k    sJ d S r9   )r   r]   r   r   r   s     r"   test_simple_cycles_emptyz#TestCycles.test_simple_cycles_empty|   s7    JLLB$Q''((B......r$   c                    t          j                    }t          d|dz             D ]1}|                    d|           |                    ||dz              2|                    d|z  dz   d           t          |dz   d|z  dz             D ]7}|                    |d|z  dz              |                    ||dz              8|                    d|z  dz   |dz              t          d|z  dz   d|z  dz             D ]:}|                    d|z  dz   |           |                    |d|z  dz              ;|                    d|z  dz   d|z  dz              |S )Nr)   r   r*   )r   r]   rA   r3   )rB   kr4   r>   s       r"   worst_case_graphzTestCycles.worst_case_graph   s~    JLLq!a% 	! 	!AJJq!JJq!a%    	

1q519a   q1ua!eai(( 	! 	!AJJq!a%!)$$$JJq!a%    	

1q519a!e$$$q1uqy!a%!),, 	% 	%AJJq1uqy!$$$JJq!a%!)$$$$	

1q519a!eai(((r$   c                     t          dd          D ]P}|                     |          }t          t          t	          j        |                              }|d|z  k    sJ Qd S )Nr*   r   )rA   r   r   r   r   r   )rB   r   r4   r=   s       r"   test_worst_case_graphz TestCycles.test_worst_case_graph   si    q" 	 	A%%a((AD)!,,--..AA:::::	 	r$   c                     t          dd          D ]}                     |          }t          t          j        |                    }t          t          j        |                    }t          |          t          |          k    sJ |D ] t           fd|D                       sJ !|D ] t           fd|D                       sJ !d S )Nr)   r   c              3   D   K   | ]}                     |          V  d S r9   r   )r;   rrJ   rB   s     r"   r?   z;TestCycles.test_recursive_simple_and_not.<locals>.<genexpr>   s3      II455a;;IIIIIIr$   c              3   D   K   | ]}                     |          V  d S r9   r   r;   rJ   r   rB   s     r"   r?   z;TestCycles.test_recursive_simple_and_not.<locals>.<genexpr>   s3      II455b!<<IIIIIIr$   )rA   r   rH   r   r   recursive_simple_cyclesr   r@   )rB   r   r4   r   rccrJ   r   s   `    @@r"   test_recursive_simple_and_notz(TestCycles.test_recursive_simple_and_not   s   q" 	J 	JA%%a((A(++,,B3A6677Cr77c#hh&&&& J JIIIIISIIIIIIIII J JIIIIIbIIIIIIIIIJ	J 	Jr$   c                     t          j                    }g d}|                    |           t          t          j        |                    }t          |          dk    sJ t          t          j        |                    }t          |          t          |          k    sJ |D ] t           fd|D                       sJ !|D ] t           fd|D                       sJ !d S )N)ry   )r   r*   re   r   r*   r|   )r)   r,   r*   r)   r*   r,   )r,   r   )r,   r   r,   r-   r-   r   r-   r   )r-   r)   )r-   r*      c              3   D   K   | ]}                     |          V  d S r9   r   r   s     r"   r?   zATestCycles.test_simple_graph_with_reported_bug.<locals>.<genexpr>   s3      GGRt11!R88GGGGGGr$   c              3   D   K   | ]}                     |          V  d S r9   r   r   s     r"   r?   zATestCycles.test_simple_graph_with_reported_bug.<locals>.<genexpr>   s3      EEQt11"a88EEEEEEr$   )r   r]   add_edges_fromrH   r   r   r   r@   )rB   r4   r   r   r   rJ   r   s   `    @@r"   #test_simple_graph_with_reported_bugz.TestCycles.test_simple_graph_with_reported_bug   s#   JLL
 
 
" 	
B$Q''((2ww"}}}}R/22332ww#c(("""" 	H 	HAGGGGG3GGGGGGGGG 	F 	FBEEEEE"EEEEEEEEE	F 	Fr$   N)__name__
__module____qualname__classmethodr6   rD   rX   r_   rc   rq   ru   r   r   r   r   r   r   r   r   r   r:   r$   r"   r&   r&      s"         [8 8 8Y Y Y"& & &
& & &
	 	 	A A AG G G2 2 2  G G G/ / /  $  	J 	J 	JF F F F Fr$   r&   c                 f    t          |           \  }}t          |d            t          ||          S r9   )r   nextzip)iterablerC   r   s      r"   pairwiser      s,    x==DAqDMMMq!99r$   c           	      X    t          t          | t          | d                              S Nr   )r   r   r   rJ   s    r"   cycle_edgesr      s"    E!VAq\\**+++r$   c                 :    t          t          |                     S r9   )	frozensetr   r   s    r"   directed_cycle_edgesetr      s    [^^$$$r$   c                     t          |           dk    rt          t          |                     S t          t          t          t          |                               S r   r   r   r   mapr   s    r"   undirected_cycle_edgesetr      sC    
1vv{{Q(((SKNN33444r$   c                     t          |           dk    rt          t          |                     S t          t          t          t          |                               S )Nr)   r   r   s    r"   multigraph_cycle_edgesetr      sC    
1vv{{Q(((YA77888r$   c                       e Zd Zed             Zed             Zed             Zd Z	 	 	 ddZ	 	 	 d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 )TestCycleEnumerationc                 *    t          j        |           S r9   )r   complete_graphr>   s    r"   KzTestCycleEnumeration.K   s     ###r$   c                 N    t          j        |                                           S r9   )r   r   to_directedr   s    r"   DzTestCycleEnumeration.D   s     ##//111r$   c                 |    |                                  rt          S |                                 rt          S t          S r9   )is_directedr   is_multigraphr   r   )gs    r"   edgeset_functionz%TestCycleEnumeration.edgeset_function   s6    ==?? 	,))__ 	,++++r$   c	                    |(t          |          |k    rt          d| d|           |dk    r*||v rt          d| d          t          |          ||<   n-||v r|                    |           nt          d| d          t	          fd|D                       st          | d| d	          |rMt                              |          j                  t          |          k    rt          | d
| d          d S d S )Ncomputed cycle z exceeds length bound computedz has already been found!zexpected cycle z was not computedc              3   ,   K   | ]} j         | V  d S r9   has_edge)r;   er   s     r"   r?   z3TestCycleEnumeration.check_cycle.<locals>.<genexpr>  s+      ..a:1:q>......r$   z claimed cycle z is not a cycle of gz cycle z is not chordless)r   RuntimeErrortuplepopallsubgraphr   )	rB   r   rJ   escachesource
original_clength_bound	chordlesss	    `       r"   check_cyclez TestCycleEnumeration.check_cycle   si   #A(=(=R*RRLRR   ZU{{"JjJJJ   "*--b		U{{		""#RZ#R#R#RSSS....2..... 	JJ*JJJ    	PQZZ]]011CFF::&NNNNNOOO	P 	P::r$   NFc                    ||rt           j        nt           j        }t          t	          t          |                              }t          j        d          }|                    |           t          t          ||                    t          t          ||                    t          j        |d          }|                     |          }	i }
|||
d<   i } ||fi |
D ]7}fd|D             } |	|          }|                     ||||d|||           8t          |t                    r7t          |          |k    r"t!          d| dt          |                     d S |D ]7}fd	|D             } |	|          }|                     ||||d
|||           8t          |          r)|                                D ]}t!          d| d          d S d S )N*   T)copyr   c                      g | ]
}|         S r:   r:   )r;   xunlabels     r"   rj   z>TestCycleEnumeration.check_cycle_algorithm.<locals>.<listcomp>&  s    000'!*000r$   r   z	expected z cycles, got c                      g | ]
}|         S r:   r:   )r;   r   labels     r"   rj   z>TestCycleEnumeration.check_cycle_algorithm.<locals>.<listcomp>3  s    ...aq...r$   expectedr   z, is valid but not in the expected cycle set!)r   chordless_cyclesr   r   rA   r   randomRandomshuffledictr   rn   r   r   
isinstanceintr   values)rB   r   expected_cyclesr   r   	algorithmrelabelrnghedgesetparamscycle_cacherJ   r   r   r   r   s                  @@r"   check_cycle_algorithmz*TestCycleEnumeration.check_cycle_algorithm  s_    /8N++b>NI uSVV}}%%mBGSG__%%s7A''QD111''**#%1F>"1'''' 	 	A0000a000JB1b+z:|Y    os++ 	;?22"PPPc+>N>NPP   F) 	 	J....:...AB1b+z:|Y    { 	 ''))  "UaUUU  	 	 r$   c                 f    t          ||          D ]\  }}|                     |||||            d S )N)r   r   r   )r   r   )rB   g_familycycle_countsr   r   r   r   
num_cycless           r"   (check_cycle_enumeration_integer_sequencez=TestCycleEnumeration.check_cycle_enumeration_integer_sequence?  s\     !<88 	 	MAz&&)## '    	 	r$   c                    t          j                    }t          j        |t          d                     t          j        |t          d          d d d                    |                    dd           g d}|                     ||d           |                     ||dd           d	 |D             }|                     ||dd
           d S )Nr-   rP   r   ))r   rz   r)   r*   r   Tr   r)   r   r   c                 8    g | ]}t          |          d k     |S r)   r   rI   s     r"   rj   zMTestCycleEnumeration.test_directed_chordless_cycle_digons.<locals>.<listcomp>Z  s#    DDDQ!1r$   r   )r   r]   r   rA   r3   r   rB   r   r   s      r"   $test_directed_chordless_cycle_digonsz9TestCycleEnumeration.test_directed_chordless_cycle_digonsP  s    JLL
Qa!!!
Qa2'''	

1a888""1o"FFF""1oTU"VVVDDoDDD""1oTU"VVVVVr$   c                     t          j        g d          }dgdgg}|                     ||d           |                    g d           dgdgddgg}|                     ||d           d S )	N))r   r   r}   rz   rz   r   r)   Tr  )r  r   r   r   r*   r,   )r   rb   r   r   )rB   r4   r   s      r"   +test_chordless_cycles_multigraph_self_loopsz@TestCycleEnumeration.test_chordless_cycles_multigraph_self_loops]  s    M:::;;3*""1o"FFF	999:::3aV,""1o"FFFFFr$   c                    t          j        g d          }ddg}|                     ||d           t          j                    }t          j        |t	          d                     t          j        |t	          dd                     |                    d	d
           g d}|                     ||d           |                    d
d	           g d}|                     ||d           dg}|                     ||dd           |                    d	d
           ddg}|                     ||d           t          j        d t	          d          D                       }g }|                     ||d           d S )N)rz   r  r   r   r   r   ry   )r   r)   r*   r,   r-   )r   r)   r*   r,   r-   Tr  r-   r,   r2   r0   r*   )r   r   r)   r*   r,   )r*   r,   r-   r/   r0   r,   r-   r/   r0   r1   )r  r*   r0   r  r  r	  r  r  c              3   B   K   | ]}t          |          D ]}||fV  	d S r9   rA   )r;   r<   js      r"   r?   zPTestCycleEnumeration.test_directed_chordless_cycle_undirected.<locals>.<genexpr>}  s9      CC!%((CCQ1vCCCCCCCr$   r   )r   r]   r   r   rA   r3   remove_edger  s      r"   (test_directed_chordless_cycle_undirectedz=TestCycleEnumeration.test_directed_chordless_cycle_undirectedf  s   JOOOPP*O<""1o"FFFJLL
Qa!!!
Qa$$$	

1aMMM""1o"FFF	

1aDDD""1o"FFF!(""1oTU"VVV	a*O<""1o"FFFJCCuRyyCCCCC""1o"FFFFFr$   c                    t          j                    }t          j        |t          d                     t          j        |t          dd                     g t          d          g t          dd          g}|                     ||d           |                     |d |D             dd           |                    dd	           |                    g t          d	d
                     |                     ||d           |                     |d |D             dd           |                    d	d           dd	g|d<   |                     ||d           |                     |d |D             dd           |                                 |                    dd	           |                     ||d           |                     |d |D             dd           d S )Nr-   r,      Tr  c                 8    g | ]}t          |          d k    |S r-   r  rI   s     r"   rj   zGTestCycleEnumeration.test_chordless_cycles_directed.<locals>.<listcomp>  #    333as1vv{{{{{r$   r   r   r0   r*   r1   c                 8    g | ]}t          |          d k    |S r  r  rI   s     r"   rj   zGTestCycleEnumeration.test_chordless_cycles_directed.<locals>.<listcomp>  r  r$   rP   c                 8    g | ]}t          |          d k    |S r  r  rI   s     r"   rj   zGTestCycleEnumeration.test_chordless_cycles_directed.<locals>.<listcomp>  r  r$   c                 8    g | ]}t          |          d k    |S r  r  rI   s     r"   rj   zGTestCycleEnumeration.test_chordless_cycles_directed.<locals>.<listcomp>  r  r$   )	r   r]   r   rA   r   r3   appendr   r  rB   r4   r   s      r"   test_chordless_cycles_directedz3TestCycleEnumeration.test_chordless_cycles_directed  s#   JLL
Qa!!!
Qa%%%eAhhK5B<<1""1h$"???""338333!t 	# 	
 	
 	
 	


1a%1++'''""1h$"???""338333!t 	# 	
 	
 	
 	


1a1v""1h$"???""338333!t 	# 	
 	
 	
 		a""1h$"???""338333!t 	# 	
 	
 	
 	
 	
r$   c                      fdt          d          D             }d t          d          D             }                     ||d           d t          d          D             }                     ||d           d S )	Nc                 :    g | ]}                     |          S r:   r   r;   r>   rB   s     r"   rj   zOTestCycleEnumeration.test_directed_chordless_cycle_diclique.<locals>.<listcomp>  #    111!DFF1II111r$   r   c                 $    g | ]}||z  |z
  d z  S r  r:   r;   r>   s     r"   rj   zOTestCycleEnumeration.test_directed_chordless_cycle_diclique.<locals>.<listcomp>  %    ???AEAI!+???r$   Tr  c                 $    g | ]}||z  |z
  d z  S r  r:   r,  s     r"   rj   zOTestCycleEnumeration.test_directed_chordless_cycle_diclique.<locals>.<listcomp>  r-  r$   r)   r   rA   r  )rB   r  r   s   `  r"   &test_directed_chordless_cycle_dicliquez;TestCycleEnumeration.test_directed_chordless_cycle_diclique  s    1111uRyy111??U2YY???55o 	6 	
 	
 	
 @?U2YY???55oA 	6 	
 	
 	
 	
 	
r$   c                    t          j        d t          d          D                       }t          j        |t          d                     d t          d          D             }|                     ||d           |                     ||d           t          j        |          }|                    d t          d	dd
          D                        d t          ddd
          D             }|                     ||d           d S )Nc              3      K   | ]}||fV  	d S r9   r:   r;   r<   s     r"   r?   zMTestCycleEnumeration.test_directed_chordless_loop_blockade.<locals>.<genexpr>  s&      11!1v111111r$   r   c                     g | ]}|fS r:   r:   r4  s     r"   rj   zNTestCycleEnumeration.test_directed_chordless_loop_blockade.<locals>.<listcomp>  s    333AA4333r$   Tr  r   r/  c              3      K   | ]}||fV  	d S r9   r:   r4  s     r"   r?   zMTestCycleEnumeration.test_directed_chordless_loop_blockade.<locals>.<genexpr>  s&      99A!Q999999r$   r   r)   c                     g | ]}|fS r:   r:   r4  s     r"   rj   zNTestCycleEnumeration.test_directed_chordless_loop_blockade.<locals>.<listcomp>  s    999AA4999r$   )r   r]   rA   r   r   MultiDiGraphr   r  s      r"   %test_directed_chordless_loop_blockadez:TestCycleEnumeration.test_directed_chordless_loop_blockade  s   J11uRyy11111
Qb		"""33r333""1o"FFF""1oA"FFFOA	99q"a99999999q"a999""1o"FFFFFr$   c                      fdt          dd          D             }g d}                     ||d           d } fdt          dd          D             }d	 |D             }                     ||d|
           d }g d} fdt          dd          D             }                     ||d|
           d |D             } fdt          dd          D             }                     ||d|
           g d} fdt          dd          D             }                     ||           g d} fdt          d          D             }                     ||           d S )Nc                 :    g | ]}                     |          S r:   r   r)  s     r"   rj   zTTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.<listcomp>  #    444!DFF1II444r$   r)   r  )r   r   r,   r   r   #   8   T   x         r*   r/  c              ;   N   K   d t          j        | fi |D             E d {V  d S )Nc              3   @   K   | ]}t          |          d k    |V  dS r*   Nr  rI   s     r"   r?   zfTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.triangles.<locals>.<genexpr>  ,      PPaCFFaKKKKKKPPr$   r   r   r   kwargss     r"   	triangleszSTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.triangles  E      PP2#3A#@#@#@#@PPPPPPPPPPPPr$   c                 :    g | ]}                     |          S r:   r(  r)  s     r"   rj   zTTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.<listcomp>  r=  r$   c                     g | ]}d |z  S r  r:   r;   r   s     r"   rj   zTTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.<listcomp>      ,,,aAE,,,r$   )r   r   c              ;   N   K   d t          j        | fi |D             E d {V  d S )Nc              3   @   K   | ]}t          |          d k    |V  dS )r,   Nr  rI   s     r"   r?   zhTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.four_cycles.<locals>.<genexpr>  rG  r$   rH  rI  s     r"   four_cycleszUTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.four_cycles  rL  r$   )r   r   r   r*      -   i      iz  iv  i  c                 :    g | ]}                     |          S r:   r<  r)  s     r"   rj   zTTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.<listcomp>  r=  r$   r   r,   c                     g | ]}d |z  S r  r:   rO  s     r"   rj   zTTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.<listcomp>  rP  r$   c                 :    g | ]}                     |          S r:   r(  r)  s     r"   rj   zTTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.<listcomp>  r=  r$   rT  )r   r   r-   r   r@  i  i=	  c                 :    g | ]}                     |          S r:   r(  r)  s     r"   rj   zTTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.<listcomp>  s#    333!DFF1II333r$   r1   )r   r   r   r   r0   %      i  c                 :    g | ]}                     |          S r:   r<  r)  s     r"   rj   zTTestCycleEnumeration.test_simple_cycles_notable_clique_sequences.<locals>.<listcomp>  s#    000!DFF1II000r$   r0  )rB   r  r   rK  rS  s   `    r"   +test_simple_cycles_notable_clique_sequencesz@TestCycleEnumeration.test_simple_cycles_notable_clique_sequences  s   4444uQ||444???55hQ 	6 	
 	
 	
	Q 	Q 	Q 5444uQ||444,,8,,,55hQ) 	6 	
 	
 	
	Q 	Q 	Q A@@4444uQ||44455hQ+ 	6 	
 	
 	

 -,8,,,4444uQ||44455hQ+ 	6 	
 	
 	

 0//3333uQ{{33355hIII 2110000uQxx00055hIIIIIr$   c                 2   t          j                    }t          j        |t          d                     g t          d          g}|                     ||d           t          j        |t          d                     g t          t          d                    }|                     ||d           t          j        |t          d                     g }|                     ||d           t          j                    }t          j        |t          d                     g t          d          g}|                     ||d           t          j        |t          d                     |                     |g d           t          j        |t          d                     |                     |g d           t          j                    }t          j        |t          d                     t          j        |t          d          d d d                    g t          t          d                    }|                     ||d           t          j        |t          d                     |                     |g d           d S )Nr-   Tr  rP   )r   rb   r   rA   r   r   r8  )rB   r   r   s      r"   1test_directed_chordless_cycle_parallel_multiedgeszFTestCycleEnumeration.test_directed_chordless_cycle_parallel_multiedges  s>   MOO
Qa!!!eAhhK=""1h$"???
Qa!!!+[q**+""1h$"???
Qa!!!""1h$"???O
Qa!!!eAhhK=""1h$"???
Qa!!!""1bD"999
Qa!!!""1bD"999O
Qa!!!
Qa2'''+[q**+""1h$"???
Qa!!!""1bD"99999r$   c                    t          j                    }t          j        |t          d                     t          j        |t          dd                     g t          d          g t          dd          g}|                     ||d           |                     |d |D             dd           |                    dd	           |                    g t          d	d
                     |                    g d           |                     ||d           |                     |d |D             dd           d S )Nr-   r,   r  Tr  c                 8    g | ]}t          |          d k    |S r  r  rI   s     r"   rj   zDTestCycleEnumeration.test_chordless_cycles_graph.<locals>.<listcomp>  r  r$   r  r0   r*   r1   )r,   r*   r0   r1   r2   r      c                 8    g | ]}t          |          d k    |S r  r  rI   s     r"   rj   zDTestCycleEnumeration.test_chordless_cycles_graph.<locals>.<listcomp>  r  r$   )r   r   r   rA   r   r3   r#  r$  s      r"   test_chordless_cycles_graphz0TestCycleEnumeration.test_chordless_cycles_graph  sV   HJJ
Qa!!!
Qa%%%eAhhK5B<<1""1h$"???""338333!t 	# 	
 	
 	
 	


1a%1++'''///000""1h$"???""338333!t 	# 	
 	
 	
 	
 	
r$   c                 ~   ddz  dk    sJ t          j                    }t                    D ]?}|dz  s|                    ||dz   z             |                    ||dz   z             @g t          dd          gfdt          dd          D             z   }|                     ||d           |                     |d |D             d	d
           ddz  dk    sJ t          j                    }t                    D ]?}|                    ||dz   z             |dz  s|                    |dz   z  |           @g t          dz
  dd          gfdt          dd          D             z   }|                     ||d           |                     |d |D             d	d
           d S )Ni  r)   r   r   c                 N    g | ]!}fd t          ||dz             D             "S )c                     g | ]}|z  S r:   r:   r;   r   r>   s     r"   rj   z[TestCycleEnumeration.test_chordless_cycles_giant_hamiltonian.<locals>.<listcomp>.<listcomp>-      ,,,qQU,,,r$   r*   r  r;   r<   r>   s     r"   rj   zPTestCycleEnumeration.test_chordless_cycles_giant_hamiltonian.<locals>.<listcomp>,  sG     *
 *
 *
12,,,,E!QUOO,,,*
 *
 *
r$   Tr  c                 8    g | ]}t          |          d k    |S r*   r  rI   s     r"   rj   zPTestCycleEnumeration.test_chordless_cycles_giant_hamiltonian.<locals>.<listcomp>1  r  r$   r*   r  d   c                 N    g | ]!}fd t          ||dz             D             "S )c                     g | ]}|z  S r:   r:   rj  s     r"   rj   z[TestCycleEnumeration.test_chordless_cycles_giant_hamiltonian.<locals>.<listcomp>.<listcomp>F  rk  r$   r*   r  rl  s     r"   rj   zPTestCycleEnumeration.test_chordless_cycles_giant_hamiltonian.<locals>.<listcomp>E  sG     0
 0
 0
12,,,,E!QUOO,,,0
 0
 0
r$   c                 8    g | ]}t          |          d k    |S rn  r  rI   s     r"   rj   zPTestCycleEnumeration.test_chordless_cycles_giant_hamiltonian.<locals>.<listcomp>J  r  r$   )r   r   rA   r3   r   r]   )rB   r4   vr   r>   s       @r"   'test_chordless_cycles_giant_hamiltonianz<TestCycleEnumeration.test_chordless_cycles_giant_hamiltonian  sK    1uzzzzHJJq 	' 	'Aq5 +

1q1uk***JJq1q5A+&&&&%eAq!nn%& *
 *
 *
 *
6;Aq!nn*
 *
 *
 
 	""1h$"???""338333!t 	# 	
 	
 	
 1uzzzzJLLq 	+ 	+AJJq1q5A+&&&q5 +

AEQ;***+eAE2r**+, 0
 0
 0
 0
6;Aq!nn0
 0
 0
 
 	""1h$"???""338333!t 	# 	
 	
 	
 	
 	
r$   c                 H   d}t          j        d t          |          D                       }|                     |g            |                     |g d           t          |dz             D ]3}|                     |g |           |                     |g |d           4d S )Nr   c              3   B   K   | ]}t          |          D ]}||fV  	d S r9   r  )r;   r   ys      r"   r?   zMTestCycleEnumeration.test_simple_cycles_acyclic_tournament.<locals>.<genexpr>O  s9      BB!qBBA1vBBBBBBBr$   Tr  r   r/  r  )r   r]   rA   r   )rB   r>   r4   r   s       r"   %test_simple_cycles_acyclic_tournamentz:TestCycleEnumeration.test_simple_cycles_acyclic_tournamentM  s    JBBuQxxBBBBB""1b)))""1bD"999q1u 	N 	NA&&q"1&===&&q"1&MMMM	N 	Nr$   c                    t          j        d          }t          t          d                    }|                     ||g           |                    dd           t          j        |g d           |                     ||g           |                    t          j        t          dd                               t          t          dd                    }|                     |||g           |                    t          j        t          dd                               t          t          dd                    }h d}|                     ||           t          |          dk    sJ t          j        d          }|                    t          j        g d	          j	                   d
}|                     ||           d S )Nr1   r,   rP   )r*   rp     r  >   r   r   r)   r*   r,   r-   r/   r0   r,   r-   r/   r0   r1   r2   r   rd  r1   r2   r   rd  r        rT  
r   r   r)   r*   r,   rd  r   r2   r1   r0   
r,   r-   r/   r0   r1   rT  r  r  r  rd  r   r   r)   r*   r,   rd  r  r  r  rT  r1   r0   r/   )r  r   r  r)   r  r,   rT  r1   r   )
r   rl   r   rA   r   r3   add_pathrm   r   r   )rB   testGcyc1cyc2cyc3r   s         r"   test_simple_cycles_graphz-TestCycleEnumeration.test_simple_cycles_graphW  s   q!!U1XX""54&111q"
E???+++""54&111R^E!RLL11222U1b\\""""54,777R^E!RLL11222U1b\\""
 
 
 	""5(3338}}...., r""R^$A$A$ABBHIII"""5(33333r$   c           	      l   t          j                    }g }t          d          D ]f}t          j        |t          |                     |                    |           t          |          D ]\  }}|                     |||           gt          j                    }d}g }t          d          D ]}|                    |dk     r|n|dz
             |dk    r)t          j        |t          |||z                        ||z  }t          |          D ]\  }}|                     |||           d S )Nr   r/  r   r)   r   )r   r]   rA   r   r#  	enumerater   r   )rB   dr   r>   r   r   r   tops           r"   test_simple_cycles_boundedz/TestCycleEnumeration.test_simple_cycles_bounded  sh    JLLr 	A 	AALE!HH%%%OOA!(++ A A1**1aa*@@@@A
 HJJr 	A 	AAOOQAAAE222AvvLE#sQw//0001HC!(++ A A1**1aa*@@@@A	A 	Ar$   c                    t          j        d          }t          j        dt           j                  }t          t          j        |d                    g k    sJ t          t          j        |d                    g k    sJ t          t          j        |d                    g k    sJ t          t          j        |d                    g k    sJ d S )Nr,   )create_usingr   r/  )r   rl   r]   r   r   r   )rB   r4   DGs      r"   %test_simple_cycles_bound_corner_casesz:TestCycleEnumeration.test_simple_cycles_bound_corner_cases  s    N1^ABJ777B$QQ77788B>>>>B$Ra88899R????B':::;;rAAAAB';;;<<BBBBBBr$   c                    t          j        t                    5  t          j                    }t          j        |d          D ]}J 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          j                    }t          j        |d          D ]}J 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          j                    }t          j        |d          D ]}J 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          j                    }t          j        |d          D ]}J 	 d d d            d S # 1 swxY w Y   d S )NrP   )r   r[   
ValueErrorr   r]   r   r   r   r   s      r"   test_simple_cycles_bound_errorz3TestCycleEnumeration.test_simple_cycles_bound_error  so   ]:&& 	 	
A%a,,  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]:&& 	 	

A%a,,  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]:&& 	 	

A(B//  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]:&& 	 	
A(B//  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sG   -AAA8-B22B69B6-DDD4-E//E36E3c                      fdt          dd          D             }g d}                     ||d           d t          d          D             } fdt          d          D             }                     ||d           d S )	Nc                 :    g | ]}                     |          S r:   r<  r)  s     r"   rj   zETestCycleEnumeration.test_chordless_cycles_clique.<locals>.<listcomp>  r=  r$   r)   rT  )r   r   r,   r   r   r>  r?  r@  rA  rB  rC  i  il  Tr  c                 $    g | ]}||z  |z
  d z  S r  r:   r,  s     r"   rj   zETestCycleEnumeration.test_chordless_cycles_clique.<locals>.<listcomp>  s%    888QUQY1$888r$   c                 :    g | ]}                     |          S r:   r(  r)  s     r"   rj   zETestCycleEnumeration.test_chordless_cycles_clique.<locals>.<listcomp>  r*  r$   r0  )rB   r  r   s   `  r"   test_chordless_cycles_cliquez1TestCycleEnumeration.test_chordless_cycles_clique  s    4444uQ||444III55h$ 	6 	
 	
 	

 98eBii8881111uRyy11155h$ 	6 	
 	
 	
 	
 	
r$   )NFN)r   r   r   staticmethodr   r   r   r   r   r  r  r  r  r%  r1  r9  r_  ra  rf  ru  ry  r  r  r  r  r  r:   r$   r"   r   r      s       $ $ \$ 2 2 \2 , , \,P P P: 5 5 5 5v    "W W WG G GG G G6
 
 
>

 

 

G G G+J +J +JZ#: #: #:J
 
 
$.
 .
 .
`N N N14 14 14fA A A4C C C  *
 
 
 
 
r$   r   c                       e Zd Ze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 )TestFindCyclec                 *    g d| _         g d| _        d S )Nr(   ))rP   r   rx   re   re   r|   r*   r   )nodesr   )r5   s    r"   r6   zTestFindCycle.setup_class  s     LL	EEE			r$   c                     t          j        | j                  }t          j        t           j        j        t           j        || j                   d S r9   )	r   r   r   r   r[   	exceptionNetworkXNoCycle
find_cycler  r   s     r"   test_graph_nocyclez TestFindCycle.test_graph_nocycle  s8    HTZ  bl2BM1djQQQQQr$   c                     t          j        | j                  }|                    dd           t	          t          j        || j                            }g d}||k    sJ d S )Nr)   r   rx   rz   r{   r   r   r   r3   r   r  r  rB   r4   r   x_s       r"   test_graph_cyclezTestFindCycle.test_graph_cycle  s^    HTZ  	

1aq$*--..%%%Bwwwwwwr$   c                     t          j        | j                  }|                    dd           t	          t          j        || j        d                     }g d}||k    sJ d S )Nr)   r   orientationr  r  r  s       r"   test_graph_orientation_nonez)TestFindCycle.test_graph_orientation_none  sc    HTZ  	

1aq$*$???@@%%%Bwwwwwwr$   c                     t          j        | j                  }|                    dd           t	          t          j        || j        d                    }ddt          fddt          fddt          fg}||k    sJ d S )Nr)   r   originalr  r   )r   r   r   r3   r   r  r  r   r  s       r"   test_graph_orientation_originalz-TestFindCycle.test_graph_orientation_original  sv    HTZ  	

1aq$**EEEFF!Wo1gAw@Bwwwwwwr$   c                     t          j        | j                  }t          t          j        || j                            }ddg}||k    sJ d S )Nrx   re   r   r]   r   r   r  r  r  s       r"   test_digraphzTestFindCycle.test_digraph  sI    Jtz""q$*--..fBwwwwwwr$   c                     t          j        | j                  }t          t          j        || j        d                     }ddg}||k    sJ d S )Nr  rx   re   r  r  s       r"   test_digraph_orientation_nonez+TestFindCycle.test_digraph_orientation_none  sN    Jtz""q$*$???@@fBwwwwwwr$   c                     t          j        | j                  }t          t          j        || j        d                    }ddt          fddt          fg}||k    sJ d S )Nr  r  r   r   r   r]   r   r   r  r  r   r  s       r"   !test_digraph_orientation_originalz/TestFindCycle.test_digraph_orientation_original   sZ    Jtz""q$**EEEFF!Wo1g/Bwwwwwwr$   c                     t          j        | j                  }t          t          j        || j                            }ddg}|d         |d         k    sJ |d         d d         |d         d d         k    sJ d S )Nr   r   r   )r   r   r   r   r   r)   )r   rb   r   r   r  r  r  s       r"   test_multigraphzTestFindCycle.test_multigraph  s|    M$*%%q$*--..#tr!u}}}}tBQBx2a5!9$$$$$$r$   c                     t          j        | j                  }t          t          j        || j                            }ddg}|d         |d         k    sJ |d         d d         |d         d d         k    sJ d S )Nr  )r   r   r   r   r   r)   )r   r8  r   r   r  r  r  s       r"   test_multidigraphzTestFindCycle.test_multidigraph  s|    ODJ''q$*--..#tr!u}}}}tBQBx2a5!9$$$$$$r$   c                     t          j        | j                  }t          t          j        || j        d                    }ddt          fddt          fg}||k    sJ d S )Nignorer  r   r   r  r  s       r"   test_digraph_ignorez!TestFindCycle.test_digraph_ignore  sZ    Jtz""q$*(CCCDD!Wo1g/Bwwwwwwr$   c                     t          j        | j                  }t          t          j        || j        d                    }ddt          fddt          fg}||k    sJ d S )Nreverser  r   r   )r   r]   r   r   r  r  r   r  s       r"   test_digraph_reversez"TestFindCycle.test_digraph_reverse  sZ    Jtz""q$*)DDDEE!Wo1g/Bwwwwwwr$   c                 f   t          j        | j                  }t          t          j        || j        d                    }dddt          fdddt          fg}|d         |d         k    sJ |d         d d         |d         d d         k    sJ |d         d         |d         d         k    sJ d S )Nr  r  r   r   r)   r*   )r   r8  r   r   r  r  r   r  s       r"   test_multidigraph_ignorez&TestFindCycle.test_multidigraph_ignore!  s    ODJ''q$*(CCCDD!Q 1aG"45tr!u}}}}tBQBx2a5!9$$$$tAw"Q%(""""""r$   c                     t          j        g d          }t          t          j        |g dd                    }dddt          fdddt
          fg}||k    sJ d S )N)rx   rz   rz   rt   r  r  r   r)   r   )r   r8  r   r  r   r   r  s       r"   test_multidigraph_ignore2z'TestFindCycle.test_multidigraph_ignore2)  sg    O44455q)))BBBCC!Q 1aG"45Bwwwwwwr$   c                     t          j        g d          }t          j        t           j        j        t           j        |g dd           d S )N)rx   rz   r  )r,   r)   r  r  r  )r   r8  r   r[   r  r  r  r   s     r"   test_multidigraph_originalz(TestFindCycle.test_multidigraph_original0  sW    
 O<<<==L(MOO"	
 	
 	
 	
 	
 	
r$   c                     t          j        g d          }t          j        t           j        j        t           j        |d           t          t          j        |d                    }|ddt          fddt          fddt          fgk    sJ d S )N)rx   ry   rz   r  r  r  r   r   r)   )
r   r]   r   r[   r  r  r  r   r   r   )rB   r4   r   s      r"   test_dagzTestFindCycle.test_dag>  s    J///00L("-
	
 	
 	
 	
 qh77788aG_q!Wo1gGGGGGGGr$   c                    t          j                    }|                    g d           t          j        t           j        t           j        |d           t          t          j        |d                    }ddg}||k    sJ t          t          j        |d                    }ddg}||k    sJ t          t          j        |                    }ddg}||k    sJ d S )N)re   r{   rz   r|   r   r   r   rz   r|   r)   )r   r]   r   r   r[   r  r  r   r  s       r"   test_prev_exploredz TestFindCycle.test_prev_exploredF  s     JLL	999:::b("-1EEEEq!$$%%fBwwwwq!$$%%fBwwwwq!!""fBwwwwwwr$   c                    t          j                    }|                    g d           t          j        t           j        t           j        |d           t          j        t           j        t           j        |           d S )N)rz   r{   r  r   r   r  )r   r]   r   r   r[   r  r  r   s     r"   test_no_cyclezTestFindCycle.test_no_cycleX  sg     JLL	999:::b("-1EEEEb("-;;;;;r$   N)r   r   r   r   r6   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:   r$   r"   r  r    s5       F F [FR R R            % % %% % %    # # #  
 
 
H H H  $< < < < <r$   r  c                 J    t          |           t          |          k    sJ d S r9   rG   )rC   r   s     r"   assert_basis_equalr  a  s%    !99q		!!!!!!r$   c                   T    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
S )TestMinimumCycleBasisc                     t          j                    }t          j        |g dd           |                    ddd           || _        d S )N)r   r)   r*   r,   r   weightr)   r,   r-   )r   r   r   r3   diamond_graph)r5   Ts     r"   r6   z!TestMinimumCycleBasis.setup_classf  sN    HJJ
QQ////	

1a
"""r$   c                 d    t          j        | j                  }t          |g dg dg           d S )Nr)   r,   r   )r*   r,   r)   r   minimum_cycle_basisr  r  rB   mcbs     r"   test_unweighted_diamondz-TestMinimumCycleBasis.test_unweighted_diamondm  s8    $T%7883III 677777r$   c                 h    t          j        | j        d          }t          |g dg dg           d S )Nr  r  r  )r,   r*   r)   r   r  r  s     r"   test_weighted_diamondz+TestMinimumCycleBasis.test_weighted_diamondq  s=    $T%7III3LLL 9:::::r$   c                 X   d}t          dd|z             D ]}t          j        dd|          }|                                }|                                }t          j        |          }t          j        |          }t          |          ||z
  |z   k    sJ t          |           d S )Nr   i  g333333?seed)	rA   r   erdos_renyi_graphnumber_of_nodesnumber_of_edgesnumber_connected_componentsr  r   r#   )rB   ntrialr  rgnnodesnedgesncompr  s           r"   test_dimensionalityz)TestMinimumCycleBasis.test_dimensionalityu  s    $v.. 	# 	#D%b#D999B''))F''))F2266E(,,Cs88v66666c""""	# 	#r$   c                     t          j        d          }t          j        |          }t          d |D                       sJ t	          |           d S )Nr-   c              3   <   K   | ]}t          |          d k    V  dS rF  r  )r;   cycles     r"   r?   z<TestMinimumCycleBasis.test_complete_graph.<locals>.<genexpr>  s,      44u3u::?444444r$   )r   r   r  r   r#   )rB   cgr  s      r"   test_complete_graphz)TestMinimumCycleBasis.test_complete_graph  sY    q!!$R((4444444444#r$   c                 \    t          j        dd          }t          j        |          rJ d S )Nr*   )r   balanced_treer  )rB   tgs     r"   test_tree_graphz%TestMinimumCycleBasis.test_tree_graph  s1    a##)"-------r$   c                    t          j                    t          t          j                            }g dg dg dg dg dg dgt	          |          t	                    k    sJ t          fd|D                       sJ |D ]>}t          fdt           j                            |d	
          D                       sJ ?t          |           d S )N)r,   r2   r0   r-   r   )r   r)   r*   r,   r   )r   r/   r1   r-   r   )r,   r*   r1   r-   r   )r   r/   r2   r,   r   )r   r)   r0   r-   r   c              3       K   | ]}|v V  	d S r9   r:   r;   rJ   r   s     r"   r?   z<TestMinimumCycleBasis.test_petersen_graph.<locals>.<genexpr>  '      ..Q1=......r$   c              3   J   K   | ]\  }}                     ||          V  d S r9   r   )r;   urt  r4   s      r"   r?   z<TestMinimumCycleBasis.test_petersen_graph.<locals>.<genexpr>  s5      VVDAqqzz!Q''VVVVVVr$   T)cyclic)	r   petersen_graphr   r  r   r   utilsr   r#   )rB   r  rJ   r4   r   s      @@r"   test_petersen_graphz)TestMinimumCycleBasis.test_petersen_graph  s   2)!,,--OOOOOOOOOOOO
 3xx3x==((((....#........  	W 	WAVVVVBH4E4EaPT4E4U4UVVVVVVVVV#r$   c                 0   d}t          j        |          }|                    d |j        D                        |                    d t          j        |          j        D                        t          j        |d          }t          |           d S )Nr1   c                     g | ]
\  }}||d fS )r2   r:   r;   r  rt  s      r"   rj   zVTestMinimumCycleBasis.test_gh6787_variable_weighted_complete_graph.<locals>.<listcomp>  s"    #C#C#C$!QQ1I#C#C#Cr$   c                     g | ]
\  }}||d fS )r   r:   r	  s      r"   rj   zVTestMinimumCycleBasis.test_gh6787_variable_weighted_complete_graph.<locals>.<listcomp>  s"    #R#R#R$!QQ1I#R#R#Rr$   r  r  )r   r   add_weighted_edges_fromr   rl   r  r#   )rB   Nr  r  s       r"   ,test_gh6787_variable_weighted_complete_graphzBTestMinimumCycleBasis.test_gh6787_variable_weighted_complete_graph  s    q!!
""#C#C"(#C#C#CDDD
""#R#R".:K:K:Q#R#R#RSSS$R999#r$   c                    t          j        d          }|                    ddgd           g dg dg dgt          t          j        |d                    }t          |          t                    k    sJ t          fd	|D                       sJ g dg dg d
gt          t          j        |                    }t          |          t                    k    sJ t          fd|D                       sJ d S )Nr,   )r   r)   r   )r   r*   r   distr  )r   r*   r   )r*   r)   r   r   )r   r)   r   c              3       K   | ]}|v V  	d S r9   r:   r  s     r"   r?   zMTestMinimumCycleBasis.test_gh6787_and_edge_attribute_names.<locals>.<genexpr>  r   r$   )r*   r)   r   c              3       K   | ]}|v V  	d S r9   r:   r  s     r"   r?   zMTestMinimumCycleBasis.test_gh6787_and_edge_attribute_names.<locals>.<genexpr>  r   r$   )r   rl   r  r   r  r   r   )rB   r4   r  r   s      @r"   $test_gh6787_and_edge_attribute_namesz:TestMinimumCycleBasis.test_gh6787_and_edge_attribute_names  s)   N1	!!:z":6!JJJII|||YYY72)!F;;;<<3xx3x==((((....#........ IIyyy)))42)!,,--3xx3x==((((....#..........r$   N)r   r   r   r   r6   r  r  r  r  r  r  r  r  r:   r$   r"   r  r  e  s          [8 8 8; ; ;# # #  . . .  (  / / / / /r$   r  c                      e Zd Zej                            d ej                    df ej                    df ej	                    df ej
                    df ej                    df ej        dd          ef ej        d          ef ej         e e ed                     e edd                                        df ej        g d          d	ff	          d
             ZdS )	TestGirth)r4   r   r,   r-   r/   r   r   r  ))r   r/   )r   r1   )r   r2   )r   r1   )r)   r1   )r)   r2   )r,   r2   )r-   r2   )r/   r1   )r/   r2   )r0   r1   r*   c                 :    t          j        |          |k    sJ d S r9   )r   girthr$  s      r"   
test_girthzTestGirth.test_girth  s$    @ x{{h&&&&&&r$   N)r   r   r   r   markparametrizer   chvatal_graphtutte_graphr  heawood_graphpappus_graphrandom_labeled_treer   empty_graphr   r   r   rA   r  r:   r$   r"   r  r    sF       [R#R^q!R  !$R#R_"#R#BR000#6R^B%RXeeKKa11;;uuQ||3L3LMMNNPQR    !	
 >' '? >' ' 'r$   r  )r   	itertoolsr   r   r   mathr   r   networkxr   %networkx.algorithms.traversal.edgedfsr   r   r#   r&   r   r   r   r   r   r   r  r  r  r  r:   r$   r"   <module>r$     s    ( ( ( ( ( ( ( ( ( (            B B B B B B B B- - -eF eF eF eF eF eF eF eFP  , , ,% % %5 5 59 9 9p
 p
 p
 p
 p
 p
 p
 p
pI< I< I< I< I< I< I< I<X" " "O/ O/ O/ O/ O/ O/ O/ O/d!' !' !' !' !' !' !' !' !' !'r$   