
    (ph8                        S r SSKr " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S	 S
5      r " S S\5      r " S S\R                  5      r " S S\R                  5      r	g)z!Resolution ordering utility tests    Nc                   2    \ rS rSrS rS rS rS rS rSr	g)	Test__mergeOrderings   c                     SSK Jn  U" U5      $ )Nr   )_legacy_mergeOrderings)zope.interface.ror   )self	orderingsr   s      O/var/www/html/venv/lib/python3.13/site-packages/zope/interface/tests/test_ro.py_callFUTTest__mergeOrderings._callFUT   s    <%i00    c                 F    U R                  U R                  / 5      / 5        g NassertEqualr   r	   s    r   
test_emptyTest__mergeOrderings.test_empty   s    r*B/r   c                 N    U R                  U R                  / SQ5      / SQ5        g )N)abcr   r   s    r   test_single Test__mergeOrderings.test_single   s    7Ir   c                 T    U R                  U R                  S/SS//5      SS/5        g )Nr   r   r   r   s    r   test_w_duplicates&Test__mergeOrderings.test_w_duplicates"   s*    Sz':;c3ZHr   c                 l    / SQnSS/n/ SQnS/nU R                  U R                  XX4/5      / SQ5        g )N)xyzqr"   )         )r    r!   r#   r$   r%   r&   r"   r   )r	   O1O2O3O4s        r   &test_suffix_across_multiple_duplicates;Test__mergeOrderings.test_suffix_across_multiple_duplicates%   s=    3ZU'786	8r    N)
__name__
__module____qualname____firstlineno__r   r   r   r   r+   __static_attributes__r-   r   r   r   r      s    10JI8r   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	Test__flatten.   c                     SSK Jn  U" U5      $ )Nr   )_legacy_flatten)r   r7   )r	   obr7   s      r   r   Test__flatten._callFUT0   s    5r""r   c                 x     " S S5      nU" 5       nSUl         U R                  U R                  U5      U/5        g )Nc                       \ rS rSrSrg)-Test__flatten.test_w_empty_bases.<locals>.Foo6   r-   Nr.   r/   r0   r1   r2   r-   r   r   Foor<   6       r   r?   r-   	__bases__r   r   r	   r?   foos      r   test_w_empty_bases Test__flatten.test_w_empty_bases4   7    	 	 es+cU3r   c                 f     " S S5      nU R                  U R                  U5      U[        /5        g )Nc                       \ rS rSrSrg)-Test__flatten.test_w_single_base.<locals>.Foo?   r-   Nr>   r-   r   r   r?   rJ   ?   r@   r   r?   r   r   objectr	   r?   s     r   test_w_single_base Test__flatten.test_w_single_base=   +    	 	 	s+c6];r   c                 |     " S S5      n " S SU5      nU R                  U R                  U5      X![        /5        g )Nc                       \ rS rSrSrg)'Test__flatten.test_w_bases.<locals>.FooF   r-   Nr>   r-   r   r   r?   rT   F   r@   r   r?   c                       \ rS rSrSrg)'Test__flatten.test_w_bases.<locals>.BarI   r-   Nr>   r-   r   r   BarrW   I   r@   r   rY   rL   r	   r?   rY   s      r   test_w_basesTest__flatten.test_w_basesD   8    	 		# 	 	s+c-?@r   c           
           " S S5      n " S SU5      n " S SU5      n " S SX#5      nU R                  U R                  U5      XBU[        X1[        /5        g )	Nc                       \ rS rSrSrg))Test__flatten.test_w_diamond.<locals>.FooP   r-   Nr>   r-   r   r   r?   r`   P   r@   r   r?   c                       \ rS rSrSrg))Test__flatten.test_w_diamond.<locals>.BarS   r-   Nr>   r-   r   r   rY   rc   S   r@   r   rY   c                       \ rS rSrSrg))Test__flatten.test_w_diamond.<locals>.BazV   r-   Nr>   r-   r   r   Bazrf   V   r@   r   rh   c                       \ rS rSrSrg))Test__flatten.test_w_diamond.<locals>.QuxY   r-   Nr>   r-   r   r   Quxrj   Y   r@   r   rl   rL   r	   r?   rY   rh   rl   s        r   test_w_diamondTest__flatten.test_w_diamondN   sZ    	 		# 		# 		# 	 	s+C6B	Dr   r-   N)
