
    ܛ7i6                        d dl Z d dlmZ d dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZmZ dZh dZddd	h d
ddgfddddddddgZej2                  j5                  ddg dgddgg      ej2                  j5                  deeeg      d               Zd Zd Z G d d      Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$ej2                  j5                  d%e%dfe&dfe'd&fe(dff      d'        Z)ej2                  j5                  d(d)  e*d	      D         e+g d*      f      d+        Z,ej2                  j5                  d,g d-      ej2                  j5                  d.ejZ                  ej\                  ej^                  g      ej2                  j5                  d/ej`                  ejb                  g      d0                      Z2ej2                  j5                  d,g d-      ej2                  j5                  d.ejZ                  ej\                  ej^                  g      ej2                  j5                  d/ejf                  ejh                  g      d1                      Z5ej2                  j5                  d,g d-      ej2                  j5                  d.ejZ                  ej\                  ej^                  g      ej2                  j5                  d2g d*      d3                      Z6d4 Z7d5 Z8d6 Z9d7 Z:y)8    N)copy)PythonRandomInterfacePythonRandomViaNumpyBitsarbitrary_elementcreate_py_random_statecreate_random_statedict_to_numpy_arraydiscrete_sequenceedges_equalflattengroupsmake_list_of_intspairwisepowerlaw_sequence)_dict_to_numpy_array1_dict_to_numpy_array2)      )      ))      )   )   )	   
      )                           >   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   foobarbaz)r   r   )r   r   qweasd)r    r#   )r$   )r%   19r'   resultexisting	existing1	existing2nestedc                    |t        | |      }t        |      dk(  sIJ t        |      }t        |      }t        | |      }t        |      t        |      cxk(  r	d|z   k(  sJ  J t        t	        |      t
              sJ y )Nr'   )r   lenr   
issubclasstypetuple)r6   r2   val_result	nexistings        [/home/rose/Desktop/poly/venv/lib/python3.12/site-packages/networkx/utils/tests/test_misc.pytest_flattenr@   0   s|     ~ff%3x2~~v,L	fg&3x3w<92	>99999d3i'''    c                  2   g d} t        |       | u sJ t        |       | k(  sJ t        t        |       d   t              sJ t        j                  t
        j                  t         g d       t        j                  t
        j                  t         g d       y )N)r   r   g      @*   r   )r   r   r   kermit)r   r   g@)r   
isinstanceintpytestraisesnxNetworkXError)mylists    r?   test_make_list_of_intsrM   ?   sw     FV$...V$...'/2C888
MM"""$57JK
MM"""$5{CrA   c                  <    t        dd      } t        dg d      } y )Nr'   g      @)exponent)r   r   r   r   r   r   r   r   r   r   r   )distribution)r   r
   )zs    r?   test_random_number_distributionrR   H   s    "s+A"+LMArA   c                   :    e Zd Zed        Zd Zd Zd Zd Zd Z	y)TestNumpyArrayc                 .    t        j                  d      ay )Nnumpy)rH   importorskipnp)clss    r?   setup_classzTestNumpyArray.setup_classO   s       )rA   c                    t         j                  g dt         j                        }t         j                  g d      }t         j                  g d      }t        t	        |      t
              sJ t	        |      t        |      k(  sJ t	        |      }t        |d   t              sJ t        j                  t        j                  t        |       y )Nr   r   r   )dtype)g      ?r   r   )g?r   r   r   )rX   arrayint64rF   r   listrG   rH   rI   rJ   rK   )selfabcBs        r?   test_numpy_to_list_of_intsz)TestNumpyArray.test_numpy_to_list_of_intsT   s    HHYbhhH/HH[!HH[!+A.555 #tAw...a !A$$$$b&&(91=rA   c                    ddd}t        |ddd      }t        j                  j                  |t        j	                  ddg             t        |ddd      }t        j                  j                  |t        j	                  ddg             t        |      }t        j                  j                  |j                         d       y )Nr   r   rb   rc   r   mapping)rc   rb   r   )r   rX   testingassert_allcloser^   sum)ra   drb   s      r?   test__dict_to_numpy_array1z)TestNumpyArray.test__dict_to_numpy_array1^   s    !!!11-=>


""1bhh1v&67!!11-=>


""1bhh1v&67!!$


""1557A.rA   c                 "   ddddddd}ddd}t        ||      }t        j                  j                  |t        j	                  ddgddgg             t        |      }t        j                  j                  |j                         d       y 	Nr   r   rh   r   r'   r   ri   !   )r   rX   rk   rl   r^   rm   ra   rn   rj   rb   s       r?   test__dict_to_numpy_array2z)TestNumpyArray.test__dict_to_numpy_array2h   sz    "r);<"!!W5


""1bhhR1a&/A&BC!!$


""1557B/rA   c                    ddddddd}ddd}t        ||      }t        j                  j                  |t        j	                  ddgddgg             ddd}t        ||      }t        j                  j                  |t        j	                  ddgddgg             t        |      }t        j                  j                  |j                         d       y rq   )r	   rX   rk   rl   r^   r   rm   rs   s       r?   test_dict_to_numpy_array_az)TestNumpyArray.test_dict_to_numpy_array_ar   s    "r);<"73


""1bhhAR/A&BC"73


""1bhhR1a&/A&BC!!$


""1557B/rA   c                    ddd}ddd}t        ||      }t        j                  j                  |t        j	                  ddg             t        |      }t        j                  j                  |j                         d       y )Nr   r   rh   r   ri   r   )r	   rX   rk   rl   r^   r   rm   rs   s       r?   test_dict_to_numpy_array_bz)TestNumpyArray.test_dict_to_numpy_array_b   sg    !"73


""1bhh1v&67!!$


""1557A.rA   N)
__name__
__module____qualname__classmethodrZ   rf   ro   rt   rv   rx    rA   r?   rT   rT   N   s-    * *>/00/rA   rT   c                  n   t        d      } g d}|dgz   }t        t        |             |k(  sJ t        t        t        |                   |k(  sJ t        t        | d            |k(  sJ t        d      }t        t        |            g k(  sJ t        d      }t        t        |d            g k(  sJ y )Nr   )r   r   r   r   )r   r   )r   r   T)cyclicr}   )ranger`   r   iter)nodes
node_pairsnode_pairs_cycle
empty_iters       r?   test_pairwiser      s    !HE)J!VH, J...e%&*444t,-1AAAAbJ$%+++bJD12b888rA   c                      t        t        dg d            } t        |       }ddhddhdhd}||k(  sJ i t        i       k(  sJ y )	Nabcde)r   r   r   r   r   rb   rc   rd   rn   e)r   r   r   )dictzipr   )many_to_oneactualexpecteds      r?   test_groupsr      sS    s7O45KK F:3*#7HXrA   c                     t        j                  d      } | j                  j                  }t	        t        d      |      sJ t	        t        d       |      sJ t	        t        | j                        |      sJ t	        t         |d            |      sJ | j                  j                         }t	        t        |      | j                  j                        sJ t        j                  t        t
        d       | j                   |d      j                  d      t        d      j                  d      k(        sJ y )NrV   r   rb   r   )rH   rW   randomRandomStaterF   r   default_rng	GeneratorrI   
