+
    )i"                     n    R t ^ RIt^ RIt^ RIt^ RIHtHtHt ]P                  ! R4      t
 ! R R4      tR# )z$Unit tests for PyGraphviz interface.N)edges_equalgraphs_equalnodes_equal
pygraphvizc                   :  a  ] tR t^t o R tR t]P                  P                  R]	P                  ! 4       ]	P                  ! 4       ]	P                  ! 4       ]	P                  ! 4       34      R 4       tR t]P                  P                  R]	P                  ]	P                  ]	P                  ]	P                  34      R 4       tR tR	 t]P                  P                  R]	P                  ]	P                  34      R
 4       tR tR tR tR tR tR tR tR t]P                  P9                  RR7      R 4       tR tR t]P                  P9                  RR7      R 4       t R t!]P                  P                  R]"! ^4      4      R 4       t#R t$R t%R t&R t'V t(R!# )"
TestAGraphc                p    . ROpVP                  V4       VP                  R4       RVP                  R&   V# )AEbronzemetal)r	   Br	   Cr   )r   r   )r	   D)add_edges_fromadd_nodegraph)selfGedgess   && `/var/www/html/photoedit/myenv/lib/python3.14/site-packages/networkx/drawing/tests/test_agraph.pybuild_graphTestAGraph.build_graph   s3    L		

3#    c                <   \        VP                  4       VP                  4       4      '       g   Q h\        VP                  4       VP                  4       VP	                  4       R 7      '       g   Q hVP
                  R,          VP
                  R,          8X  g   Q hR# ))directedr   N)r   nodesr   r   is_directedr   )r   G1G2s   &&&r   assert_equalTestAGraph.assert_equal   si    288:rxxz2222288:rxxzBNN<LMMMMxx BHHW$5555r   r   c                   V P                  V4      p\        P                  P                  V4      p\        P                  P	                  V4      pV P                  W4       VR ,          p\        P                  P                  P                  WE4       \        P                  P                  V4      pV P                  WF4       VR,          p\        VR4      ;_uu_ 4       p\        P                  P                  P                  WG4       RRR4       \        V4      ;_uu_ 4       p\        P                  P                  V4      pRRR4       V P                  WF4       R#   + '       g   i     L^; i  + '       g   i     L6; i)ztest.dotzfh_test.dotwN)
r   nx	nx_agraph	to_agraphfrom_agraphr"   drawing	write_dotread_dotopen)r   r   tmp_pathr	   HfnameHinfhs   &&&     r   test_agraph_roundtripping$TestAGraph.test_agraph_roundtripping   s	    QLL""1%LL$$Q'!:%


&&q0ll##E*!!=(%JJ  **11  %[[B,,''+C !!  [s    *E % E3 E0	3F	c                    \         P                  ! R R7      p\         P                  P                  V4      p\         P                  P	                  V4      pVP
                  R 8X  g   Q hR# )test)nameN)r&   Graphr'   r(   r)   r7   r   r   r	   r/   s   &   r   test_from_agraph_name TestAGraph.test_from_agraph_name0   sJ    HH&!LL""1%LL$$Q'vvr   graph_classc                    \         P                  ! ^4      p\         P                  P                  V4      p\         P                  P	                  W1R7      p\        WA4      '       g   Q hR# )   )create_usingN)r&   
path_graphr'   r(   r)   
isinstance)r   r<   r   r	   r/   s   &&   r   test_from_agraph_create_using(TestAGraph.test_from_agraph_create_using6   sN     MM!LL""1%LL$$Q$A!))))r   c                z   \         P                  ! 4       pVP                  ^ ^.4       \         P                  P	                  V4      pVP                  ^ ^RR7       \         P                  P                  V4      p\        V\         P                  4      '       g   Q hRRRR/3VP                  RR7      9   g   Q hR# )	    foo)key01rG   TdataN)	r&   r8   add_nodes_fromr'   r(   add_edger)   rA   r   r9   s   &   r   test_from_agraph_named_edges'TestAGraph.test_from_agraph_named_edges?   s    HHJ	!Q LL""1%	

1aU
#LL$$Q'!RXX&&&&S5%.)QWW$W-????r   c                    \         P                  ! 4       pVP                  ^RR7       \         P                  P	                  V4      p\        VP                  4       ^ ,          P                  4      RR/8X  g   Q hR# )   redcolorrT   N)r&   r8   r   r'   r(   dictr   attrr   r   r	   s   &  r   test_to_agraph_with_nodedata'TestAGraph.test_to_agraph_with_nodedataK   sY    HHJ	

1E
"LL""1%AGGIaL%%&7E*::::r   c                   V! 4       pVP                  ^ ^.4       VP                  ^ ^RR7       \        P                  P	                  V4      p\        VP                  4       ^ ,          P                  4      RR/8X  g   Q hR# )rE   yellowrS   rT   N)rL   rM   r&   r'   r(   rU   r   rV   )r   r<   r   r	   s   &&  r   test_to_agraph_with_edgedata'TestAGraph.test_to_agraph_with_edgedataQ   si    M	!Q 	

