+
    �°³jÌy  ã                   óX  € ^ RI Ht ^ RIHtHt ^ RIt^ RIt^ RIH	t	H
t
 R t ! R R4      t ! R R	4      t ! R
 R4      tR tR tR tR tR tR tR tR tR tR tR tR t]P6                  P9                  R]P:                  ]P<                  34      R 4       t]P6                  P9                  R]P@                  ! R'R(.4      ]P@                  ! . R)O4      ]P@                  ! . R*O4      ]P@                  ! . R+O4      ]PB                  ! ^]P@                  R7      .4      R 4       t"R t#R t$R t% ! R  R!4      t&R" t'R# t(]P6                  P9                  R,. R-OR.03. R/OR003. R1O])! 4       334      R$ 4       t*R% t+]P6                  P9                  R,. R-OR.03. R/OR0R20334      R& 4       t,R# )3é    ©Údeque)ÚcombinationsÚpermutationsN)Úedges_equalÚpairwisec                ó    € \        V ^ R7       R# )zConsume the iterator entirely.)ÚmaxlenNr   )Úiterators   &Úc/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/algorithms/tests/test_dag.pyÚ_consumer      s   € ô 
ˆ(˜1×ó    c                   óZ   a € ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
 tRtV tR# )ÚTestDagLongestPathzBUnit tests computing the longest path in a directed acyclic graph.c                ój   € \         P                  ! 4       p\         P                  ! V4      . 8X  g   Q hR # ©N©ÚnxÚDiGraphÚdag_longest_path©ÚselfÚGs   & r   Ú
test_emptyÚTestDagLongestPath.test_empty   s&   € Ü�JŠJ‹LˆÜ×"Ò" 1Ó%¨Ô+Ð+Ò+r   c                óx   € . ROp\         P                  ! V4      p\         P                  ! V4      . RO8X  g   Q hR# )é   N)©r   é   ©r   é   ©r   é   ©r!   é   ©r%   é   )r!   é   )r   r   r!   r%   r'   r   ©r   Úedgesr   s   &  r   Útest_unweighted1Ú#TestDagLongestPath.test_unweighted1   s.   € Ú@ˆÜ�JŠJ�uÓˆÜ×"Ò" 1Ó%ªÔ8Ð8Ò8r   c                óx   € . ROp\         P                  ! V4      p\         P                  ! V4      . RO8X  g   Q hR# )r   N©r   r    ©r!   r#   ©r#   r%   ©r   r!   ©r   r%   r$   ©r   r   r!   r#   r%   r   r)   s   &  r   Útest_unweighted2Ú#TestDagLongestPath.test_unweighted2   s.   € ÚHˆÜ�JŠJ�uÓˆÜ×"Ò" 1Ó%ªÔ8Ð8Ò8r   c                ó˜   € \         P                  ! 4       p. ROpVP                  V4       \         P                  ! V4      . RO8X  g   Q hR# )r   N©)r   r   éûÿÿÿ)r   r!   r   )r!   r#   r   )r#   r%   r   )r!   r%   r#   )r   r'   r   )r   r!   r%   )r   r   Úadd_weighted_edges_fromr   ©r   r   r*   s   &  r   Útest_weightedÚ TestDagLongestPath.test_weighted"   s9   € Ü�JŠJ‹LˆÚSˆØ	×!Ñ! %Ô(Ü×"Ò" 1Ó%ªÔ2Ð2Ò2r   c                ó˜   € \         P                  ! 4       p\        P                  ! \         P                  \         P
                  V4       R # r   )r   ÚGraphÚpytestÚraisesÚNetworkXNotImplementedr   r   s   & r   Útest_undirected_not_implementedÚ2TestDagLongestPath.test_undirected_not_implemented(   s)   € Ü�HŠH‹JˆÜ�Š”b×/Ñ/´×1DÑ1DÀaÖHr   c                óª  € \        ^4       Uu. uF  p\        4       NK  	  pp\        P                  ! 4       pVP	                  V^ ,          V^,          4       VP	                  V^ ,          V^,          4       VP	                  V^,          V^,          4       VP	                  V^,          V^,          4       \        P
                  ! V4       R# u upi )zyTests that computing the longest path does not depend on
nodes being orderable.

For more information, see issue #1989.

N)ÚrangeÚobjectr   r   Úadd_edger   )r   ÚnÚnodesr   s   &   r   Útest_unorderable_nodesÚ)TestDagLongestPath.test_unorderable_nodes,   s–   € ô $)¨¤8Ó,¡8˜a”–¡8ˆÐ,Ü�JŠJ‹LˆØ	�
‰
�5˜•8˜U 1�XÔ&Ø	�
‰
�5˜•8˜U 1�XÔ&Ø	�
‰
�5˜•8˜U 1�XÔ&Ø	�
‰
�5˜•8˜U 1�XÔ&ô 	×Ò˜AÖùò -s   ŽCc                óx   € . ROp\         P                  ! V4      p\         P                  ! V4      . RO8X  g   Q hR# )r   N©r   r    r    r/   r0   r1   r2   r$   r3   )r   ÚMultiDiGraphr   r)   s   &  r   Útest_multigraph_unweightedÚ-TestDagLongestPath.test_multigraph_unweighted?   s.   € ÚPˆÜ�OŠO˜EÓ"ˆÜ×"Ò" 1Ó%ªÔ8Ð8Ò8r   c                ó˜   € \         P                  ! 4       p. ROpVP                  V4       \         P                  ! V4      ^^.8X  g   Q hR# ©r   N))r   r   r   )r   r!   r   ©r   r!   r   ©r   r!   r%   ©r   r!   r   ©r   rN   r9   r   r:   s   &  r   Útest_multigraph_weightedÚ+TestDagLongestPath.test_multigraph_weightedD   sB   € Ü�OŠOÓˆò
ˆð 	
×!Ñ! %Ô(Ü×"Ò" 1Ó%¨!¨Q¨Ô/Ð/Ò/r   c                óÜ   € \         P                  ! RR.4      pVP                  . RO4       \         P                  ! V4      ^^.8X  g   Q h\         P                  ! V^R7      . RO8X  g   Q hR# )r   )Údefault_weightNr   r    )rS   rT   rU   ©r   r   r!   rV   r   s   & r   Ú'test_multigraph_weighted_default_weightÚ:TestDagLongestPath.test_multigraph_weighted_default_weightP   s^   € Ü�OŠO˜V VÐ,Ó-ˆØ	×!Ñ!Ò"CÔDô ×"Ò" 1Ó%¨!¨Q¨Ô/Ð/Ð/Ü×"Ò" 1°QÔ7º9ÔDÐDÒDr   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r+   r4   r;   rB   rJ   rO   rW   r\   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s=   ø‡ € ÙLò,ò9ò
9ò
3òIòò&9ò

0÷Eð Er   r   c                   óB   a € ] tR t^Yt o RtR tR tR tR tR t	Rt
V tR# )	ÚTestDagLongestPathLengthzTUnit tests for computing the length of a longest path in a
directed acyclic graph.

c                óh  € . ROp\         P                  ! V4      p\         P                  ! V4      ^8X  g   Q h. ROp\         P                  ! V4      p\         P                  ! V4      ^8X  g   Q h\         P                  ! 4       pVP                  ^4       \         P                  ! V4      ^ 8X  g   Q hR# )r   N©r   r    r"   r$   r&   )r%   r(   r.   )r   r   Údag_longest_path_lengthÚadd_noder)   s   &  r   Útest_unweightedÚ(TestDagLongestPathLength.test_unweighted_   s‹   € Ú@ˆÜ�JŠJ�uÓˆÜ×)Ò)¨!Ó,°Ô1Ð1Ð1âHˆÜ�JŠJ�uÓˆÜ×)Ò)¨!Ó,°Ô1Ð1Ð1ô �JŠJ‹LˆØ	�
‰
�1ŒÜ×)Ò)¨!Ó,°Ô1Ð1Ò1r   c                ó˜   € \         P                  ! 4       p\        P                  ! \         P                  \         P
                  V4       R # r   )r   r>   r?   r@   rA   rl   r   s   & r   rB   Ú8TestDagLongestPathLength.test_undirected_not_implementedm   s)   € Ü�HŠH‹JˆÜ�Š”b×/Ñ/´×1KÑ1KÈQÖOr   c                ó”   € . ROp\         P                  ! 4       pVP                  V4       \         P                  ! V4      ^8X  g   Q hR# )r   Nr7   )r   r   r9   rl   r)   s   &  r   r;   Ú&TestDagLongestPathLength.test_weightedq   s9   € ÚSˆÜ�JŠJ‹LˆØ	×!Ñ! %Ô(Ü×)Ò)¨!Ó,°Ô1Ð1Ò1r   c                ót   € . ROp\         P                  ! V4      p\         P                  ! V4      ^8X  g   Q hR# )r   NrM   )r   rN   rl   r)   s   &  r   rO   Ú3TestDagLongestPathLength.test_multigraph_unweightedw   s.   € ÚPˆÜ�OŠO˜EÓ"ˆÜ×)Ò)¨!Ó,°Ô1Ð1Ò1r   c                ó”   € \         P                  ! 4       p. ROpVP                  V4       \         P                  ! V4      ^8X  g   Q hR# rR   )r   rN   r9   rl   r:   s   &  r   rW   Ú1TestDagLongestPathLength.test_multigraph_weighted|   s>   € Ü�OŠOÓˆò