r.   r/   r0   r1   r   rE   rO   r[   rn   r2   r-   r   r   r4   r4   .   s    #4<ADr   r4   c                   H    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)Test_ro`   Nc                      SSK Jn  U" U40 UD6$ )Nr   )
_legacy_ro)r   rt   )r	   r8   kwargsrt   s       r   r   Test_ro._callFUTc   s    0"'''r   c                 x     " S S5      nU" 5       nSUl         U R                  U R                  U5      U/5        g )Nc                       \ rS rSrSrg)'Test_ro.test_w_empty_bases.<locals>.Fooi   r-   Nr>   r-   r   r   r?   ry   i   r@   r   r?   r-   rA   rC   s      r   rE   Test_ro.test_w_empty_basesg   rG   r   c                 f     " S S5      nU R                  U R                  U5      U[        /5        g )Nc                       \ rS rSrSrg)'Test_ro.test_w_single_base.<locals>.Foor   r-   Nr>   r-   r   r   r?   r~   r   r@   r   r?   rL   rN   s     r   rO   Test_ro.test_w_single_basep   rQ   r   c                 |     " S S5      n " S SU5      nU R                  U R                  U5      X![        /5        g )Nc                       \ rS rSrSrg)!Test_ro.test_w_bases.<locals>.Fooy   r-   Nr>   r-   r   r   r?   r   y   r@   r   r?   c                       \ rS rSrSrg)!Test_ro.test_w_bases.<locals>.Bar|   r-   Nr>   r-   r   r   rY   r   |   r@   r   rY   rL   rZ   s      r   r[   Test_ro.test_w_basesw   r]   r   c                      " S S5      n " S SU5      n " S SU5      n " S SX#5      nU R                  U R                  U5      XBX1[        /5        g )	Nc                       \ rS rSrSrg)#Test_ro.test_w_diamond.<locals>.Foo   r-   Nr>   r-   r   r   r?   r      r@   r   r?   c                       \ rS rSrSrg)#Test_ro.test_w_diamond.<locals>.Bar   r-   Nr>   r-   r   r   rY   r      r@   r   rY   c                       \ rS rSrSrg)#Test_ro.test_w_diamond.<locals>.Baz   r-   Nr>   r-   r   r   rh   r      r@   r   rh   c                       \ rS rSrSrg)#Test_ro.test_w_diamond.<locals>.Qux   r-   Nr>   r-   r   r   rl   r      r@   r   rl   rL   rm   s        r   rn   Test_ro.test_w_diamond   sU    	 		# 		# 		# 	 	s+Cf5	7r   c                      " S S5      nU" S5      nU" SU5      nU" SU5      nU" SU5      nU" SU5      nU" SXEU5      nXwXVXCU/4$ )	Nc                        \ rS rSrS rS rSrg) Test_ro._make_IOErr.<locals>.Foo   c                     Xl         X l        g r   r.   rB   )r	   namebasess      r   __init__)Test_ro._make_IOErr.<locals>.Foo.__init__        $!&r   c                     U R                   $ r   r.   r   s    r   __repr__)Test_ro._make_IOErr.<locals>.Foo.__repr__       }}$r   rB   r.   N)r.   r/   r0   r1   r   r   r2   r-   r   r   r?   r      s    '%r   r?   IExIStdErrIEnvErrIIOErrIOSErrIOErrr-   )r	   r?   r   r   r   r   r   r   s           r   _make_IOErrTest_ro._make_IOErr   sg    	% 	% %ji%i)Xw'Xw'GWf5fgDDDr   c                 j    U R                  5       u  pU R                  U R                  U5      U5        g r   )r   r   r   )r	   r   r   s      r   test_non_orderableTest_ro.test_non_orderable   s+    '')u-u5r   c                 ^   SSK Jn  SSK Jn  SSK Jn  SSK Jn   " S SU5      nU" U5       " S S	5      5       n " S
 SU5      n " S S5      n " S SXx5      n	U R                  U R                  U" U	" 5       5      5      U" U	5      U" U5      U" U5      UUU" U5      U" [        5      /5        g )Nr   	Interface)implementedBy)implementer