ValueErrorallrand)rX   rsrngs      r?   test_create_random_stater      s    			W	%B			B)!,b111)$/444)"))4b999)"Q%0"555
))


!C)#.		0C0CDDD
MM*13766"Q%**R.$7$:$?$?$CCDDDrA   c                     t         j                  } t        t        d      |       sJ t        t        d       |       sJ t        t         | d            |       sJ t	        j
                  t        t        d       t	        j                  d      }|j                   j                  }|j                   j                  d      }|j                   j                  |j                   j                               }t        }t        }t        t        |j                         |      sJ t        t         |d            |      sJ t        t        |      |      sJ t        t        |      |      sJ  |       } |       }t        ||      sJ t        ||      sJ t        |      |k(  sJ t        |      |k(  sJ d}	| |d      fD ]7  }
t        |
      }|j                  d|	dz          |j                  d|	dz          9 y )Nr   rb   rV   i  l    r   r   )r   RandomrF   r   rH   rI   r   rW   r   r   r   SFC64r   r   	randrangerandint)pyrsrX   r   r   rng_explicitold_nprsnprsold_nprs_instancenprs_instanceint64maxrprss               r?   test_create_py_random_stater      s   ==D,Q/666,T2D999,T!W5t<<<
MM*4c:			W	%B			B
))


