
    hyJ                        S SK r S SKr\R                  " S5      r\R                  " S5      rS SKrS SKJrJ	r	J
r
  S SKJr   " S S5      r\R                  S 5       r\R                   R#                  S	\S
4\S4\S445      S 5       rS r\R                   R#                  S\R.                  " 5       \R1                  S S/SS //\S94\R4                  " 5       \R1                  S S/S S //\S94/5      S 5       rS r\R                   R#                  S\S4\S4\S4\R:                  S4\R<                  S445      S 5       r\R                   R#                  S\R.                  " 5       SS/SS//4\R4                  " 5       SS/SS//4/5      S 5       r S r!\R                   R#                  SS S!/5      S" 5       r"\R                   R#                  S#\R.                  \R4                  45      \R                   R#                  S$S%S S&S'S04S S&S(S)S*.4S S&S+SS,S-.4/5      S. 5       5       r#\R                   R#                  S/\R.                  " 5       \R4                  " 5       45      S0 5       r$\R                   R#                  S/\R.                  " 5       \R4                  " 5       45      S1 5       r%S2 r&\R                   R#                  S#\RN                  \RP                  45      S3 5       r)S4 r*\R                   R#                  S5/ S6Q/ S7Q/ S8Q/ S9Q/ S:Q45      S; 5       r+\R                   R#                  S5/ S6Q/ S7Q/ S8Q/ S9Q/ S:Q45      S< 5       r,\R                   R#                  S5/ S6Q/ S7Q/ S8Q/ S9Q/ S:Q45      S= 5       r-\R                   R#                  S5/ S6Q/ S7Q/ S8Q/ S9Q/ S:Q45      \R                   R#                  S>\R\                  \R                  \R^                  45      S? 5       5       r0g)@    Nnumpyznumpy.testing)barbell_graphcycle_graph
path_graph)graphs_equalc            	           \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS r\R&                  R)                  SS\\R/                  SS/5      45      S 5       rS rS rS rS rS rSrg)TestConvertNumpyArray   c                    [        SS5      U l        [        S[        R                  S9U l        U R                  [        R                  " 5       5      U l        U R                  [        R                  " 5       5      U l	        g )N
      create_using)
r   G1r   nxDiGraphG2create_weightedGraphG3G4)selfs    S/var/www/html/env/lib/python3.13/site-packages/networkx/tests/test_convert_numpy.pysetup_method"TestConvertNumpyArray.setup_method   sR    A&brzz:&&rxxz2&&rzz|4    c                     [        S5      nUR                  U5        UR                  S UR                  5        5       5        U$ )N   c              3   4   #    U  H  u  pXS U-   4v   M     g7f)r   N ).0uvs      r   	<genexpr>8TestConvertNumpyArray.create_weighted.<locals>.<genexpr>   s     !GYTQ1a.Ys   )r   add_nodes_fromadd_weighted_edges_fromedges)r   Ggs      r   r   %TestConvertNumpyArray.create_weighted   s8    N		!!!GQWWY!GGr   c                     [        UR                  5       5      [        UR                  5       5      :X  d   e[        UR                  5       5      [        UR                  5       5      :X  d   eg )N)sortednodesr(   )r   r   r   s      r   assert_equal"TestConvertNumpyArray.assert_equal   sJ    bhhj!VBHHJ%7777bhhj!VBHHJ%7777r   c                 2   UR                  5       S:  d   e[        R                  " X#S9nU R                  X5        [        R                  " X#S9nU R                  X5        [        R
                  " SU5      R                  U5      nU R                  X5        g )Nr   r   )sumr   from_numpy_arrayr/   to_networkx_graphempty_graph	__class__)r   r)   Ar   GGGWGIs          r   identity_conversion)TestConvertNumpyArray.identity_conversion   sy    uuw{{  >! !!!?! ^^A|,66q9! r   c                     [         R                  / SQ/ SQ/5      n[        R                  " [        R
                  [        R                  U5        g)z!Conversion from non-square array.)      r   )r         N)nparraypytestraisesr   NetworkXErrorr3   r   r7   s     r   