ˆð 	
×!Ñ! %Ô(Ü×)Ò)¨!Ó,°Ô1Ð1Ò1r   r^   N)r_   r`   ra   rb   rc   rn   rB   r;   rO   rW   rd   re   rf   s   @r   ri   ri   Y   s)   ø‡ € ñò
2òPò2ò2÷

2ð 
2r   ri   c                   óÌ   a € ] tR t^‰t o ]R 4       tR tR tR tR t	R t
R tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRt V t!R# )ÚTestDAGc                ó   € R # r   r^   )Úclss   &r   Úsetup_classÚTestDAG.setup_classŠ   s   € ár   c                óä  € \         P                  ! . RO4      p\         P                  \         P                  3 F  p\	        V! V4      4      R8X  d   K  Q h	  VP                  ^^4       \         P                  \         P                  3 F3  p\        P                  ! \         P                  \        V! V4      4       K5  	  VP                  ^^4       \         P                  \         P                  3 F  p\	        V! V4      4      R8X  d   K  Q h	  VP                  ^^4       \	        \         P                  ! V4      4      R9   g   Q h\	        \         P                  ! V4      4      R8X  g   Q hR# )r   N)r   r1   r    r[   rU   >   r[   rU   )r   r   Útopological_sortÚ lexicographical_topological_sortÚtuplerG   r?   r@   ÚNetworkXUnfeasibler   Úremove_edge)r   ÚDGÚ	algorithms   &  r   Útest_topological_sort1ÚTestDAG.test_topological_sort1Ž   s  € Ü�ZŠZÒ0Ó1ˆä×-Ñ-¬r×/RÑ/RÓSˆIÜ™ 2›Ó'¨9Ö4Ð4Ð4ñ Tð 	�‰�A�qÔä×-Ñ-¬r×/RÑ/RÓSˆIÜ�MŠMœ"×/Ñ/´¹9ÀR»=ÖIñ Tð 	�‰�q˜!Ôä×-Ñ-¬r×/RÑ/RÓSˆIÜ™ 2›Ó'¨9Ö4Ð4Ð4ñ Tð 	�‰�q˜!Ôä”R×(Ò(¨Ó,Ó-Ð1GÔGÐGÐGÜ”R×8Ò8¸Ó<Ó=ÀÔJÐJÒJr   c                ó¨  € \         P                  P                  ^4      p\         P                  ! V4      '       d   Q h\         P                  ! VP	                  4       4      '       d   Q h\         P                  ! \         P
                  ! RR.4      4      '       d   Q h\         P                  ! \         P                  ! RR.4      4      '       g   Q hR# )r   Nr/   r0   )r   Ú
generatorsÚcomplete_graphÚis_directed_acyclic_graphÚto_directedr>   r   r   s   & r   Útest_is_directed_acyclic_graphÚ&TestDAG.test_is_directed_acyclic_graph£   s”   € Ü�M‰M×(Ñ(¨Ó+ˆÜ×/Ò/°×2Ò2Ð2Ð2Ü×/Ò/°·±³×@Ò@Ð@Ð@Ü×/Ò/´·²¸&À&Ð9IÓ0J×KÒKÐKÐKÜ×+Ò+¬B¯JªJ¸ÀÐ7GÓ,H×IÒIÐIÒIr   c                ó¾  € \         P                  ! ^^.^^.^^.^^.^^.^^.^^.^^.^^./	4      p\        P                  ! \         P                  \
        \         P                  ! V4      4       \         P                  ! V4      '       d   Q hVP                  ^^4       \        \         P                  ! V4      4       \         P                  ! V4      '       g   Q hR# ©r   N)	r   r   r?   r@   r‚   r   r   r‹   rƒ   ©r   r„   s   & r   Útest_topological_sort2ÚTestDAG.test_topological_sort2ª   sÆ   € Ü�ZŠZà�A�3Ø�A�3Ø�A�3Ø�A�3Ø�A�3Ø�R�DØ�R�DØ�R�DØ�R�Dð
ó
ˆô 	�Š”b×+Ñ+¬X´r×7JÒ7JÈ2Ó7NÔOä×/Ò/°×3Ò3Ð3Ð3à
�‰�q˜!ÔÜ”×$Ò$ RÓ(Ô)Ü×+Ò+¨B×/Ò/Ð/Ò/r   c                ó¸  a€ \         P                  ! 4       oSP                  \        ^^4       Uu. uF  p^V3NK	  	  up4       SP                  \        ^^	4       Uu. uF  p^V3NK	  	  up4       SP                  \        ^	^4       Uu. uF  p^V3NK	  	  up4       SP                  \        ^^4       Uu. uF  p^V3NK	  	  up4       V3R lpV! \	        \         P
                  ! S4      4      4       SP                  ^^4       \        P                  ! \         P                  \        \         P
                  ! S4      4       R# u upi u upi u upi u upi )r   c                 óÖ   <€ \        V \        4      '       g   Q h\        V 4      \        S4      8X  g   Q h\        V ^4       F$  w  r\        P
                  ! SW!4      '       g   K$  Q h	  R# ©r   N)Ú
isinstanceÚlistÚsetr   r   Úhas_path)ÚorderÚuÚvr„   s   &  €r   ÚvalidateÚ0TestDAG.test_topological_sort3.<locals>.validateÇ   sV   ø€ Ü˜e¤T×*Ò*Ð*Ð*Ü�u“:¤ R£Ô(Ð(Ð(Ü$ U¨AÖ.‘�ÜŸ;š; r¨1×0Ô0Ð0Ð0ó /r   N)r   r   Úadd_edges_fromrE   r˜   r   rG   r?   r@   r‚   r   )r   Úirž   r„   s   &  @r   Útest_topological_sort3ÚTestDAG.test_topological_sort3À   s  ø€ Ü�ZŠZ‹\ˆØ
×Ñ¬5°°A¬;Ó7©; a˜A˜q›6©;Ñ7Ô8Ø
×Ñ¬5°°A¬;Ó7©; a˜A˜q›6©;Ñ7Ô8Ø
×Ñ¬5°°B¬<Ó8©< a˜A˜q›6©<Ñ8Ô9Ø
×Ñ¬5°°R¬=Ó9©= a˜A˜q›6©=Ñ9Ô:õ	1ñ 	””b×)Ò)¨"Ó-Ó.Ô/à
�‰�B˜ÔÜ�Š”b×+Ñ+¬X´r×7JÒ7JÈ2Ó7NÖOùò 8ùÚ7ùÚ8ùÚ9s   °EÁEÂ
EÂ7Ec                óÐ   € \         P                  ! 4       pVP                  ^^4       \        P                  ! \         P
                  \        \         P                  ! V4      4       R# r�   )r   r>   rG   r?   r@   ÚNetworkXErrorr   r   r   s   & r   Útest_topological_sort4ÚTestDAG.test_topological_sort4Ò   s<   € Ü�HŠH‹JˆØ	�
‰
�1�aÔä�Š”b×&Ñ&¬´"×2EÒ2EÀaÓ2HÖIr   c                ó¤   € \         P                  ! 4       pVP                  ^ ^4       \        \         P                  ! V4      4      ^ ^.8X  g   Q hR# ©r   N)r   r   rG   r˜   r   r   s   & r   Útest_topological_sort5ÚTestDAG.test_topological_sort5Ø   s=   € Ü�JŠJ‹LˆØ	�
‰
�1�aÔÜ”B×'Ò'¨Ó*Ó+°°1¨vÔ5Ð5Ò5r   c                ó0  a€ \         P                  \         P                  3 Fp  oV3R  lpV3R lpV3R lp\        P                  ! \
        V4       \        P                  ! \
        V4       \        P                  ! \         P                  V4       Kr  	  R# )c                  ó¤   <€ \         P                  ! . RO4      p RpS! V 4       F(  pV'       g   K  RpV P                  ^V,
          ^4       K*  	  R# ©r   TFN©r   r    r/   )r   r   rG   ©r„   ÚfirstÚxr…   s      €r   Úruntime_errorÚ5TestDAG.test_topological_sort6.<locals>.runtime_errorà   sA   ø€ Ü—Z’ZÒ 8Ó9�Ø�Ù" 2ž�Aß‘uØ %˜ØŸ™ A¨¥E¨1Ö-ó 'r   c                  ó”   <€ \         P                  ! . RO4      p RpS! V 4       F   pV'       g   K  RpV P                  ^4       K"  	  R# r®   ©r   r   Úremove_noder°   s      €r   Úunfeasible_errorÚ8TestDAG.test_topological_sort6.<locals>.unfeasible_errorè   ó;   ø€ Ü—Z’ZÒ 8Ó9�Ø�Ù" 2ž�Aß‘uØ %˜ØŸ™ qÖ)ó 'r   c                  ó”   <€ \         P                  ! . RO4      p RpS! V 4       F   pV'       g   K  RpV P                  ^4       K"  	  R# r®   r¶   r°   s      €r   Úruntime_error2Ú6TestDAG.test_topological_sort6.<locals>.runtime_error2ð   rº   r   N)r   r   r€   r?   r@   ÚRuntimeErrorr‚   )r   r³   r¸   r¼   r…   s   &   @r   Útest_topological_sort6ÚTestDAG.test_topological_sort6Ý   sa   ø€ Ü×-Ñ-¬r×/RÑ/RÓSˆIõ.õ*õ*ô �MŠMœ,¨Ô6Ü�MŠMœ,¨Ô7Ü�MŠMœ"×/Ñ/Ð1AÖBó9 Tr   c                óˆ   € \         P                  ! . RO4      p\        \         P                  ! V4      4      . RO.8X  g   Q hR# )r   N)r   r    r/   r0   r3   ©r   r   r˜   Úall_topological_sortsr‘   s   & r   Útest_all_topological_sorts_1Ú$TestDAG.test_all_topological_sorts_1ü   s2   € Ü�ZŠZÒ8Ó9ˆÜ”B×,Ò,¨RÓ0Ó1²oÐ5FÔFÐFÒFr   c                ó    € \         P                  ! . RO4      p\        \         P                  ! V4      4      . RO. RO. RO. RO. RO.8X  g   Q hR# )r   N)r1   ©r   r   r"   ©r#   r!   r0   )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   ÚsortedrÃ   r‘   s   & r   Útest_all_topological_sorts_2Ú$TestDAG.test_all_topological_sorts_2   sG   € Ü�ZŠZÒ@ÓAˆÜ”b×.Ò.¨rÓ2Ó3ÚÚÚÚÚð8
ô 
ð 	
ò 
r   c                óö   € R  pR pR p\         P                  ! \        P                  V4       \         P                  ! \        P                  V4       \         P                  ! \        P                  V4       R# )c                  ót   € \         P                  ! . RO4      p \        \         P                  ! V 4      4       R# )r   N)r   r    r/   ©r#   r   r0   rÂ   )r„   s    r   Ú
unfeasibleÚ8TestDAG.test_all_topological_sorts_3.<locals>.unfeasible  s$   € Ü—’ÒDÓEˆBä”×)Ò)¨"Ó-Ö.r   c                  ót   € \         P                  ! RR.4      p \        \         P                  ! V 4      4       R# )r   Nr   r    )r   r>   r˜   rÃ   ©r   s    r   Únot_implementedÚ=TestDAG.test_all_topological_sorts_3.<locals>.not_implemented  s(   € Ü—’˜& &Ð)Ó*ˆAä”×)Ò)¨!Ó,Ö-r   c                  ót   € \         P                  ! . RO4      p \        \         P                  ! V 4      4       R# )r   N)r   r   r    )r   Ú
MultiGraphr˜   rÃ   rÒ   s    r   Únot_implemented_2Ú?TestDAG.test_all_topological_sorts_3.<locals>.not_implemented_2  s$   € Ü—’Ò6Ó7ˆAÜ”×)Ò)¨!Ó,Ö-r   N)r?   r@   r   r‚   rA   )r   rÏ   rÓ   r×   s   &   r   Útest_all_topological_sorts_3Ú$TestDAG.test_all_topological_sorts_3
  sP   € ò	/ò
	.ò
	.ô 	�Š”b×+Ñ+¨ZÔ8Ü�Š”b×/Ñ/°ÔAÜ�Š”b×/Ñ/Ð1BÖCr   c                ó  € \         P                  ! 4       p\        ^4       F  pVP                  V4       K  	  \	        \        \        \        VP                  4      4      4      \	        \         P                  ! V4      4      8X  g   Q hR# )r(   N)
r   r   rE   rm   rÉ   Úmapr˜   r   rI   rÃ   )r   r„   r¡   s   &  r   Útest_all_topological_sorts_4Ú$TestDAG.test_all_topological_sorts_4  sb   € Ü�ZŠZ‹\ˆÜ�q–ˆAØ�K‰K˜ŽNñ ä”cœ$¤¨R¯X©XÓ 6Ó7Ó8¼FÜ×$Ò$ RÓ(ó=
ô 
ð 	
ò 
r   c                ó    € \         P                  ! . RO4      p\        \         P                  ! V4      4      \        . RO. RO.4      8X  g   Q hR# )r   N)r   r   r    r/   r$   r$   r$   r3   )r   r   r!   r%   r#   )r   rN   rÉ   rÃ   r‘   s   & r   Ú'test_all_topological_sorts_multigraph_1Ú/TestDAG.test_all_topological_sorts_multigraph_1%  sB   € Ü�_Š_ÒUÓVˆÜ”b×.Ò.¨rÓ2Ó3´vÚšoÐ.ó8
ô 
ð 	
ò 
r   c                ó$  € ^	p. p\        ^V4       F$  pVP                  W3^,           3.V,          4       K&  	  \        P                  ! V4      p\	        \        P
                  ! V4      4      \	        \        ^V^,           4      4      .8X  g   Q hR# )é	   N)rE   Úextendr   rN   r˜   rÃ   )r   ÚNr*   r¡   r„   s   &    r   Ú'test_all_topological_sorts_multigraph_2Ú/TestDAG.test_all_topological_sorts_multigraph_2+  ss   € ØˆØˆÜ�q˜!–ˆAØ�L‰L˜1 !�e˜*˜¨Õ)Ö*ñ ä�_Š_˜UÓ#ˆÜ”B×,Ò,¨RÓ0Ó1´d¼5ÀÀAÈÅE»?Ó6KÐ5LÔLÐLÒLr   c                ób  € \         P                  ! 4       p\         P                  P                  P                  pVP                  . RO4       V! V^4      0 Rm8X  g   Q hV! V^4      ^^08X  g   Q hV! V^4      \        4       8X  g   Q h\        P                  ! \         P                  W!^4       R# )r   N©r   r1   rÎ   rÈ   r0   ©r   r'   r&   >   r   r   r#   r%   )
r   r   Ú
algorithmsÚdagÚ	ancestorsr    r™   r?   r@   r¥   )r   r   rí   s   &  r   Útest_ancestorsÚTestDAG.test_ancestors3  s‰   € Ü�JŠJ‹LˆÜ—M‘M×%Ñ%×/Ñ/ˆ	Ø	×ÑÒQÔRÙ˜˜A‹¢,Ô.Ð.Ð.Ù˜˜A‹ 1 a &Ô(Ð(Ð(Ù˜˜A‹¤#£%Ô'Ð'Ð'Ü�Š”b×&Ñ&¨	°aÖ8r   c                ób  € \         P                  ! 4       p\         P                  P                  P                  pVP                  . RO4       V! V^4      0 Rm8X  g   Q hV! V^4      0 Rm8X  g   Q hV! V^4      \        4       8X  g   Q h\        P                  ! \         P                  W!^4       R# )r   Nré   >   r   r!   r'   >   r   r!   r%   r'   )
r   r   rë   rì   Údescendantsr    r™   r?   r@   r¥   )r   r   rñ   s   &  r   Útest_descendantsÚTestDAG.test_descendants<  sˆ   € Ü�JŠJ‹LˆÜ—m‘m×'Ñ'×3Ñ3ˆØ	×ÑÒQÔRÙ˜1˜aÓ ¢IÔ-Ð-Ð-Ù˜1˜aÓ ¢LÔ0Ð0Ð0Ù˜1˜aÓ ¤C£EÔ)Ð)Ð)Ü�Š”b×&Ñ&¨¸Ö:r   c                ó^  € \         P                  ! . R
O4      p. ROp\        \         P                  ! V4      P	                  4       VRR7      '       g   Q h\         P                  ! . RO4      p. ROp\        \         P                  ! V4      P	                  4       VRR7      '       g   Q h\         P                  ! . RO4      p. ROp\        Y! Uu. uF  q3V3NK  	  up,           4      p\        \        \         P                  ! V4      P	                  4       4      VRR7      '       g   Q h\         P                  ! . R
O4      p. ROp\        \        \         P                  ! V4      P	                  4       4      V4      '       g   Q h\         P                  ! . R
O4      p. ROp\        \        \         P                  ! V4      P	                  4       4      V4      '       g   Q h\         P                  ! . R
O4      p. ROp\        \        \         P                  ! V4      P	                  4       4      VRR7      '       g   Q h\         P                  ! ^^R^/3^^R^ /3R	.4      p\         P                  ! V4      pVP	                  4        F,  w  rgVP                  Wg4      VP                  Wg4      8X  d   K,  Q h	  ^
p\         P                  ! R \        V4       4       4      p\         P                  ! V4      pVP	                  4        F,  w  rgVP                  Wg4      VP                  Wg4      8X  d   K,  Q h	  \         P                  ! 4       p\        P                  ! \         P                  4      ;_uu_ 4        \         P                  ! VRR7       RRR4       R# u upi   + '       g   i     R# ; i)r   T©ÚdirectedÚaÚbc              3   ó@   "  € T F  qV^,           RRRV/3x € K  	  R# 5i)r   Úfrø   ÚweightNr^   ©Ú.0r¡   s   & r   Ú	<genexpr>Ú2TestDAG.test_transitive_closure.<locals>.<genexpr>h  s"   é € ÐMÁH¸q˜1˜q�5 3¨¨X°qÐ"9Õ:ÃHùó   ‚zwrong input)Ú	reflexiveNr/   r¯   ©r   r1   ©r   r#   r    r"   r/   ©r   r    r"   ©r   r1   r  r    r"   ©r   r    ©r!   r   ©r   rÇ   r    ©r!   r   r1   r  )r   r   r   Útransitive_closurer*   rÉ   r>   rÖ   rN   Úget_edge_datarE   r?   r@   r¥   )	r   r   ÚsolutionrH   ÚsolnÚHrœ   r�   Úks	   &        r   Útest_transitive_closureÚTestDAG.test_transitive_closureE  sÓ  € Ü�JŠJÒ/Ó0ˆÚCˆÜœ2×0Ò0°Ó3×9Ñ9Ó;¸XÐPT×UÓUÐUÐUÜ�JŠJÒ/Ó0ˆÚ;ˆÜœ2×0Ò0°Ó3×9Ñ9Ó;¸XÐPT×UÓUÐUÐUÜ�JŠJÒ/Ó0ˆÚCˆÜ�h°!Ó!4±!¨Q a£&±!Ñ!4Õ4Ó5ˆÜÜ”2×(Ò(¨Ó+×1Ñ1Ó3Ó4°dÀT÷
ó 
ð 	
ð 
ô �HŠHÒ-Ó.ˆÚCˆÜœ6¤"×"7Ò"7¸Ó":×"@Ñ"@Ó"BÓCÀX×NÒNÐNÐNä�MŠMÒ2Ó3ˆÚCˆÜœ6¤"×"7Ò"7¸Ó":×"@Ñ"@Ó"BÓCÀX×NÒNÐNÐNä�OŠOÒ4Ó5ˆÚCˆÜÜ”2×(Ò(¨Ó+×1Ñ1Ó3Ó4°hÈ÷
ó 
ð 	
ð 
ô
 �JŠJ˜˜A  Q˜xÐ(¨1¨a°#°q°Ð*:¸FÐCÓDˆÜ×!Ò! !Ó$ˆØ—G‘G–I‰DˆAØ—?‘? 1Ó(¨A¯O©O¸AÓ,AÖAÐAÐAñ ð ˆÜ�JŠJÑMÄEÈ!ÄHÓMÓMˆÜ×!Ò! !Ó$ˆØ—G‘G–I‰DˆAØ—?‘? 1Ó(¨A¯O©O¸AÓ,AÖAÐAÐAñ ô �HŠH‹JˆÜ�]Š]œ2×+Ñ+×,Õ,Ü×!Ò! !¨}Õ=÷ -Ñ,ùòA "5÷@ -×,Ð,ús   ÃN
Í3NÎN,	c                ó  € \         P                  ! . RO4      p. ROp\        Y! Uu. uF  q3V3NK  	  up,           4      p\        \         P                  ! V4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q h\         P                  ! . RO4      p. ROp\        Y! Uu. uF  q3V3NK  	  up,           4      p\        \         P                  ! V4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q h\         P                  ! . R	O4      p\        . R
O4      p\        Y! Uu. uF  q3V3NK  	  up,           4      p\        \        \         P                  ! V4      P                  4       4      VRR7      '       g   Q h\        \        \         P                  ! VR4      P                  4       4      VRR7      '       g   Q h\        \        \         P                  ! VR4      P                  4       4      VRR7      '       g   Q h\        \        \         P                  ! VR4      P                  4       4      VRR7      '       g   Q h\         P                  ! . RO4      p. ROp\        Y! Uu. uF  q3V3NK  	  up,           4      p\        \         P                  ! V4      P                  4       V4      '       g   Q h\        \         P                  ! VR4      P                  4       V4      '       g   Q h\        \         P                  ! VR4      P                  4       V4      '       g   Q h\        \         P                  ! VR4      P                  4       V4      '       g   Q h\         P                  ! . RO4      p. ROp\        Y! Uu. uF  q3V3NK  	  up,           4      p\        \         P                  ! V4      P                  4       V4      '       g   Q h\        \         P                  ! VR4      P                  4       V4      '       g   Q h\        \         P                  ! VR4      P                  4       V4      '       g   Q h\        \         P                  ! VR4      P                  4       V4      '       g   Q h\         P                  ! . RO4      p. ROp\        Y! Uu. uF  q3V3NK  	  up,           4      p\        \         P                  ! V4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q h\        \         P                  ! VR4      P                  4       VRR7      '       g   Q hR# u upi u upi u upi u upi u upi u upi )r   Trõ   FNr¯   r  r  r  r  r  )	r   r   rÉ   r   r
  r*   r>   rÖ   rN   )r   r   r  rH   r  s   &    r   Ú!test_reflexive_transitive_closureÚ)TestDAG.test_reflexive_transitive_closureq  sÑ  € Ü�JŠJÒ/Ó0ˆÚCˆÜ�h°!Ó!4±!¨Q a£&±!Ñ!4Õ4Ó5ˆÜœ2×0Ò0°Ó3×9Ñ9Ó;¸XÐPT×UÓUÐUÐUÜÜ×!Ò! ! UÓ+×1Ñ1Ó3°XÈ÷
ó 
ð 	
ð 
ô œ2×0Ò0°°DÓ9×?Ñ?ÓAÀ4ÐRV×WÓWÐWÐWÜÜ×!Ò! ! TÓ*×0Ñ0Ó2°HÀt÷
ó 
ð 	
ð 
ô �JŠJÒ/Ó0ˆÚ;ˆÜ�h°!Ó!4±!¨Q a£&±!Ñ!4Õ4Ó5ˆÜœ2×0Ò0°Ó3×9Ñ9Ó;¸XÐPT×UÓUÐUÐUÜÜ×!Ò! ! UÓ+×1Ñ1Ó3°XÈ÷
ó 
ð 	
ð 
ô œ2×0Ò0°°DÓ9×?Ñ?ÓAÀ4ÐRV×WÓWÐWÐWÜÜ×!Ò! ! TÓ*×0Ñ0Ó2°HÀt÷
ó 
ð 	
ð 
ô �JŠJÒ/Ó0ˆÜÒJÓKˆÜ�h°!Ó!4±!¨Q a£&±!Ñ!4Õ4Ó5ˆÜÜ”2×(Ò(¨Ó+×1Ñ1Ó3Ó4°dÀT÷
ó 
ð 	
ð 
ô Ü”2×(Ò(¨¨EÓ2×8Ñ8Ó:Ó;¸TÈD÷
ó 
ð 	
ð 
ô Ü”2×(Ò(¨¨DÓ1×7Ñ7Ó9Ó:¸HÈt÷
ó 
ð 	
ð 
ô Ü”2×(Ò(¨¨DÓ1×7Ñ7Ó9Ó:¸DÈ4÷
ó 
ð 	
ð 
ô �HŠHÒ-Ó.ˆÚCˆÜ�h°!Ó!4±!¨Q a£&±!Ñ!4Õ4Ó5ˆÜœ2×0Ò0°Ó3×9Ñ9Ó;¸X×FÒFÐFÐFÜœ2×0Ò0°°EÓ:×@Ñ@ÓBÀH×MÒMÐMÐMÜœ2×0Ò0°°DÓ9×?Ñ?ÓAÀ4×HÒHÐHÐHÜœ2×0Ò0°°DÓ9×?Ñ?ÓAÀ8×LÒLÐLÐLä�MŠMÒ2Ó3ˆÚCˆÜ�h°!Ó!4±!¨Q a£&±!Ñ!4Õ4Ó5ˆÜœ2×0Ò0°Ó3×9Ñ9Ó;¸X×FÒFÐFÐFÜœ2×0Ò0°°EÓ:×@Ñ@ÓBÀH×MÒMÐMÐMÜœ2×0Ò0°°DÓ9×?Ñ?ÓAÀ4×HÒHÐHÐHÜœ2×0Ò0°°DÓ9×?Ñ?ÓAÀ8×LÒLÐLÐLä�OŠOÒ4Ó5ˆÚCˆÜ�h°!Ó!4±!¨Q a£&±!Ñ!4Õ4Ó5ˆÜœ2×0Ò0°Ó3×9Ñ9Ó;¸XÐPT×UÓUÐUÐUÜÜ×!Ò! ! UÓ+×1Ñ1Ó3°XÈ÷
ó 
ð 	
ð 
ô œ2×0Ò0°°DÓ9×?Ñ?ÓAÀ4ÐRV×WÓWÐWÐWÜÜ×!Ò! ! TÓ*×0Ñ0Ó2°HÀt÷
ó 
ð 	
ò 
ùò} "5ùò "5ùò "5ùò  "5ùò "5ùò "5s#   ¦[&
Å[+
É1[0
Î6[5
Ó[:
×([?
c                ó–  € \         P                  ! . RO4      p\         P                  P                  P                  p. R	Op\        V! V4      P                  4       VRR7      '       g   Q h\         P                  ! . R
O4      p. ROp\        V! V4      P                  4       VRR7      '       g   Q h\         P                  ! . RO4      p\        P                  ! \         P                  W!4       \         P                  ! ^^R^/3^^R^ /3R.4      pV! V4      pVP                  4        F,  w  rVVP                  WV4      VP                  WV4      8X  d   K,  Q h	  ^
p\         P                  ! R \        V4       4       4      pV! V4      pVP                  4        F,  w  rVVP                  WV4      VP                  WV4      8X  d   K,  Q h	  R# )r   Trõ   r÷   rø   c              3   ó@   "  € T F  qV^,           RRRV/3x € K  	  R# 5i)r   ÚfooÚbarrû   Nr^   rü   s   & r   rþ   Ú6TestDAG.test_transitive_closure_dag.<locals>.<genexpr>È  s"   é € ÐQÉÀ1˜1˜q�5 5¨%°¸1Ð"=Õ>Ëùr   Nr/   r¯   r  r  r  )r   r   rë   rì   Útransitive_closure_dagr   r*   r>   r?   r@   rA   r  rE   )r   r   r
  r  r  rœ   r�   r  s   &       r   Útest_transitive_closure_dagÚ#TestDAG.test_transitive_closure_dag¶  sp  € Ü�JŠJÒ/Ó0ˆÜŸ]™]×.Ñ.×EÑEÐÚCˆÜÑ-¨aÓ0×6Ñ6Ó8¸(ÈT×RÓRÐRÐRÜ�JŠJÒ/Ó0ˆÚ;ˆÜÑ-¨aÓ0×6Ñ6Ó8¸(ÈT×RÓRÐRÐRÜ�HŠHÒ-Ó.ˆÜ�Š”b×/Ñ/Ð1CÔGô �JŠJ˜˜A  Q˜xÐ(¨1¨a°#°q°Ð*:¸FÐCÓDˆÙ˜qÓ!ˆØ—G‘G–I‰DˆAØ—?‘? 1Ó(¨A¯O©O¸AÓ,AÖAÐAÐAñ ð ˆÜ�JŠJÑQÌÈaÌÓQÓQˆÙ˜qÓ!ˆØ—G‘G–I‰DˆAØ—?‘? 1Ó(¨A¯O©O¸AÓ,AÖAÐAÐAó r   c                ó(  € \         P                  ! . RO4      p\         P                  P                  P                  p. ROp\        V! V4      P                  4       VRR7      '       g   Q h\         P                  ! . RO4      p\         P                  P                  P                  p. ROp\        V! V4      P                  4       VRR7      '       g   Q h\         P                  ! . RO4      p\        P                  ! \         P                  W!4       R# )r   Trõ   Nr  r¯   r  r  )r   r   rë   rì   Útransitive_reductionr   r*   r>   r?   r@   rA   )r   r   r  r  s   &   r   Útest_transitive_reductionÚ!TestDAG.test_transitive_reductionÍ  sÂ   € Ü�JŠJÒGÓHˆÜ!Ÿ}™}×0Ñ0×EÑEÐÚ+ˆÜÑ/°Ó2×8Ñ8Ó:¸HÈt×TÓTÐTÐTÜ�JŠJÒ?Ó@ˆÜ!Ÿ}™}×0Ñ0×EÑEÐÚ+ˆÜÑ/°Ó2×8Ñ8Ó:¸HÈt×TÓTÐTÐTÜ�HŠHÒ-Ó.ˆÜ�Š”b×/Ñ/Ð1EÖIr   c                ó~  € \         P                  ! 4       p\         P                  P                  V4      ^ 8X  g   Q hVP	                  . RO4       \         P                  P                  V4      ^8X  g   Q h\         P
                  ! ^\         P                  R7      p\         P                  P                  V4      ^8X  g   Q h\         P                  ! . RO4      p\         P                  P                  V4      ^8X  g   Q h\         P                  ! . RO4      p\         P                  P                  V4      ^8X  g   Q hR# )r   ©Úcreate_usingN©r   r   r   )r   r1   r"   r/   )r1   r    r/   r$   )r   r   rì   Úantichain_widthÚadd_nodes_fromÚ
path_graphr   s   & r   Útest_antichain_widthÚTestDAG.test_antichain_widthÙ  sÞ   € Ü�JŠJ‹LˆÜ�v‰v×%Ñ% aÓ(¨AÔ-Ð-Ð-à	×ÑšÔ#Ü�v‰v×%Ñ% aÓ(¨AÔ-Ð-Ð-ä�MŠM˜!¬"¯*©*Ô5ˆÜ�v‰v×%Ñ% aÓ(¨AÔ-Ð-Ð-ä�JŠJÒ7Ó8ˆÜ�v‰v×%Ñ% aÓ(¨AÔ-Ð-Ð-ä�JŠJÒ7Ó8ˆÜ�v‰v×%Ñ% aÓ(¨AÔ-Ð-Ò-r   c                ó‚   € \         P                  ! . RO4      p\         P                  P                  V4      ^8X  g   Q hR# )r   N)r   r   r1   r"   r/   )r   rN   rì   r%  r   s   & r   Ú!test_antichain_width_multidigraphÚ)TestDAG.test_antichain_width_multidigraphé  s.   € Ü�OŠOÒDÓEˆÜ�v‰v×%Ñ% aÓ(¨AÔ-Ð-Ò-r   c                ó  € \         P                  ! RR.4      p\        P                  ! \         P                  4      ;_uu_ 4        \         P
                  P                  V4       RRR4       \         P                  ! . RO4      p\        P                  ! \         P                  RR7      ;_uu_ 4        \         P
                  P                  V4       RRR4       R#   + '       g   i     L€; i  + '       g   i     R# ; i)r   NzGraph contains a cycle©Úmatchr   r    r  )	r   r>   r?   r@   rA   rì   r%  r   r‚   r   s   & r   Útest_antichain_width_exceptionsÚ'TestDAG.test_antichain_width_exceptionsí  s›   € Ü�HŠH�f˜fÐ%Ó&ˆÜ�]Š]œ2×4Ñ4×5Õ5Ü�F‰F×"Ñ" 1Ô%÷ 6ô �JŠJÒ/Ó0ˆÜ�]Š]œ2×0Ñ0Ð8P×QÖQÜ�F‰F×"Ñ" 1Ô%÷ RÑQ÷	 6×5ú÷ R×QÐQús   Á CÂ3 C0ÃC-	Ã0D	c                ó¸   € V Uu. uF  p\        V4      NK  	  ppV Uu. uF  p\        V4      NK  	  pp\        V4      \        V4      8X  g   Q hR # u upi u upi r   )Ú	frozensetr™   )r   r  Úresultr÷   ÚsolÚress   &&&   r   Ú_check_antichainsÚTestDAG._check_antichainsö  sP   € Ù%-Ó.¡X Œy˜Ž|¡XˆÐ.Ù%+Ó,¡V Œy˜Ž|¡VˆÐ,Ü�3‹xœ3˜s›8Ô#Ð#Ò#ùò /ùÚ,s
   …AŸAc                ó(  a€ \         P                  P                  P                  o\         P                  ! . RO4      p. ^.^.^.^..pV P                  \        S! V4      4      V4       \         P                  ! . RO4      p. ^.^.^^.^.^^.^^.. RO^.^^.^.^^.^.^..pV P                  \        S! V4      4      V4       \         P                  ! . RO4      p. ^.^.^.^^.^^.^.^.^^.^^.^^.. RO. RO^^.^..pV P                  \        S! V4      4      V4       \         P                  ! ^ ^^.^^.^^.^^./4      p. ^.^.^.^.^^.^^.^ ..pV P                  \        S! V4      4      V4       \         P                  ! 4       pV P                  \        S! V4      4      . .4       \         P                  ! 4       pVP                  . R	O4       . ^ .^.^^ .^.^^ .^^.. R
O.pV P                  \        S! V4      4      V4       V3R lp\         P                  ! . RO4      p\        P                  ! \         P                  W14       \         P                  ! . RO4      p\        P                  ! \         P                  W14       R# )r   c                 ó&   <€ \        S! V 4      4      # r   )r˜   )r²   Ú
antichainss   &€r   rú   Ú"TestDAG.test_antichains.<locals>.f/  s   ø€ Ü™
 1›Ó&Ð&r   Nr¯   rk   )r'   r(   r#   )r   r1   r/   r$   r&   )r   r#   r'   )r   r#   r%   r$  )r   r   r   r  )r   rë   rì   r;  r   r7  r˜   r&  r>   r?   r@   rA   r‚   )r   r   r  rú   r;  s   &   @r   Útest_antichainsÚTestDAG.test_antichainsû  sŽ  ø€ Ü—]‘]×&Ñ&×1Ñ1ˆ
Ü�JŠJÒ/Ó0ˆØ˜˜˜a˜S 1 #¨ sÐ+ˆØ×Ñœt¡J¨q£MÓ2°HÔ=Ü�JŠJÒGÓHˆàØˆCØˆCØ�ˆFØˆCØ�ˆFØ�ˆFÚØˆCØ�ˆFØˆCØ�ˆFØˆCØˆCð
ˆð  	×Ñœt¡J¨q£MÓ2°HÔ=Ü�JŠJÒ?Ó@ˆàØˆCØˆCØˆCØ�ˆFØ�ˆFØˆCØˆCØ�ˆFØ�ˆFØ�ˆFÚÚØ�ˆFØˆCð
ˆð" 	×Ñœt¡J¨q£MÓ2°HÔ=Ü�JŠJ˜˜A˜q˜6 1 q c¨1¨q¨c°1°q°cÐ:Ó;ˆØ˜˜˜a˜S 1 #¨ s¨Q°¨F°Q¸°F¸Q¸CÐ@ˆØ×Ñœt¡J¨q£MÓ2°HÔ=Ü�JŠJ‹LˆØ×Ñœt¡J¨q£MÓ2°R°DÔ9Ü�JŠJ‹LˆØ	×ÑšÔ#Ø˜˜˜a˜S 1 a &¨1¨#°°1¨v¸¸1°vºyÐIˆØ×Ñœt¡J¨q£MÓ2°HÔ=õ	'ô �HŠHÒ-Ó.ˆÜ�Š”b×/Ñ/°Ô6Ü�JŠJÒ/Ó0ˆÜ�Š”b×+Ñ+¨QÖ2r   c                ó2  € \         P                  ! . RO4      p\        \         P                  ! V4      4      . RO8X  g   Q h\        \         P                  ! VR R7      4      . RO8X  g   Q h\        \         P                  ! VR R7      4      . RO8X  g   Q hR# )r   c                 ó   € V # r   r^   ©r²   s   &r   Ú<lambda>Ú?TestDAG.test_lexicographical_topological_sort.<locals>.<lambda>:  s   € Ér   ©Úkeyc                 ó   € V ) # r   r^   rA  s   &r   rB  rC  B  s   € È!Ér   N)r   r    r  r2   rê   )r   r   r!   r#   r%   r'   )r   r%   r#   r   r'   r!   )r   r   r˜   r€   r   s   & r   Ú%test_lexicographical_topological_sortÚ-TestDAG.test_lexicographical_topological_sort7  s†   € Ü�JŠJÒ?Ó@ˆÜ”B×7Ò7¸Ó:Ó;Ò?QÔQÐQÐQÜ”B×7Ò7¸¹{ÔKÓLò Q
ô 
ð 	
ð 
ô ”B×7Ò7¸¹|ÔLÓMò R
ô 
ð 	
ò 
r   c                ó&  a€  ! R R4      pR p\        ^4       Uu. uF
  q1! V4      NK  	  upo\        P                  ! 4       p. ROpVP                  V3R lV 4       4       \	        \        P
                  ! WBR7      4      pVS8X  g   Q hR# u upi )zŠ
Check the case of two or more nodes with same key value.
Want to avoid exception raised due to comparing nodes directly.
See Issue #3493
c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚATestDAG.test_lexicographical_topological_sort2.<locals>.Test_NodeiR  c                ó    € Wn         ^V n        R# r�   ©ÚlabelÚpriority)r   rH   s   &&r   Ú__init__ÚJTestDAG.test_lexicographical_topological_sort2.<locals>.Test_Node.__init__S  s   € Ø”
Ø !�–r   c                ó"   € R V P                    R2# )zNode(Ú))rN  ©r   s   &r   Ú__repr__ÚJTestDAG.test_lexicographical_topological_sort2.<locals>.Test_Node.__repr__W  s   € Ø˜tŸz™z˜l¨!Ð,Ð,r   rM  N)r_   r`   ra   rb   rP  rU  rd   re   rf   s   @r   Ú	Test_NoderK  R  s   ø‡ € ò"÷-ð -r   rW  c                 ó   € V P                   # r   )rO  )Únodes   &r   Úsorting_keyÚCTestDAG.test_lexicographical_topological_sort2.<locals>.sorting_keyZ  s   € Ø—=‘=Ð r   c              3   óL   <"  € T F  w  rSV,          SV,          3x € K  	  R # 5ir   r^   )rý   r÷   rø   Ú
test_nodess   &  €r   rþ   ÚATestDAG.test_lexicographical_topological_sort2.<locals>.<genexpr>`  s    øé € ÐJÁE¹D¸A˜* Q�-¨°A­Õ7ÃEùs   ƒ!$rD  N)©r   r   ©r   r   ©r   r!   r    )rE   r   r   r    r˜   r€   )r   rW  rZ  rH   r   r*   Úsortingr]  s   &      @r   Ú&test_lexicographical_topological_sort2Ú.TestDAG.test_lexicographical_topological_sort2K  s|   ø€ ÷	-ñ 	-ò	!ô -2°!¬HÓ5©H q�i –l©HÑ5ˆ
Ü�JŠJ‹LˆÚ0ˆØ	×ÑÔJÁEÓJÔJä”r×:Ò:¸1ÔNÓOˆØ˜*Ô$Ð$Ò$ùò 6s   œBr^   N)"r_   r`   ra   rb   Úclassmethodr|   r†   r�   r’   r¢   r¦   rª   r¿   rÄ   rÊ   rÙ   rÝ   rà   ræ   rî   rò   r  r  r  r  r(  r+  r0  r7  r=  rG  rc  rd   re   rf   s   @r   ry   ry   ‰   s¬   ø‡ € Øñó ðòKò*Jò0ò,Pò$Jò6ò
Cò>Gò
òDò&
ò
òMò9ò;ò*>òXC
òJBò.
Jò.ò .ò&ò$ò
:3òx
÷(%ð %r   ry   c                  óà  € \         P                  ! ^^^.^^^.^^.^. ^^^.^. ^. /4      P                  4       p \         P                  ! V 4       Uu. uF  p\	        V4      NK  	  pp. RO^^.^.^..pW#8X  g   Q h\         P
                  ! V P                  4      pVP                  ^^4       \         P                  ! V4       Uu. uF  p\	        V4      NK  	  ppW#8X  g   Q hR# u upi u upi )r   N)r#   r'   r(   )r   r   ÚreverseÚtopological_generationsrÉ   rN   r*   rG   )r   ÚgenÚgenerationsÚexpectedÚMGs        r   Útest_topological_generationsrm  f  sî   € Ü
�
Š
Ø	
ˆQ�ˆF�A˜˜1�v˜q 1 # q¨"¨a°!°Q°¸¸BÀÀ2ÐFó	ç�gƒið ô +-×*DÒ*DÀQÔ*GÓHÑ*G 3”6˜#–;Ñ*G€KÐHÚ˜A˜q˜6 A 3¨¨Ð,€HØÔ"Ð"Ð"ä	�Š˜Ÿ™Ó	!€BØ‡K�K��1ÔÜ*,×*DÒ*DÀRÔ*HÓIÑ*H 3”6˜#–;Ñ*H€KÐIØÔ"Ð"Ò"ùò Iùò Js   ÁC&ÃC+c                  ó|   € \         P                  ! 4       p \        \         P                  ! V 4      4      . 8X  g   Q hR # r   )r   r   r˜   rh  rÒ   s    r   Ú"test_topological_generations_emptyro  u  s+   € Ü
�
Š
‹€AÜ”×*Ò*¨1Ó-Ó.°"Ô4Ð4Ò4r   c                  ó  € \         P                  ! ^^.^^.^^..4      p \        P                  ! \         P                  4      ;_uu_ 4        \        \         P                  ! V 4      4       RRR4       R#   + '       g   i     R# ; ir–   )r   r   r?   r@   r‚   r˜   rh  rÒ   s    r   Ú"test_topological_generations_cyclerq  z  sZ   € Ü
�
Š
�Q˜�F˜Q ˜F Q¨ FÐ+Ó,€AÜ	�Š”r×,Ñ,×	-Õ	-ÜŒR×'Ò'¨Ó*Ô+÷ 
.×	-×	-Ò	-ús   Á A6Á6B	c                  óž   € \         P                  ! 4       p \         P                  ! V . RO4       \         P                  ! V 4      '       d   Q hR# ©r   N©r   r   r!   r#   ©r   r   Ú	add_cycleÚis_aperiodicrÒ   s    r   Útest_is_aperiodic_cyclerx  €  s3   € Ü
�
Š
‹€AÜ‡L‚L�’LÔ!Ü�Š˜q×!Ò!Ð!Ð!Ñ!r   c                  óÐ   € \         P                  ! 4       p \         P                  ! V . RO4       \         P                  ! V . RO4       \         P                  ! V 4      '       g   Q hR# )r   Nrt  )r!   r#   r%   r'   r(   ru  rÒ   s    r   Útest_is_aperiodic_cycle2rz  †  s>   € Ü
�
Š
‹€AÜ‡L‚L�’LÔ!Ü‡L‚L�’OÔ$Ü�?Š?˜1×ÒÐÒr   c                  óÐ   € \         P                  ! 4       p \         P                  ! V . RO4       \         P                  ! V . RO4       \         P                  ! V 4      '       d   Q hR# )r   Nrt  )r!   r#   r%   r'   ru  rÒ   s    r   Útest_is_aperiodic_cycle3r|  �  sA   € Ü
�
Š
‹€AÜ‡L‚L�’LÔ!Ü‡L‚L�’LÔ!Ü�Š˜q×!Ò!Ð!Ð!Ñ!r   c                  óÂ   € \         P                  ! 4       p \         P                  ! V . RO4       V P                  ^^4       \         P                  ! V 4      '       g   Q hR# rs  ©r   r   rv  rG   rw  rÒ   s    r   Útest_is_aperiodic_cycle4r  ”  ó>   € Ü
�
Š
‹€AÜ‡L‚L�’LÔ!Ø‡J�Jˆq�!ÔÜ�?Š?˜1×ÒÐÒr   c                  óÂ   € \         P                  ! 4       p \         P                  ! V . RO4       V P                  ^^4       \         P                  ! V 4      '       g   Q hR# rs  r~  rÒ   s    r   Útest_is_aperiodic_selfloopr‚  ›  r€  r   c                  ór   € \         P                  ! . RO4      p \         P                  ! V 4      '       d   Q hR# )r   N)r_  r`  r1   r    )r!   r   )r   r   rw  rÒ   s    r   Útest_is_aperiodic_forward_edger„  ¢  s)   € Ü
�
Š
Ò;Ó<€AÜ�Š˜q×!Ò!Ð!Ð!Ñ!r   c                  ó"  € \         P                  ! 4       p \         P                  ! V . RO4       V P                  ^ ^4       \         P                  ! V 4      '       d   Q hV P                  ^^ 4       \         P                  ! V 4      '       g   Q hR# )r   Nr$  )r   rN   rv  rG   rw  rÒ   s    r   Útest_is_aperiodic_multiedger†  §  sb   € Ü
�ŠÓ€AÜ‡L‚L�’IÔØ‡J�Jˆq�!ÔÜ�Š˜q×!Ò!Ð!Ð!Ø‡J�Jˆq�!ÔÜ�?Š?˜1×ÒÐÒr   c                  óÐ   € \         P                  ! 4       p \         P                  ! V . RO4       \         P                  ! V . RO4       \         P                  ! V 4      '       g   Q hR# )r   N)r   r   r   r!   ©r   r#   r   ru  rÒ   s    r   Útest_is_aperiodic_two_cycles1r‰  °  s>   € Ü
�
Š
‹€AÜ‡L‚L�’LÔ!Ü‡L‚L�’IÔÜ�?Š?˜1×ÒÐÒr   c                  óÐ   € \         P                  ! 4       p \         P                  ! V . RO4       \         P                  ! V . RO4       \         P                  ! V 4      '       d   Q hR# )r   Nr$  rˆ  ru  rÒ   s    r   Útest_is_aperiodic_two_cycles2r‹  ·  sA   € Ü
�
Š
‹€AÜ‡L‚L�’IÔÜ‡L‚L�’IÔÜ�Š˜q×!Ò!Ð!Ð!Ñ!r   Ú
graph_typec                 óÜ   € V ! . RO4      p\         P                  ! \        P                  RR7      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   znot implemented for undirectedr.  Nr  )r?   r@   r   rA   rw  )rŒ  r   s   & r   Ú#test_is_aperiodic_undirected_raisesrŽ  ¾  sM   € áÒ+Ó,€AÜ	�ŠÜ
×!Ñ!Ð)I÷
ö 
ô 	�Š˜Ô÷
÷ 
÷ 
ò 
ús   ¹AÁA+	r   r"  c                 óÈ   € \         P                  ! \        P                  R R7      ;_uu_ 4        \        P                  ! V 4       RRR4       R#   + '       g   i     R# ; i)znot strongly connectedr.  N)r?   r@   r   r¥   rw  rÒ   s   &r   Útest_is_aperiodic_not_sc_raisesr�  Ç  s8   € ô 
�Š”r×'Ñ'Ð/G×	HÖ	HÜ
�Š˜Ô÷ 
I×	H×	HÒ	Hús   ¯AÁA!	c                  óò   € \         P                  ! 4       p \        P                  ! \         P                  R R7      ;_uu_ 4        \         P
                  ! V 4       RRR4       R#   + '       g   i     R# ; i)zGraph has no nodes.r.  N)r   r   r?   r@   ÚNetworkXPointlessConceptrw  rÒ   s    r   Útest_is_aperiodic_null_graphr“  Ö  sA   € Ü