1ax
(LL""1%AGGIaL%%&7H*====r   c                P   \         P                  ! ^4      p\        VR,          4      p\         P                  P	                  W#RR7      w  rEWC8X  g   Q h\        VR4      ;_uu_ 4       pVP                  4       pRRR4       \        X4      ^ 8  g   Q hR#   + '       g   i     L$; i)r>   z	graph.pngF)pathshowrbN)r&   complete_graphstrr'   view_pygraphvizr-   readlen)r   r.   r   
input_pathout_pathr	   r2   rK   s   &&      r   test_view_pygraphviz_path$TestAGraph.test_view_pygraphviz_pathY   s    a K/0
ll221E2R%%%*d##r779D $4y1}} $#s   (BB%	c                    \         P                  ! ^4      p\         P                  P                  V^RR7      w  r4VRR R8X  g   Q hR# )r>   F)suffixr`   Nz_1.pngi)r&   rb   r'   rd   )r   r.   r   r_   r	   s   &&   r    test_view_pygraphviz_file_suffix+TestAGraph.test_view_pygraphviz_file_suffixc   sC    a ,,..q.GBCyH$$$r   c                   \         P                  ! 4       p\        P                  ! \         P                  \         P
                  P                  V4       \         P                  ! ^^4      p\         P
                  P                  VRR7       R# )   Fr`   N)r&   r8   pytestraisesNetworkXExceptionr'   rd   barbell_graph)r   r   s   & r   test_view_pygraphvizTestAGraph.test_view_pygraphvizh   sV    HHJb**BLL,H,H!LQ"
$$QU$3r   c                *   \         P                  ! 4       pVP                  ^^^R7       VP                  ^^^R7       \         P                  P	                  VRRR7      w  r#VP                  4        F  pVP                  R,          R9   d   K  Q h	  R# )rQ   )weightry   F	edgelabelr`   N)78)r&   r8   rM   r'   rd   r   rV   )r   r   r_   r	   edges   &    r   test_view_pygraphviz_edgelabel)TestAGraph.test_view_pygraphviz_edgelabeln   su    HHJ	

1a
"	

1a
",,..qH5.QGGID99X&*444 r   c                    \         P                  ! ^4      pR p\         P                  P                  WRR7      w  r4VP	                  4        F  pVP
                  R,          R8X  d   K  Q h	  R# )r>   c                     R # )rF    rJ   s   &r   	foo_labelETestAGraph.test_view_pygraphviz_callable_edgelabel.<locals>.foo_labely   s    r   Frz   labelrF   N)r&   rb   r'   rd   r   rV   )r   r   r   r_   r	   r~   s   &     r   'test_view_pygraphviz_callable_edgelabel2TestAGraph.test_view_pygraphviz_callable_edgelabelv   s[    a 	 ,,..qE.RGGID99W%... r   c                r   \         P                  ! 4       pVP                  ^ ^^ RR7       VP                  ^ ^^RR7       \         P                  P	                  VRRR7      w  r#VP                  4       p\        V4      ^8X  g   Q hV F+  pVP                  R,          P                  4       R	9   d   K+  Q h	  R# )
rE   	left_fork)rG   r7   
right_forkr7   Frz   r   N)r   r   )	r&   
MultiGraphrM   r'   rd   r   rf   rV   strip)r   r   r_   r	   r   r~   s   &     r   *test_view_pygraphviz_multigraph_edgelabels5TestAGraph.test_view_pygraphviz_multigraph_edgelabels   s    MMO	

1aQ[
1	

1aQ\
2,,..qF.O	5zQD99W%++-1LLLL r   c                   \         P                  ! 4       pV P                  V4      pR VP                  R,          R&   R VP                  R,          R&   R VP                  R,          R&   \         P
                  P                  V4      pR# )keywordr
   nuvNr   )r&   r8   r   r   r   r'   r(   rW   s   &  r   !test_graph_with_reserved_keywords,TestAGraph.test_graph_with_reserved_keywords   sk     HHJQ%S#,