test_shape TestConvertNumpyArray.test_shape'   s1    HHi+,b&&(;(;Q?r   c                     [         R                  " U R                  5      nU R                  U R                  U[         R                  " 5       5        g)z(Conversion from graph to array to graph.N)r   to_numpy_arrayr   r;   r   rG   s     r   test_identity_graph_array/TestConvertNumpyArray.test_identity_graph_array,   2    dgg&  !RXXZ8r   c                     [         R                  " U R                  5      nU R                  U R                  U[         R                  " 5       5        g)z,Conversion from digraph to array to digraph.N)r   rK   r   r;   r   rG   s     r   test_identity_digraph_array1TestConvertNumpyArray.test_identity_digraph_array1   2    dgg&  !RZZ\:r   c                     [         R                  " U R                  5      nU R                  U R                  U[         R                  " 5       5        g)z:Conversion from weighted graph to array to weighted graph.N)r   rK   r   r;   r   rG   s     r   "test_identity_weighted_graph_array8TestConvertNumpyArray.test_identity_weighted_graph_array6   rN   r   c                     [         R                  " U R                  5      nU R                  U R                  U[         R                  " 5       5        g)z>Conversion from weighted digraph to array to weighted digraph.N)r   rK   r   r;   r   rG   s     r   $test_identity_weighted_digraph_array:TestConvertNumpyArray.test_identity_weighted_digraph_array;   rR   r   c                    [        S5      n[        S5      n[        U5      n[        R                  " XS9n[        R                  " U5      nU R                  XR5        X3S   /-  n[        R                  " [        R                  [        R                  X#S9  / SQn[        R                  " [        R                  SX2R                  -
   S3S9   [        R                  " X#S9  S	S	S	5        g	! , (       d  f       g	= f)
z6Conversion from graph to array to graph with nodelist.r   r   nodelistr   )r   r>   zNodes z in nodelist is not in GmatchN)
r   listr   rK   r   r/   rD   rE   rF   r.   )r   P4P3r[   r7   GAs         r   test_nodelist#TestConvertNumpyArray.test_nodelist@   s    ]]8b4XXa["! 	a[M!b&&(9(92Q ]]8hh.//GH
 b4	
 
 
s   C,,
C:c                    [         R                  " 5       nUR                  S [        S5       5       5        [	        S5      n[         R
                  " U5      n[        R                  R                  U[         R
                  " US S95        [        R                  R                  SU-  [         R
                  " U5      5        [        R                  R                  SU-  [         R
                  " USS95        g )Nc              3   6   #    U  H  oUS -   SSS.4v   M     g7f)r>         ?333333?)weightotherNr    )r!   ns     r   r$   <TestConvertNumpyArray.test_weight_keyword.<locals>.<genexpr>W   s     Whq1us&CDhs   r   r   ri   rg   rh   rj   )	r   r   add_edges_fromranger   rK   rB   testingr/   )r   WP4r`   r7   s       r   test_weight_keyword)TestConvertNumpyArray.test_weight_keywordU   s    hhjWeTUhWW]b!


2#4#4S#FG


a):):3)?@