�
Š
‹€AÜ	�Š”r×2Ñ2Ð:O×	PÖ	PÜ
�Š˜Ô÷ 
Q×	P×	PÒ	Pús   ÁA%Á%A6	c                  ó”   € \         P                  ! \         P                  ! 4       4      p \         P                  ! V 4      '       d   Q hR # r   )r   r   Údavis_southern_women_graphrw  rÒ   s    r   Útest_is_aperiodic_bipartiter–  Ü  s1   € ä
�
Š
”2×0Ò0Ó2Ó3€AÜ�Š˜q×!Ò!Ð!Ð!Ñ!r   c                  óî   € \         P                  ! 4       p V P                  ^ 4       \         P                  ! V 4      '       d   Q hV P	                  ^ ^ 4       \         P                  ! V 4      '       g   Q hR# r©   )r   r   rm   rw  rG   rÒ   s    r   Útest_is_aperiodic_single_noder˜  â  sP   € Ü
�
Š
‹€AØ‡J�Jˆq„MÜ�Š˜q×!Ò!Ð!Ð!Ø‡J�Jˆq�!ÔÜ�?Š?˜1×ÒÐÒr   c                   óT   a € ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tRtV tR# )ÚTestDagToBranchingiê  z>Unit tests for the :func:`networkx.dag_to_branching` function.c                ó
  € \         P                  ! . RO4      p\         P                  ! V4      p\         P                  ! . RO4      p\         P                  ! V4      '       g   Q h\         P                  ! W#4      '       g   Q hR# )z^Tests that a directed acyclic graph with a single degree
