+
    �°³j�G  ã            	       óH  € ^ RI t ^ RIHt ^ RIt^ RIt^ RIHt ]P                  P                  R]P                  ]P                  ]P                  34      ]P                  P                  RR0R0RR0RR034      R 4       4       t]P                  P                  R]P                  ]P                  ]P                  34      ]P                  P                  RRR0RR034      R 4       4       t]P                  P                  R]P                  ]P                   ]P"                  34      ]P                  P                  R]P$                  ]P&                  ]P(                  34      R	 4       4       t ! R
 R4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      tR# )é    N)Úpermutations)Úedges_equalÚfnÚedgesetc                óØ   € \         P                  ! ^4      p\        P                  ! \         P                  RR7      ;_uu_ 4        V ! W!4       RRR4       R#   + '       g   i     R# ; i)zOAll is_*matching functions have consistent exception message for node
not in G.zmatching.*with node not in G©ÚmatchN©ÚnxÚ
path_graphÚpytestÚraisesÚNetworkXError©r   r   ÚGs   && Úh/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/algorithms/tests/test_matching.pyÚtest_is_matching_node_not_in_Gr   
   sA   € ô 	�Š�aÓ€AÜ	�Š”r×'Ñ'Ð/M×	NÖ	NÙ
ˆ1Œ÷ 
O×	N×	NÒ	Núó   Á	AÁA)	c                óØ   € \         P                  ! ^4      p\        P                  ! \         P                  RR7      ;_uu_ 4        V ! W!4       RRR4       R#   + '       g   i     R# ; i)z[All is_*matching functions have consistent exception message for invalid
edges in matching.z.*non-2-tuple edge.*r   Nr
   r   s   && r   Útest_is_matching_invalid_edger      sA   € ô 	�Š�aÓ€AÜ	�Š”r×'Ñ'Ð/E×	FÖ	FÙ
ˆ1Œ÷ 
G×	F×	FÒ	Fúr   Ú
graph_typec                 ó¶   € V! 4       p\         P                  ! \        P                  4      ;_uu_ 4        V ! V4       R R R 4       R #   + '       g   i     R # ; i©N)r   r   r   ÚNetworkXNotImplemented)r   r   r   s   && r   Útest_wrong_graph_typer   0   s6   € ñ
 	‹€AÜ	�Š”r×0Ñ0×	1Õ	1Ù
ˆ1Œ÷ 
2×	1×	1Ò	1ús   ´	AÁA	c                   ó¨   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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# )ÚTestMaxWeightMatchingzXUnit tests for the
:func:`~networkx.algorithms.matching.max_weight_matching` function.

c                óÄ   € \         P                  ! 4       p\         P                  ! V4      \        4       8X  g   Q h\         P                  ! V4      \        4       8X  g   Q hR# )zEmpty graphN)r   ÚGraphÚmax_weight_matchingÚsetÚmin_weight_matching©Úselfr   s   & r   Útest_trivial1Ú#TestMaxWeightMatching.test_trivial1@   sC   € ä�HŠH‹JˆÜ×%Ò% aÓ(¬C«EÔ1Ð1Ð1Ü×%Ò% aÓ(¬C«EÔ1Ð1Ò1ó    c                óì   € \         P                  ! 4       pVP                  ^ ^ ^dR7       \         P                  ! V4      \	        4       8X  g   Q h\         P
                  ! V4      \	        4       8X  g   Q hR# )r   ©ÚweightN)r   r   Úadd_edger    r!   r"   r#   s   & r   Útest_selfloopÚ#TestMaxWeightMatching.test_selfloopF   sU   € Ü�HŠH‹JˆØ	�
‰
�1�a ˆ
Ô$Ü×%Ò% aÓ(¬C«EÔ1Ð1Ð1Ü×%Ò% aÓ(¬C«EÔ1Ð1Ò1r'   c                óø   € \         P                  ! 4       pVP                  ^ ^4       \        \         P                  ! V4      R04      '       g   Q h\        \         P
                  ! V4      R04      '       g   Q hR# )r   N©r   é   ©r   r   r+   r   r    r"   r#   s   & r   Útest_single_edgeÚ&TestMaxWeightMatching.test_single_edgeL   s[   € Ü�HŠH‹JˆØ	�
‰
�1�aÔÜœ2×1Ò1°!Ó4°v°h×?Ò?Ð?Ð?Üœ2×1Ò1°!Ó4°v°h×?Ò?Ð?Ò?r'   c                ó$  € \         P                  ! 4       pVP                  R R^
R7       VP                  RR^R7       \        \         P                  ! V4      R04      '       g   Q h\        \         P
                  ! V4      R04      '       g   Q hR# )ÚoneÚtwor)   ÚthreeN©r6   r7   ©r5   r6   r1   r#   s   & r   Útest_two_pathÚ#TestMaxWeightMatching.test_two_pathR   st   € Ü�HŠH‹JˆØ	�
‰
�5˜%¨ˆ
Ô+Ø	�
‰
�5˜'¨"ˆ
Ô-Üœ2×1Ò1°!Ó4Ð7GÐ6H×IÒIÐIÐIÜœ2×1Ò1°!Ó4°~Ð6F×GÒGÐGÒGr'   c                óþ  € \         P                  ! 4       pVP                  ^^^R7       VP                  ^^^R7       VP                  ^^^R7       \        \         P                  ! V4      R04      '       g   Q h\        \         P                  ! VRR7      RR04      '       g   Q h\        \         P
                  ! V4      RR04      '       g   Q h\        \         P
                  ! VRR7      RR04      '       g   Q hR# )r0   r)   N©é   é   ©r0   r>   ©r?   é   r1   r#   s   & r   Ú	test_pathÚTestMaxWeightMatching.test_pathY   sÐ   € Ü�HŠH‹JˆØ	�
‰
�1�a ˆ
Ô"Ø	�
‰
�1�a ˆ
Ô#Ø	�
‰
�1�a ˆ
Ô"Üœ2×1Ò1°!Ó4°v°h×?Ò?Ð?Ð?Üœ2×1Ò1°!¸DÔAÀFÈFÐCS×TÒTÐTÐTÜœ2×1Ò1°!Ó4°v¸vÐ6F×GÒGÐGÐGÜœ2×1Ò1°!¸DÔAÀFÈFÐCS×TÒTÐTÒTr'   c                óx  € \         P                  ! 4       pVP                  ^^^R7       VP                  ^^^R7       VP                  ^^^R7       VP                  ^^^R7       \        \         P                  ! V4      RR04      '       g   Q h\        \         P
                  ! V4      RR04      '       g   Q hR# )r0   r)   Nr@   rA   ©r0   rB   r=   r1   r#   s   & r   Útest_squareÚ!TestMaxWeightMatching.test_squarec   s›   € Ü�HŠH‹JˆØ	�
‰
�1�a ˆ
Ô"Ø	�
‰
�1�a ˆ
Ô"Ø	�
‰
�1�a ˆ
Ô"Ø	�
‰
�1�a ˆ
Ô"Üœ2×1Ò1°!Ó4°v¸vÐ6F×GÒGÐGÐGÜœ2×1Ò1°!Ó4°v¸vÐ6F×GÒGÐGÒGr'   c                ó0  € \         P                  ! 4       pVP                  R R^
^R7       VP                  RR^^
R7       \        \         P                  ! VRR7      R04      '       g   Q h\        \         P
                  ! VRR7      R04      '       g   Q hR# )	r5   r6   )r*   Úabcdr7   rJ   r)   Nr9   r8   r1   r#   s   & r   Útest_edge_attribute_nameÚ.TestMaxWeightMatching.test_edge_attribute_namel   s|   € Ü�HŠH‹JˆØ	�
‰
�5˜%¨°ˆ
Ô4Ø	�
‰
�5˜'¨"°2ˆ
Ô6Üœ2×1Ò1°!¸FÔCÀnÐEU×VÒVÐVÐVÜœ2×1Ò1°!¸FÔCÐFVÐEW×XÒXÐXÒXr'   c                óä  € \         P                  ! 4       pVP                  ^^\        P                  R7       VP                  ^^\        P
                  ! ^4      R7       VP                  ^^RR7       VP                  ^^\        P                  ! R4      R7       \        \         P                  ! V4      RR04      '       g   Q h\        \         P                  ! V4      RR04      '       g   Q hR# )r0   r)   g      @g       @NrF   r=   )
r   r   r+   ÚmathÚpiÚexpÚsqrtr   r    r"   r#   s   & r   Útest_floating_point_weightsÚ1TestMaxWeightMatching.test_floating_point_weightss   s¯   € Ü�HŠH‹JˆØ	�
‰
�1�a¤§¡ˆ
Ô(Ø	�
‰
�1�a¤§¢¨£ˆ
Ô,Ø	�
‰
�1�a ˆ
Ô$Ø	�
‰
�1�a¤§	¢	¨#£ˆ
Ô/Üœ2×1Ò1°!Ó4°v¸vÐ6F×GÒGÐGÐGÜœ2×1Ò1°!Ó4°v¸vÐ6F×GÒGÐGÒGr'   c                óö  € \         P                  ! 4       pVP                  ^^^R7       VP                  ^^RR7       VP                  ^^^R7       VP                  ^^RR7       VP                  ^^RR7       \        \         P                  ! V4      R04      '       g   Q h\        \         P                  ! VRR7      R	R
04      '       g   Q h\        \         P
                  ! V4      RR04      '       g   Q hR# )r0   r)   T)ÚmaxcardinalityNéþÿÿÿéÿÿÿÿiúÿÿÿr@   ©r0   r?   ©r>   rB   rA   r1   r#   s   & r   Útest_negative_weightsÚ+TestMaxWeightMatching.test_negative_weights|   sÚ   € Ü�HŠH‹JˆØ	�
‰
�1�a ˆ
Ô"Ø	�
‰
�1�a ˆ
Ô#Ø	�
‰
�1�a ˆ
Ô"Ø	�
‰
�1�a ˆ
Ô#Ø	�
‰
�1�a ˆ
Ô#Üœ2×1Ò1°!Ó4°v°h×?Ò?Ð?Ð?ÜÜ×"Ò" 1°TÔ:¸VÀVÐ<L÷
ò 
ð 	
ð 
ô œ2×1Ò1°!Ó4°v¸vÐ6F×GÒGÐGÒGr'   c                óÌ  € \         P                  ! 4       pVP                  . RO4       RR0p\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hVP                  RR.4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )z-Create S-blossom and use it for augmentation:N)©r0   r>   é   ©r0   r?   é	   ©r>   r?   é
   )r?   rB   é   r@   rA   )r0   é   é   )rB   re   rd   ¾   ©r0   rd   r=   ©rB   re   ©r   r   Úadd_weighted_edges_fromr   r    r"   ©r$   r   Úanswers   &  r   Útest_s_blossomÚ$TestMaxWeightMatching.test_s_blossom‰   s¶   € ä�HŠH‹JˆØ	×!Ñ!Ò"OÔPØ˜&Ð!ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=à	×!Ñ! 9¨iÐ"8Ô9Ú)ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                óâ  € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hVP                  ^^^R7       VP                  ^^^R7       \        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hVP                  ^^4       VP                  ^^^R7       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )z=Create S-blossom, relabel as T-blossom, use for augmentation:r)   N)©r0   r>   r`   ©r0   r?   r^   ra   )r0   rB   re   )rB   re   rB   )r0   rd   r?   rf   >   r@   ©r?   rd   rh   )r   r   rj   r   r    r"   r+   Úremove_edgerk   s   &  r   Útest_s_t_blossomÚ&TestMaxWeightMatching.test_s_t_blossom–   s"  € ä�HŠH‹JˆØ	×!Ñ!ÚOô	