a):):3w)OPr   c                 8   [         R                  S//5      n[        R                  " U5      n[	        US   S   S   5      [
        :X  d   e[         R                  S//5      R                  [        5      n[        R                  " U5      n[	        US   S   S   5      [        :X  d   e[         R                  S//5      R                  [        5      n[        R                  " U5      n[	        US   S   S   5      [        :X  d   e[         R                  S//5      R                  [        5      n[        R                  " U5      n[	        US   S   S   5      [        :X  d   e[         R                  S//5      R                  [        5      n[        R                  " U5      n[	        US   S   S   5      [        :X  d   e[         R                  S//5      R                  [        5      n[        R                  " [        [        R                  U5        [         R                  / SQ/ SQ// SQ/ SQ//5      n[        R                  " [        R                  SUR                    3S9   [        R                  " U5      nS S S 5        g ! , (       d  f       g = f)Nr>   r   ri   )r>   r>   r>   zInput array must be 2D, not r]   )rB   rC   r   r3   typeintastypefloatstrboolcomplexobjectrD   rE   	TypeErrorrF   ndim)r   r7   r)   r*   s       r   test_from_numpy_array_type0TestConvertNumpyArray.test_from_numpy_array_type^   s   HHqcUO"AaDGH%&#---HHqcUO""5)"AaDGH%&%///HHqcUO""3'"AaDGH%&#---HHqcUO""4("AaDGH%&$...HHqcUO""7+"AaDGH%&'111HHqcUO""6*i!4!4a8HHy),y).DEF]]&B166($K
 ##A&A
 
 
s   +J
Jc                 8   S[         4S[        4/n[        R                  S//US9n[        R
                  " U5      n[        US   S   S   5      [         :X  d   e[        US   S   S   5      [        :X  d   eUS   S   S   S:X  d   eUS   S   S   S:X  d   eg )Nri   cost)      ?r?   dtyper   r?   r   )rx   rv   rB   rC   r   r3   ru   r   dtr7   r)   s       r   test_from_numpy_array_dtype1TestConvertNumpyArray.test_from_numpy_array_dtype|   s    &#/HHxj\H,"AaDGH%&%///AaDGFO$+++tAwv!###tAwx C'''r   c           	         [         R                  SS/SS//5      n[        R                  " 5       n/ SQnUR	                  U VVs/ s H	  u  pEXES4PM     snn5        UR                  SSSS9  [        R                  " US[        R                  S9n[        Xb5      (       d   e[        R                  " US[        R                  S9n[        Xb5      (       d   e/ SQn[        R                  " 5       nUR	                  U VVs/ s H	  u  pEXES4PM     snn5        [        R                  " US[        R                  S9n[        Xb5      (       d   e[        R                  " 5       nUR                  [        U5      SS9  SUS   S   S	   S
'   [        R                  " US[        R                  S9n[        Xb5      (       d   egs  snnf s  snnf )zTests that the :func:`networkx.from_numpy_array` function
interprets integer weights as the number of parallel edges when
creating a multigraph.

r>   r?   )r   r   r   r>   r>   r   rm   T)parallel_edgesr   F)r   r   r   r>   r>   r   r   ri   N)rB   rC   r   r   r'   add_edger3   r   MultiDiGraphrn   set)r   r7   expectedr(   r"   r#   actuals          r   $test_from_numpy_array_parallel_edges:TestConvertNumpyArray.test_from_numpy_array_parallel_edges   s    HHq!fq!f%& ::<(((%)H%1)%)HI!Qq)$$Qt"**UF----$$Qu2::VF---- 9??$((%)H%1)%)HI$$d
 F----??$E
15&'Aq(#$$e"//
 F----/ *I *Is   G
G

r   N)ri   f8)colori1c                     [         R                  SS/SS//US9n[        R                  " US S9nSUR                  S   ;  d   e[        UR                  S   5      S:X  d   eg )Nr   r>   r   	edge_attrri   r   )rB   rC   r   r3   r(   lenr   s       r   "test_from_numpy_array_no_edge_attr8TestConvertNumpyArray.test_from_numpy_array_no_edge_attr   sf     HHq!fq!f%RH0T2qwwt},,,1774=!Q&&&r   c                    [         R                  SS/SS//5      n[        R                  " U[        R                  S S9n[        S US   S   R                  5        5       5      (       d   e[        US   S   S   5      S:X  d   eg )Nr   r?   )r   r   c              3   0   #    U  H  u  pS U;  v   M     g7f)ri   Nr    )r!   _es      r   r$   UTestConvertNumpyArray.test_from_numpy_array_multiedge_no_edge_attr.<locals>.<genexpr>   s     A81$s   r>   )rB   rC   r   r3   r   allitemsr   r   r7   r)   s      r   ,test_from_numpy_array_multiedge_no_edge_attrBTestConvertNumpyArray.test_from_numpy_array_multiedge_no_edge_attr   sx    HHq!fq!f%&4PA1aAAAAA1Q471:!###r   c                     [         R                  SS/SS//5      n[        R                  " USS9nSUR                  S   ;  d   eUR                  S   S   S:X  d   eg )Nr   r?   r   r   r   ri   r   )rB   rC   r   r3   r(   r   s      r   &test_from_numpy_array_custom_edge_attr<TestConvertNumpyArray.test_from_numpy_array_custom_edge_attr   s`    HHq!fq!f%&V4qwwt},,,wwt}V$)))r   c                     [         R                  SS/SS//5      n[        R                  " U[        R                  S9n[        R                  " 5       nUR                  SSSS9  [        X#5      (       d   eg)zTests that a symmetric array has edges added only once to an
undirected multigraph when using :func:`networkx.from_numpy_array`.

r   r>   r   rm   N)rB   rC   r   r3   
MultiGraphr   r   )r   r7   r)   r   s       r   test_symmetric$TestConvertNumpyArray.test_symmetric   sf    
 HHq!fq!f%&>==?!Qq)A((((r   c                     [         R                  " S5      n[         R                  " U[        S9nUR                  [        :X  d   egztTest that setting dtype int actually gives an integer array.

For more information, see GitHub pull request #1363.

r   r   N)r   complete_graphrK   rv   r   r   r)   r7   s      r   test_dtype_int_graph*TestConvertNumpyArray.test_dtype_int_graph   s6     a as+ww#~~r   c                     [         R                  " [         R                  " S5      5      n[         R                  " U[        S9nUR
                  [        :X  d   egr   )r   r   r   rK   rv   r   r   s      r   test_dtype_int_multigraph/TestConvertNumpyArray.test_dtype_int_multigraph   s?     MM"++A./as+ww#~~r   )r   r   r   r   )__name__
__module____qualname____firstlineno__r   r   r/   r;   rH   rL   rP   rT   rW   rc   rr   r   r   r   rD   markparametrizerv   rB   r   r   r   r   r   r   r   __static_attributes__r    r   r   r	   r	      s    58!@
9
;
9
;
5*Q'<(".H [[HH!?3	
	'	'$*	)r   r	   c                  t    [         R                  " 5       n U R                  SSSS9  U R                  SSSS9  U $ )Nr>   r?      rm   F   )r   r   r   )r)   s    r   multigraph_test_graphr      s6    
AJJq!AJJJq!BJHr   )operatorr   M   r   r   c                 B    [         R                  " XS9nUS   U:X  d   eg )N)multigraph_weightr   )r   rK   )r   r   r   r7   s       r   test_numpy_multigraphr      s%    
/LAT7hr   c                     U nUR                  SSSS9  [        R                  " USS/S9nUR                  S:X  d   eUS   S	:X  d   eg )
Nr   r>   r   rm   r?   rZ   )r?   r?   r   r   )r   r   rK   shape)r   r)   r7   s      r   'test_to_numpy_array_multigraph_nodelistr      sQ    AJJq!AJ
!q!f-A77fT7b==r   zG, expected      ?       @r   c                     U R                  SSSS9  [        R                  " U [        S9n[        R                  X!5        g )Nr   r>   r   rm   r   )r   r   rK   r{   nptassert_array_equal)r)   r   r7   s      r   #test_to_numpy_array_complex_weightsr      s6     JJq!FJ#
!7+A1'r   c                     [         R                  " 5       n SnU R                  SSSS9  [         R                  " U [        S9n[
        R                  SU/SS//[        S9n[        R                  X#5        [         R                  " U R                  5       [        S9n[
        R                  SU/US//[        S9n[        R                  X#5        g )Nl   F}r   r>   rm   r   )
r   r   r   rK   r|   rB   rC   r   r   to_undirected)r)   wr7   r   s       r   %test_to_numpy_array_arbitrary_weightsr     s    


AAJJq!1J2
!6*Axx!Q!Q(x7H1' 	!//+6:Axx!Q!Q(x7H1'r   zfunc, expectedr\   r      gUUUUUU@r?   c                 x   [         R                  " 5       n/ SQnU H  nUR                  SSUS9  M     [         R                  " X [        S9n[
        R                  USU/SS//5      (       d   e[         R                  " UR                  5       U [        S9n[
        R                  USU/US//5      (       d   eg)z6Test various functions for reducing multiedge weights.)r\   r?   g      $@r   r>   rm   )r   r   N)r   r   r   rK   rx   rB   allcloser   )funcr   r)   weightsr   r7   s         r   )test_to_numpy_array_multiweight_reductionr     s     	AG	

1a
" 
!5AA;;qAx=1a&12222 	!//+t5QA;;qAx=8Q-89999r   r   )r   r@   c                     U R                  SSSSS9  [        R                  S[        4S[        4/5      n[        R
                  " XSS	9n[        R                  XS
9n[        R                  X15        g)zWhen `dtype` is structured (i.e. has names) and `weight` is None, use
the named fields of the dtype to look up edge attributes.r   r>   r   g      @)ri   r   ri   r   Nr   ri   r   )	r   rB   r   rv   r   rK   asarrayr   r   )r)   r   r   r7   s       r   6test_to_numpy_array_structured_dtype_attrs_from_fieldsr   (  sc     JJq!BSJ)HHxo}56E
!6Azz(z0H1'r   c                     [         R                  " S5      n [        R                  S[        4/5      n[         R
                  " XS S9n[        R                  / SQ/ SQ/ SQ/[        S9n[        R                  US   U5        g )Nr   ri   r   )r   r>   r   )r>   r   r>   r   )	r   r   rB   r   rx   rK   rC   r   r   )r)   r   r7   r   s       r   8test_to_numpy_array_structured_dtype_single_attr_defaultr   9  se    
aAHHx'()E
!6AxxIy9xGH1X;1r   )
field_nameexpected_attr_val)ri   r>   )r   r   c                    [         R                  " 5       nUR                  SSSS9  [        R	                  U [
        4/5      n[         R                  " X#S S9n[        R                  SU/US//[
        S9n[        R                  X@   U5        g )Nr   r>   r   )r   r   r   )
