
    h+                        S SK r S SKrS SKr\R                  R                  S\R                  \R                  45      S 5       r " S S5      r	 " S S5      r
 " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S5      rg)    Nfc                     [         R                  " 5       n[        R                  " [         R                  SS9   U " U5        S S S 5        g ! , (       d  f       g = f)NzConnectivity is undefined)match)nxGraphpytestraisesNetworkXPointlessConcept)r   Gs     V/var/www/html/env/lib/python3.13/site-packages/networkx/algorithms/tests/test_euler.pytest_empty_graph_raisesr      s6    

A	r22:U	V	! 
W	V	Vs   	A
Ac                        \ rS rSrS rS rSrg)TestIsEulerian   c                    [         R                  " [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      5      (       a   e[         R                  " [         R                  " S5      5      (       a   e[         R                  " [         R                  " S5      5      (       a   e[         R                  " [         R                  " S5      5      (       a   e[         R                  " [         R                  " 5       5      (       a   e[         R                  " [         R
                  " S5      5      (       a   eg )N               )r   is_euleriancomplete_graphhypercube_graphpetersen_graph
path_graphselfs    r   test_is_eulerianTestIsEulerian.test_is_eulerian   sA   ~~b//23333~~b//23333~~b0034444~~b0034444>>""3"3A"67777>>""3"3A"67777>>""4"4Q"78888>>""4"4Q"78888>>""3"3"56666>>"--"233333    c                    [         R                  " 5       nUR                  / SQ5        [         R                  " U5      (       a   e[         R                  " 5       nUR                  / SQ5        [         R                  " U5      (       a   e[         R
                  " 5       nUR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        [         R                  " U5      (       a   eg )N)      r   r"   r#   r   )r   r   add_nodes_fromr   DiGraphMultiDiGraphadd_edger   r   s     r   test_is_eulerian2 TestIsEulerian.test_is_eulerian2   s    HHJ	#>>!$$$$JJL	#>>!$$$$OO	

1a	

1a	

1a	

1a>>!$$$$$r     N)__name__
__module____qualname____firstlineno__r   r)   __static_attributes__r+   r    r   r   r      s    4%r    r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestEulerianCircuit/   c                    [         R                  " S5      n[        [         R                  " USS95      nU VVs/ s H  u  p4UPM	     nnnU/ SQ:X  d   eU/ SQ:X  d   e[        [         R                  " USS95      nU VVs/ s H  u  p4UPM	     nnnU/ SQ:X  d   eU/ SQ:X  d   e[         R                  " S	5      n[        [         R                  " USS95      nU VVs/ s H  u  p4UPM	     nnnU/ S
Q:X  d   eU/ SQ:X  d   e[        [         R                  " USS95      nU VVs/ s H  u  p4UPM	     nnnU/ SQ:X  d   eU/ SQ:X  d   eg s  snnf s  snnf s  snnf s  snnf )Nr   r   source)r   r   r#   r"   )r   r   r   r#   r#   r"   r"   r   r"   r"   r#   r   r   r"   r#   r#   r   r   r   r   r"   r   )r   r#   r"   )r   r#   r9   r:   )r"   r#   r   )r=   r#   r   r@   )r   cycle_graphlisteulerian_circuitr   r   r   edgesuvnodess         r   test_eulerian_circuit_cycle/TestEulerianCircuit.test_eulerian_circuit_cycle0   s\   NN1R((156$%utqu%$$$8888R((156$%utqu%$$$8888a R((156$%utqu%	!!!0000R((156$%utqu%	!!!0000' &
 & &
 &s   EE E(E c                    [         R                  " 5       n[         R                  " U/ SQ5        [        [         R                  " USS95      nU VVs/ s H  u  p4UPM	     nnnU/ SQ:X  d   eU/ SQ:X  d   e[        [         R                  " USS95      nU VVs/ s H  u  p4UPM	     nnnU/ SQ:X  d   eU/ SQ:X  d   eg s  snnf s  snnf )Nr   r"   r#   r   r   r5   )r@   r=   r>   r?   r"   r;   r<   )r   r%   	add_cyclerD   rE   rF   s         r   test_eulerian_circuit_digraph1TestEulerianCircuit.test_eulerian_circuit_digraphI   s    JJL
Q%R((156$%utqu%$$$8888R((156$%utqu%$$$8888 &
 &s   C Cc                 D   [         R                  " 5       n[         R                  " U/ SQ5        UR                  SS5        UR                  SS5        [	        [         R
                  " USS95      nU VVs/ s H  u  p4UPM	     nnnU/ SQ:X  d   eU/ SQ:X  d   eg s  snnf )NrN   r"   r#   r   r5   r   r   r#   r"   r#   r"   )r7   r8   r9   r=   r9   r:   )r   
MultiGraphrO   r'   rD   rE   rF   s         r   test_multigraph#TestEulerianCircuit.test_multigraphW   s    MMO
Q%	

1a	

1aR((156$%utqu%****HHHH &s   6Bc                    [         R                  " 5       n[         R                  " U/ SQ5        UR                  SS5        UR                  SS5        [	        [         R
                  " USSS95      nU VVVs/ s H  u  p4oSPM	     nnnnU/ SQ:X  d   eUS S SS	/:X  d   e[        R                  " USS
 5      [        R                  " / SQ5      :X  d   eUS
S  S/:X  d   eg s  snnnf )NrN   r"   r#   r   T)r6   keysrS   )r   r   r   )r   r#   r   r   ))r#   r"   r   )r"   r#   r"   )r#   r"   r#   r"   r   r   )r   rT   rO   r'   rD   rE   collectionsCounter)r   r   rG   rH   rI   krJ   s          r   test_multigraph_with_keys-TestEulerianCircuit.test_multigraph_with_keysa   s    MMO
Q%	

1a	

1aR((14@A"'(%wqQ%(****RayY	2222""51:.+2E2E-3
 
 	
 
 QRyYK''' )s   8C#c                     [         R                  " [        R                  5         [	        [        R
                  " [        R                  " S5      5      5      nS S S 5        g ! , (       d  f       g = fNr   )r   r	   r   NetworkXErrorrD   rE   r   )r   r   s     r   test_not_eulerian%TestEulerianCircuit.test_not_euleriano   s@    ]]2++,R(():):1)=>?A -,,s   4A""
A0r+   N)
r,   r-   r.   r/   rK   rP   rU   r]   rb   r0   r+   r    r   r2   r2   /   s    129I(@r    r2   c                       \ rS rSrS rSrg)TestIsSemiEuleriant   c                 n   [         R                  " [         R                  " S5      5      (       d   e[         R                  " S[         R                  S9n[         R                  " U5      (       d   e[         R                  " [         R                  " S5      5      (       a   e[         R                  " [         R                  " S5      5      (       a   e[         R                  " [         R
                  " S5      5      (       a   e[         R                  " [         R
                  " S5      5      (       a   eg )Nr   r   create_usingr   r   )r   is_semieulerianr   r%   r   r   r(   s     r   test_is_semieulerian'TestIsSemiEulerian.test_is_semieulerianu   s    !!"--"23333MM!"**5!!!$$$$ %%b&7&7&:;;;;%%b&7&7&:;;;;%%b&8&8&;<<<<%%b&8&8&;<<<<<r    r+   N)r,   r-   r.   r/   rk   r0   r+   r    r   re   re   t   s    
=r    re   c                   .   \ rS rSrS rS rS r\R                  R                  S\
R                  " 5       \
R                  " 5       45      S 5       r\R                  R                  S\
R                  " 5       \
R                  " 5       45      S 5       rSrg	)
TestHasEulerianPath   c                    [         R                  " [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      5      (       d   eg )Nr   r   r   r   )r   has_eulerian_pathr   r   r   s    r   test_has_eulerian_path_cyclic1TestHasEulerianPath.test_has_eulerian_path_cyclic   s    ##B$5$5a$89999##B$5$5a$89999##B$6$6q$9::::##B$6$6q$9::::r    c                     [         R                  " [         R                  " S5      5      (       d   e[         R                  " S[         R                  S9n[         R                  " U5      (       d   eg )Nr   r   rh   )r   rq   r   r%   r(   s     r   !test_has_eulerian_path_non_cyclic5TestHasEulerianPath.test_has_eulerian_path_non_cyclic   sM    ##BMM!$45555MM!"**5##A&&&&r    c                 t   [         R                  " 5       nUR                  / SQ5        [         R                  " U5      (       a   e[         R                  " 5       nUR                  / SQ5        [         R                  " U5      (       d   eUR	                  S5        [         R                  " U5      (       a   eg )N)r@   r=   rA   )r@   r=   rB   r   )r   r%   add_edges_fromrq   add_noder(   s     r   %test_has_eulerian_path_directed_graph9TestHasEulerianPath.test_has_eulerian_path_directed_graph   s    JJL	12''**** JJL	12##A&&&& 	


1''*****r    r   c                 d    UR                  / SQ5        [        R                  " U5      (       a   eg )N)r@   r>   r8   rx   r   rq   r(   s     r   +test_has_eulerian_path_not_weakly_connected?TestHasEulerianPath.test_has_eulerian_path_not_weakly_connected   s+    	12''*****r    c                 d    UR                  SS/5        [        R                  " U5      (       a   eg Nr@   r>   r}   r(   s     r   2test_has_eulerian_path_unbalancedins_more_than_oneFTestHasEulerianPath.test_has_eulerian_path_unbalancedins_more_than_one   s/    	&&)*''*****r    r+   N)r,   r-   r.   r/   rr   ru   rz   r   markparametrizer   r   r%   r~   r   r0   r+   r    r   rn   rn      s}    ;'+ [[S288:rzz|"<=+ >+ [[S288:rzz|"<=+ >+r    rn   c                       \ rS rSrS rSrg)TestFindPathStart   c                 @   [         R                  R                  R                  n[         R                  " S[         R
                  S9nU" U5      S:X  d   e/ SQnU" [         R
                  " U5      5      S:X  d   e/ SQnU" [         R
                  " U5      5      b   eg )Nr   rh   r   )r@   r=   rB   r   r   r   )r@   r=   r>   )r#   r   )r   
algorithmseuler_find_path_startr   r%   )r   find_path_startr   rG   s       r   testfind_path_start%TestFindPathStart.testfind_path_start   s    ---->>MM!"**5q!Q&&&0rzz%01Q666 1rzz%01999r    r+   N)r,   r-   r.   r/   r   r0   r+   r    r   r   r      s    
:r    r   c                       \ rS rSrS rS rS rS rS rS r	\
R                  R                  S\R                  S	S
/4\R                  S	S/445      S 5       rSrg)TestEulerianPath   c                     / SQn[        U[        R                  " [        R                  " U5      5      5       H  u  p#X#:X  a  M   e   g )N)r   r@   r=   rB   )zipr   eulerian_pathr%   )r   xe1e2s       r   test_eulerian_path#TestEulerianPath.test_eulerian_path   s6    ,!R--bjjm<=FB8O8 >r    c                    [         R                  " 5       n/ SQnUR                  U5        U[        [         R                  " U5      5      :X  d   eU[        [         R                  " USS95      :X  d   e[
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        [
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        [
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nk= f! , (       d  f       g = f)Nr=   r>   r   r   )r   r   r"   r5   r   r   r   )r   r%   rx   rD   r   r   r	   ra   r   r   results      r    test_eulerian_path_straight_link1TestEulerianPath.test_eulerian_path_straight_link   s    JJL1	 b..q12222b..q;<<<<]]2++,!!!A./ -]]2++,!!!A./ -]]2++,!!!A./ -,	 -,,,,,s$   E#E'.E8
E$'
E58
Fc                 Z   [         R                  " 5       n/ SQnUR                  U5        U[        [         R                  " U5      5      :X  d   eU[        [         R                  " USS95      :X  d   e[
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        [
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)N)r9   r=   r9   r=   r>   r   r   r   r#   r5   r   r   )r   r&   rx   rD   r   r   r	   ra   r   s      r   test_eulerian_path_multigraph.TestEulerianPath.test_eulerian_path_multigraph   s    OOI	 b..q12222b..q;<<<<]]2++,!!!A./ -]]2++,!!!A./ -, -,,,   D#D
D
D*c                    [         R                  " 5       n/ SQn/ SQn/ SQnUR                  U5        U[        [         R                  " U5      5      :X  d   eU[        [         R                  " USS95      :X  d   eU[        [         R                  " USS95      :X  d   eU[        [         R                  " USS95      :X  d   eg )N)r=   r>   r   r   r"   )r>   r   r   r=   )r   r   r=   r>   r"   r5   r#   r   )r   r%   rx   rD   r   )r   r   r   result2result3s        r   #test_eulerian_path_eulerian_circuit4TestEulerianPath.test_eulerian_path_eulerian_circuit   s    JJL122	 b..q12222b..q;<<<<$r//!<====$r//!<====r    c                    [         R                  " 5       n/ SQn/ SQnUR                  U5        [        [         R                  " U5      5      X#4;   d   eU[        [         R                  " USS95      :X  d   eU[        [         R                  " USS95      :X  d   e[
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        [
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)Nr   ))r   r   r   r8   r9   r"   r5   r   r   r#   )r   r   rx   rD   r   r   r	   ra   )r   r   r   r   s       r   test_eulerian_path_undirected.TestEulerianPath.test_eulerian_path_undirected   s    HHJ12	 B$$Q'(V,====b..q;<<<<$r//!<====]]2++,!!!A./ -]]2++,!!!A./ -, -,,,s   D4E4
E
Ec                 Z   [         R                  " 5       n/ SQnUR                  U5        U[        [         R                  " U5      5      :X  d   eU[        [         R                  " USS95      :X  d   e[
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        [
        R                  " [         R                  5         [        [         R                  " USS95        S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)N)r9   r=   r9   r=   r>   r   r#   r5   r   r"   )r   rT   rx   rD   r   r   r	   ra   r   s      r   (test_eulerian_path_multigraph_undirected9TestEulerianPath.test_eulerian_path_multigraph_undirected   s    MMOA	 b..q12222b..q;<<<<]]2++,!!!A./ -]]2++,!!!A./ -, -,,,r   )
graph_typer   )r   r"   r   )r"   r   r"   rY   c                 d    U" SS/5      n[         R                  " USS9n[        U5      U:X  d   eg )Nr@   r:   T)rX   )r   r   rD   )r   r   r   r   answers        r   test_eulerian_with_keys(TestEulerianPath.test_eulerian_with_keys   s7     '(!!!$/F|v%%%r    r+   N)r,   r-   r.   r/   r   r   r   r   r   r   r   r   r   r   rT   r&   r   r0   r+   r    r   r   r      sm    
0	0	>0	0 [[ ]]Y	23__y)45	
&&r    r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestEulerizei  c                     [         R                  " [        R                  5         [        R                  " SS/5      n[        R
                  " U5        S S S 5        g ! , (       d  f       g = fr   )r   r	   r   ra   from_edgelisteulerizer(   s     r   test_disconnectedTestEulerize.test_disconnected  s@    ]]2++,  &&!12AKKN -,,s   /A
A+c                     [         R                  " [        R                  5         [        R                  " [        R
                  " 5       5        S S S 5        g ! , (       d  f       g = fN)r   r	   r   r
   r   r   r   s    r   test_null_graphTestEulerize.test_null_graph  s2    ]]2667KK
# 877   *A
A&c                     [         R                  " [        R                  5         [        R                  " [        R
                  " 5       5        S S S 5        g ! , (       d  f       g = fr   )r   r	   r   r
   r   rT   r   s    r   test_null_multigraph!TestEulerize.test_null_multigraph  s2    ]]2667KK( 877r   c                     [         R                  " [        R                  5         [        R                  " [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = fNr   )r   r	   r   ra   r   empty_graphr   s    r   test_on_empty_graph TestEulerize.test_on_empty_graph  s5    ]]2++,KKq)* -,,s   +A
A'c                     [         R                  " S5      n[         R                  " U5      n[         R                  " X5      (       d   eg r   )r   rC   r   is_isomorphicr   r   Hs      r   test_on_eulerianTestEulerize.test_on_eulerian  s4    NN1KKN%%%%r    c                     [         R                  " [         R                  " S5      5      nUR                  SS5        [         R                  " U5      n[         R
                  " U5      (       d   eg )Nr   r   r"   )r   rT   rC   r'   r   r   r   s      r   test_on_eulerian_multigraph(TestEulerize.test_on_eulerian_multigraph  sI    MM"..+,	

1aKKN~~a    r    c                    [         R                  " S5      n[         R                  " [         R                  " U5      5      (       d   e[         R                  " [         R                  " [         R                  " U5      5      5      (       d   eg r`   )r   r   r   r   rT   r(   s     r   test_on_complete_graph#TestEulerize.test_on_complete_graph#  sV    a ~~bkk!n----~~bkk"--*:;<<<<r    c                    [         R                  " S5      nUR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS	5        UR                  S	S
5        UR                  S
S5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        [         R                  " U5      (       a   e[         R                  " U5      n[         R                  " U5      (       d   e[         R
                  " U5      S:X  d   eg )N   r         r                                 '   )r   rC   r'   r   r   number_of_edgesr(   s     r   test_on_non_eulerian_graph'TestEulerize.test_on_non_eulerian_graph(  s   NN2	

1b	

2r	

2r	

1b	

2r	

2r	

2r	

2r	

2r	

2r	

2r	

2r	

2r>>!$$$$KKN~~a    !!!$***r    r+   N)r,   r-   r.   r/   r   r   r   r   r   r   r   r   r0   r+   r    r   r   r     s*    
$)+&
!=
+r    r   )rZ   r   networkxr   r   r   r   rj   r   r   r2   re   rn   r   r   r   r+   r    r   <module>r      s       r~~r/A/ABC D% %@B@ B@J= =%+ %+P: :K& K&\4+ 4+r    