ò *ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=à	�
‰
�1�a ˆ
Ô"Ø	�
‰
�1�a ˆ
Ô"Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=à	�‰�a˜ÔØ	�
‰
�1�a ˆ
Ô"Ú)ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                óˆ  € \         P                  ! 4       pVP                  . RO4       0 RmpV Uu0 uF  p\        V4      kK  	  pp\         P                  ! V4       Uu0 uF  p\        V4      kK  	  ppWT8X  g   Q h\         P
                  ! V4       Uu0 uF  p\        V4      kK  	  ppWT8X  g   Q hR# u upi u upi u upi )z.Create nested S-blossom, use for augmentation:N)rp   r_   ra   )r>   rB   r^   )r?   re   r^   )rB   re   rb   )re   rd   rd   >   rX   rY   ©re   rd   )r   r   rj   Ú	frozensetr    r"   )r$   r   Úexpected_edgesetÚeÚexpectedrl   s   &     r   Útest_nested_s_blossomÚ+TestMaxWeightMatching.test_nested_s_blossom«   s±   € ô �HŠH‹JˆØ	×!Ñ!òô
	
ò 4ÐÙ*:Ó;Ñ*: Q”I˜a–LÑ*:ˆÐ;Ü(*×(>Ò(>¸qÔ(AÓBÑ(A 1”)˜A–,Ñ(AˆÐBØÔ!Ð!Ð!Ü(*×(>Ò(>¸qÔ(AÓBÑ(A 1”)˜A–,Ñ(AˆÐBØÔ!Ð!Ò!ùò	 <ùÚBùâBs   ±B5ÁB:ÂB?c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )z<Create S-blossom, relabel as S, include in nested S-blossom:N)	)r0   r>   rb   )r0   rc   rb   )r>   r?   é   )r?   rB   é   )r?   re   r€   ©rB   re   é   )re   rd   rb   )rd   rc   rb   )rc   r^   r^   >   r@   rA   rw   ©rc   r^   ri   rk   s   &  r   Útest_nested_s_blossom_relabelÚ3TestMaxWeightMatching.test_nested_s_blossom_relabelÁ   óc   € ä�HŠH‹JˆØ	×!Ñ!ò
ô	
ò 2ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )z5Create nested S-blossom, augment, expand recursively:N)
r]   rq   ra   )r>   rB   r   )r?   re   r   )rB   re   é   )rB   rd   r   )re   rc   r   )rd   rc   rˆ   )rc   r^   r   >   r@   ©r?   re   ©rB   rd   rƒ   ri   rk   s   &  r   Útest_nested_s_blossom_expandÚ2TestMaxWeightMatching.test_nested_s_blossom_expandÕ   sc   € ä�HŠH‹JˆØ	×!Ñ!òô	
ò 2ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )z'Create S-blossom, relabel as T, expand:N))r0   r>   é   )r0   re   é   )r0   rd   é   ©r>   r?   r‚   )r?   rB   r�   r�   )rB   r^   rˆ   )re   rc   é   >   rg   r=   ©rB   r^   ©re   rc   ri   rk   s   &  r   Útest_s_blossom_relabel_expandÚ3TestMaxWeightMatching.test_s_blossom_relabel_expandê   sc   € ä�HŠH‹JˆØ	×!Ñ!ò	ô	
ò 2ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )z.Create nested S-blossom, relabel as T, expand:N)	)r0   r>   é   )r0   r?   r€   )r0   r^   r^   r‘   )r>   rB   é   )r?   re   r™   )rB   re   r’   )rB   rc   rc   )re   rd   rc   >   ©r0   r^   r=   ©rB   rc   rw   ri   rk   s   &  r   Ú$test_nested_s_blossom_relabel_expandÚ:TestMaxWeightMatching.test_nested_s_blossom_relabel_expandý   r†   r'   c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )zDCreate blossom, relabel as T in more than one way, expand,
augment:
N)
©r0   r>   é-   ©r0   re   r    ©r>   r?   é2   ©r?   rB   r    ©rB   re   r£   ©r0   rd   é   ©r?   r`   é#   )rB   r^   r©   ©re   rc   é   ©r`   rb   re   ¾   rg   r=   r“   r”   ©r`   rb   ri   rk   s   &  r   Útest_nasty_blossom1Ú)TestMaxWeightMatching.test_nasty_blossom1  óe   € ô �HŠH‹JˆØ	×!Ñ!òô	
ò ;ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )zAgain but slightly different:N)
rŸ   r¡   r¢   r¤   r¥   r¦   r¨   )rB   r^   r«   )re   rc   é(   r¬   r­   ri   rk   s   &  r   Útest_nasty_blossom2Ú)TestMaxWeightMatching.test_nasty_blossom2(  sc   € ä�HŠH‹JˆØ	×!Ñ!òô	
ò ;ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )zeCreate blossom, relabel as T, expand such that a new
least-slack S-to-free dge is produced, augment:
N)
rŸ   r¡   r¢   r¤   r¥   r¦   r¨   )rB   r^   é   rª   r¬   r­   ri   rk   s   &  r   Útest_nasty_blossom_least_slackÚ4TestMaxWeightMatching.test_nasty_blossom_least_slack=  r±   r'   c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )z8Create nested blossom, relabel as T in more than one wayN)rŸ   )r0   rc   r    r¢   r¤   )rB   re   é_   )rB   rd   é^   )re   rd   r¼   )rd   rc   r£   )r0   r^   r§   )r?   é   r©   )re   r`   é$   )rc   rb   r«   )r½   r   re   >   rš   r=   rŠ   ©re   r`   ©rc   rb   ©r½   r   ri   rk   s   &  r   Útest_nasty_blossom_augmentingÚ3TestMaxWeightMatching.test_nasty_blossom_augmentingT  sf   € ô �HŠH‹JˆØ	×!Ñ!òô	
ò" EˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                óþ   € \         P                  ! 4       pVP                  . RO4       0 Rmp\        \         P                  ! V4      V4      '       g   Q h\        \         P
                  ! V4      V4      '       g   Q hR# )z:Create nested S-blossom, relabel as S, expand recursively:N))r0   r>   r³   )r0   r?   r³   )r>   r?   é<   )r>   rB   é7   )r?   re   rÆ   r¥   )r0   r^   r�   )re   rc   r§   )rc   rd   rb   )r^   rb   rb   )rB   r`   r§   >   r@   r‰   ©rB   r`   ©rd   rc   ©r^   rb   ri   rk   s   &  r   Ú%test_nasty_blossom_expand_recursivelyÚ;TestMaxWeightMatching.test_nasty_blossom_expand_recursivelyn  sc   € ä�HŠH‹JˆØ	×!Ñ!òô	
ò ;ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ð=Üœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   c                ó®   € \         P                  ! 4       pVP                  . RO4       RR0p\        \         P                  ! V4      V4      '       g   Q hR# )r0   N))r0   r>   iè  )r>   r?   r>   )r?   rB   i¸  r@   rA   )r   r   rj   r   r"   rk   s   &  r   Ú(test_min_weight_matching_max_cardinalityÚ>TestMaxWeightMatching.test_min_weight_matching_max_cardinality„  sF   € Ü�HŠH‹JˆØ	×!Ñ!Ò"IÔJð ˜&Ð!ˆÜœ2×1Ò1°!Ó4°f×=Ò=Ð=Ò=r'   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r%   r,   r2   r:   rC   rG   rK   rR   rZ   rm   rt   r|   r„   r‹   r•   rœ   r¯   r´   r¸   rÂ   rÊ   rÍ   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   :   s„   ø‡ € ñò
2ò2ò@òHòUòHòYòHòHò>ò>ò*"ò,>ò(>ò*>ò&>ò(>ò.>ò*>ò.>ò4>÷,>ð >r'   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# )ÚTestIsMatchingi�  zPUnit tests for the
:func:`~networkx.algorithms.matching.is_matching` function.

c                ó€   € \         P                  ! ^4      p\         P                  ! V^ ^^^ ^^^^/4      '       g   Q hR# ©rB   N©r   r   Úis_matchingr#   s   & r   Ú	test_dictÚTestIsMatching.test_dict“  s8   € Ü�MŠM˜!ÓˆÜ�~Š~˜a ! Q¨¨1¨a°°A°qÐ!9×:Ò:Ð:Ò:r'   c                ó€   € \         P                  ! ^4      p\         P                  ! V\        4       4      '       g   Q hR# rÜ   )r   r   rÞ   r!   r#   s   & r   Útest_empty_matchingÚ"TestIsMatching.test_empty_matching—  s)   € Ü�MŠM˜!ÓˆÜ�~Š~˜a¤£×'Ò'Ð'Ò'r'   c                ór   € \         P                  ! ^4      p\         P                  ! VR04      '       g   Q hR# )rB   Nr@   rÝ   r#   s   & r   r2   ÚTestIsMatching.test_single_edge›  s)   € Ü�MŠM˜!ÓˆÜ�~Š~˜a & ×*Ò*Ð*Ò*r'   c                ó:  € \         P                  ! ^4      p\         P                  ! VRR04      '       g   Q h\         P                  ! VRR04      '       g   Q h\         P                  ! VRR04      '       g   Q h\         P                  ! VRR04      '       g   Q hR# )rB   Nr/   r=   ©r0   r   )r?   r>   rÝ   r#   s   & r   Útest_edge_orderÚTestIsMatching.test_edge_orderŸ  s€   € Ü�MŠM˜!ÓˆÜ�~Š~˜a &¨&Ð!1×2Ò2Ð2Ð2Ü�~Š~˜a &¨&Ð!1×2Ò2Ð2Ð2Ü�~Š~˜a &¨&Ð!1×2Ò2Ð2Ð2Ü�~Š~˜a &¨&Ð!1×2Ò2Ð2Ò2r'   c                ót   € \         P                  ! ^4      p\         P                  ! VRR04      '       g   Q hR# ©rB   Nr/   r=   rÝ   r#   s   & r   Útest_valid_matchingÚ"TestIsMatching.test_valid_matching¦  s,   € Ü�MŠM˜!ÓˆÜ�~Š~˜a &¨&Ð!1×2Ò2Ð2Ò2r'   c                óÚ   € \         P                  ! ^4      p\         P                  ! V0 Rm4      '       d   Q hVP                  ^ ^ 4       \         P                  ! VRR04      '       d   Q hR# ©rB   N©r   r   r@   >   rð   r@   r=   )r   r   rÞ   r+   r#   s   & r   Útest_selfloopsÚTestIsMatching.test_selfloopsª  sU   € Ü�MŠM˜!Óˆä—>’> !Ò%=×>Ò>Ð>Ð>à	�
‰
�1�aÔÜ—>’> ! f¨fÐ%5×6Ò6Ð6Ð6Ñ6r'   c                ót   € \         P                  ! ^4      p\         P                  ! V0 Rm4      '       d   Q hR# )rB   N¾   r/   r@   r=   rÝ   r#   s   & r   Útest_invalid_matchingÚ$TestIsMatching.test_invalid_matching²  s+   € Ü�MŠM˜!ÓˆÜ—>’> !Ò%=×>Ò>Ð>Ð>Ñ>r'   c                ó4  € \         P                  ! ^4      p\         P                  ! VRR04      '       d   Q h\         P                  ! VP                  4      p\         P                  ! VR04      '       g   Q h\         P                  ! VR04      '       d   Q hR# )rB   N©r   r?   r@   r/   rç   )r   r   rÞ   ÚDiGraphÚedgesr#   s   & r   Útest_invalid_edgeÚ TestIsMatching.test_invalid_edge¶  ss   € Ü�MŠM˜!ÓˆÜ—>’> ! f¨fÐ%5×6Ò6Ð6Ð6ä�JŠJ�q—w‘wÓˆÜ�~Š~˜a & ×*Ò*Ð*Ð*Ü—>’> ! f X×.Ò.Ð.Ð.Ñ.r'   rÏ   N)rÐ   rÑ   rÒ   rÓ   rÔ   rß   râ   r2   rè   rì   rñ   rõ   rû   rÕ   rÖ   r×   s   @r   rÚ   rÚ   �  s7   ø‡ € ñò
;ò(ò+ò3ò3ò7ò?÷/ð /r'   rÚ   c                   ó<   a € ] tR tRt o RtR tR tR tR tRt	V t
R# )	ÚTestIsMaximalMatchingi¿  zXUnit tests for the
:func:`~networkx.algorithms.matching.is_maximal_matching` function.

c                ó€   € \         P                  ! ^4      p\         P                  ! V^ ^^^ ^^^^/4      '       g   Q hR# rÜ   ©r   r   Úis_maximal_matchingr#   s   & r   rß   ÚTestIsMaximalMatching.test_dictÅ  ó:   € Ü�MŠM˜!ÓˆÜ×%Ò% a¨!¨Q°°1°a¸¸A¸qÐ)A×BÒBÐBÒBr'   c                ót   € \         P                  ! ^4      p\         P                  ! VRR04      '       g   Q hR# rë   r   r#   s   & r   Ú
test_validÚ TestIsMaximalMatching.test_validÉ  ó.   € Ü�MŠM˜!ÓˆÜ×%Ò% a¨&°&Ð)9×:Ò:Ð:Ò:r'   c                ó  € \         P                  ! ^4      p\         P                  ! V0 Rm4      '       d   Q h\         P                  ! VR04      '       d   Q hVP                  ^ ^ 4       \         P                  ! VR04      '       d   Q hR# )rB   Nrô   rø   rð   )r   r   r  r+   r#   s   & r   Útest_not_matchingÚ'TestIsMaximalMatching.test_not_matchingÍ  sq   € Ü�MŠM˜!ÓˆÜ×)Ò)¨!Ò-E×FÒFÐFÐFÜ×)Ò)¨!¨f¨X×6Ò6Ð6Ð6Ø	�
‰
�1�aÔÜ×)Ò)¨!¨f¨X×6Ò6Ð6Ð6Ñ6r'   c                ór   € \         P                  ! ^4      p\         P                  ! VR04      '       d   Q hR# )rB   Nr/   r   r#   s   & r   Útest_not_maximalÚ&TestIsMaximalMatching.test_not_maximalÔ  s.   € Ü�MŠM˜!ÓˆÜ×)Ò)¨!¨f¨X×6Ò6Ð6Ð6Ñ6r'   rÏ   N)rÐ   rÑ   rÒ   rÓ   rÔ   rß   r  r	  r  rÕ   rÖ   r×   s   @r   rþ   rþ   ¿  s$   ø‡ € ñò
Cò;ò7÷7ð 7r'   rþ   c                   óH   a € ] tR tRt o RtR tR tR tR tR t	R t
R	tV tR
# )ÚTestIsPerfectMatchingiÙ  zXUnit tests for the
:func:`~networkx.algorithms.matching.is_perfect_matching` function.

c                ó€   € \         P                  ! ^4      p\         P                  ! V^ ^^^ ^^^^/4      '       g   Q hR# rÜ   ©r   r   Úis_perfect_matchingr#   s   & r   rß   ÚTestIsPerfectMatching.test_dictß  r  r'   c                ót   € \         P                  ! ^4      p\         P                  ! VRR04      '       g   Q hR# rë   r  r#   s   & r   r  Ú TestIsPerfectMatching.test_validã  r  r'   c                óà   € \         P                  ! ^4      pVP                  ^ ^4       VP                  ^^4       VP                  ^^4       \         P                  ! V0 Rm4      '       g   Q hR# )rB   N>   rø   rF   ©re   r>   ©r   Úcycle_graphr+   r  r#   s   & r   Útest_valid_not_pathÚ)TestIsPerfectMatching.test_valid_not_pathç  sT   € Ü�NŠN˜1ÓˆØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔä×%Ò% aÒ)A×BÒBÐBÒBr'   c                óÚ   € \         P                  ! ^4      p\         P                  ! V0 Rm4      '       d   Q hVP                  ^ ^ 4       \         P                  ! VRR04      '       d   Q hR# rï   )r   r   r  r+   r#   s   & r   rñ   Ú$TestIsPerfectMatching.test_selfloopsï  sY   € Ü�MŠM˜!Óˆä×)Ò)¨!Ò-E×FÒFÐFÐFà	�
‰
�1�aÔÜ×)Ò)¨!¨f°fÐ-=×>Ò>Ð>Ð>Ñ>r'   c                ó´   € \         P                  ! ^4      p\         P                  ! VR04      '       d   Q h\         P                  ! V0 Rm4      '       d   Q hR# )rB   Nrø   rô   r  r#   s   & r   r	  Ú'TestIsPerfectMatching.test_not_matching÷  sH   € Ü�MŠM˜!ÓˆÜ×)Ò)¨!¨f¨X×6Ò6Ð6Ð6Ü×)Ò)¨!Ò-E×FÒFÐFÐFÑFr'   c                ó¼   € \         P                  ! ^4      pVP                  ^ ^4       VP                  ^^4       \         P                  ! VRR04      '       d   Q hR# )rB   NrF   rø   r  r#   s   & r   Útest_maximal_but_not_perfectÚ2TestIsPerfectMatching.test_maximal_but_not_perfectü  sM   € Ü�NŠN˜1ÓˆØ	�
‰
�1�aÔØ	�
‰
�1�aÔä×)Ò)¨!¨f°fÐ-=×>Ò>Ð>Ð>Ñ>r'   rÏ   N)rÐ   rÑ   rÒ   rÓ   rÔ   rß   r  r  rñ   r	  r!  rÕ   rÖ   r×   s   @r   r  r  Ù  s0   ø‡ € ñò
Cò;òCò?òG÷
?ð ?r'   r  c                   ó<   a € ] tR tRt o RtR tR tR tR tRt	V t
R# )	ÚTestMaximalMatchingi  zLUnit tests for the
:func:`~networkx.algorithms.matching.maximal_matching`.

c                ó¢   € . ROp\         P                  ! V4      p\         P                  ! V4      p\         P                  ! W#4      '       g   Q hR# )r0   N)r@   )r0   re   r=   )r>   re   rA   rr   rw   )r   r   Úmaximal_matchingr  )r$   rú   r   Úmatchings   &   r   rì   Ú'TestMaximalMatching.test_valid_matching
  s;   € ÚHˆÜ�HŠH�U‹OˆÜ×&Ò& qÓ)ˆÜ×%Ò% a×2Ò2Ð2Ò2r'   c                ó¾   € \         P                  ! ^4      p\         P                  ! V4      p^\        V4      8X  g   Q h\         P                  ! W4      '       g   Q hR# )re   N)r   Ú
star_graphr&  Úlenr  ©r$   r   r'  s   &  r   Útest_single_edge_matchingÚ-TestMaximalMatching.test_single_edge_matching  sI   € ä�MŠM˜!ÓˆÜ×&Ò& qÓ)ˆØ”C˜“MÔ!Ð!Ð!Ü×%Ò% a×2Ò2Ð2Ò2r'   c                ó\  € \         P                  ! ^4      pVP                  RR.4       \         P                  ! V4      p\	        V4      ^8X  g   Q h\
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q h\         P                  ! W4      '       g   Q hR# )r?   c              3   ó.   "  € T F  w  rW8H  x € K  	  R # 5ir   rÏ   )Ú.0ÚuÚvs   &  r   Ú	<genexpr>Ú6TestMaximalMatching.test_self_loops.<locals>.<genexpr>  s   é € Ð3©(¡$ !�q–v«(ùs   ‚TFNrð   )r0   r0   )r   r   Úadd_edges_fromr&  r+  Úanyr  r,  s   &  r   Útest_self_loopsÚ#TestMaximalMatching.test_self_loops  sƒ   € ä�MŠM˜!ÓˆØ	×Ñ˜& &Ð)Ô*Ü×&Ò& qÓ)ˆÜ�8‹} Ô!Ð!Ð!ç“3Ñ3©(Ó3—3—3’3Ñ3©(Ó3×3Ò3Ð3Ð3Ü×%Ò% a×2Ò2Ð2Ò2r'   c                ó:  € \        \        ^4      4       F‚  p\        P                  ! 4       pVP	                  V4       VP                  RR.4       \        P                  ! V4      p\        V4      ^8X  g   Q h\        P                  ! W#4      '       d   K‚  Q h	  R# )ztTests that a maximal matching is computed correctly
regardless of the order in which nodes are added to the graph.

Nr/   )r   r>   )	r   Úranger   r   Úadd_nodes_fromr6  r&  r+  r  )r$   Únodesr   r'  s   &   r   Útest_orderingÚ!TestMaximalMatching.test_ordering!  s|   € ô
 "¤%¨£(Ö+ˆEÜ—’“
ˆAØ×Ñ˜UÔ#Ø×Ñ˜f fÐ-Ô.Ü×*Ò*¨1Ó-ˆHÜ�x“= AÔ%Ð%Ð%Ü×)Ò)¨!×6Ô6Ð6Ð6ó ,r'   rÏ   N)rÐ   rÑ   rÒ   rÓ   rÔ   rì   r-  r8  r>  rÕ   rÖ   r×   s   @r   r$  r$    s#   ø‡ € ñò
3ò3ò3÷7ð 7r'   r$  )r   re   )re   r   r=   )re   re   )r   r0   r>   )r   )rN   Ú	itertoolsr   r   Únetworkxr   Únetworkx.utilsr   ÚmarkÚparametrizerÞ   r  r  r   r   Ú
MultiGraphrù   ÚMultiDiGraphr    r"   r&  r   r   rÚ   rþ   r  r$  rÏ   r'   r   Ú<module>rG     s¢  ðÛ Ý "ã ã Ý &ð ‡�×ÑØˆ2�>‰>˜2×1Ñ1°2×3IÑ3IÐ
Jóð ‡�×ÑØà	ˆØ	ˆØ	�ÐØ	�Ðð	óñóóðð ‡�×ÑØˆ2�>‰>˜2×1Ñ1°2×3IÑ3IÐ
Jóð ‡�×ÑØà	�FÐØ	ˆvˆðóñóóðð ‡�×Ñ˜¨¯©°r·z±zÀ2Ç?Á?Ð'SÓTØ‡�×ÑØˆ2×!Ñ! 2×#9Ñ#9¸2×;NÑ;NÐ
Oóñóó Uð÷P>ñ P>÷f
//ñ //÷d7ñ 7÷4(?ñ (?÷V(7ó (7r'   