C #,
C LL""1%r   c                    \         P                  ! ^4      p\         P                  P                  VRR7      w  r#VP                  / 8X  g   Q hR# )   Frq   N)r&   rb   r'   rd   r   r   r   r_   r	   s   &   r   ,test_view_pygraphviz_no_added_attrs_to_input7TestAGraph.test_view_pygraphviz_no_added_attrs_to_input   s=    a ,,..qu.=ww"}}r   zknown bug in clean_attrs)reasonc                    \         P                  ! ^4      pRR/VP                  R&   RR/VP                  R&   \         P                  P	                  VRR7      w  r#VP                  RRR/RRR//8X  g   Q hR	# 
r   widthz0.80nodefontsize14r~   Frq   N)r&   rb   r   r'   rd   r   s   &   r   2test_view_pygraphviz_leaves_input_graph_unmodified=TestAGraph.test_view_pygraphviz_leaves_input_graph_unmodified   sv    a "F+%t,,,..qu.=ww6GV#4fz4>PQQQQr   c                H   \         P                  ! ^4      pRR/VP                  R&   RR/VP                  R&   \         P                  P	                  VRR7      w  r#\        VP                  4      R,          R8X  g   Q h\        VP                  4      R,          R8X  g   Q hR	# r   )r&   rb   r   r'   rd   rU   	node_attr	edge_attrr   s   &   r   test_graph_with_AGraph_attrs'TestAGraph.test_graph_with_AGraph_attrs   s    a "F+%t,,,..qu.=AKK )V333AKK ,444r   c                   \         P                  ! 4       p\         P                  P                  V4      p\         P                  P	                  V4      p\        W4      '       g   Q h\         P                  P                  V4      p\         P                  P	                  V4      p\        W54      '       g   Q h\        W4      '       g   Q hR # N)r&   r8   r'   r(   r)   r   )r   r   r	   r/   AAHHs   &     r   test_round_trip_empty_graph&TestAGraph.test_round_trip_empty_graph   s    HHJLL""1%LL$$Q'A!!!!\\##A&\\%%b)A""""A""""r   z-integer->string node conversion in round tripc                    \         P                  ! ^4      p\         P                  P                  V4      p\         P                  P	                  V4      p\        W4      '       g   Q hR# )r>   N)r&   rb   r'   r(   r)   r   r9   s   &   r   test_round_trip_integer_nodes(TestAGraph.test_round_trip_integer_nodes   sK    a LL""1%LL$$Q'A!!!!r   c                    V P                  \        P                  ! 4       4      p\        P                  P	                  V4      p\        P                  P                  V4      pW#8X  g   Q hR # r   )r   r&   r8   r'   graphviz_layoutpygraphviz_layout)r   r   pos_graphvizpos_pygraphvizs   &   r   test_graphviz_aliasTestAGraph.test_graphviz_alias   sL    RXXZ(||33A677:---r   rootc                8   \         P                  ! ^4      p\         P                  P                  V4      p\         P                  P	                  VRVR7      pVP                  RV 2RR7       \        ;QJ dL    . R \        VP                  R4      P                  4      R,          P                  R4       4       F  NK  	  5ME! R \        VP                  R4      P                  4      R,          P                  R4       4       4      pV^,          V8X  g   Q hR	# )
   circo)progr   z-Groot=)argsr   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )float).0r   s   & r   	<genexpr>9TestAGraph.test_pygraphviz_layout_root.<locals>.<genexpr>   s     V)UAuQxx)Us   rI   pos,N)r&   rb   r'   r(   r   layouttuplerU   get_noderV   split)r   r   r   r	   pygv_layouta1_poss   &&    r   test_pygraphviz_layout_root&TestAGraph.test_pygraphviz_layout_root   s     a LL""1%ll44QW44P	v&W5Vajjo.B.B)CE)J)P)PQT)UVVajjo.B.B)CE)J)P)PQT)UVV1~'''r   c                :   \         P                  ! 4       pV P                  V4      p^VP                  R&   \         P                  P                  VRR7      p\        VP                  4       4      p\        V4      ^8X  g   Q h\        V^ ,          4      ^8X  g   Q hR# )r   dimenneator   N	r&   r8   r   r   r'   r   listvaluesrf   r   r   r   s   &  r   test_2d_layoutTestAGraph.test_2d_layout   z    HHJQll,,QW,=3::< 3x1}}3q6{ar   c                :   \         P                  ! 4       pV P                  V4      p^VP                  R&   \         P                  P                  VRR7      p\        VP                  4       4      p\        V4      ^8X  g   Q h\        V^ ,          4      ^8X  g   Q hR# )r>   r   r   r   Nr   r   s   &  r   test_3d_layoutTestAGraph.test_3d_layout   r   r   c                t   \         P                  ! 4       pVP                  ^ RR7       VP                  ^RR7       \         P                  P	                  V4      p\
        P                  ! RR7      ;_uu_ 4       pVP                  4        RRR4       \        X4      ^ 8X  g   Q hR#   + '       g   i     L$; i)rE   )r   T)recordN)rE   rE   )rQ   rQ   )	r&   r8   r   r'   r(   warningscatch_warningsr   rf   )r   r   r	   r   s   &   r   test_no_warnings_raised"TestAGraph.test_no_warnings_raised   s     HHJ	

1&
!	

1&
!LL""1%$$D11VHHJ 26{a 21s   :B''B7	r   N))__name__
__module____qualname____firstlineno__r   r"   rr   markparametrizer&   r8   DiGraphr   MultiDiGraphr3   r:   rB   rN   rX   r\   ri   rm   rv   r   r   r   r   r   xfailr   r   r   r   r   ranger   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s    6
 [[bhhj"**,9JK""&  [["**bmmR__M**
@; [[]RXXr}},EF> G>%
45/M	&
 [[89R :R5# [[MN" O". [[VU1X.
( /
(  
  
 r   r   )__doc__r   rr   networkxr&   networkx.utilsr   r   r   importorskipr   r   r   r   r   <module>r      s3    *    A A  .
`  ` r   