providedByc                       \ rS rSrSrg)?Test_ro.test_mixed_inheritance_and_implementation.<locals>.IFoo   r-   Nr>   r-   r   r   IFoor      r@   r   r   c                       \ rS rSrSrg)HTest_ro.test_mixed_inheritance_and_implementation.<locals>.ImplementsFoo   r-   Nr>   r-   r   r   ImplementsFoor      s    r   r   c                       \ rS rSrSrg)ETest_ro.test_mixed_inheritance_and_implementation.<locals>.ExtendsFoo   r-   Nr>   r-   r   r   
ExtendsFoor      r@   r   r   c                       \ rS rSrSrg)LTest_ro.test_mixed_inheritance_and_implementation.<locals>.ImplementsNothing   r-   Nr>   r-   r   r   ImplementsNothingr      r@   r   r   c                       \ rS rSrSrg)VTest_ro.test_mixed_inheritance_and_implementation.<locals>.ExtendsFooImplementsNothing   r-   Nr>   r-   r   r   ExtendsFooImplementsNothingr      r@   r   r   )zope.interfacer   r   r   r   r   r   rM   )
r	   r   r   r   r   r   r   r   r   r   s
             r   )test_mixed_inheritance_and_implementation1Test_ro.test_mixed_inheritance_and_implementation   s     	-0.-	9 	 
T		 	 
		 		 		* 	 	MM*%@%BCD67:&=),-6"$	%r   r-   )r.   r/   r0   r1   maxDiffr   rE   rO   r[   rn   r   r   r   r2   r-   r   r   rq   rq   `   s1    G(4<A7"E,6
!%r   rq   c                   &    \ rS rSrS rS rS rSrg)	C3Setting   c                     Xl         X l        g r   _setting_value)r	   settingvalues      r   r   C3Setting.__init__   s    r   c                 z    SSK Jn  [        UR                  U R                  R
                  U R                  5        g Nr   ro)r   r   setattrC3r   r.   r   )r	   r   s     r   	__enter__C3Setting.__enter__   s#    %t}}--t{{;r   c                 z    SSK Jn  [        UR                  U R                  R
                  U R                  5        g r   )r   r   r   r   r   r.   )r	   tvtbr   s        r   __exit__C3Setting.__exit__   s#    %t}}--t}}=r   r   N)r.   r/   r0   r1   r   r   r   r2   r-   r   r   r   r      s    <>r   r   c                   d   ^  \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rU 4S jrSrU =r$ )
Test_c3_ro   c                     [         R                  U 5        SSKJn  U" S5      =U l        nU R                  UR                  5        g )Nr   )InstalledHandlerzzope.interface.ro)rq   setUpzope.testing.loggingsupportr   log_handler
addCleanup	uninstall)r	   r   handlers      r   r   Test_c3_ro.setUp   s6    d@%56I%JJ7))*r   c                      SSK Jn  U" U40 UD6$ r   )r   r   )r	   r8   ru   r   s       r   r   Test_c3_ro._callFUT   s    ("r   c                 
    " S SU5      n " S SU5      n " S SU5      n " S SXB5      n " S	 S