%C99&&ryy'89L$H#D,RYY7>>>,RU3X>>>,S14888,\:DAAA 
FM'222mT***!"348IIII!-0MAAA #H2a5\$Q'aA&Ax!|$ rA   c            
         t        j                  d      } d}| j                  j                  }t	         ||            } ||      }|j                  dd      |j                  dd      k(  sJ |j                  d      |j                  dd      k(  sJ |j                  dd      |j                  dd      k(  sJ |j                  g d	      |j                  g d	      k(  sJ |j                  dd      |j                  dd      k(  sJ |j                  d
      |j                  d      k(  sJ |j                  d      |j                  d      k(  sJ | j                  |j!                  g d	      |j!                  g d	      k(        sJ | j                  |j#                  g d	d      |j                  g d	dd      k(        sJ | j                  t%        d      D cg c]  }|j                  dd       c}t%        d      D cg c]  }|j                  dd       c}k(        sJ |j                         |j'                         k(  sJ y c c}w c c}w NrV   rC   r   r   r   r   r   r   r\   g      ?gUUUUUU?)r   F)replaced   r   )rH   rW   r   r   r   r   r   uniformchoicegaussnormalexpovariateexponentialparetovariateparetor   shufflesampler   random_sample)rX   seedr   r   rs42_s         r?   &test_PythonRandomInterface_RandomStater      s   			W	%BD			B
4
)Cd8D ==A$,,q!"4444==t||Aq1111;;q"a!4444::i DKK	$::::99Q?dkk!Q////??34#3#3G#<<<<Q4;;q>11166#++i(DLL,CCDDD66

9a DKK	4K$OO   66$)#J/JqQ	J/(-c
3
1DLLA
3	4   ::<4--//// 	03s   !I	I
c            
         t        j                  d      } d}| j                  j                  |      }t	        | j                  j                  |            }|j                  dd      |j                  dd      k(  sJ |j                  d      |j                  dd      k(  sJ |j                  dd      |j                  dd      k(  sJ |j                  g d	      |j                  g d	      k(  sJ |j                  dd      |j                  dd      k(  sJ |j                  d
      |j                  d      k(  sJ |j                  d      |j                  d      k(  sJ | j                  |j!                  g d	      |j!                  g d	      k(        sJ | j                  |j#                  g d	d      |j                  g d	dd      k(        sJ | j                  t%        d      D cg c]  }|j'                  dd       c}t%        d      D cg c]  }|j                  dd       c}k(        sJ |j                         |j                         k(  sJ y c c}w c c}w r   )rH   rW   r   r   r   r   integersr   r   r   r   r   r   r   r   r   r   r   r   r   )rX   r   r   prir   s        r?   $test_PythonRandomInterface_Generatorr      s   			W	%BD
))


%C
		 5 5d ;
<C ==A#,,q!"4444==s||Aq1111;;q"Q!3333::i CJJy$999999Q?cjjA....??33??7#;;;;Q3::a=00066#++i(CKK	,BBCCC66

9a CJJy$J$NN   66$)#J/JqQ	J/(-c
3
1CLLA
3	4   ::<3::<''' 	03s   1I!I&
)iterable_typer   [c                 8     | g d      }t        |      |k(  sJ y )Nr\   )r   )r   r   iterables      r?   test_arbitrary_elementr     s!     Y'HX&(222rA   iteratorc              #       K   | ]  }|  y wNr}   ).0is     r?   	<genexpr>r     s     Aas   r\   c                 z    t        j                  t        d      5  t        |        ddd       y# 1 sw Y   yxY w)z0Value error is raised when input is an iterator.zfrom an iterator)matchN)rH   rI   r   r   )r   s    r?   test_arbitrary_element_raisesr     s'     
z);	<(# 
=	<	<s   1:n)r   r   r'   gencreate_usingc                     || |      } || |      }t        |j                         |j                         |j                               sJ t        |j                         |j                         |j                               sJ |j                  dd       t        |j                         |j                         |j                               sJ t        |j                         |j                         |j                               rJ t        |j                         |j                         |j                               rJ y)zHTest whether edges_equal properly compares edges without attribute data.r   directedr   r   N)r   edgesis_directedremove_edge)r   r   r   GHs        r?   test_edges_equalr     s    
 	AL)AAL)Aqwwy!'')ammoFFFqwwy!'')ammoFFFMM!Qqwwy!'')ammoFFF1779aggi!--/JJJ1779aggi!--/JJJJrA   c                 "    || |      } || |      }t        |j                               }|j                  |       |j                  |       t        |j                         |j                         |j	                               sJ |j                  dd       t        |j                         |j                         |j	                               sJ t        |j                         |j                         |j	                               rJ y)zDTest whether ``edges_equal`` properly compares edges in multigraphs.r   r   r   r   N)r`   r   add_edges_fromr   r   r   )r   r   r   r   r   G_edgess         r?   test_edges_equal_multiedger   *  s    
 	AL)AAL)A1779oGWWqwwy!'')ammoFFFMM!Qqwwy!'')ammoFFF1779aggi!--/JJJJrA   weightc                     ||       } ||       }t        |j                               }|j                  fd|D               t        |j                         |j                               sJ |j                  fd|D               t        |j                         |j                               sJ t        |j                  d      |j                  d            rJ y)zFTest whether ``edges_equal`` properly compares edges with weight data.c              3   ,   K   | ]  }g |  y wr   r}   r   r   r   s     r?   r   z,test_edges_equal_weighted.<locals>.<genexpr>E  s     <Gqll6lGs   c              3   2   K   | ]  }g |d z     yw)r   Nr}   r   s     r?   r   z,test_edges_equal_weighted.<locals>.<genexpr>H  s!     @1..6A:.s   TdataN)r`   r   add_weighted_edges_fromr   )r   r   r   r   r   r   s     `   r?   test_edges_equal_weightedr   <  s    
 	AAAA1779oG<G<<qwwy!''),,,@@@qwwy!''),,,1777-qwwDw/ABBBBrA   c                  8   t        j                  d      } t        j                  d      }t        j                  dt         j                        }dddddid}t        j                  | |       t	        | j                  d	      | j                  d	            sJ t	        | j                  d	      | j                               rJ t        j                  ||       t	        | j                         |j                               sJ t	        | j                  d	      |j                  d	            sJ d
|d   d   d<   t	        | j                         |j                               sJ t	        | j                  d	      |j                  d	            rJ y)zQTest whether ``edges_equal`` properly compares edges with attribute dictionaries.r   r   r'   nothing)attr1attr2r   )r   r   Tr   	somethingr   r   N)rJ   
path_graph
MultiGraphset_edge_attributesr   r   )r   r   Iattrss       r?   test_edges_equal_datar   M  sE   
aA
aA
abmm4A!I6!ME1e$qwwDw)1777+=>>>1777-qwwy9991e$qwwy!''),,,qwwDw)1777+=>>>"AaDGGqwwy!''),,,1777-qwwDw/ABBBBrA   c                     t        j                  dt         j                        } t        j                  dt         j                        }| j                  dddd       | j                  dddd	       |j                  dddd       |j                  dddd	       t	        | j                  d
      | j                  d
            sJ t	        | j                         |j                               rJ t	        | j                  d
      |j                  d
            rJ t	        | j                  d
      |j                  d
            rJ t	        | j                  d
d
      |j                  d
d
            rJ y)zdTest whether ``edges_equal`` properly compares edges with attribute dictionaries in ``MultiGraphs``.r   r   r   r   bluer   r   greenr   Tr   )keys)r   r   N)rJ   r   r   add_edger   r   r   r   s     r?    test_edges_equal_multigraph_datar   a  s6   
abmm4A
abmm4AJJq!QfJ%JJq!QgJ&JJq!QfJ%JJq!QgJ&qwwDw)1777+=>>>1779aggi0001777-qwwDw/ABBB1777-qwwDw/ABBB177478!''tRV':WXXXXrA   c                     t        j                  dg      } t        j                  dg      }t        | j                         |j                         d      sJ t        | j                         |j                         d      rJ y)z>Test whether ``edges_equal`` properly compares directed edges.r   )r   r   Fr   TN)rJ   DiGraphr   r   r   s     r?   test_edges_equal_directedr  q  sa    


F8A


F8Aqwwy!'')e<<<1779aggi$????rA   c                      t        j                         } t        j                         }| j                  ddd       |j                  ddd       t        | j	                  d      | j	                  d      d      sJ |j                  ddd	
       t        | j	                  d      |j	                  d      d      rJ | j                  ddd	
       t        | j	                  d      |j	                  d      d      sJ | j                  dd       | j                  ddd	
       t        | j	                  d      |j	                  d      d      sJ t        | j	                  d      |j	                  d      d      rJ y)zZTest whether ``edges_equal`` properly compares directed edges with attribute dictionaries.r   r   r   r   Tr   r   r   r   r   FN)rJ   r   r   r   r   r   r   s     r?   test_edges_equal_directed_datar  z  sK   


A


AJJq!6J"JJq!6J"qwwDw)1777+=MMMJJq!7J#1777-qwwDw/ADQQQJJq!7J#qwwDw)1777+=MMMMM!QJJq!7J#qwwDw)1777+=NNN1777-qwwDw/ADQQQQrA   );r   r   rH   networkxrJ   networkx.utilsr   r   r   r   r   r	   r
   r   r   r   r   r   r   networkx.utils.miscr   r   nested_depth
nested_setnested_mixedmarkparametrizer@   rM   rR   rT   r   r   r   r   r   r   r`   r;   strsetr   r   r   r   complete_graphr   cycle_graphGraphr   r   r   MultiDiGraphr   r   r   r   r  r  r}   rA   r?   <module>r     s          M
 >Aq6"	EU+%  D"zl[+<V#WXL,
#KL
( M Y
(DN:/ :/z
9E  %F06(4 !T1IqzC:Qx#P33
 qDO,$	$ k*!2!2BMM2>> RS"((BJJ)?@
K A T +
K k*!2!2BMM2>> RS"--)IJK K T +K k*!2!2BMM2>> RS9-C . T +CC(Y @RrA   