zero node produces an arborescence.

N)r_  r`  r1   r    )r_  r1   r`  r"   )r   r   Údag_to_branchingÚis_arborescenceÚis_isomorphic©r   r   ÚBrk  s   &   r   Útest_single_rootÚ#TestDagToBranching.test_single_rootí  s`   € ô
 �JŠJÒ7Ó8ˆÜ×Ò Ó"ˆÜ—:’:Ò>Ó?ˆÜ×!Ò! !×$Ò$Ð$Ð$Ü×Ò ×,Ò,Ð,Ò,r   c                óF  € \         P                  ! . RO4      p\         P                  ! V4      p\         P                  ! . RO4      p\         P                  ! V4      '       g   Q h\         P                  ! V4      '       d   Q h\         P
                  ! W#4      '       g   Q hR# )zŠTests that a directed acyclic graph with multiple degree zero
nodes creates an arborescence with multiple (weakly) connected
components.

N)r_  r`  r1   r    )r%   r   )r_  r1   r`  r"   r&   )r'   r(   )r   r   rœ  Úis_branchingr�  rž  rŸ  s   &   r   Útest_multiple_rootsÚ&TestDagToBranching.test_multiple_rootsø  su   € ô �JŠJÒ?Ó@ˆÜ×Ò Ó"ˆÜ—:’:ÒNÓOˆÜ�Š˜q×!Ò!Ð!Ð!Ü×%Ò% a×(Ò(Ð(Ð(Ü×Ò ×,Ò,Ð,Ò,r   c                óÆ   € \         P                  ! ^^\         P                  ! 4       R7      p\         P                  ! V4      p\         P                  ! W4      '       g   Q hR# )ztTests that a directed acyclic graph that is already an
arborescence produces an isomorphic arborescence as output.

r"  N)r   Úbalanced_treer   rœ  rž  )r   ÚAr   s   &  r   Útest_already_arborescenceÚ,TestDagToBranching.test_already_arborescence   sE   € ô
 ×Ò˜Q ´·
²
³Ô=ˆÜ×Ò Ó"ˆÜ×Ò ×%Ò%Ð%Ò%r   c                óJ  € \         P                  ! ^^\         P                  ! 4       R7      p\         P                  ! ^^\         P                  ! 4       R7      p\         P                  ! W4      p\         P                  ! V4      p\         P
                  ! W44      '       g   Q hR# )zmTests that a directed acyclic graph that is already a
branching produces an isomorphic branching as output.

r"  N)r   r¨  r   Údisjoint_unionrœ  rž  )r   ÚT1ÚT2r   r   s   &    r   Útest_already_branchingÚ)TestDagToBranching.test_already_branching)  so   € ô
 ×Ò˜a ´·²³Ô>ˆÜ×Ò˜a ´·²³Ô>ˆÜ×Ò˜bÓ%ˆÜ×Ò Ó"ˆÜ×Ò ×%Ò%Ð%Ò%r   c           	     ó  € \         P                  ! \        P                  4      ;_uu_ 4        \        P                  ! \        RRR7      4      p\        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)z3Tests that a non-acyclic graph causes an exception.ÚabcT)ÚcyclicN)r?   r@   r   Ú	HasACycler   r   rœ  r   s   & r   Útest_not_acyclicÚ#TestDagToBranching.test_not_acyclic4  sG   € ä�]Š]œ2Ÿ<™<×(Õ(Ü—
’
œ8 E°$Ô7Ó8ˆAÜ×Ò Ô"÷ )×(×(Ò(ús   ­8A/Á/B 	c                óê   € \         P                  ! \        P                  4      ;_uu_ 4        \        P                  ! \        P
                  ! 4       4       R R R 4       R #   + '       g   i     R # ; ir   )r?   r@   r   rA   rœ  r>   rT  s   &r   Útest_undirectedÚ"TestDagToBranching.test_undirected:  s:   € Ü�]Š]œ2×4Ñ4×5Õ5Ü×Ò¤§¢£
Ô+÷ 6×5×5Ò5úó   ­*A!Á!A2	c                óê   € \         P                  ! \        P                  4      ;_uu_ 4        \        P                  ! \        P
                  ! 4       4       R R R 4       R #   + '       g   i     R # ; ir   )r?   r@   r   rA   rœ  rÖ   rT  s   &r   Útest_multigraphÚ"TestDagToBranching.test_multigraph>  s:   € Ü�]Š]œ2×4Ñ4×5Õ5Ü×Ò¤§¢£Ô0÷ 6×5×5Ò5úr»  c                óê   € \         P                  ! \        P                  4      ;_uu_ 4        \        P                  ! \        P
                  ! 4       4       R R R 4       R #   + '       g   i     R # ; ir   )r?   r@   r   rA   rœ  rN   rT  s   &r   Útest_multidigraphÚ$TestDagToBranching.test_multidigraphB  s;   € Ü�]Š]œ2×4Ñ4×5Õ5Ü×Ò¤§¢Ó 1Ô2÷ 6×5×5Ò5úr»  r^   N)r_   r`   ra   rb   rc   r¡  r¥  rª  r°  r¶  r¹  r½  rÀ  rd   re   rf   s   @r   rš  rš  ê  s6   ø‡ € ÙHò	-ò-òP&ò	&ò#ò,ò1÷3ð 3r   rš  c                 óº   € \         P                  ! ^4      p \         P                  ! V ^4      \         P                  ! V ^4      u;8H  ;'       d
    0 Rm8H   R# u  R# )zZRegression test to ensure ancestors and descendants work as expected on
undirected graphs.N>   r   r   r!   r#   )r   r'  rí   rñ   rÒ   s    r   Ú%test_ancestors_descendants_undirectedrÃ  G  s;   € ô 	�Š�aÓ€AÜ‡L‚L��AÓœ"Ÿ.š.¨¨AÓ.×>Ô>²,×>Ñ>r   c                  ó  € \         P                  ! 4       p \        P                  ! \         P                  R R7      ;_uu_ 4        \         P
                  P                  V 4       RRR4       R#   + '       g   i     R# ; i©zfor undirected typer.  N)r   r>   r?   r@   rA   rì   Úv_structuresrÒ   s    r   Útest_v_structures_raiserÇ  N  sG   € Ü
�Š‹
€AÜ	�Š”r×0Ñ0Ð8M×	NÖ	NÜ
�‰×Ñ˜AÔ÷ 
O×	N×	NÒ	Núó   Á A.Á.A?	c                 ó’   € \         P                  ! V 4      p\        \         P                  P	                  V4      4      pW18X  g   Q hR # r   )r   r   r™   rì   rÆ  )Úedgelistrk  r   Ú	v_structss   &&  r   Útest_v_structuresrÌ  T  s7   € ô 	�
Š
�8Ó€AÜ”B—F‘F×'Ñ'¨Ó*Ó+€IØÔ Ð Ò r   c                  ó  € \         P                  ! 4       p \        P                  ! \         P                  R R7      ;_uu_ 4        \         P
                  P                  V 4       RRR4       R#   + '       g   i     R# ; irÅ  )r   r>   r?   r@   rA   rì   Ú	collidersrÒ   s    r   Útest_colliders_raiserÏ  h  sG   € Ü
�Š‹
€AÜ	�Š”r×0Ñ0Ð8M×	NÖ	NÜ
�‰×Ñ˜Ô÷ 
O×	N×	NÒ	NúrÈ  c                 ó’   € \         P                  ! V 4      p\        \         P                  P	                  V4      4      pW18X  g   Q hR # r   )r   r   r™   rì   rÎ  )rÊ  rk  r   rÎ  s   &&  r   Útest_collidersrÑ  n  s7   € ô 	�
Š
�8Ó€AÜ”B—F‘F×$Ñ$ QÓ'Ó(€IØÔ Ð Ò r   r   r    )r_  )r   r   )r   r   )r_  r   ra  r/   )r#   r   )r_  r   rÇ   )rÊ  rk  )r_  r`  r	  )r   r   r!   ))r©  r   )ÚCr   )ÚDr   )rÓ  ÚE)r   rÔ  )r©  r   rÒ  )r_  rÇ   r`  )rÓ  rÔ  r   )-Úcollectionsr   Ú	itertoolsr   r   r?   Únetworkxr   Únetworkx.utilsr   r   r   r   ri   ry   rm  ro  rq  rx  rz  r|  r  r‚  r„  r†  r‰  r‹  ÚmarkÚparametrizer>   rÖ   rŽ  r   Úempty_graphr�  r“  r–  r˜  rš  rÃ  rÇ  r™   rÌ  rÏ  rÑ  r^   r   r   Ú<module>rÜ     só  ðÝ ß 0ã ã ß 0ò÷EEñ EE÷P-2ñ -2÷`Z%ñ Z%òz#ò5ò
,ò"òò"òòò"ò
òò"ð ‡�×Ñ˜¨¯©°"·-±-Ð'@ÓAñó Bðð ‡�×ÑØà
�
Š
�F˜FÐ#Ó$Ø
�
Š
Ò+Ó,Ø
�
Š
Ò;Ó<Ø
�
Š
Ò+Ó,Ø
�Š�q r§z¡zÔ2ðó	ñó	ðò
ò"ò÷Z3ñ Z3òz?òð ‡�×ÑØò %ØˆKð	
ò
 IØÐð	
ò 
"¡3£5Ð)ð
óñ!óð!òð ‡�×ÑØò %ØˆKð	
ò
 IØ˜oÐ.ð	
ð	óñ!óò!r   