XC5      n " S SXe5      n[        US5      (       a/  U R                  UR                  5       U R                  U5      5        U$ )Nc                       \ rS rSrSrg)+Test_c3_ro._make_complex_diamond.<locals>.F   r-   Nr>   r-   r   r   Fr      r@   r   r   c                       \ rS rSrSrg)+Test_c3_ro._make_complex_diamond.<locals>.E   r-   Nr>   r-   r   r   Er      r@   r   r   c                       \ rS rSrSrg)+Test_c3_ro._make_complex_diamond.<locals>.D   r-   Nr>   r-   r   r   Dr     r@   r   r  c                       \ rS rSrSrg)+Test_c3_ro._make_complex_diamond.<locals>.C   r-   Nr>   r-   r   r   Cr     r@   r   r  c                       \ rS rSrSrg)+Test_c3_ro._make_complex_diamond.<locals>.B   r-   Nr>   r-   r   r   Br
     r@   r   r  c                       \ rS rSrSrg)+Test_c3_ro._make_complex_diamond.<locals>.A   r-   Nr>   r-   r   r   Ar     r@   r   r  mro)hasattrr   r  r   )r	   baser   r   r  r  r  r  s           r   _make_complex_diamond Test_c3_ro._make_complex_diamond   s}    	 		 		 		 		 		 	 1eQUUWdmmA&67r   c                 .    U R                  [        5        g r   )r  rM   r   s    r   test_complex_diamond_object&Test_c3_ro.test_complex_diamond_object  s    ""6*r   c                     SSK Jn  U R                  U5      nU R                  UR                   Vs/ s H  o3R
                  PM     sn/ SQ5        g s  snf )Nr   r   )r  r  r  r  r   r   r   )r   r   r  r   __iro__r.   )r	   r   IAr    s       r   test_complex_diamond_interface)Test_c3_ro.test_complex_diamond_interface	  sA    ,''	2!#,AZZ,7	
,s   Ac                     SSK Jn  U R                  U5      nU R                  USS9nU R	                  UR
                  U5        U R                  5         g )Nr   r   T)use_legacy_ro)r   r   r  r   assertNotEqualr  _check_handler_complex_diamond)r	   r   r  legacy_A_iros       r   (test_complex_diamond_use_legacy_argument3Test_c3_ro.test_complex_diamond_use_legacy_argument  sI    ,&&y1}}Qd};AII|4 	++-r   c                     SSK Jn  U R                  U5      nU R                  USS9nU R	                  [        U5      UR                  5        U R                  5         g )Nr   r   T)log_changed_ro)r   r   r  r   r   tupler  r!  )r	   r   r  computed_A_iros       r   ,test_complex_diamond_compare_legacy_argument7Test_c3_ro.test_complex_diamond_compare_legacy_argument  sL    ,&&y1q>~.		:++-r   c                 *   U R                   nU R                  S[        UR                  5      5        UR                  S   nSR	                  SS9nU R                  SR                  S UR                  5       R                  5        5       5      U5        g )Nr$   r   a  Object <InterfaceClass {name}> has different legacy and C3 MROs:
  Legacy RO (len=7)                 C3 RO (len=7; inconsistent=no)
  ==================================================================
    zope.interface.tests.test_ro.A    zope.interface.tests.test_ro.A
    zope.interface.tests.test_ro.B    zope.interface.tests.test_ro.B
  - zope.interface.tests.test_ro.E
    zope.interface.tests.test_ro.C    zope.interface.tests.test_ro.C
    zope.interface.tests.test_ro.D    zope.interface.tests.test_ro.D
                                    + zope.interface.tests.test_ro.E
    zope.interface.tests.test_ro.F    zope.interface.tests.test_ro.F
    zope.interface.Interface          zope.interface.Interfacezzope.interface.tests.test_ro.A)r   
