e)7 dZddlZGddejZGddejZGddejZGd d ZGd d eZGd dejZGddejZ y)z!Resolution ordering utility testsNc*eZdZdZdZdZdZdZy)Test__mergeOrderingscddlm}||S)Nr)_legacy_mergeOrderings)zope.interface.ror)self orderingsrs >/usr/lib/python3/dist-packages/zope/interface/tests/test_ro.py_callFUTzTest__mergeOrderings._callFUTs<%i00cF|j|jggyN assertEqualr rs r test_emptyzTest__mergeOrderings.test_emptys r*B/r cN|j|jgdgdy)N)abcrrs r test_singlez Test__mergeOrderings.test_singles 7Ir cT|j|jdgddggddgy)Nrrrrs r test_w_duplicatesz&Test__mergeOrderings.test_w_duplicatess* Sz':;c3ZHr cpgd}ddg}gd}dg}|j|j||||ggdy)N)xyzqr))rrrrr r!rr)rO1O2O3O4s r &test_suffix_across_multiple_duplicatesz;Test__mergeOrderings.test_suffix_across_multiple_duplicates"sA 3Z U BB'786 8r N)__name__ __module__ __qualname__r rrrr&r r rrs10JI8r rc*eZdZdZdZdZdZdZy) Test__flattencddlm}||S)Nr)_legacy_flatten)rr.)robr.s r r zTest__flatten._callFUT-s5r""r cxGdd}|}d|_|j|j||gy)Nc eZdZy)-Test__flatten.test_w_empty_bases..FooNr'r(r)r*r r Foor22 r r4r* __bases__rr rr4foos r test_w_empty_basesz Test__flatten.test_w_empty_bases15  e  s+cU3r cfGdd}|j|j||tgy)Nc eZdZy)-Test__flatten.test_w_single_base..FooNr3r*r r r4r>9r5r r4rr objectrr4s r test_w_single_basez Test__flatten.test_w_single_base8)   s+c6];r c~Gdd}Gdd|}|j|j|||tgy)Nc eZdZy)'Test__flatten.test_w_bases..FooNr3r*r r r4rF>r5r r4c eZdZy)'Test__flatten.test_w_bases..BarNr3r*r r BarrH@r5r rIr?rr4rIs r test_w_baseszTest__flatten.test_w_bases=8   #  s+c3-?@r c Gdd}Gdd|}Gdd|}Gdd||}|j|j||||t||tgy) Nc eZdZy))Test__flatten.test_w_diamond..FooNr3r*r r r4rOEr5r r4c eZdZy))Test__flatten.test_w_diamond..BarNr3r*r r rIrQGr5r rIc eZdZy))Test__flatten.test_w_diamond..BazNr3r*r r BazrSIr5r rTc eZdZy))Test__flatten.test_w_diamond..QuxNr3r*r r QuxrVKr5r rWr?rr4rIrTrWs r test_w_diamondzTest__flatten.test_w_diamondDs^   #  #  #s  s+sCc6B Dr N)r'r(r)r r:rBrKrYr*r r r,r,+s#4< A Dr r,c@eZdZdZdZdZdZdZdZdZ dZ d Z y) Test_roNc ddlm}||fi|S)Nr) _legacy_ro)rr])rr/kwargsr]s r r zTest_ro._callFUTSs0"'''r cxGdd}|}d|_|j|j||gy)Nc eZdZy)'Test_ro.test_w_empty_bases..FooNr3r*r r r4raXr5r r4r*r6r8s r r:zTest_ro.test_w_empty_basesWr;r cfGdd}|j|j||tgy)Nc eZdZy)'Test_ro.test_w_single_base..FooNr3r*r r r4rd_r5r r4r?rAs r rBzTest_ro.test_w_single_base^rCr c~Gdd}Gdd|}|j|j|||tgy)Nc eZdZy)!Test_ro.test_w_bases..FooNr3r*r r r4rgdr5r r4c eZdZy)!Test_ro.test_w_bases..BarNr3r*r r rIrifr5r rIr?rJs r rKzTest_ro.test_w_basescrLr cGdd}Gdd|}Gdd|}Gdd||}|j|j|||||tgy) Nc eZdZy)#Test_ro.test_w_diamond..FooNr3r*r r r4rlkr5r r4c eZdZy)#Test_ro.test_w_diamond..BarNr3r*r r rIrnmr5r rIc eZdZy)#Test_ro.test_w_diamond..BazNr3r*r r rTrpor5r rTc eZdZy)#Test_ro.test_w_diamond..QuxNr3r*r r rWrrqr5r rWr?rXs r rYzTest_ro.test_w_diamondjsY   #  #  #s  s+sCf5 7r cGdd}|d}|d|}|d|}|d|}|d|}|d|||}|||||||gfS) NceZdZdZdZy) Test_ro._make_IOErr..Fooc ||_||_yrr'r7)rnamebasess r __init__z)Test_ro._make_IOErr..Foo.__init__y $ !&r c|jSrr'rs r __repr__z)Test_ro._make_IOErr..Foo.__repr__| }}$r N)r'r(r)rzr~r*r r r4ruxs  ' %r r4IExIStdErrIEnvErrIIOErrIOSErrIOErrr*)rr4rrrrrrs r _make_IOErrzTest_ro._make_IOErrvso % %%ji%i)Xw'Xw'GWff5uffgwDDDr cl|j\}}|j|j||yr)rrr )rrrys r test_non_orderablezTest_ro.test_non_orderables-'') u u-u5r c `ddlm}ddlm}ddlm}ddlm}Gdd|}||Gdd }Gd d |}Gd d }Gdd||} |j |j || || |||||||||tgy)Nr) implementer Interface providedBy) implementedByc eZdZy)?Test_ro.test_mixed_inheritance_and_implementation..IFooNr3r*r r IFoorr5r rc eZdZy)HTest_ro.test_mixed_inheritance_and_implementation..ImplementsFooNr3r*r r ImplementsFoors r rc eZdZy)ETest_ro.test_mixed_inheritance_and_implementation..ExtendsFooNr3r*r r ExtendsFoorr5r rc eZdZy)LTest_ro.test_mixed_inheritance_and_implementation..ImplementsNothingNr3r*r r ImplementsNothingrr5r rc eZdZy)VTest_ro.test_mixed_inheritance_and_implementation..ExtendsFooImplementsNothingNr3r*r r ExtendsFooImplementsNothingrr5r r)zope.interfacerrrrrr r@) rrrrrrrrrrs r )test_mixed_inheritance_and_implementationz1Test_ro.test_mixed_inheritance_and_implementations /,-0 9  T          *6G   MM*%@%BC D 6 7 : & = )   , - 6 "  $ %r ) r'r(r)maxDiffr r:rBrKrYrrrr*r r r[r[Qs1G(4< A 7E(6 !%r r[ceZdZdZdZdZy) C3Settingc ||_||_yr)_setting_value)rsettingvalues r rzzC3Setting.__init__s  r czddlm}t|j|jj |j yNrro)rrsetattrC3rr'r)rrs r __enter__zC3Setting.__enter__s#%t}}--t{{;r czddlm}t|j|jj |jyr)rrrrrr')rtvtbrs r __exit__zC3Setting.__exit__s#%t}}--t}}=r N)r'r(r)rzrrr*r r rrs<>r rcZeZdZdZdZdZdZdZdZdZ dZ d Z d Z fd Z xZS) Test_c3_roctj|ddlm}|dx|_}|j |j y)Nr)InstalledHandlerzzope.interface.ro)r[setUpzope.testing.loggingsupportr log_handler addCleanup uninstall)rrhandlers r rzTest_c3_ro.setUps6 d@%56I%JJ7 ))*r c ddlm}||fi|Sr)rr)rr/r^rs r r zTest_c3_ro._callFUTs("r c |}Gdd|}Gdd|}Gdd|}Gdd||}Gd d ||}Gd d ||}t|d r/|j|j|j||S)Nc eZdZy)+Test_c3_ro._make_complex_diamond..FNr3r*r r Frr5r rc eZdZy)+Test_c3_ro._make_complex_diamond..ENr3r*r r Err5r rc eZdZy)+Test_c3_ro._make_complex_diamond..DNr3r*r r Drr5r rc eZdZy)+Test_c3_ro._make_complex_diamond..CNr3r*r r Crr5r rc eZdZy)+Test_c3_ro._make_complex_diamond..BNr3r*r r Brr5r rc eZdZy)+Test_c3_ro._make_complex_diamond..ANr3r*r r Arr5r rmro)hasattrrrr ) rbaseOrrrrrrs r _make_complex_diamondz Test_c3_ro._make_complex_diamonds        1  1  1  1e    QUUWdmmA&6 7r c.|jtyr)rr@rs r test_complex_diamond_objectz&Test_c3_ro.test_complex_diamond_objects ""6*r cddlm}|j|}|j|jDcgc]}|j c}gdycc}w)Nrr)rrrrrrr)rrrr__iro__r')rrIArs r test_complex_diamond_interfacez)Test_c3_ro.test_complex_diamond_interfaces?,  ' ' 2 !# ,AQZZ , 7 ,sAcddlm}|j|}|j|d}|j |j ||j y)NrrT) use_legacy_ro)rrrr assertNotEqualr_check_handler_complex_diamond)rrr legacy_A_iros r (test_complex_diamond_use_legacy_argumentz3Test_c3_ro.test_complex_diamond_use_legacy_argumentsI,  & &y 1}}Qd};  AII|4 ++-r cddlm}|j|}|j|d}|j t ||j |jy)NrrT)log_changed_ro)rrrr rtuplerr)rrrcomputed_A_iros r ,test_complex_diamond_compare_legacy_argumentz7Test_c3_ro.test_complex_diamond_compare_legacy_argumentsL,  & &y 1q> ~. : ++-r c |j}|jdt|j|jd}|jdj d|j j Ddy)Nrr c3<K|]}|jywr)rstrip).0ls r z.s"X!188:"XsaObject 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.Interface)rrlenrecordsjoin getMessage splitlines)rrrecords r rz)Test_c3_ro._check_handler_complex_diamondsm"" C01# "Xv7H7H7J7U7U7W"XX [B Cr c "ddlm}Gdd}|ddi}Gdd|}Gd d |}Gd d |}Gd d|}|d}|d|||f} |d||| f} |j| dd} |j| | || |||||g|jj \} |j d| j|j|j5|j| ddddy#1swYyxYw)NrrceZdZdZddZdZy)UTest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.._Basedr*Nc ||_||_yrrw)rrxryattrss r rzz^Test_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.._Based.__init__r{r c|jSrr}rs r r~z^Test_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super.._Based.__repr__rr )r*N)r'r(r)r7rzr~r*r r _BasedrsI ' %r rrr*c eZdZy)^Test_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super..IPluggableIndexNr3r*r r IPluggableIndexr$r5r rc eZdZy)bTest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super..ILimitedResultIndexNr3r*r r ILimitedResultIndexr'r5r rc eZdZy)ZTest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super..IQueryIndexNr3r*r r IQueryIndexr*r5r rc eZdZy)YTest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_super..IPathIndexNr3r*r r IPathIndexr-r5r rr@ PathIndexExtendedPathIndexTF)rstrictzused the legacyr ) rrr rrrassertInr assertRaises InconsistentResolutionOrderError) rrrrrrrrobjr r resultrs r :test_ExtendedPathIndex_implement_thing_implementedby_superzETest_c3_ro.test_ExtendedPathIndex_implement_thing_implementedby_supers4% % %;B/  i  /  /   X;[#(FG ##6$7i#PR 0eT         " ""** '):):)<=   rBB C : MM+DM 9 : : :s (DDc ddlm}ddlm}|j t |t j|j|j|j|j|j|jgy)Nr) interfacesr)zope.interface.commonrrrrlistOSError flattenedIOSErrorIIOErrorIEnvironmentErrorIStandardError IExceptionr)rrrs r test_OSError_IOErrorzTest_c3_ro.test_OSError_IOErrorSsi4-  GI&002 3####,,))%%$$   r c ddl}ddlm} |`|j 5|j dt|jjd5t|jjd5|j|j5t|9dddddddddddd|j\}}|j|j 5|j#|ddddt|jj$d5t|jjd5|j 5|j d|j#|ddd|j'||jj(dddddd|j#|d}|j#|dd}|j+||y#t$rYwxYw#1swYixYw#1swYnxYw#1swYsxYw#1swYxxYw#1swY;xYw#1swYxYw#1swYxYw#1swYxYw) NrrerrorTFr ignore)rr )warningsrr__warningregistry__AttributeErrorcatch_warnings simplefilterrr WARN_BAD_IRO STRICT_IROr"InconsistentResolutionOrderWarningsuperrrrr TRACK_BAD_IROr BAD_IROSr)rr"rr_iro legacy_iro __class__s r rzTest_c3_ro.test_non_orderablebs % & $ $ & 1  ! !' *255--t4 1i@P@PRW6X 1&&r'L'LM1G.01 1 1 1 ##%q   rBB C . MM%M - .ruu**D 1 19RUU=M=Mu3U 1((* %%%h/ e$ % MM% 0  1 1 mmE%m0]]5U]K  j)+    11 1 1 1 1 1 1 . . % % 1 1 1 1sG42H+!H2HH H%H-H++H8'!II#I<.I*I4 HHH HH HH( #H++H58II II II&)r'r(r)rr rrrrrrrrr __classcell__)r0s@r rrsA+  *+ ..C$=:~ **r rc eZdZddZdZdZy)TestC3Nc4ddlm}|j|||S)Nr)r)rrresolver)rrr  base_mrosrs r _makeOnezTestC3._makeOnes({{1fi00r c<|jt|tjtjji}|j }|j tj||j|tjjy)N)r6) r7typeunittestTestCase__mro__memor  assertIsNonehad_inconsistency)rc3r=s r test_base_mros_givenzTestC3.test_base_mros_givensk ]]4:(2C2CXEVEVE^E^1_] `ww h''. $x001CCDr c|jt|}|j|jd|_|j |j tt|jyr) r7r9assertIsNotNone_C3__mro_mergerrrr<)rr@s r test_one_base_optimizationz!TestC3.test_one_base_optimizationsT ]]4: & R[[)  4T (:(:#;rYs(88,,80#DH%%#DL_%h_%D > >|*|*~=X  =*<))