r   r   r   rB   r   rx   rK   rC   r   r   )r   r   r)   r   r7   r   s         r   0test_to_numpy_array_structured_dtype_single_attrr   A  s     	
AJJq!!JHHz5)*+E
!6Axx!./2CQ1GHPUxVH1=(3r   
graph_typeedger   r>   ri   r@   )ri   flowg       @i)ri   r   r   c                    U " U/5      n[         R                  S[        4S[        4S[        4/5      n[        R                  " X#S S9nUR
                   H5  n[        R                  " U[        US9n[        R                  XE   U5        M7     g )Nri   r   r   r   )rB   r   rx   r   rK   namesr   r   )r   r   r)   r   r7   attrr   s          r   4test_to_numpy_array_structured_dtype_multiple_fieldsr   Q  sx     	D6AHHx'&%65/JKE
!6A$$QeDAqw1 r   r)   c                 \   U R                  SSSS9  [        R                  S[        4S[        4/5      n[        R
                  " XS [        R                  S9nUR                   HD  n[        R
                  " U [        U[        R                  S9n[        R                  X#   U5        MF     g )Nr   r>   r   rm   ri   r   r   ri   nonedge)
r   rB   r   rx   r   rK   nanr   r   r   )r)   r   r7   r   r   s        r   3test_to_numpy_array_structured_dtype_scalar_nonedger   d  s    JJq!BJHHx'&%9:E
!rvvFA$$QeD"&&Qqw1 r   c                 t   U R                  SSSS9  [        R                  S[        4S[        4/5      n[        R	                  S[        R
                  4/US9n[        R                  " XSUS	9nUR                   H9  nX$   n[        R                  " U [        XES	9n[        R                  X4   U5        M;     g)
zWSimilar to the scalar case, except has a different non-edge value for
each named field.r   r>   r   rm   ri   r   r   Nr   )r   rB   r   rx   rC   infr   rK   r   r   r   )r)   r   nonedgesr7   r   r   r   s          r   0test_to_numpy_array_structured_dtype_nonedge_aryr   n  s     JJq!BJHHx'&%9:Exx!RVVUx3H
!xHA.$$QeDRqw1 r   c                     [         R                  " S5      n [        R                  S[        4S[        4/5      nSn[
        R                  " [        US9   [         R                  " XS9  SSS5        [
        R                  " [        US9   [         R                  " XSS9  SSS5        g! , (       d  f       NF= f! , (       d  f       g= f)	zcUsing both a structured dtype (with named fields) and specifying a `weight`
parameter is ambiguous.r   ri   r   z7Specifying `weight` not supported for structured dtypesr]   r   Nr   )	r   r   rB   r   rv   rD   rE   
ValueErrorrK   )r)   r   exception_msgs      r   7test_to_numpy_array_structured_dtype_with_weight_raisesr   |  s     	aAHHxo}56EMM	z	7
!) 
8	z	7
!8 
8	7 
8	7	7	7s   B*B;*
B8;
C	c                    [         R                  " SU S9n[        R                  S[        4S[        4/5      n[
        R                  " [         R                  SS9   [         R                  " XS S9  S S S 5        g ! , (       d  f       g = f)Nr   r   ri   r   z#Structured arrays are not supportedr]   r   )	r   r   rB   r   rv   rD   rE   rF   rK   )r   r)   r   s      r   0test_to_numpy_array_structured_multigraph_raisesr     s_    
aj1AHHxo}56E	r''/T	U
!6 
V	U	Us   A;;
B	c                     Sn [         R                  [         R                  U S-
  5      SS9n[        R                  " U 5      n[        [        R                  " USS9U5      (       d   e[        [        U 5      5      n[        [        R                  " USUS9U5      (       d   e[        [        U S-   5      5      n[        R                  " [        SS9   [        R                  " XS	9  SSS5        [        [        U S-
  5      5      n[        R                  " [        SS9   [        R                  " XS	9  SSS5        g! , (       d  f       N\= f! , (       d  f       g= f)
z:An exception is raised when `len(nodelist) != A.shape[0]`.r@   r>   kNr   r   r[   z'nodelist must have the same length as Ar]   rZ   )rB   diagonesr   r   r   r3   r_   ro   rD   rE   r   )rk   r7   r   r.   s       r   'test_from_numpy_array_nodelist_bad_sizer    s   	A
A!$A}}QH++A>IIIIqNE
A>   
 q1uE	z)R	S
A. 
T q1uE	z)R	S
A. 
T	S 
T	S
 
T	Ss   D?!E?
E
Er.   )r   r   r?   r>   r   )	   r   r>   r?      )abcdr   )r   r   r?   r   )r   r?   )r   r>   )r7   r?   r   spam)r>   r   c                    [         R                  [         R                  S5      SS9n[        R                  " [        R
                  " S5      [        [        U 5      5      SS9n[        R                  " US U S9n[        X25      (       d   e[        R                  " USS	S
9  [        R                  " XS9n[        X25      (       d   eg )Nr   r>   r   r@   Tmappingcopyr   r   ri   namerZ   )rB   r  r  r   relabel_nodesr   dict	enumerater3   r   set_edge_attributes)r.   r7   r   r)   s       r   test_from_numpy_array_nodelistr    s     	
a A
a$y'7"8tH 	A>A$$$$ 8Sx8
A.A$$$$r   c                    [         R                  [         R                  S5      SS9n[        R                  " / SQ5      n[        R
                  " U[        [        U 5      5      SS9n[        R                  " U[        R                  S U S9n[        XC5      (       d   e[        R                  " USS	S
9  [        R                  " U[        R                  U S9n[        XC5      (       d   eg )Nr   r>   r   r   )r>   r?   r
  )r   r   Tr  )r   r   r[   r   ri   r  )r   r[   )rB   r  r  r   r   r  r  r  r3   r   r  )r.   r7   Hr   r)   s        r   'test_from_numpy_array_nodelist_directedr    s     	
a A


34A4	%0@+AMH
ABJJ$QVWA$$$$ 8Sx8
ABJJGA$$$$r   c                    [         R                  / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " 5       n[	        S5       H-  u  p4UR                  [        R                  " XCS-   5      5        M/     [        R                  " U[        [	        U 5      5      SS	9n[        R                  " US[        R                  S U S
9n[        Xe5      (       d   eg )N)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>   Tr  )r   r   r   r[   )rB   rC   r   r   r  rn   	itertoolsrepeatr  r  r3   r   )r.   r7   r  ir   r   r)   s          r   )test_from_numpy_array_nodelist_multigraphr    s     		
	A 	A=>	))$A67 ?4	%0@+AMH
	]]	A $$$$r   graphc           	         U " S5      n[         R                  " U5      n[         R                  " U[        [	        U5      5      SS9n[         R
                  " US US9n[        XT5      (       d   eU " S5      nUR                  S5        [         R                  " U5      n[         R                  " U[        [        UR                  U5      5      SS9n[         R
                  " US US9n[        XT5      (       d   eg )Nr@   Tr  r   r   foo)
r   rK   r  r  r  r3   r   add_nodezipr.   )r   r.   r)   r7   r   r  s         r   'test_from_numpy_array_nodelist_rountripr%    s     	aA
!A4	%0@+AMH
A>A$$$$ 	aAJJu
!A4AGGU0C+D4PH
A>A$$$$r   )1r  rD   importorskiprB   r   networkxr   networkx.generators.classicr   r   r   networkx.utilsr   r	   fixturer   r   r   r2   minmaxr   r   r   rC   r{   r   r   r   meanmedianr   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   wheel_graphr%  r    r   r   <module>r0     sK    !/*  N N 'U Up   1S"IQx#r3ST U
 	RXX6{VQK8XHI	rxx!Vq!f 5WxEF((( 	2Yb	C9rww&7"))QH:	: 	vw''6):;<	)FF+;<=((2 '44 "**'=>
	
A"~	
A!R()	
A#r378	2 ?2 rxxz2::<892 :2 rxxz2::<89
2 :
2	9 r'GH7 I7/. !0#	%	% !0#	%	% !0#	%	%4 !0#	 2#4#4bnnbnn"UV% W	%r   