c              3   @   #    U  H  oR                  5       v   M     g 7fr   )rstrip).0lns     r   	<genexpr><Test_c3_ro._check_handler_complex_diamond.<locals>.<genexpr>;  s     M,Lbiikk,Ls   )r   r   lenrecordsformatjoin
getMessage
splitlines)r	   r   recordexpecteds       r   r!  )Test_c3_ro._check_handler_complex_diamond&  s    ""C01#B CI&1 CI C
 	 	IIMF,=,=,?,J,J,LMM	
r   c                    SSK Jn   " S S5      nU" SS0 5      n " S SU5      n " S	 S
U5      n " S SU5      n " S SU5      nU" S5      nU" SXvU45      n	U" SXVU	45      n
U R                  U
SSS9nU R                  UU
UU	UUUUU/5        U R                  R
                  u  nU R                  SUR                  5       5        U R                  UR                  5         U R                  U
SS9  S S S 5        g ! , (       d  f       g = f)Nr   r   c                   (    \ rS rSrSrSS jrS rSrg)UTest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.<locals>._BasediE  r-   Nc                     Xl         X l        g r   r   )r	   r   r   attrss       r   r   ^Test_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.<locals>._Based.__init__H  r   r   c                     U R                   $ r   r   r   s    r   r   ^Test_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.<locals>._Based.__repr__L  r   r   r   )r-   N)r.   r/   r0   r1   rB   r   r   r2   r-   r   r   _Basedr>  E  s    I'%r   rD  r   r-   c                       \ rS rSrSrg)^Test_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.<locals>.IPluggableIndexiQ  r-   Nr>   r-   r   r   IPluggableIndexrF  Q  r@   r   rG  c                       \ rS rSrSrg)bTest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.<locals>.ILimitedResultIndexiT  r-   Nr>   r-   r   r   ILimitedResultIndexrI  T  r@   r   rJ  c                       \ rS rSrSrg)ZTest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.<locals>.IQueryIndexiW  r-   Nr>   r-   r   r   IQueryIndexrL  W  r@   r   rM  c                       \ rS rSrSrg)YTest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.<locals>.IPathIndexiZ  r-   Nr>   r-   r   r   
IPathIndexrO  Z  r@   r   rP  rM   	PathIndexExtendedPathIndexTF)r&  strictzused the legacyrS  )
r   r   r   r   r   r4  assertInr7  assertRaises InconsistentResolutionOrderError)r	   r   rD  r   rG  rJ  rM  rP  objrQ  rR  resultr9  s                r   :test_ExtendedPathIndex_implement_thing_implementedby_superETest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super?  s0    	&	% 	% ;B/		i 		/ 		/ 		 	 X;#(FG	 # y9
 d5  
 	" 	 ""**'):):)<=rBBCMM+DM9 DCCs   #C==
Dc           	         SSK Jn  SSKJn  U R	                  [        U" [        5       5      R                  5       5      UR                  UR                  UR                  UR                  UR                  UR                  /5        g )Nr   r   )
interfaces)r   r   zope.interface.commonr]  r   listOSError	flattenedIOSErrorIIOErrorIEnvironmentErrorIStandardError
IExceptionr   )r	   r   r]  s      r   test_OSError_IOErrorTest_c3_ro.test_OSError_IOError  si    -4GI&0023####,,))%%$$		r   c           	        > SS K nSSKJn   U?UR                  5          UR                  S5        [        UR                  R                  S5         [        UR                  R                  S5         U R                  UR                  5         [        TU ]9  5         S S S 5        S S S 5        S S S 5        S S S 5        U R                  5       u  p4U R                  UR                   5         U R#                  USS9  S S S 5        [        UR                  R$                  S5         [        UR                  R                  S5         UR                  5          UR                  S5        U R#                  U5        S S S 5        U R'                  X2R                  R(                  5        S S S 5        S S S 5        U R#                  USS9nU R#                  USSS9nU R+                  XV5        g ! [         a     GNf = f! , (       d  f       GNc= f! , (       d  f       GNm= f! , (       d  f       GNw= f! , (       d  f       GN= f! , (       d  f       GNM= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)	Nr   r   errorTFrT  ignore)r  rS  )warningsr   r   __warningregistry__AttributeErrorcatch_warningssimplefilterr   r   WARN_BAD_IRO
STRICT_IROrV  "InconsistentResolutionOrderWarningsuperr   r   rW  r   TRACK_BAD_IROrU  BAD_IROSr   )r	   rl  r   r   _iro
legacy_iro	__class__s          r   r   Test_c3_ro.test_non_orderable  s   %	& $$&!!'*""D  % &&r'L'LMG.0 N ' ##%rBBCMM%M- D EE
EEe
 ((*%%h/e$ + MM%0

 mmE%m0]]5U]K
);  		 NM   '& DC +*
 

 
s   G( 2H/!H2HG9	H%H-H/*I#!I5I$#I8-I$%I5(
G65G69
HH
HH
H,	'H//
H>
I
I!I$$
I2	.I55
J)r   )r.   r/   r0   r1   r   r   r  r  r  r#  r)  r!  rZ  rg  r   r2   __classcell__)rz  s   @r   r   r      sA    + 4+
..
2C:J$* $*r   r   c                   *    \ rS rSrSS jrS rS rSrg)TestC3i  Nc                 2    SSK Jn  UR                  XU5      $ )Nr   )r   )r   r   resolver)r	   r  rS  	base_mrosr   s        r   _makeOneTestC3._makeOne  s    ({{1i00r   c                 6   U R                  [        U 5      [        R                  [        R                  R                  0S9nUR
                  nU R                  [        R                  U5        U R                  U[        R                     R                  5        g )N)r  )	r  typeunittestTestCase__mro__memorU  assertIsNonehad_inconsistency)r	   c3r  s      r   test_base_mros_givenTestC3.test_base_mros_given  st    ]]J(((*;*;*C*CD  
 wwh''.$x001CCDr   c                     U R                  [        U 5      5      nU R                  UR                  5        S Ul        U R                  UR                  5       [        [        U 5      R                  5      5        g r   )	r  r  assertIsNotNone_C3__mro_merger   r  r_  r  )r	   r  s     r   test_one_base_optimization!TestC3.test_one_base_optimization  sT    ]]4:& 	R[[)	4T
(:(:#;<r   r-   )FN)r.   r/   r0   r1   r  r  r  r2   r-   r   r   r~  r~    s    1E=r   r~  c                   8    \ rS rSr " S S5      rSS jrS rSrg)	Test_ROComparisoni  c                       \ rS rSrSrSrSrg)Test_ROComparison.MockC3i  Fr-   N)r.   r/   r0   r1   direct_inconsistencybases_had_inconsistencyr2   r-   r   r   MockC3r    s    $"'r   r  Nr-   c                 N    SSK Jn  U" U=(       d    U R                  5       X#5      $ )Nr   )_ROComparison)r   r  r  )r	   r  c3_ro	legacy_ror  s        r   r  Test_ROComparison._makeOne  s    3R04;;=%CCr   c                 j   U R                  5       nU R                  SUR                  5        SUR                  l        U R                  SUR                  5        SUR                  l        U R                  SUR                  5        SUR                  l        U R                  SUR                  5        g )NnoTdirectzdirect+basesFr   )r  r   _inconsistent_labelr  r  r  )r	   comps     r   test_inconsistent_label)Test_ROComparison.test_inconsistent_label  s    }}t778'+$4#;#;<*.')A)AB',$$":":;r   )Nr-   r-   )r.   r/   r0   r1   r  r  r  r2   r-   r   r   r  r    s    ( (D<r   r  )
__doc__r  r  r   r4   rq   r   r   r~  r  r-   r   r   <module>r     s    ( 88,, 80/DH%% /Ddn%h n%b> >W* W*t=X =0<)) <r   