
    (ph-j                    
   S r SSKrSSKJr  SSKJr  SSKJr  SSKJr  \" 5       r " S S\R                  5      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\5      r " S S\5      r " S S\\\\R                  5      r " S S\\R                  5      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 " S) S*5      rS+ rS, r " S- S.5      r " S/ S0\R                  5      rg)1zTest Interface implementation
    N)CleanUp)MissingSomeAttrs)OptimizationTestMixin)SubclassableMixinc                        \ rS rSrS rS rSrg)Test_invariant+   c                    ^^ SSK Jn  SSK Jm  S m " UU4S jS5      nU R                  [	        X!S 5      ST/05        g )Nr   TAGGED_DATA	invariantc                      [        5       eNNotImplementedErrorargskws     V/var/www/html/venv/lib/python3.13/site-packages/zope/interface/tests/test_interface.py_check,Test_invariant.test_w_single.<locals>._check1       %''    c                   *   > \ rS rSr Y"  Y 5        Srg))Test_invariant.test_w_single.<locals>.Foo4    N__name__
__module____qualname____firstlineno____static_attributes__)r   r   s   r   Foor   4   s    fr   r%   
invariantszope.interface.interfacer   r   assertEqualgetattr)selfr   r%   r   r   s      @@r   test_w_singleTest_invariant.test_w_single-   s;    86	(	 	 	48&1	3r   c                    ^^^ SSK Jn  SSK Jm  S mS m " UUU4S jS5      nU R                  [	        X!S 5      STT/05        g )	Nr   r   r   c                      [        5       er   r   r   s     r   r   .Test_invariant.test_w_multiple.<locals>._check>   r   r   c                      [        5       er   r   r   s     r   _another_check6Test_invariant.test_w_multiple.<locals>._another_checkA   r   r   c                   >   > \ rS rSr Y"  Y5         Y"  Y 5        Srg)+Test_invariant.test_w_multiple.<locals>.FooD   r   Nr   )r2   r   r   s   r   r%   r5   D   s    fn%r   r%   r&   r'   )r+   r   r%   r2   r   r   s      @@@r   test_w_multipleTest_invariant.test_w_multiple:   sD    86	(	(	& 	& 	48&(@A	Cr   r   N)r    r!   r"   r#   r,   r7   r$   r   r   r   r   r   +   s    3Cr   r   c                   &    \ rS rSrS rS rS rSrg)Test_taggedValueL   c                 v   ^ SSK Jn  SSK Jm   " U4S jS5      nU R                  [	        X!S 5      SS/05        g )Nr   r   taggedValuec                   ,   > \ rS rSr Y " SS/5        Srg)+Test_taggedValue.test_w_single.<locals>.FooR   barbazr   Nr   r=   s   r   r%   r@   R   s    w'r   r%   rB   rC   r(   r   r>   r)   r*   r+   r   r%   r>   s      @r   r,   Test_taggedValue.test_w_singleN   s6    88	( 	( 	48%)	+r   c                 x   ^ SSK Jn  SSK Jm   " U4S jS5      nU R                  [	        X!S 5      S/SS.5        g )	Nr   r   r=   c                   @   > \ rS rSr Y " SS/5         Y " SS5        Srg)-Test_taggedValue.test_w_multiple.<locals>.Foo\   rB   rC   quxspamr   Nr   r=   s   r   r%   rI   \   s    w'v&r   r%   rC   rL   rB   rK   rD   rE   s      @r   r7    Test_taggedValue.test_w_multipleX   s6    88	' 	' 	48"'8	:r   c                 v   ^ SSK Jn  SSK Jm   " U4S jS5      nU R                  [	        X!S 5      SSS.5        g )	Nr   r   r=   c                   T   > \ rS rSr Y " SS/5         Y " SS5         Y " SS5        Srg)	9Test_taggedValue.test_w_multiple_overwriting.<locals>.Foog   rB   rC   rK   rL   frobr   Nr   r=   s   r   r%   rQ   g   s#    w'v&v&r   r%   rS   rL   rM   rD   rE   s      @r   test_w_multiple_overwriting,Test_taggedValue.test_w_multiple_overwritingc   s4    88	' 	'
 	48!'7	9r   r   N)r    r!   r"   r#   r,   r7   rT   r$   r   r   r   r:   r:   L   s    +	:
9r   r:   c                   j    \ rS rSrSrS rSS j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)ElementTestsp   	AnElementc                     SSK Jn  U$ )Nr   )Element)r(   r[   )r+   r[   s     r   _getTargetClassElementTests._getTargetClasst   s
    4r   Nc                 L    Uc  U R                   nU R                  5       " U5      $ r   )DEFAULT_NAMEr\   )r+   names     r   _makeOneElementTests._makeOnex   s&    <$$D##%d++r   c                    U R                  5       nU R                  UR                  U R                  5        U R                  UR	                  5       U R                  5        U R                  UR
                  S5        U R                  UR                  5       S5        U R                  [        UR                  5       5      / 5        g )N )	ra   r)   r    r_   getName__doc__getDoclistgetTaggedValueTagsr+   elements     r   test_ctor_defaultsElementTests.test_ctor_defaults}   s    --/))4+<+<=*D,=,=>"-)2.g88:;R@r   c                     U R                  S5      nU R                  UR                  S 5        U R                  UR                  S5        g )Nz
An Element)ra   r)   r    rf   rj   s     r   test_ctor_no_doc_space_in_name+ElementTests.test_ctor_no_doc_space_in_name   s:    ---))40,7r   c                 f    U R                  5       nU R                  [        UR                  S5        g Nnonesuch)ra   assertRaisesKeyErrorgetTaggedValuerj   s     r   test_getTaggedValue_miss%ElementTests.test_getTaggedValue_miss   s%    --/(G$:$:JGr   c                     U R                  5       nU R                  / [        UR                  5       5      5        UR	                  SS5        U R                  S/[        UR                  5       5      5        g NfoorB   )ra   r)   rh   getDirectTaggedValueTagssetTaggedValuerj   s     r   test_getDirectTaggedValueTags*ElementTests.test_getDirectTaggedValueTags   s[    --/T'"B"B"DEFue,%$w'G'G'I"JKr   c                 f    U R                  5       nU R                  UR                  S5      S 5        g rr   ra   r)   queryTaggedValuerj   s     r   test_queryTaggedValue_miss'ElementTests.test_queryTaggedValue_miss   s(    --/11*=tDr   c                 h    U R                  5       nU R                  UR                  SS5      S5        g Nrs   rB   r   rj   s     r   $test_queryTaggedValue_miss_w_default1ElementTests.test_queryTaggedValue_miss_w_default   s*    --/11*eDeLr   c                 f    U R                  5       nU R                  [        UR                  S5        g rr   )ra   rt   ru   getDirectTaggedValuerj   s     r   test_getDirectTaggedValue_miss+ElementTests.test_getDirectTaggedValue_miss   s%    --/(G$@$@*Mr   c                 f    U R                  5       nU R                  UR                  S5      S 5        g rr   ra   r)   queryDirectTaggedValuerj   s     r    test_queryDirectTaggedValue_miss-ElementTests.test_queryDirectTaggedValue_miss   s(    --/77
CTJr   c                 h    U R                  5       nU R                  UR                  SS5      S5        g r   r   rj   s     r   *test_queryDirectTaggedValue_miss_w_default7ElementTests.test_queryDirectTaggedValue_miss_w_default   s-    --/**:u=u	
r   c                     U R                  5       nUR                  SS5        U R                  [        UR	                  5       5      S/5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g rz   )ra   r}   r)   rh   ri   rv   r   rj   s     r   test_setTaggedValue ElementTests.test_setTaggedValue   ss    --/ue,g88:;eWE//6>11%8%@r   c                 L    SSK Jn  SSKJn  U R	                  5       nU" X5        g )Nr   )IElementverifyObject)zope.interface.interfacesr   zope.interface.verifyr   ra   )r+   r   r   rk   s       r   test_verifiesElementTests.test_verifies   s    66--/X'r   r   r   )r    r!   r"   r#   r_   r\   ra   rl   ro   rw   r~   r   r   r   r   r   r   r   r$   r   r   r   rW   rW   p   sP    L,
A8
HLEMNK
A(r   rW   c                   0    \ rS rSrS r\rS rS rS rSr	g)GenericSpecificationBaseTests   c                     SSK Jn  U$ )Nr   )SpecificationBasePy)r(   r   )r+   r   s     r   _getFallbackClass/GenericSpecificationBaseTests._getFallbackClass   s    @""r   c                 ,    U R                  5       " 5       $ r   r\   r+   s    r   ra   &GenericSpecificationBaseTests._makeOne   s    ##%''r   c                    ^ SSK Jn  SSKJm  U R	                  5       nU4S jn[        XS9   U R                  UR                  [        5       5      5        S S S 5        g ! , (       d  f       g = f)Nr   	interface_emptyc                    > T$ r   r   objr   s    r   _providedByGGenericSpecificationBaseTests.test_providedBy_miss.<locals>._providedBy       Mr   
providedBy)	zope.interfacer   zope.interface.declarationsr   ra   _MonkeyassertFalser   object)r+   r   sbr   r   s       @r   test_providedBy_miss2GenericSpecificationBaseTests.test_providedBy_miss   sH    ,6]]_	 Y7R]]6845 877   )A
A-c                    ^ SSK Jn  SSKJm  U R	                  5       nU4S jn[        XS9   U R                  UR                  [        5       5      5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   c                    > T$ r   r   r   s    r   _implementedByMGenericSpecificationBaseTests.test_implementedBy_miss.<locals>._implementedBy   r   r   implementedBy)	r   r   r   r   ra   r   r   r   r   )r+   r   r   r   r   s       @r   test_implementedBy_miss5GenericSpecificationBaseTests.test_implementedBy_miss   sJ    ,6]]_	 Y=R--fh78 >==r   r   N)
r    r!   r"   r#   r   r\   ra   r   r   r$   r   r   r   r   r      s    # (O(	6	9r   r   c                       \ rS rSrS rSrg)SpecificationBaseTests   c                     SSK Jn  U$ )Nr   )SpecificationBase)r(   r   )r+   r   s     r   r\   &SpecificationBaseTests._getTargetClass   s    >  r   r   Nr    r!   r"   r#   r\   r$   r   r   r   r   r      s    !r   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
SpecificationBasePyTests   c                     U R                  5       n0 Ul        U R                  UR                  [	        5       5      5        g r   ra   _impliedr   isOrExtendsr   r+   r   s     r   test___call___miss+SpecificationBasePyTests.test___call___miss   -    ]]_12r   c                 x    U R                  5       n[        5       nU0 0Ul        U R                  U" U5      5        g r   ra   r   r   
assertTruer+   r   testings      r   test___call___hit*SpecificationBasePyTests.test___call___hit   /    ]]_(m7$r   c                     U R                  5       n0 Ul        U R                  UR                  [	        5       5      5        g r   r   r   s     r   test_isOrExtends_miss.SpecificationBasePyTests.test_isOrExtends_miss   r   r   c                 x    U R                  5       n[        5       nU0 0Ul        U R                  U" U5      5        g r   r   r   s      r   test_isOrExtends_hit-SpecificationBasePyTests.test_isOrExtends_hit   r   r   c                    ^^ SSK Jn  U R                  5       m " U4S jS5      mU4S jn[        XS9   U R	                  TR                  [        5       5      5        S S S 5        g ! , (       d  f       g = f)Nr   r   c                       > \ rS rSr Y 0 0rSrg)>SpecificationBasePyTests.test_implementedBy_hit.<locals>._Decli  r   Nr    r!   r"   r#   r   r$   r   s   r   _Declr         BxHr   r   c                    > T" 5       $ r   r   r   r   s    r   r   GSpecificationBasePyTests.test_implementedBy_hit.<locals>._implementedBy  
    7Nr   r   )r   r   ra   r   r   r   r   )r+   r   r   r   r   s      @@r   test_implementedBy_hit/SpecificationBasePyTests.test_implementedBy_hit  sO    ,]]_	  	 	 Y=OOB,,VX67 >==   )A''
A5c                    ^^ SSK Jn  U R                  5       m " U4S jS5      mU4S jn[        XS9   U R	                  TR                  [        5       5      5        S S S 5        g ! , (       d  f       g = f)Nr   r   c                       > \ rS rSr Y 0 0rSrg);SpecificationBasePyTests.test_providedBy_hit.<locals>._Decli  r   Nr   r   s   r   r   r     r   r   r   c                    > T" 5       $ r   r   r   s    r   r   ASpecificationBasePyTests.test_providedBy_hit.<locals>._providedBy  r   r   r   )r   r   ra   r   r   r   r   )r+   r   r   r   r   s      @@r   test_providedBy_hit,SpecificationBasePyTests.test_providedBy_hit  sM    ,]]_	  	 	 Y7OOBMM&(34 877r   r   N)r    r!   r"   r#   r   r   r   r   r   r   r$   r   r   r   r   r      s     3
%3
%85r   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
!NameAndModuleComparisonTestsMixini  c                 &    U R                  SS5      $ )Nab)ra   r   s    r   _makeOneToCompare3NameAndModuleComparisonTestsMixin._makeOneToCompare  s    }}S#&&r   c                   ^ SS K nU R                  5       n[        X!5      n[        USU-  5      n " U4S jS5      m " S ST5      n " S ST5      nU R                  U" 5       R                  S	5        U R                  U" 5       R
                  S	5        U R                  [        5         [        U" 5       S
5        S S S 5        U R                  [        5         [        U" 5       S5        S S S 5        Xg4 H$  nU R                  U" U" 5       5      [        5        M&      " S ST5      n	U R                  U" X9" 5       5      5        U R                  U" U	" 5       5      [        5         " S S5      n
U R                  U" U
" 5       5      [        5        U R                  [        5         U" X:" 5       5        S S S 5         " S S[        5      nUTl        U R                  U5         [        U" 5       S
5        S S S 5        U R                  U5         [        U" 5       S5        S S S 5        Xg4 HQ  nU R                  U5         U" X8" 5       5        S S S 5        U R                  U5         U" U" 5       5        S S S 5        MS     g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       M  = f)Nr   z__%s__c                   &   > \ rS rSr\rU 4S jrSrg)aNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissingi-  c                 t   >  [         R                  X5      $ ! [         a    TR                  nU" U5      ef = fr   )r   __getattribute__AttributeErrorExc)r+   r`   excRaisesErrorOnMissings      r   r	  rNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissing.__getattribute__0  s<    $!224>>% $.22Cd)O$s    7r   N)r    r!   r"   r#   r
  r  r	  r$   )r  s   r   r  r  -  s     C$ $r   r  c                   *    \ rS rSrS r\S 5       rSrg)`NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModulei7  c                     SU l         g Nr{   r    r   s    r   __init__iNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__init__8  s	     %r   c                     [         er   )r
  r   s    r   r!   kNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__module__;  s    $$r   r  N)r    r!   r"   r#   r  propertyr$   r   r   r   RaisesErrorOnModuler  7  s    & % %r   r  c                       \ rS rSrS rSrg)^NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnNamei?  c                     SU l         g r  r!   r   s    r   r  gNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnName.__init__@  s	    "'r   r  Nr    r!   r"   r#   r  r$   r   r   r   RaisesErrorOnNamer  ?  s    (r   r   r{   r!   r    c                   .    \ rS rSrS r\r\r\r\r\r	Sr
g)`NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparisoniP  c                     gNTr   )r+   others     r   __eq__gNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparison.__eq__Q      r   r   Nr    r!   r"   r#   r&  __lt____le____gt____ge____ne__r$   r   r   r   AllowsAnyComparisonr"  P  s     FFFFFr   r/  c                   ,    \ rS rSrSr\r\r\r\r\r	Sr
g)_NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsNoComparisoni]  Nr   r)  r   r   r   AllowsNoComparisonr1  ]  s     FFFFFFr   r2  c                       \ rS rSrSrg)XNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.MyExceptionij  r   Nr   r   r   r   MyExceptionr4  j      r   r5  )operatorr  r*   r)   r    r!   rt   r
  assertIsNotImplementedr   	TypeError	Exceptionr  )r+   r`   r7  ibopmethr  r   clsr/  r2  r5  r  s               @r   !__check_NotImplemented_comparisonCNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison!  sO    	##%X$r8d?+
	$ 	$	%"6 	%	( 4 	( 	,.77?*,77?~.')<8 /~.%'4 / '9CMM$su+~6 :	"6 	 	22456d.01>B	 	 	d-/0.Ay)r%'( *	) 	 $/ {+')<8 ,{+%'4 , '9C"";/2su 0"";/SU 0/ :_ /...> *) ,+++ 0///sT   *JJ&J%#J6K?K&K)
J
J"%
J36
K
K
K&	)
K8	c                 &    U R                  S5        g )NltC_NameAndModuleComparisonTestsMixin__check_NotImplemented_comparisonr   s    r   test__lt__NotImplemented:NameAndModuleComparisonTestsMixin.test__lt__NotImplementedz      ..t4r   c                 &    U R                  S5        g )NlerD  r   s    r   test__le__NotImplemented:NameAndModuleComparisonTestsMixin.test__le__NotImplemented}  rH  r   c                 &    U R                  S5        g )NgtrD  r   s    r   test__gt__NotImplemented:NameAndModuleComparisonTestsMixin.test__gt__NotImplemented  rH  r   c                 &    U R                  S5        g )NgerD  r   s    r   test__ge__NotImplemented:NameAndModuleComparisonTestsMixin.test__ge__NotImplemented  rH  r   r   N)r    r!   r"   r#   r  rE  rF  rK  rO  rS  r$   r   r   r   r   r     s"    'Wr5555r   r   c                   B    \ rS rSrS rS rSS jrS rS rS r	S	 r
S
rg)InterfaceBaseTestsMixini  c                     [         er   r   r   s    r   r\   'InterfaceBaseTestsMixin._getTargetClass  s    !!r   c                     SSK Jn  U$ )Nr   )InterfaceBasePy)r(   rZ  )r+   rZ  s     r   r   )InterfaceBaseTestsMixin._getFallbackClass  s    <r   Nc                 L   ^  " U4S jSU R                  5       5      nU" X#5      $ )Nc                   (   > \ rS rSrS rU 4S jrSrg),InterfaceBaseTestsMixin._makeOne.<locals>.IBi  c                     U" U 5      $ r   r   )r+   conforms     r   _call_conform:InterfaceBaseTestsMixin._makeOne.<locals>.IB._call_conform  s    t}$r   c                    > T$ r   r   )r+   r   object_should_provides     r   r   7InterfaceBaseTestsMixin._makeOne.<locals>.IB.providedBy  s	    ,,r   r   N)r    r!   r"   r#   ra  r   r$   )rd  s   r   IBr^    s    %- -r   rf  r   )r+   rd  r`   modulerf  s    `   r   ra    InterfaceBaseTestsMixin._makeOne  s%    	-%%' 	- $r   c                    ^ U R                  S5      n[        5       m " U4S jS5      nU R                  U" U" 5       5      T5        g )NFc                   "   > \ rS rSrU 4S jrSrg)UInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adaptedi  c                    > T$ r   r   )r+   iface	conformeds     r   __conform__aInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adapted.__conform__  s	      r   r   Nr    r!   r"   r#   ro  r$   )rn  s   r   _Adaptedrk    s    ! !r   rr  )ra   r   r8  )r+   r<  rr  rn  s      @r   +test___call___w___conform___returning_valueCInterfaceBaseTestsMixin.test___call___w___conform___returning_value  s8    ]]5!H		! 	! 	bni0r   c                     U R                  S5      nXR                  5       4n[        5       n[        5       nU R                  U" X45      U5        g )NF)ra   r\   r   r8  )r+   r<  __traceback_info__adapted	alternates        r   7test___call___wo___conform___ob_no_provides_w_alternateOInterfaceBaseTestsMixin.test___call___wo___conform___ob_no_provides_w_alternate  sC    ]]5!!5!5!77(H	b,i8r   c                     U R                  S5      nU R                  [        5       nU" [        5       5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)NFzCould not adapt)ra   rt   r:  r   assertInstr	exception)r+   r<  r  s      r   7test___call___w___conform___ob_no_provides_wo_alternateOInterfaceBaseTestsMixin.test___call___w___conform___ob_no_provides_wo_alternate  sQ    ]]5!y)SvxL * 	'S]]);< *)s   A&&
A4c                 J    [         R                  " X R                  5       SS9  g )Nro  )expected_missing)r   test_raisesra   r   s    r   6test___call___w_no_conform_catches_only_AttributeErrorNInterfaceBaseTestsMixin.test___call___w_no_conform_catches_only_AttributeError  s    $$--/M	
r   r   )FNN)r    r!   r"   r#   r\   r   ra   rs  ry  r  r  r$   r   r   r   rV  rV    s%    "
	 19=
r   rV  c                       \ rS rSrS rSrg)InterfaceBaseTestsi  c                     SSK Jn  U$ )Nr   )InterfaceBase)r(   r  )r+   r  s     r   r\   "InterfaceBaseTests._getTargetClass      :r   r   Nr   r   r   r   r  r    s    r   r  c                   >    \ rS rSr\R
                  rS rS rS r	Sr
g)InterfaceBasePyTestsi  c                 x    U R                  S5      n " S S5      nU" 5       nU R                  U" U5      U5        g )NTc                       \ rS rSrS rSrg)SInterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adaptedi  c                     g r   r   r+   rm  s     r   ro  _InterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adapted.__conform__  r(  r   r   Nrq  r   r   r   rr  r        r   rr  )ra   r8  )r+   r<  rr  rw  s       r   ,test___call___w___conform___miss_ob_providesAInterfaceBasePyTests.test___call___w___conform___miss_ob_provides  s5    ]]4 	 	 *bk7+r   c                 |    U R                  S5      n[        5       nU R                  UR                  U5      U5        g r$  )ra   r   r8  	__adapt__)r+   r<  rw  s      r   test___adapt___ob_provides/InterfaceBasePyTests.test___adapt___ob_provides  s.    ]]4 (bll7+W5r   c                   ^ SSK Jn  U R                  S5      n[        5       n/ mU4S jnS n[	        XU/S9   U R                  UR                  U5      U5        U R                  TX#4/5        S S S 5        g ! , (       d  f       g = f)Nr   r   Fc                 *   > TR                  X45        g r   append)rm  r   _misseds     r   
_hook_missQInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_miss  s    NNE<(r   c                     U$ r   r   rm  r   s     r   	_hook_hitPInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_hit  s    Jr   adapter_hooks)r   r   ra   r   r   r8  r  r)   )r+   r   r<  rw  r  r  r  s         @r   (test___adapt___ob_no_provides_uses_hooks=InterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks  sq    ,]]5!(	)	 Y9.EFMM",,w/9W}o6 GFFs   6A88
Br   N)r    r!   r"   r#   rV  r   r\   r  r  r  r$   r   r   r   r  r    s     .??O,6
7r   r  c                   z    \ rS rSrS r\4S j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S rS rSrg)SpecificationTestsi  c                     SSK Jn  U$ )Nr   )Specification)r(   r  )r+   r  s     r   r\   "SpecificationTests._getTargetClass  r  r   c                 j    U[         L a  U R                  5       " 5       $ U R                  5       " U5      $ r   )_markerr\   )r+   basess     r   ra   SpecificationTests._makeOne  s0    G'')++##%e,,r   c                 h   SSK Jn  U R                  5       nU R                  UR                  S5        U R                  [        UR                  5      S5        U R                  X"R                  5        U R                  XR                  5        U R                  [        UR                  5      S5        g )Nr   	Interfacer      )	r(   r  ra   r)   	__bases__lenr   r|  
dependents)r+   r  specs      r   	test_ctorSpecificationTests.test_ctor  sv    6}},T]]+Q/dMM*i/T__-q1r   c                     U R                  5       n[        5       nUR                  U5        U R                  [	        UR
                  5      S5        U R                  UR
                  U   S5        g N   )ra   DummyDependent	subscriber)   r  r  r+   r  deps      r   test_subscribe_first_time,SpecificationTests.test_subscribe_first_time   sS    }}sT__-q1-q1r   c                     U R                  5       n[        5       nUR                  U5        UR                  U5        U R                  UR                  U   S5        g )Nr  )ra   r  r  r)   r  r  s      r   test_subscribe_again'SpecificationTests.test_subscribe_again  sF    }}ss-q1r   c                 z    U R                  5       n[        5       nU R                  [        UR                  U5        g r   )ra   r  rt   ru   unsubscriber  s      r   test_unsubscribe_miss(SpecificationTests.test_unsubscribe_miss  s-    }}(D$4$4c:r   c                 4   U R                  5       n[        5       nUR                  U5        UR                  U5        UR                  U5        U R	                  UR
                  U   S5        UR                  U5        U R                  X!R
                  5        g r  )ra   r  r  r  r)   r  assertNotInr  s      r   test_unsubscribe#SpecificationTests.test_unsubscribe  st    }}ss-q1oo.r   c                    SSK Jn  U R                  5       n[        5       nUR	                  U5         " S SU5      n " S SU5      nU4Ul        U R                  UR                  U/5        U R                  UR                  U   S5        U4Ul        U R                  UR                  R                  U5      S 5        U R                  UR                  U   S5        g )Nr   r  c                       \ rS rSrSrg)YSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.IFooi#  r   Nr   r   r   r   IFoor  #  r6  r   r  c                       \ rS rSrSrg)YSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.IBari&  r   Nr   r   r   r   IBarr  &  r6  r   r  r  )
r(   r  ra   r  r  r  r)   _changedr  get)r+   r  r  r  r  r  s         r   8test___setBases_subscribes_bases_and_notifies_dependentsKSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents  s    6}}s	9 		9 	 v..2,,T2D9.2r   c                     SSK Jn   " S SU5      nU R                  5       nSUl        SUR                  U'   UR                  U5        U R                  UR                  5        U R                  X#R                  5        g )Nr   r  c                       \ rS rSrSrg)JSpecificationTests.test_changed_clears_volatiles_and_implied.<locals>.IFooi3  r   Nr   r   r   r   r  r  3  r6  r   r  r%   r   )r(   r  ra   _v_attrsr   changedassertIsNoner  r+   r  r  r  s       r   )test_changed_clears_volatiles_and_implied<SpecificationTests.test_changed_clears_volatiles_and_implied0  sc    6	9 	 }} dT$--(}}-r   c                     SSK Jn   " S SU5      nU R                  X"/5      nU R                  [	        UR                  5       5      U/5        g )Nr   r  c                       \ rS rSrSrg)CSpecificationTests.test_interfaces_skips_already_seen.<locals>.IFooi@  r   Nr   r   r   r   r  r  @  r6  r   r  )r(   r  ra   r)   rh   
interfacesr  s       r   "test_interfaces_skips_already_seen5SpecificationTests.test_interfaces_skips_already_seen=  sA    6	9 	 }}d\*doo/04&9r   c                     SSK Jn   " S SU5      nU R                  U5      nU R                  UR	                  USS95        g )Nr   r  c                       \ rS rSrSrg)<SpecificationTests.test_extends_strict_wo_self.<locals>.IFooiI  r   Nr   r   r   r   r  r  I  r6  r   r  Tstrict)r(   r  ra   r   extendsr  s       r   test_extends_strict_wo_self.SpecificationTests.test_extends_strict_wo_selfF  s<    6	9 	 }}T"d489r   c                 b    U R                  5       nU R                  UR                  USS95        g )NTr  )ra   r   r  r+   r  s     r   test_extends_strict_w_self-SpecificationTests.test_extends_strict_w_selfO  s(    }}d489r   c                 b    U R                  5       nU R                  UR                  USS95        g )NFr  )ra   r   r  r  s     r   test_extends_non_strict_w_self1SpecificationTests.test_extends_non_strict_w_selfS  s&    }}T%89r   c                     U R                  5       n[        5       nSU0Ul        U R                  UR	                  S5      U5        g r  )ra   r   r  r8  r  )r+   r  r{   s      r   test_get_hit_w__v_attrs*SpecificationTests.test_get_hit_w__v_attrsW  s5    }}hdhhuos+r   c                 :  ^ SSK Jm  SSK Jn   " U4S jSU5      n " U4S jSU5      nU R                  X#/5      nU R	                  UR                  S5      UR                  S5      5        U R	                  UR                  S	5      UR                  S	5      5        g )
Nr   	Attributer  c                   (   > \ rS rSr Y " S5      rSrg)CSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IFooia  r{   r   N)r    r!   r"   r#   r{   r$   r  s   r   r  r  a      E"Cr   r  c                   (   > \ rS rSr Y " S5      rSrg)CSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IBarid  rB   r   Nr    r!   r"   r#   rB   r$   r  s   r   r  r  d  r  r   r  r{   rB   )r(   r  r  ra   r8  r  )r+   r  r  r  r  r  s        @r   "test_get_hit_from_base_wo__v_attrs5SpecificationTests.test_get_hit_from_base_wo__v_attrs]  so    66	#9 	#	#9 	# }}d\*dhhuotxx7dhhuotxx7r   c           
      F   SSK Jn  SSK Jn  SSKJn   " S SU5      n " S S5      n " S	 S
U5      n " S SU5      nU" U5       " S S5      5       n " S SX5      n	U R                  U" U	5      R                  U" U	5      U" U5      UU" U5      U" [        5      U45        g )Nr   r   implementerr  c                       \ rS rSrSrg)TSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IDefaultViewNameiu  r   Nr   r   r   r   IDefaultViewNamer  u  r6  r   r  c                       \ rS rSrSrg)KSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.Contextix  r   Nr   r   r   r   Contextr  x  r6  r   r  c                       \ rS rSrSrg)LSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.RDBModeli{  r   Nr   r   r   r   RDBModelr  {  r6  r   r  c                       \ rS rSrSrg)JSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IOtheri~  r   Nr   r   r   r   IOtherr  ~  r6  r   r  c                       \ rS rSrSrg)MSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.OtherBasei  r   Nr   r   r   r   	OtherBaser        r   r  c                       \ rS rSrSrg)ISpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.Modeli  r   Nr   r   r   r   Modelr    r6  r   r  )r   r   r
  r(   r  r)   __sro__r   )
r+   r   r
  r  r  r  r  r  r  r  s
             r   'test_multiple_inheritance_no_interfaces:SpecificationTests.test_multiple_inheritance_no_interfacesk  s     	>;6	y 		 		w 		Y 	 
V		 	 
		I 	 	% ((e$i(g&f%
	
r   r   N)r    r!   r"   r#   r\   r  ra   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$   r   r   r   r  r    sW     % -
222;
/3&.::::,8'
r   r  c                   B   \ rS rSrS r  S5S j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S 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S 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+S, r,S- r-S. r.S/ r/S0 r0S1 r1S2 r2S3 r3S4 r4Sr5g)6InterfaceClassTestsi  c                     SSK Jn  U$ )Nr   InterfaceClass)r(   r%  )r+   r%  s     r   r\   #InterfaceClassTests._getTargetClass  s    ;r   r   Nc                 2    U R                  5       " XX4U5      $ r   r   )r+   r`   r  attrsrf   r!   s         r   ra   InterfaceClassTests._makeOne  s    ##%d5:NNr   c                    U R                  5       nU" S5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  5       S5        g )NITestingrd   r   )r\   r)   r    rf   r  getBases)r+   klassinsts      r   rl   &InterfaceClassTests.test_ctor_defaults  sl    $$&Z 
3r*,"-r   c                 f    U R                  5       nU R                  [        US[        5       45        g )Nr+  )r\   rt   r:  r   )r+   r-  s     r   test_ctor_bad_bases'InterfaceClassTests.test_ctor_bad_bases  s(    $$&)UJDr   c                 x   SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nU R                  5       nU" SUS	9nU R	                  UR
                  S5        U R	                  UR                  S5        U R	                  UR                  S
5        U R	                  UR                  5       UR                  5       5        g )Nr   r  fromFunctionc                      g	DOCSTRINGNr   r   r   r   _barBInterfaceClassTests.test_ctor_w_attrs_attrib_methods.<locals>._bar      r   r%   rd   r{   rB   r+  r(  r   )
r(   r  r5  r\   r)   r    rf   r  nameskeys)r+   r  r5  r9  ATTRSr-  r.  s          r    test_ctor_w_attrs_attrib_methods4InterfaceClassTests.test_ctor_w_attrs_attrib_methods  s    69	 UB'%
 $$&Zu-
3r*,uzz|4r   c                 4   S0 0nU R                  5       nU" SUS9nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  [        UR                  5       5      / 5        g )N
__locals__r+  r=  rd   r   r\   r)   r    rf   r  rh   r>  r+   r@  r-  r.  s       r   test_ctor_attrs_w___locals__0InterfaceClassTests.test_ctor_attrs_w___locals__  s}    r"$$&Zu-
3r*,djjl+R0r   c                 4   S0 0nU R                  5       nU" SUS9nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  [        UR                  5       5      / 5        g )N__annotations__r+  r=  rd   r   rE  rF  s       r   !test_ctor_attrs_w___annotations__5InterfaceClassTests.test_ctor_attrs_w___annotations__  s}    "B'$$&Zu-
3r*,djjl+R0r   c                 @   SSK Jn  SU0nU R                  5       nU" SUS9nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        U R                  [        UR                  5       5      / 5        g )Nr   )_decorator_non_returndropmer+  r=  rd   r   )	r(   rN  r\   r)   r    rf   r  rh   r>  )r+   rN  r@  r-  r.  s        r   'test_ctor_attrs_w__decorator_non_return;InterfaceClassTests.test_ctor_attrs_w__decorator_non_return  s    B01$$&Zu-
3r*,djjl+R0r   c                 j    SSK Jn  S[        5       0nU R                  5       nU R	                  XSUS9  g )Nr   )InvalidInterfaceinvalidr+  r=  )zope.interface.exceptionsrS  r   r\   rt   )r+   rS  r@  r-  s       r   #test_ctor_attrs_w_invalid_attr_type7InterfaceClassTests.test_ctor_attrs_w_invalid_attr_type  s5    >FH%$$&*:UKr   c                 t    SS0nU R                  5       nU" SUSS9nU R                  UR                  S5        g )Nrf   ATTRr+  EXPLICIT)r(  rf   )r\   r)   rf   rF  s       r   test_ctor_w_explicit___doc__0InterfaceClassTests.test_ctor_w_explicit___doc__  s<    F#$$&ZujAz2r   c                 x    U R                  5       nU R                  [        UR                  5       5      U/5        g r   )ra   r)   rh   r  r  s     r   test_interfaces#InterfaceClassTests.test_interfaces  s-    e..01E7;r   c                     U R                  5       nU R                  SU4S9nU R                  UR                  5       U45        g NISub)r  )ra   r)   r,  r+   rm  subs      r   test_getBases!InterfaceClassTests.test_getBases  s9    mmF5(m3%2r   c                 d    U R                  5       nU R                  UR                  U5      5        g r   )ra   r   isEqualOrExtendedByr  s     r   !test_isEqualOrExtendedBy_identity5InterfaceClassTests.test_isEqualOrExtendedBy_identity  s$    11%89r   c                     U R                  5       nU R                  SU4S9nU R                  UR                  U5      5        U R                  UR                  U5      5        g ra  )ra   r   rh  r   rc  s      r   !test_isEqualOrExtendedBy_subiface5InterfaceClassTests.test_isEqualOrExtendedBy_subiface  sQ    mmF5(m311#670078r   c                     U R                  S5      nU R                  S5      nU R                  UR                  U5      5        U R                  UR                  U5      5        g )NOneAnother)ra   r   rh  )r+   oneanothers      r   "test_isEqualOrExtendedBy_unrelated6InterfaceClassTests.test_isEqualOrExtendedBy_unrelated  sP    mmE"--	*009:44S9:r   c                     SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nSU" S	S5      0nU R                  S
US9nU R                  SU4US9nU R	                  [        UR                  SS95      S/5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  FInterfaceClassTests.test_names_w_all_False_ignores_bases.<locals>._bar  r;  r   r%   rd   r<  rC   BazIBaser=  IDerivedr  r(  Fallr(   r  r5  ra   r)   sortedr>  r+   r  r5  r9  
BASE_ATTRSDERIVED_ATTRSbasederiveds           r   $test_names_w_all_False_ignores_bases8InterfaceClassTests.test_names_w_all_False_ignores_bases  s    69	 UB'%


 9UB'
 }}WJ}7--
4'-O% 89E7Cr   c                     SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nU R                  US9nU R	                  [        UR                  S	S
95      SS/5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  @InterfaceClassTests.test_names_w_all_True_no_bases.<locals>._bar  r;  r   r%   rd   r<  r=  Tr|  rB   r{   r~  r+   r  r5  r9  r@  rq  s         r   test_names_w_all_True_no_bases2InterfaceClassTests.test_names_w_all_True_no_bases  s^    69	 UB'%
 mm%m(		d	 34uenEr   c                     SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nSU" S	S5      0nU R                  S
US9nU R                  SU4US9nU R	                  [        UR                  SS95      / SQ5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  FInterfaceClassTests.test_names_w_all_True_w_bases_simple.<locals>._bar"  r;  r   r%   rd   r<  rC   rx  ry  r=  rz  r{  Tr|  rB   rC   r{   r~  r  s           r   $test_names_w_all_True_w_bases_simple8InterfaceClassTests.test_names_w_all_True_w_bases_simple  s    69	 UB'%


 9UB'
 }}WJ}7--
4'-O7==T=*+-B	
r   c                    SSK Jn  SSK Jn  S nS nU" SS5      U" U5      S.nU" U5      U" S	S5      S
.nU R                  SUS9nU R                  SU4US9nU R	                  [        UR                  SS95      / SQ5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  JInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._bar6  r;  r   c                      gr7  r   r   r   r   _fooJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._foo9  r;  r   r%   rd   r<  rx  r{   rC   ry  r=  rz  r{  Tr|  r  r~  	r+   r  r5  r9  r  r  r  r  r  s	            r   (test_names_w_all_True_bases_w_same_names<InterfaceClassTests.test_names_w_all_True_bases_w_same_names2  s    69		 UB'%


  %UB'
 }}WJ}7--
4'-OMMdM#%&;	
r   c                     SSK Jn  SSK Jn  S nS nU" SS5      U" U5      S.nU" U5      U" S	S5      S
.nU R                  SUS9nU R                  SU4US9nU R	                  [        U5      / SQ5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  /InterfaceClassTests.test___iter__.<locals>._barN  r;  r   c                      gr7  r   r   r   r   r  /InterfaceClassTests.test___iter__.<locals>._fooQ  r;  r   r%   rd   r<  rx  r  ry  r=  rz  r{  r  )r(   r  r5  ra   r)   r  r  s	            r   test___iter__!InterfaceClassTests.test___iter__J  s    69		 UB'%


  %UB'
 }}WJ}7--
4'-O*?@r   c                     SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nSU" S	S5      0nU R                  S
US9nU R                  SU4US9nU R	                  [        UR                  SS95      SUS   4/5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  UInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases.<locals>._bard  r;  r   r%   rd   r<  rC   rx  ry  r=  rz  r{  Fr|  r(   r  r5  ra   r)   r  namesAndDescriptionsr  s           r   3test_namesAndDescriptions_w_all_False_ignores_basesGInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases`  s    69	 UB'%


 9UB'
 }}WJ}7--
4'-O7//E/:;e,->	
r   c                     SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nU R                  US9nU R	                  [        UR                  S	S
95      SUS   4SUS   4/5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  OInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases.<locals>._barz  r;  r   r%   rd   r<  r=  Fr|  rB   r{   r  r  s         r   -test_namesAndDescriptions_w_all_True_no_basesAInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_basesv  s{    69	 UB'%
 mm%m(3+++67e%e%:	
r   c                    SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nSU" S	S5      0nU R                  S
US9nU R                  SU4US9nU R	                  [        UR                  SS95      SUS   4SUS   4SUS   4/5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  MInterfaceClassTests.test_namesAndDescriptions_w_all_True_simple.<locals>._bar  r;  r   r%   rd   r<  rC   rx  ry  r=  rz  r{  Tr|  rB   r{   r  r  s           r   +test_namesAndDescriptions_w_all_True_simple?InterfaceClassTests.test_namesAndDescriptions_w_all_True_simple  s    69	 UB'%


 9UB'
 }}WJ}7--
4'-O7//D/9:
5)*e,-
5)*=	
r   c                 (   SSK Jn  SSK Jn  S nS nU" SS5      U" U5      S.nU" U5      U" S	S5      S
.nU R                  SUS9nU R                  SU4US9nU R	                  [        UR                  SS95      SUS   4SUS   4SUS   4/5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  YInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._bar  r;  r   c                      gr7  r   r   r   r   r  YInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._foo  r;  r   r%   rd   r<  rx  r  ry  r=  rz  r{  Tr|  rB   rC   r{   r  r  s	            r   7test_namesAndDescriptions_w_all_True_bases_w_same_namesKInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names  s    69		 UB'%


  %UB'
 }}WJ}7--
4'-O7//D/9:
5)*e,-e,-=	
r   c                 f    U R                  5       nU R                  [        UR                  S5        g rr   )ra   rt   ru   getDescriptionForr+   rq  s     r   test_getDescriptionFor_miss/InterfaceClassTests.test_getDescriptionFor_miss  s%    mmo(C$9$9:Fr   c                     SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nU R                  US9nU R	                  UR                  S	5      US	   5        U R	                  UR                  S
5      US
   5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  <InterfaceClassTests.test_getDescriptionFor_hit.<locals>._bar  r;  r   r%   rd   r<  r=  r{   rB   )r(   r  r5  ra   r)   r  r  s         r   test_getDescriptionFor_hit.InterfaceClassTests.test_getDescriptionFor_hit  sx    69	 UB'%
 mm%m(..u5uU|D..u5uU|Dr   c                 ^   ^ U R                  5       mU4S jnU R                  [        U5        g )Nc                     > T S   $ rr   r   )rq  s   r   _test8InterfaceClassTests.test___getitem___miss.<locals>._test  s    z?"r   )ra   rt   ru   )r+   r  rq  s     @r   test___getitem___miss)InterfaceClassTests.test___getitem___miss  s%    mmo	# 	(E*r   c                     SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nU R                  US9nU R	                  US	   US	   5        U R	                  US
   US
   5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  6InterfaceClassTests.test___getitem___hit.<locals>._bar  r;  r   r%   rd   r<  r=  r{   rB   )r(   r  r5  ra   r)   r  s         r   test___getitem___hit(InterfaceClassTests.test___getitem___hit  sj    69	 UB'%
 mm%m(UU5\2UU5\2r   c                 H    U R                  5       nU R                  SU5        g rr   )ra   r  r  s     r   test___contains___miss*InterfaceClassTests.test___contains___miss  s    mmoS)r   c                     SSK Jn  SSK Jn  S nU" SS5      U" U5      S.nU R                  US9nU R	                  S	U5        U R	                  S
U5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  7InterfaceClassTests.test___contains___hit.<locals>._bar  r;  r   r%   rd   r<  r=  r{   rB   )r(   r  r5  ra   r|  r  s         r   test___contains___hit)InterfaceClassTests.test___contains___hit  sV    69	 UB'%
 mm%m(eS!eS!r   c                 f    U R                  5       nU R                  UR                  S5      S 5        g rr   )ra   r)   directr  s     r   test_direct_miss$InterfaceClassTests.test_direct_miss  s&    mmoJ/6r   c                    SSK Jn  SSK Jn  S nS nU" SS5      U" U5      S.nU" U5      U" S	S5      S
.nU R                  SUS9nU R                  SU4US9nU R	                  UR                  S5      US   5        U R	                  UR                  S5      US   5        U R	                  UR                  S5      S 5        g )Nr   r  r4  c                      gr7  r   r   r   r   r9  BInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._bar  r;  r   c                      gr7  r   r   r   r   r  BInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._foo  r;  r   r%   rd   r<  rx  r  ry  r=  rz  r{  r{   rC   rB   )r(   r  r5  ra   r)   r  r  s	            r    test_direct_hit_local_miss_bases4InterfaceClassTests.test_direct_hit_local_miss_bases  s    69		 UB'%


  %UB'
 }}WJ}7--
4'-O.e0DE.e0DE.5r   c                 f    U R                  5       nU R                  UR                  S5      S 5        g rr   )ra   r)   queryDescriptionForr  s     r   test_queryDescriptionFor_miss1InterfaceClassTests.test_queryDescriptionFor_miss  s(    22:>Er   c                     SSK Jn  SU" SS5      0nU R                  US9nU R                  UR	                  S5      US   5        g )Nr   r  attrTitleDescriptionr=  )r   r  ra   r)   r  )r+   r  r@  rm  s       r   test_queryDescriptionFor_hit0InterfaceClassTests.test_queryDescriptionFor_hit  sE    ,7M:;E*226:E&MJr   c                    ^ / mU4S jnU R                  5       n[        5       nUR                  SU/5        U R                  UR	                  U5      S 5        U R                  TU40 4/5        g )Nc                  *   > TR                  X45        gr$  r  )r   r   _called_withs     r   	_passableCInterfaceClassTests.test_validateInvariants_pass.<locals>._passable#  s    
+r   r&   )ra   r   r}   r)   validateInvariants)r+   r  rm  r   r  s       @r   test_validateInvariants_pass0InterfaceClassTests.test_validateInvariants_pass   sf    	 h\I;711#6=#~6r   c                 $  ^^^ SSK Jm  / mU4S jn/ mUU4S jnU R                  5       n[        5       nUR	                  SX/5        U R                  TUR                  U5        U R                  TU40 4/5        U R                  TU40 4/5        g )Nr   Invalidc                  *   > TR                  X45        gr$  r  r   r   _passable_called_withs     r   r  TInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._passable1      !(($4r   c                  ,   > TR                  X45        Ter   r  r   r   r  _fail_called_withs     r   _failPInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._fail7      $$dZ0Mr   r&   rU  r  ra   r   r}   rt   r  r)   )r+   r  r  rm  r   r  r   r  s        @@@r   -test_validateInvariants_fail_wo_errors_passedAInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed-  s    5 "	 	 h\I+=>'5#;#;SA.3&"?*sfb\N;r   c                 J  ^^ SSK Jm  / n/ mUU4S jnU R                  5       n[        5       nUR	                  SU/5        U R                  TUR                  XA5        U R                  TU40 4/5        U R                  [        U5      S5        U R                  US   T5        g )Nr   r  c                  ,   > TR                  X45        Ter   r  r  s     r   r  OInterfaceClassTests.test_validateInvariants_fail_w_errors_passed.<locals>._failG  r  r   r&   r  
rU  r  ra   r   r}   rt   r  r)   r  assertIsInstance)r+   _errorsr  rm  r   r  r   s        @@r   ,test_validateInvariants_fail_w_errors_passed@InterfaceClassTests.test_validateInvariants_fail_w_errors_passedB  s    5	 h\E73'5#;#;SJ*sfb\N;Wq)gaj'2r   c                 r  ^^^ SSK Jm  / mU4S jn/ mUU4S jnU R                  S5      nU R                  SU45      n[        5       nUR	                  SU/5        UR	                  SU/5        U R                  TUR                  U5        U R                  TU40 4/5        U R                  TU40 4/5        g )Nr   r  c                  *   > TR                  X45        gr$  r  r  s     r   r  \InterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._passableW  r  r   c                  ,   > TR                  X45        Ter   r  r  s     r   r  XInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._fail]  r  r   ry  rz  r&   r  )	r+   r  r  r  r  r   r  r   r  s	         @@@r   5test_validateInvariants_fail_in_base_wo_errors_passedIInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passedS  s    5 "	 	 }}W%--
TG4hL5'2|i[9'7#=#=sC.3&"?*sfb\N;r   c                   ^^^	 SSK Jm  / n/ m	U	4S jn/ mUU4S jnU R                  S5      nU R                  SU45      n[        5       nUR	                  SU/5        UR	                  SU/5        U R                  TUR                  Xa5        U R                  T	U40 4/5        U R                  TU40 4/5        U R                  [        U5      S5        U R                  US   T5        g )	Nr   r  c                  *   > TR                  X45        gr$  r  r  s     r   r  [InterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._passableo  r  r   c                  ,   > TR                  X45        Ter   r  r  s     r   r  WInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._failu  r  r   ry  rz  r&   r  r
  )
r+   r  r  r  r  r  r   r  r   r  s
          @@@r   4test_validateInvariants_fail_in_base_w_errors_passedHInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passedj  s    5 "	 	 }}W%--
TG4hL5'2|i[9'7#=#=sL.3&"?*sfb\N;Wq)gaj'2r   c                    ^ / mU4S jn[        5       nU R                  S5      nUR                  SU/5        U R                  SU45      nUR                  U5        U R	                  S[        T5      5        g )Nc                  *   > TR                  X45        gr$  r  r  s     r   r  bInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_times.<locals>._passable  r  r   ry  r&   rz  r  )r   ra   r}   r  r)   r  )r+   r  r   r  r  r  s        @r   ;test_validateInvariants_inherited_not_called_multiple_timesOInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_times  sm     "	 h}}W%L9+6--
TG4""3'C 567r   c                 f    U R                  S5      nU R                  UR                  5       S5        g )NPickleMe)ra   r)   
__reduce__r  s     r   test___reduce__#InterfaceClassTests.test___reduce__  s)    j)))+Z8r   c                 n    U R                  S5      nU R                  [        U5      [        S5      5        g )NHashMe)r(  z#zope.interface.tests.test_interface)ra   r)   hashr  s     r   test___hash___normal(InterfaceClassTests.test___hash___normal  s.    h'KBC	
r   c                      " S SU R                  5       5      nU" 5       nU R                  [        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)IInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derivedi  c                     g r   r   r   s    r   r  RInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derived.__init__  s    r   r   Nr  r   r   r   Derivedr.    s    r   r1  )r\   rt   r
  r)  )r+   r1  r  s      r   $test___hash___missing_required_attrs8InterfaceClassTests.test___hash___missing_required_attrs  sA    	d**, 	 )~.M /..s   A
Ac                    U R                  5       nU R                  US 5        U R                  US 5        U R                  US 5        U R                  US 5        U R	                  US :  5        U R	                  US :  5        U R	                  S U:  5        U R	                  S U:*  5        U R                  S U5        U R                  S U5        U R                  S U5        U R                  S U5        g r   )ra   
assertLessassertLessEqualassertNotEqualr   assertGreaterEqualassertGreaterr  s     r   test_comparison_with_None-InterfaceClassTests.test_comparison_with_None  s    t$UD)E4(E4($'&&'D%(D%(e,4'r   c                     U R                  5       nU R                  X:  5        U R                  X5        U R                  X5        U R                  X5        U R	                  X5        U R                  X:  5        g r   )ra   r   r6  r)   r8  r  s     r   "test_comparison_with_same_instance6InterfaceClassTests.test_comparison_with_same_instance  se    'U*&&-'r   c                    U R                  SSS9nU R                  SSS9nU R                  X5        U R                  X!:  5        U R                  X5        U R                  X!:*  5        U R	                  X5        U R	                  X!5        U R	                  X5        U R	                  X!5        U R                  X:  5        U R                  X!5        U R                  X:  5        U R                  X!5        g )NINamezzope.interface.tests.oner  zzope.interface.tests.other)ra   r5  r   r6  r7  r8  r9  )r+   rq  r%  s      r   8test_comparison_with_same_named_instance_in_other_moduleLInterfaceClassTests.test_comparison_with_same_named_instance_in_other_module  s    mmG0JmKg2NO#%S(&C'E'C'E'&+%5&r   c                 F  ^  " S S[         5      m " U4S jSU R                  5       5      nU R                  S5      nU R                  X R                  5       5        U R	                  [        U5      U R                  5       5        U R                  [        5         U" S5        S S S 5        Xl        U R                  X!5        U R	                  [        U5      U5        U R                  T5         U" S5        S S S 5        g ! , (       d  f       Nc= f! , (       d  f       g = f)Nc                       \ rS rSrSrg)DInterfaceClassTests.test_assignment_to__class__.<locals>.MyExceptioni  r   Nr   r   r   r   r5  rE    r6  r   r5  c                   "   > \ rS rSrU 4S jrSrg)IInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClassi  c                    > T" U5      er   r   )r+   targetr5  s     r   __call__RInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClass.__call__  s    !&))r   r   Nr    r!   r"   r#   rJ  r$   )r5  s   r   MyInterfaceClassrG    s    * *r   rM  r@  r  )	r;  r\   ra   r  r8  typert   r:  	__class__)r+   rM  r  r5  s      @r   test_assignment_to__class__/InterfaceClassTests.test_assignment_to__class__  s    	) 		*t335 	* }}W%d$8$8$:;d4j$"6"6"89y)G * *d5d4j"23{+G ,+ *) ,+s   	D/	D
D
D c                    SSK Jn   " S SU R                  5       5      nU" SU45      nU R                  U" S5      S5         " S S	U5      nU R                  U" S5      S5         " S
 SU5      nU R	                  [
        5         U" 5         S S S 5        X%l        U R                  U" S5      S5        g ! , (       d  f       N-= f)Nr   r  c                       \ rS rSrS rSrg)JInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClassi  c                     U$ r   r   )r+   r   s     r   rJ  SInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClass.__call__  s    r   r   NrL  r   r   r   rM  rT    r  r   rM  r  r  )r  c                       \ rS rSrSrg)>InterfaceClassTests.test_assignment_to__class__2.<locals>.IBari  r   Nr   r   r   r   r  rX    r6  r   r  c                       \ rS rSrSrg)?InterfaceClassTests.test_assignment_to__class__2.<locals>.ISpami  r   Nr   r   r   r   ISpamrZ    r6  r   r[  )r   r  r\   r)   rt   r:  rO  )r+   r  rM  r  r  r[  s         r   test_assignment_to__class__20InterfaceClassTests.test_assignment_to__class__2  s     	-	t335 	  5a$'	4 	 	a$'	I 	 y)G * +q4(	 *)s   B44
Cc                     U R                  5       nU R                  [        5         SUl        S S S 5        g ! , (       d  f       g = f)Nzdifferent.module)ra   rt   r
  r!   )r+   r.  s     r   test__module__is_readonly-InterfaceClassTests.test__module__is_readonly  s.    }}~.0DO /..s	   7
A)ITestr   NNN)6r    r!   r"   r#   r\   ra   rl   r1  rA  rG  rK  rP  rV  r[  r^  re  ri  rl  rs  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*  r2  r:  r=  rA  rP  r\  r_  r$   r   r   r   r"  r"    s    DH O.E5$111L3<3
:9;D$F
(
0A,
,
&
0
8GE+3*"760FK7<*3"<.3489
("	('$.)61r   r"  c                   L   \ 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S 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S 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'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6r8g7)8InterfaceTestsi  c                 x   ^ SSK Jm  SSK Jn   " U4S jSU5      nU R                  US   R                  U5        g )Nr   r  r  c                   (   > \ rS rSr Y " S5      rSrg)<InterfaceTests.test_attributes_link_to_interface.<locals>.I1i  My attrr   N)r    r!   r"   r#   r  r$   r  s   r   I1rf    s    Y'Dr   rh  r  )r   r  r  r8  r   )r+   r  rh  r  s      @r   !test_attributes_link_to_interface0InterfaceTests.test_attributes_link_to_interface  s/    ,,	( 	( 	bj**B/r   c                 d    SSK Jn   " S SU5      nU R                  US   R                  U5        g )Nr   r  c                       \ rS rSrS rSrg)9InterfaceTests.test_methods_link_to_interface.<locals>.I1i  c                     gzA methodNr   )r{   rB   bingos      r   method@InterfaceTests.test_methods_link_to_interface.<locals>.I1.method  r;  r   r   Nr    r!   r"   r#   rq  r$   r   r   r   rh  rm    s    r   rh  rq  )r   r  r8  r   )r+   r  rh  s      r   test_methods_link_to_interface-InterfaceTests.test_methods_link_to_interface  s+    ,	 	 	bl,,b1r   c                   ^ SSK Jn  SSK Jn  SSK Jn   " S SU5      m " S SU5      n " U4S	 jS
5      nU" 5       nU R	                  TR                  U5      5        U R                  UR                  U5      5        U R                  TT5        U R                  TU" U5      5        U R                  XB" U5      5        U R                  TU" U5      5        U R                  XC" U5      5        g )Nr   r  r   r   c                        \ rS rSrS rS rSrg)<InterfaceTests.test_classImplements_simple.<locals>.ICurrenti&  c                     g	docstringNr   r  r  s     r   method1DInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method1'  r;  r   c                     grz  r   r|  s     r   method2DInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method2*  r;  r   r   N)r    r!   r"   r#   r}  r  r$   r   r   r   ICurrentrx  &  s      r   r  c                       \ rS rSrSrg):InterfaceTests.test_classImplements_simple.<locals>.IOtheri-  r   Nr   r   r   r   r  r  -  r6  r   r  c                   (   > \ rS rSr Y rS rS rSrg);InterfaceTests.test_classImplements_simple.<locals>.Currenti0  c                     [        5       er   r   r+   r  r  s      r   r}  CInterfaceTests.test_classImplements_simple.<locals>.Current.method13      )++r   c                     [        5       er   r   r  s      r   r  CInterfaceTests.test_classImplements_simple.<locals>.Current.method26  r  r   r   N)r    r!   r"   r#   __implemented__r}  r  r$   )r  s   r   Currentr  0  s    &O,,r   r  )	r   r  r   r   r   r   r)   r|  r  )r+   r  r   r   r  r  currentr  s          @r   test_classImplements_simple*InterfaceTests.test_classImplements_simple!  s    ,0-	 y 	 	Y 		, 	, )..w78--g678,hg 67w!78h
7 34G!45r   c                   ^ SSK Jn  SSK Jn  SSK Jn   " S SU5      m " S ST5      n " U4S	 jS
5      nU" 5       nU R	                  TR                  U5      5        U R                  UR                  U5      5        U R                  TU" U5      5        U R                  XB" U5      5        U R                  TU" U5      5        U R                  XC" U5      5        g )Nr   r  r   r   c                       \ rS rSrS rSrg)CInterfaceTests.test_classImplements_base_not_derived.<locals>.IBaseiH  c                      grz  r   r   r   r   rq  JInterfaceTests.test_classImplements_base_not_derived.<locals>.IBase.methodI  r;  r   r   Nrs  r   r   r   ry  r  H       r   ry  c                       \ rS rSrSrg)FInterfaceTests.test_classImplements_base_not_derived.<locals>.IDerivediL  r   Nr   r   r   r   rz  r  L  r6  r   rz  c                   "   > \ rS rSr Y rS rSrg)EInterfaceTests.test_classImplements_base_not_derived.<locals>.CurrentiO  c                     [        5       er   r   r   s    r   rq  LInterfaceTests.test_classImplements_base_not_derived.<locals>.Current.methodR  r  r   r   Nr    r!   r"   r#   r  rq  r$   )ry  s   r   r  r  O      #O,r   r  r   r  r   r   r   r   r|  r  )r+   r  r   r   rz  r  r  ry  s          @r   %test_classImplements_base_not_derived4InterfaceTests.test_classImplements_base_not_derivedC  s    ,0-	 I 	 	u 		, 	, )++G45//89e]734=#9:eZ01:g#67r   c                 N  ^ SSK Jn  SSK Jn  SSK Jn   " S SU5      n " S SU5      m " U4S	 jS
5      nU" 5       nU R	                  UR                  U5      5        U R	                  TR                  U5      5        U R                  XB" U5      5        U R                  XB" U5      R                  5       5        U R                  TU" U5      5        U R                  XC" U5      5        U R                  XC" U5      R                  5       5        U R                  TU" U5      5        g )Nr   r  r   r   c                       \ rS rSrS rSrg)CInterfaceTests.test_classImplements_base_and_derived.<locals>.IBaseic  c                      grz  r   r   r   r   rq  JInterfaceTests.test_classImplements_base_and_derived.<locals>.IBase.methodd  r;  r   r   Nrs  r   r   r   ry  r  c  r  r   ry  c                       \ rS rSrSrg)FInterfaceTests.test_classImplements_base_and_derived.<locals>.IDerivedig  r   Nr   r   r   r   rz  r  g  r6  r   rz  c                   "   > \ rS rSr Y rS rSrg)EInterfaceTests.test_classImplements_base_and_derived.<locals>.Currentij  c                     [        5       er   r   r   s    r   rq  LInterfaceTests.test_classImplements_base_and_derived.<locals>.Current.methodm  r  r   r   Nr  )rz  s   r   r  r  j  s    &O,r   r  )r   r  r   r   r   r  r|  	flattened)r+   r  r   r   ry  r  r  rz  s          @r   %test_classImplements_base_and_derived4InterfaceTests.test_classImplements_base_and_derived^  s    ,0-	 I 	 	u 		, 	, )++G45..w78g 67e]73==?@hg 67
7 34eZ0::<=h
7 34r   c                   ^^	 SSK Jn  SSK Jn  SSK Jn   " S SU5      m " S ST5      m	 " U4S	 jS
5      n " U	4S jS5      n " S SXE5      nU" 5       nU R	                  TR                  U5      5        U R	                  T	R                  U5      5        U R                  TU" U5      5        U R                  T	U" U5      5        U R                  TU" U5      5        U R                  T	U" U5      5        g )Nr   r  r   r   c                       \ rS rSrS rSrg);InterfaceTests.test_classImplements_multiple.<locals>.ILefti  c                      grz  r   r   r   r   rq  BInterfaceTests.test_classImplements_multiple.<locals>.ILeft.method  r;  r   r   Nrs  r   r   r   ILeftr    r  r   r  c                       \ rS rSrSrg)<InterfaceTests.test_classImplements_multiple.<locals>.IRighti  r   Nr   r   r   r   IRightr    r6  r   r  c                   "   > \ rS rSr Y rS rSrg):InterfaceTests.test_classImplements_multiple.<locals>.Lefti  c                     [        5       er   r   r   s    r   rq  AInterfaceTests.test_classImplements_multiple.<locals>.Left.method  r  r   r   Nr  r  s   r   Leftr    r  r   r  c                      > \ rS rSr Y rSrg);InterfaceTests.test_classImplements_multiple.<locals>.Righti  r   Nr    r!   r"   r#   r  r$   r  s   r   Rightr        $Or   r  c                       \ rS rSrSrg):InterfaceTests.test_classImplements_multiple.<locals>.Ambii  r   Nr   r   r   r   Ambir    r6  r   r  )r   r  r   r   r   r|  )
r+   r  r   r   r  r  r  ambir  r  s
           @@r   test_classImplements_multiple,InterfaceTests.test_classImplements_multiple{  s    ,0-	 I 	 	U 		, 	,	% 	%	4 	 v++D12,,T23e]401fmD12eZ-.fj./r   c                   ^^^	^
^ SSK Jn  SSK Jn  SSK Jn   " S SU5      m " S ST5      m	 " S	 S
U5      m " U4S jS5      m
 " U	4S jS5      n " U4S jS5      m " U
U4S jST
U5      nU" 5       nU R	                  TR                  U5      5        U R                  T	R                  U5      5        U R	                  TR                  U5      5        U R                  TU" U5      5        U R                  T	U" U5      5        U R                  TU" U5      5        U R                  TU" U5      5        U R                  T	U" U5      5        U R                  TU" U5      5        g )Nr   r  r   r   c                       \ rS rSrS rSrg)PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILefti  c                      grz  r   r   r   r   rq  WInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeft.method  r;  r   r   Nrs  r   r   r   r  r    s     r   r  c                       \ rS rSrSrg)QInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IRighti  r   Nr   r   r   r   r  r    r6  r   r  c                       \ rS rSrSrg)QInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IOtheri  r   Nr   r   r   r   r  r    r6  r   r  c                   "   > \ rS rSr Y rS rSrg)OInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Lefti  c                     [        5       er   r   r   s    r   rq  VInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Left.method  r  r   r   Nr  r  s   r   r  r    r  r   r  c                      > \ rS rSr Y rSrg)PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Righti  r   Nr  r  s   r   r  r    r  r   r  c                      > \ rS rSr Y rSrg)PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Otheri  r   Nr  )r  s   r   Otherr    r  r   r  c                   J   > \ rS rSr Y R                   YR                  4rSrg)PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Mixedi  r   Nr  )r  r  s   r   Mixedr    s    "22E4I4IIOr   r  r  )r+   r  r   r   r  r  mixedr  r  r  r  r  s          @@@@@r   2test_classImplements_multiple_w_explict_implementsAInterfaceTests.test_classImplements_multiple_w_explict_implements  s*   ,0-	 I 	 
	U 		Y 		, 	,	% 	%	% 	%	J 	JD% 	J ++E23--e45,,U34e]512u!56fmE23eZ./E!23fj/0r   c                 0   SSK Jn  UR                  nU" S5      nU" SU45      nU" S5      nU" SXT45      nU R                  UR	                  U5      5        U R                  UR	                  U5      5        U R                  UR	                  U5      5        U R                  UR	                  U5      5        U R                  UR	                  U5      5        U R                  UR	                  U5      5        U R                  UR	                  U5      5        g )Nr   r  FunInterfaceBarInterfaceBobInterfaceBazInterface)r   r  rO  r   r  r   )r+   r  newr  r  r  r  s          r   testInterfaceExtendsInterface,InterfaceTests.testInterfaceExtendsInterface  s    ,!!>*>L?;>*>L+HI,,\:;,,\:;,,\:;--l;<--l;<,,\:;--l;<r   c                    ^^ SSK Jm  SSK Jn  SSKJn   " U4S jSU5      m " U4S jS5      nU R                  U" TU5      5        g )	Nr   r  r  )verifyClassc                   .   > \ rS rSr Y " S5      rS rSrg)1InterfaceTests.test_verifyClass.<locals>.ICheckMei  rg  c                      gro  r   r   r   r   rq  8InterfaceTests.test_verifyClass.<locals>.ICheckMe.method  r;  r   r   Nr    r!   r"   r#   r  rq  r$   r  s   r   ICheckMer        Y'Dr   r  c                   &   > \ rS rSr Y rSrS rSrg)0InterfaceTests.test_verifyClass.<locals>.CheckMei  valuec                     [        5       er   r   r   s    r   rq  7InterfaceTests.test_verifyClass.<locals>.CheckMe.method  r  r   r   Nr    r!   r"   r#   r  r  rq  r$   r  s   r   CheckMer        &OD,r   r  )r   r  r  r   r  r   )r+   r  r  r  r  r  s       @@r   test_verifyClassInterfaceTests.test_verifyClass  s7    ,,5	y 		, 	, 	Hg67r   c                    ^^ SSK Jm  SSK Jn  SSKJn   " U4S jSU5      m " U4S jS5      nU" 5       nU R                  U" TU5      5        g )	Nr   r  r  r   c                   .   > \ rS rSr Y " S5      rS rSrg)2InterfaceTests.test_verifyObject.<locals>.ICheckMei  rg  c                      gro  r   r   r   r   rq  9InterfaceTests.test_verifyObject.<locals>.ICheckMe.method  r;  r   r   Nr  r  s   r   r  r    r  r   r  c                   &   > \ rS rSr Y rSrS rSrg)1InterfaceTests.test_verifyObject.<locals>.CheckMei  r  c                     [        5       er   r   r   s    r   rq  8InterfaceTests.test_verifyObject.<locals>.CheckMe.method  r  r   r   Nr  r  s   r   r  r    r  r   r  )r   r  r  r   r   r   )r+   r  r   r  check_mer  r  s        @@r   test_verifyObject InterfaceTests.test_verifyObject  s>    ,,6	y 		, 	, 9Xx89r   c                 f    SSK Jn   " S SU5      nU R                  UR                  U5      5        g )Nr   r  c                       \ rS rSrSrg)LInterfaceTests.test_interface_object_provides_Interface.<locals>.AnInterfacei  r   Nr   r   r   r   AnInterfacer    r6  r   r  )r   r  r   r   )r+   r  r  s      r   (test_interface_object_provides_Interface7InterfaceTests.test_interface_object_provides_Interface  s*    ,	) 	 		,,[9:r   c                    ^ SSK Jm  SSK Jn   " U4S jSU5      nU R                  [	        UR                  5       5      SS/5        g )Nr   r  r  c                   .   > \ rS rSr Y " S5      rS rSrg)1InterfaceTests.test_names_simple.<locals>.ISimplei  rg  c                      grz  r   r   r   r   rq  8InterfaceTests.test_names_simple.<locals>.ISimple.method  r;  r   r   Nr  r  s   r   ISimpler        Y'D r   r  r  rq  r   r  r  r)   r  r>  r+   r  r  r  s      @r   test_names_simple InterfaceTests.test_names_simple
  s7    ,,	 i 	  	0682DEr   c                    ^ SSK Jm  SSK Jn   " U4S jSU5      n " U4S jSU5      nU R                  [	        UR                  5       5      / SQ5        U R                  [	        UR                  S	S
95      / SQ5        g )Nr   r  r  c                   .   > \ rS rSr Y " S5      rS rSrg)0InterfaceTests.test_names_derived.<locals>.IBasei  rg  c                      grz  r   r   r   r   rq  7InterfaceTests.test_names_derived.<locals>.IBase.method  r;  r   r   Nr  r  s   r   ry  r    r  r   ry  c                   4   > \ rS rSr Y " S5      rS rS rSrg)3InterfaceTests.test_names_derived.<locals>.IDerivedi   My attr2c                      grz  r   r   r   r   rq  :InterfaceTests.test_names_derived.<locals>.IDerived.method#  r;  r   c                      grz  r   r   r   r   r  ;InterfaceTests.test_names_derived.<locals>.IDerived.method2&  r;  r   r   Nr    r!   r"   r#   attr2rq  r  r$   r  s   r   rz  r#     s    j)E  r   rz  )r*  rq  r  Tr|  r  r*  rq  r  r  r+   r  ry  rz  r  s       @r   test_names_derived!InterfaceTests.test_names_derived  sf    ,,	 I 	 	 u 	  	 017	94 89?	Ar   c                 ~  ^ SSK Jm  SSK Jn  SSKJn   " U4S jSU5      n[        UR                  5       5      nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S	   T5        U R                  US   S	   R                  S5        U R                  US   S	   R                  S
5        U R                  US	   S   S5        U R                  US	   S	   U5        U R                  US	   S	   R                  S5        U R                  US	   S	   R                  S5        g )Nr   r  r  Methodc                   .   > \ rS rSr Y " S5      rS rSrg)@InterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimplei3  rg  c                      g	My methodNr   r   r   r   rq  GInterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimple.method6  r;  r   r   Nr  r  s   r   r  r3  3      Y'Dr   r  r  r  r  rg  rq  r6  r   r  r  r(   r1  r  r  r)   r  r  r    rf   )r+   r  r1  r  name_valuesr  s        @r    test_namesAndDescriptions_simple/InterfaceTests.test_namesAndDescriptions_simple.  s"   ,,3	i 	 W99;<[)1-Q*F3k!nQ/;Q*33V<Q*22I>Q*H5k!nQ/8Q*33X>Q*22K@r   c                   ^ SSK Jm  SSK Jn  SSKJn   " U4S jSU5      n " U4S jSU5      n[        UR                  5       5      nU R                  [        U5      S	5        U R                  US   S   S
5        U R                  US   S   T5        U R                  US   S   R                  S
5        U R                  US   S   R                  S5        U R                  US   S   S5        U R                  US   S   U5        U R                  US   S   R                  S5        U R                  US   S   R                  S5        U R                  US   S   S5        U R                  US   S   U5        U R                  US   S   R                  S5        U R                  US   S   R                  S5        [        UR                  SS95      nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   T5        U R                  US   S   R                  S5        U R                  US   S   R                  S5        U R                  US   S   S
5        U R                  US   S   T5        U R                  US   S   R                  S
5        U R                  US   S   R                  S5        U R                  US   S   S5        U R                  US   S   U5        U R                  US   S   R                  S5        U R                  US   S   R                  S5        U R                  US	   S   S5        U R                  US	   S   U5        U R                  US	   S   R                  S5        U R                  US	   S   R                  S5        g )Nr   r  r  r0  c                   .   > \ rS rSr Y " S5      rS rSrg)?InterfaceTests.test_namesAndDescriptions_derived.<locals>.IBaseiJ  rg  c                      gr5  r   r   r   r   rq  FInterfaceTests.test_namesAndDescriptions_derived.<locals>.IBase.methodM  r;  r   r   Nr  r  s   r   ry  r?  J  r8  r   ry  c                   4   > \ rS rSr Y " S5      rS rS rSrg)BInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerivediP  r$  c                      gMy method, overriddenNr   r   r   r   rq  IInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.methodS  r;  r   c                      g
My method2Nr   r   r   r   r  JInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method2V  r;  r   r   Nr)  r  s   r   rz  rC  P      j)E(r   rz     r*  r  r$  rq  rF  r  r  rJ  Tr|     r  rg  r9  )r+   r  r1  ry  rz  r:  r  s         @r   !test_namesAndDescriptions_derived0InterfaceTests.test_namesAndDescriptions_derivedE  s   ,,3	I 		u 	 X::<=[)1-Q*G4k!nQ/;Q*33W=Q*22J?Q*H5k!nQ/8Q*33X>Q*224KLQ*I6k!nQ/8Q*33Y?Q*22LAX::t:DE[)1-Q*F3k!nQ/;Q*33V<Q*22I>Q*G4k!nQ/;Q*33W=Q*22J?Q*H5k!nQ/8Q*33X>Q*224KLQ*I6k!nQ/8Q*33Y?Q*22LAr   c                 h    SSK Jn   " S SU5      nU R                  [        UR                  S5        g )Nr   r  c                       \ rS rSrSrg)IInterfaceTests.test_getDescriptionFor_nonesuch_no_default.<locals>.IEmptyi  r   Nr   r   r   r   IEmptyrS    r6  r   rT  rs   )r   r  rt   ru   r  r+   r  rT  s      r   *test_getDescriptionFor_nonesuch_no_default9InterfaceTests.test_getDescriptionFor_nonesuch_no_default}  s+    ,	Y 	 	(F$<$<jIr   c                   ^ SSK Jm  SSK Jn  SSKJn   " U4S jSU5      nUR                  S5      nU R                  UT5        U R                  UR                  S5        U R                  UR                  S5        UR                  S	5      nU R                  XR5        U R                  UR                  S	5        U R                  UR                  S
5        g )Nr   r  r  r0  c                   .   > \ rS rSr Y " S5      rS rSrg)=InterfaceTests.test_getDescriptionFor_simple.<locals>.ISimplei  rg  c                      gr5  r   r   r   r   rq  DInterfaceTests.test_getDescriptionFor_simple.<locals>.ISimple.method  r;  r   r   Nr  r  s   r   r  rZ    r8  r   r  r  rg  rq  r6  
r   r  r  r(   r1  r  r  r)   r    rf   r+   r  r1  r  a_descm_descr  s         @r   test_getDescriptionFor_simple,InterfaceTests.test_getDescriptionFor_simple  s    ,,3	i 	 **62fi0&13**84f-(35r   c                 6  ^	 SSK Jm	  SSK Jn  SSKJn   " U	4S jSU5      n " U	4S jSU5      nUR                  S	5      nU R                  UT	5        U R                  UR                  S	5        U R                  UR                  S
5        UR                  S5      nU R                  Xb5        U R                  UR                  S5        U R                  UR                  S5        UR                  S5      nU R                  UT	5        U R                  UR                  S5        U R                  UR                  S5        UR                  S5      nU R                  X5        U R                  UR                  S5        U R                  UR                  S5        g )Nr   r  r  r0  c                   .   > \ rS rSr Y " S5      rS rSrg)<InterfaceTests.test_getDescriptionFor_derived.<locals>.IBasei  rg  c                      gr5  r   r   r   r   rq  CInterfaceTests.test_getDescriptionFor_derived.<locals>.IBase.method  r;  r   r   Nr  r  s   r   ry  re    r8  r   ry  c                   4   > \ rS rSr Y " S5      rS rS rSrg)?InterfaceTests.test_getDescriptionFor_derived.<locals>.IDerivedi  r$  c                      grE  r   r   r   r   rq  FInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method  r;  r   c                      grI  r   r   r   r   r  GInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method2  r;  r   r   Nr)  r  s   r   rz  ri    rL  r   rz  r  rg  rq  rF  r*  r$  r  rJ  r]  
r+   r  r1  ry  rz  r_  r`  a2_descm2_descr  s
            @r   test_getDescriptionFor_derived-InterfaceTests.test_getDescriptionFor_derived  sG   ,,3	I 		u 	 ++F3fi0&13++H5f-(3)@A,,W5gy1))73*5,,Y7g.))95,7r   c                 h    SSK Jn   " S SU5      nU R                  [        UR                  S5        g )Nr   r  c                       \ rS rSrSrg)7InterfaceTests.test___getitem__nonesuch.<locals>.IEmptyi  r   Nr   r   r   r   rT  ru    r6  r   rT  rs   )r   r  rt   ru   __getitem__rU  s      r   test___getitem__nonesuch'InterfaceTests.test___getitem__nonesuch  s+    ,	Y 	 	(F$6$6
Cr   c                   ^ SSK Jm  SSK Jn  SSKJn   " U4S jSU5      nUS   nU R                  UT5        U R                  UR                  S5        U R                  UR                  S5        US	   nU R                  XR5        U R                  UR                  S	5        U R                  UR                  S
5        g )Nr   r  r  r0  c                   .   > \ rS rSr Y " S5      rS rSrg)6InterfaceTests.test___getitem__simple.<locals>.ISimplei  rg  c                      gr5  r   r   r   r   rq  =InterfaceTests.test___getitem__simple.<locals>.ISimple.method  r;  r   r   Nr  r  s   r   r  r{    r8  r   r  r  rg  rq  r6  	r   r  r  r(   r1  r  r)   r    rf   r^  s         @r   test___getitem__simple%InterfaceTests.test___getitem__simple  s    ,,3	i 	 fi0&13"f-(35r   c                   ^	 SSK Jm	  SSK Jn  SSKJn   " U	4S jSU5      n " U	4S jSU5      nUS	   nU R                  UT	5        U R                  UR                  S	5        U R                  UR                  S
5        US   nU R                  Xb5        U R                  UR                  S5        U R                  UR                  S5        US   nU R                  UT	5        U R                  UR                  S5        U R                  UR                  S5        US   nU R                  X5        U R                  UR                  S5        U R                  UR                  S5        g )Nr   r  r  r0  c                   .   > \ rS rSr Y " S5      rS rSrg)6InterfaceTests.test___getitem___derived.<locals>.IBasei  rg  c                      gr5  r   r   r   r   rq  =InterfaceTests.test___getitem___derived.<locals>.IBase.method  r;  r   r   Nr  r  s   r   ry  r    r8  r   ry  c                   4   > \ rS rSr Y " S5      rS rS rSrg)9InterfaceTests.test___getitem___derived.<locals>.IDerivedi  r$  c                      grE  r   r   r   r   rq  @InterfaceTests.test___getitem___derived.<locals>.IDerived.method  r;  r   c                      grI  r   r   r   r   r  AInterfaceTests.test___getitem___derived.<locals>.IDerived.method2  r;  r   r   Nr)  r  s   r   rz  r    rL  r   rz  r  rg  rq  rF  r*  r$  r  rJ  r~  rn  s
            @r   test___getitem___derived'InterfaceTests.test___getitem___derived  s/   ,,3	I 		u 	 &!fi0&13(#f-(3)@A7#gy1))73*59%g.))95,7r   c                 J    SSK Jn   " S SU5      nU R                  SU5        g )Nr   r  c                       \ rS rSrSrg)8InterfaceTests.test___contains__nonesuch.<locals>.IEmptyi
  r   Nr   r   r   r   rT  r  
  r6  r   rT  rs   )r   r  r  rU  s      r   test___contains__nonesuch(InterfaceTests.test___contains__nonesuch  s#    ,	Y 	 	V,r   c                    ^ SSK Jm  SSK Jn   " U4S jSU5      nU R                  SU5        U R                  SU5        g )Nr   r  r  c                   .   > \ rS rSr Y " S5      rS rSrg)7InterfaceTests.test___contains__simple.<locals>.ISimplei  rg  c                      gr5  r   r   r   r   rq  >InterfaceTests.test___contains__simple.<locals>.ISimple.method  r;  r   r   Nr  r  s   r   r  r    r8  r   r  r  rq  r   r  r  r|  r  s      @r   test___contains__simple&InterfaceTests.test___contains__simple  s3    ,,	i 	 	fg&h(r   c                    ^ SSK Jm  SSK Jn   " U4S jSU5      n " U4S jSU5      nU R                  SU5        U R                  S	U5        U R                  S
U5        U R                  SU5        g )Nr   r  r  c                   .   > \ rS rSr Y " S5      rS rSrg)6InterfaceTests.test___contains__derived.<locals>.IBasei   rg  c                      gr5  r   r   r   r   rq  =InterfaceTests.test___contains__derived.<locals>.IBase.method#  r;  r   r   Nr  r  s   r   ry  r     r8  r   ry  c                   4   > \ rS rSr Y " S5      rS rS rSrg)9InterfaceTests.test___contains__derived.<locals>.IDerivedi&  r$  c                      grE  r   r   r   r   rq  @InterfaceTests.test___contains__derived.<locals>.IDerived.method)  r;  r   c                      grI  r   r   r   r   r  AInterfaceTests.test___contains__derived.<locals>.IDerived.method2,  r;  r   r   Nr)  r  s   r   rz  r  &  rL  r   rz  r  rq  r*  r  r  r,  s       @r   test___contains__derived'InterfaceTests.test___contains__derived  s[    ,,	I 		u 	 	fh'h)gx(i*r   c                 \    SSK Jn   " S SU5      nU R                  [        U5      / 5        g )Nr   r  c                       \ rS rSrSrg)1InterfaceTests.test___iter__empty.<locals>.IEmptyi7  r   Nr   r   r   r   rT  r  7  r6  r   rT  )r   r  r)   rh   rU  s      r   test___iter__empty!InterfaceTests.test___iter__empty4  s'    ,	Y 	 	fr*r   c                    ^ SSK Jm  SSK Jn   " U4S jSU5      nU R                  [	        [        U5      5      SS/5        g )Nr   r  r  c                   .   > \ rS rSr Y " S5      rS rSrg)3InterfaceTests.test___iter__simple.<locals>.ISimplei@  rg  c                      gr5  r   r   r   r   rq  :InterfaceTests.test___iter__simple.<locals>.ISimple.methodC  r;  r   r   Nr  r  s   r   r  r  @  r8  r   r  r  rq  r   r  r  r)   r  rh   r  s      @r   test___iter__simple"InterfaceTests.test___iter__simple<  s5    ,,	i 	 	W.0BCr   c                    ^ SSK Jm  SSK Jn   " U4S jSU5      n " U4S jSU5      nU R                  [	        [        U5      5      / SQ5        g )	Nr   r  r  c                   .   > \ rS rSr Y " S5      rS rSrg)2InterfaceTests.test___iter__derived.<locals>.IBaseiL  rg  c                      gr5  r   r   r   r   rq  9InterfaceTests.test___iter__derived.<locals>.IBase.methodO  r;  r   r   Nr  r  s   r   ry  r  L  r8  r   ry  c                   4   > \ rS rSr Y " S5      rS rS rSrg)5InterfaceTests.test___iter__derived.<locals>.IDerivediR  r$  c                      grE  r   r   r   r   rq  <InterfaceTests.test___iter__derived.<locals>.IDerived.methodU  r;  r   c                      grI  r   r   r   r   r  =InterfaceTests.test___iter__derived.<locals>.IDerived.method2X  r;  r   r   Nr)  r  s   r   rz  r  R  rL  r   rz  r+  r  r,  s       @r   test___iter__derived#InterfaceTests.test___iter__derivedH  s@    ,,	I 		u 	 	X/?	Ar   c                 r    SSK Jn   " S SU5      nUS   nU R                  UR                  S5      S5        g )Nr   r  c                   (    \ rS rSrS rS\l        Srg)LInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMeia  c                      grz  r   r   r   r   rq  SInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMe.methodb  r;  r   r  r   N)r    r!   r"   r#   rq  optionalr$   r   r   r   ITagMer  a  s     FOr   r  rq  r  r  )r   r  r)   rv   )r+   r  r  rq  s       r   -test_function_attributes_become_tagged_values<InterfaceTests.test_function_attributes_become_tagged_values^  s8    ,	 Y 	 
 !..z:A>r   c                     SSK Jn   " S SU5      nU R                  UR                  S5        U R                  [	        U5      / 5        g )Nr   r  c                       \ rS rSrSrSrg)@InterfaceTests.test___doc___non_element.<locals>.IHaveADocStringil  xxxr   Nr    r!   r"   r#   rf   r$   r   r   r   IHaveADocStringr  l      r   r  r  )r   r  r)   rf   rh   )r+   r  r  s      r   test___doc___non_element'InterfaceTests.test___doc___non_elementi  s>    ,	i 	 	00%8o.3r   c                    ^ SSK Jm  SSK Jn   " U4S jSU5      nU R                  UR                  S5        U R                  [        U5      S/5        g )Nr   r  r  c                   ,   > \ rS rSrSr Y " S5      rSrg)?InterfaceTests.test___doc___as_element.<locals>.IHaveADocStringiv  r  the docr   Nr  r  s   r   r  r  v  s    	*Gr   r  rd   rf   r   r  r  r)   rf   rh   )r+   r  r  r  s      @r   test___doc___as_element&InterfaceTests.test___doc___as_elementr  sD    ,,	+i 	+ 	00"5o.<r   c                    SSK Jn  U R                  XTR                  U5        / n UR                  X5        U R	                  S5        U R                  [        U5      U5        U Vs/ s H  owR                  S   PM     nnUR                  5         U H#  n	U R                  XR                  S5      5        M%     g ! U a)  nU R                  UR                  S   U5         S nANS nAff = fs  snf )Nr   r  z&validateInvariants should always raise)
rU  r  rt   r  failr)   r   r  sortpop)
r+   has_invariant	error_len
error_msgsrm  r  eerrormsgsmsgs
             r   _errorsEqualInterfaceTests._errorsEqual}  s    5'#;#;]K	/$$]6II>? 	Q++,-1%

11-		CS.."34   	/UZZ]A..	/ .s   "B; 'C-;C*C%%C*c                   ^^ SSK Jm  SSK Jn  SSK Jn  SSK Jm   " UU4S jSU5      n " S S	5      nU" 5       nU" XS5        U R                  UR                  S
5      [        /5        U R                  UR                  U5      S 5        SUl	        U R                  UR                  U5      S 5        SUl
        U R                  UR                  U5      S 5        U?	U R                  USS/U5        g )Nr   r  r  directlyProvidesr   c                   L   > \ rS rSr Y " S5      r Y " S5      r Y" \5        Srg)8InterfaceTests.test_invariant_simple.<locals>.IInvarianti  r{   *bar; must eval to Boolean True if foo doesr   Nr    r!   r"   r#   r{   rB   _ifFooThenBarr$   r  r   s   r   
IInvariantr         E"CHICm$r   r  c                       \ rS rSrSrg):InterfaceTests.test_invariant_simple.<locals>.HasInvarianti  r   Nr   r   r   r   HasInvariantr    r6  r   r  r&      *   r  If Foo, then Bar!)r   r  r  r  r   r)   rv   r  r  rB   r{   r  )r+   r  r  r  r  r  r  r   s         @@r   test_invariant_simple$InterfaceTests.test_invariant_simple  s    ,,3,	% 	% 	%
	 	 %3 	22<@'	*66}EtL66}EtL66}EtL--@,A$	&r   c                   ^^ SSK Jm  SSK Jn  SSK Jn  SSK Jm   " UU4S jSU5      n " U4S jS	U5      n " S
 S5      nU R                  UR                  S5      [        /5        U" 5       nU" Xd5        SUl        U R                  USS/U5        SUl        SUl
        U R                  USS/U5        SUl        SUl
        U R                  USSS/U5        SUl        SUl
        U R                  UR                  U5      S 5        g )Nr   r  r  r  r   c                   L   > \ rS rSr Y " S5      r Y " S5      r Y" \5        Srg)8InterfaceTests.test_invariant_nested.<locals>.IInvarianti  r{   r  r   Nr  r  s   r   r  r    r  r   r  c                   (   > \ rS rSr Y " \5        Srg);InterfaceTests.test_invariant_nested.<locals>.ISubInvarianti  r   N)r    r!   r"   r#   _barGreaterThanFoor$   r   s   r   ISubInvariantr    s    ()r   r  c                       \ rS rSrSrg):InterfaceTests.test_invariant_nested.<locals>.HasInvarianti  r   Nr   r   r   r   r  r    r6  r   r  r&   r  r  r  r  %Please, Boo MUST be greater than Foo!)r   r  r  r  r   r)   rv   r   r{   r  rB   r  )	r+   r  r  r  r  r  r  r  r   s	          @@r   test_invariant_nested$InterfaceTests.test_invariant_nested  s   ,,3,	% 	% 	%
	*J 	*	 	 	55lC,-	/$6 	--@,A'	) -BC'	)
 -.BD'	)
 66}EtLr   c                 J  ^^	 SSK Jm  SSK Jn  SSK Jn  SSK Jm	   " UU	4S jSU5      n " S S	5      nU" 5       nU" XS5        S
Ul        UR                  S5      nUS S  nUR                  [        5        UR                  SU5        U R                  USS/U5        SUl        SUl        U R                  USS/U5        SUl        SUl        U R                  USSS/U5        SUl        SUl        U R                  UR                  U5      S 5        UR                  SU5        g )Nr   r  r  r  r   c                   L   > \ rS rSr Y " S5      r Y " S5      r Y" \5        Srg):InterfaceTests.test_invariant_mutandis.<locals>.IInvarianti  r{   r  r   Nr  r  s   r   r  r	    r  r   r  c                       \ rS rSrSrg)<InterfaceTests.test_invariant_mutandis.<locals>.HasInvarianti  r   Nr   r   r   r   r  r    r6  r   r  r  r&   r  r  r  r  )r   r  r  r  r   r{   rv   r  r   r}   r  rB   r)   r  )
r+   r  r  r  r  r  old_invariantsr&   r  r   s
           @@r   test_invariant_mutandis&InterfaceTests.test_invariant_mutandis  s:   ,,3,	% 	% 	%
	 	 %3 $22<@#A&
,-!!,
; 	--@,A$	& 45		
 -.BD$	&
 66}EtL!!,?r   c                 .  ^ SSK Jm  SSK Jn   " S SU5      nU R                  UR                  S5        U R                  [        U5      / 5         " U4S jSU5      nU R                  UR                  S	5        U R                  [        U5      S
/5        g )Nr   r  r  c                       \ rS rSrSrSrg)7InterfaceTests.test___doc___element.<locals>.IDocstringi  r  r   Nr  r   r   r   
IDocstringr    r  r   r  r  c                   ,   > \ rS rSrSr Y " S5      rSrg)CInterfaceTests.test___doc___element.<locals>.IDocstringAndAttributei  r  r  r   Nr  r  s   r   IDocstringAndAttributer    s    	*Gr   r  rd   rf   r  )r+   r  r  r  r  s       @r   test___doc___element#InterfaceTests.test___doc___element  s    ,,	 	 	++U3j)2.	+Y 	+
 	/77<45	{Cr   c                 ~  ^^^ SSK Jm  SSK Jn  SSK Jn  SSK Jm  SSKJm   " UUU4S jSU5      nU" U5       " S	 S
5      5       nUR                  U" SS5      5        UR                  U" SS5      5         UR                  U" SS5      5        g ! T a%  nU R                  [        U5      S5         S nAg S nAff = f)Nr   r  r  r	  r   r  c                   R   > \ rS rSr Y " S5      r Y " S5      r YU4S j5       rSrg):InterfaceTests.test_invariant_as_decorator.<locals>.IRangei,  zLower boundzUpper boundc                 J   > U R                   U R                  :  a  T" S5      eg )N	max < minmaxmin)obr  s    r   range_invariantJInterfaceTests.test_invariant_as_decorator.<locals>.IRange.range_invariant0  s"    66BFF?!+.. #r   r   N)r    r!   r"   r#   r  r  r!  r$   )r  r  r   s   r   IRanger  ,  s)    M*CM*C/ /r   r#  c                       \ rS rSrS rSrg)9InterfaceTests.test_invariant_as_decorator.<locals>.Rangei5  c                      XsU l         U l        g r   )r  r  )r+   r  r  s      r   r  BInterfaceTests.test_invariant_as_decorator.<locals>.Range.__init__8  s    %("$(r   r  Nr  r   r   r   Ranger%  5  s    .r   r(  r  r  r  )
r   r  r  r
  r   rU  r  r  r)   r}  )	r+   r  r
  r#  r(  r  r  r  r   s	         @@@r   test_invariant_as_decorator*InterfaceTests.test_invariant_as_decorator%  s    ,,.,5	/ 	/Y 	/ 
V		. 	. 
	.
 	!!%1+.!!%1+.	2%%eAqk2 	2SV[11	2s   8B B<B77B<c                 .  ^^ SSK Jm  SSK Jn  SSK Jm   " UU4S jSU5      n " U4S jSU5      n " S	 S
U5      nU R	                  UR                  S5      S5        U R                  [        UR
                  S5        U R	                  [        UR                  5       5      S/5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  [        UR                  5       5      SS15        g )Nr   r  r  r=   c                   N   > \ rS rSr Y " S5      r Y " S5      r Y" SS5        Srg)0InterfaceTests.test_taggedValue.<locals>.ITaggediG  r{   r  rK   Spamr   N)r    r!   r"   r#   r{   rB   r$   r  r>   s   r   ITaggedr-  G  s"    E"CHICv&r   r0  c                   >   > \ rS rSr Y " SS5         Y " SS5        Srg)1InterfaceTests.test_taggedValue.<locals>.IDerivediL  rK   	Spam Spamr{   rB   r   Nr   r=   s   r   rz  r2  L  s    {+u%r   rz  c                       \ rS rSrSrg)2InterfaceTests.test_taggedValue.<locals>.IDerived2iP  r   Nr   r   r   r   	IDerived2r5  P  r6  r   r6  rK   r.  r{   r3  rB   )r   r  r  r>   r)   rv   rt   ru   rh   ri   set)r+   r  r0  rz  r6  r  r>   s        @@r   test_taggedValueInterfaceTests.test_taggedValueB  s    ,,.	' 	'i 	'
	&w 	&	 	 	//6?(G$:$:EBg88:;eWE11%8+F11%8%@Y99;<uenMr   c                    ^^	 SSK Jm  SSK Jm	   " UU	4S jSU5      n " UU	4S jSU5      n " UU	4S jS	U5      n " UU	4S
 jSXB5      n " S SXC5      n " S SXe5      nU$ )Nr   r  r=   c                   <   > \ rS rSr Y" SS5         Y " S5      rSrg)0InterfaceTests._make_taggedValue_tree.<locals>.Fi_  tagFr   Nr    r!   r"   r#   r=  r$   r/  s   r   r>  r<  _      s#C.Cr   r>  c                   <   > \ rS rSr Y" SS5         Y " S5      rSrg)0InterfaceTests._make_taggedValue_tree.<locals>.Eic  r=  Er   Nr?  r/  s   r   rC  rB  c  r@  r   rC  c                   <   > \ rS rSr Y" SS5         Y " S5      rSrg)0InterfaceTests._make_taggedValue_tree.<locals>.Dig  r=  Dr   Nr?  r/  s   r   rF  rE  g  r@  r   rF  c                   <   > \ rS rSr Y" SS5         Y " S5      rSrg)0InterfaceTests._make_taggedValue_tree.<locals>.Cik  r=  Cr   Nr?  r/  s   r   rI  rH  k  r@  r   rI  c                       \ rS rSrSrg)0InterfaceTests._make_taggedValue_tree.<locals>.Bio  r   Nr   r   r   r   BrK  o  r6  r   rL  c                       \ rS rSrSrg)0InterfaceTests._make_taggedValue_tree.<locals>.Air  r   Nr   r   r   r   ArN  r  r6  r   rO  )r   r  r>   )
r+   r  r>  rC  rF  rI  rL  rO  r  r>   s
           @@r   _make_taggedValue_tree%InterfaceTests._make_taggedValue_tree[  sl    ,.	! 	! 	!	! 	! 	!	! 	! 	!	! 	! 	!	 		 	 r   c                 (   SSK Jn  U R                  [        5      nU R	                  UR
                  R                  S5        U R                  U5      nU R	                  US   R                  S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        UR                  S   R                  S:X  d   eUR                  S   R                  SS5        U R	                  UR                  S5      S5        g )Nr   r  rI  r=  rL  )r   r  rP  r   r)   r=  r    rv   r   r  r}   )r+   r  class_Aiface_As       r   "test_getTaggedValue_follows__iro__1InterfaceTests.test_getTaggedValue_follows__iro__w  s     	- --f5--s3 --i800#6//6<11%8#>  #,,333!++E37//6<r   c                 v   SSK Jn  U R                  U5      nU R                  UR	                  S5      5        U R                  / [        UR                  5       5      5        U R                  [        5         UR                  S5        S S S 5        UR                  SS5        U R                  UR	                  S5      S5        U R                  UR                  S5      S5        U R                  S/[        UR                  5       5      5        UR                  S   R                  S:X  d   eUR                  S   nU R                  UR	                  S5      S5        U R                  UR                  S5      S5        U R                  S/[        UR                  5       5      5        g ! , (       d  f       GN(= f)Nr   r  r=  rO  r  rI  )r   r  rP  r  r   r)   rh   r|   rt   ru   r   r}   r  r    )r+   r  rO  rI  s       r   (test_getDirectTaggedValue_ignores__iro__7InterfaceTests.test_getDirectTaggedValue_ignores__iro__  s]   ,''	2!2259:T!"<"<">?@x(""5) ) 	
$11%8#>//6<%$q'A'A'C"DE{{1~&&#---KKN11%8#>//6<%$q'A'A'C"DE )(s   6F))
F8c                   ^ SSK Jm  SSK Jn   " U4S jSU5      n " S SU5      n " S S	U5      nU R                  UR	                  S
5      UR	                  S
5      5        U4Ul        U R                  UR	                  S
5      5        g )Nr   r  r  c                   (   > \ rS rSr Y " S5      rSrg)<InterfaceTests.test_description_cache_management.<locals>.I1i  r  r   N)r    r!   r"   r#   r  r$   r  s   r   rh  r\    s    #Ar   rh  c                       \ rS rSrSrg)<InterfaceTests.test_description_cache_management.<locals>.I2i  r   Nr   r   r   r   I2r^    r6  r   r_  c                       \ rS rSrSrg)<InterfaceTests.test_description_cache_management.<locals>.I3i  r   Nr   r   r   r   I3ra    r6  r   rb  r  )r   r  r  r8  r  r  r  )r+   r  rh  r_  rb  r  s        @r   !test_description_cache_management0InterfaceTests.test_description_cache_management  sn     	-,	 		 		 	 	bffSk266#;/!|"&&+&r   c                     SSK Jn  SSK Jn   " S SU5      nU" U5       " S S5      5       nU R                  U" U" 5       5      S5        g )Nr   r  r	  c                       \ rS rSrSrg)AInterfaceTests.test___call___defers_to___conform___.<locals>.IFooi  r   Nr   r   r   r   r  rg    r6  r   r  c                       \ rS rSrS rSrg)>InterfaceTests.test___call___defers_to___conform___.<locals>.Ci  c                     g)Nr   r   )r+   protos     r   ro  JInterfaceTests.test___call___defers_to___conform___.<locals>.C.__conform__  s    r   r   Nrq  r   r   r   rI  ri    s    r   rI  )r   r  r
  r)   )r+   r  r
  r  rI  s        r   $test___call___defers_to___conform___3InterfaceTests.test___call___defers_to___conform___  sJ    ,.	9 	 
T		 	 
	 	acA&r   c                     SSK Jn  SSK Jn   " S SU5      nU" U5       " S S5      5       nU" 5       nU R                  U" U5      U5        g )Nr   r  r	  c                       \ rS rSrSrg)<InterfaceTests.test___call___object_implements.<locals>.IFooi  r   Nr   r   r   r   r  rq    r6  r   r  c                       \ rS rSrSrg)9InterfaceTests.test___call___object_implements.<locals>.Ci  r   Nr   r   r   r   rI  rs    r  r   rI  )r   r  r
  r8  )r+   r  r
  r  rI  cs         r   test___call___object_implements.InterfaceTests.test___call___object_implements  sM    ,.	9 	 
T		 	 
	 Cd1gq!r   c                 t    SSK Jn   " S SU5      n " S S5      nU" 5       nU R                  [        X$5        g )Nr   r  c                       \ rS rSrSrg)<InterfaceTests.test___call___miss_wo_alternate.<locals>.IFooi  r   Nr   r   r   r   r  ry    r6  r   r  c                       \ rS rSrSrg)9InterfaceTests.test___call___miss_wo_alternate.<locals>.Ci  r   Nr   r   r   r   rI  r{    r6  r   rI  )r   r  rt   r:  r+   r  r  rI  rt  s        r   test___call___miss_wo_alternate.InterfaceTests.test___call___miss_wo_alternate  s4    ,	9 		 	 C)T-r   c                 x    SSK Jn   " S SU5      n " S S5      nU" 5       nU R                  U" X@5      U 5        g )Nr   r  c                       \ rS rSrSrg);InterfaceTests.test___call___miss_w_alternate.<locals>.IFooi  r   Nr   r   r   r   r  r    r6  r   r  c                       \ rS rSrSrg)8InterfaceTests.test___call___miss_w_alternate.<locals>.Ci  r   Nr   r   r   r   rI  r    r6  r   rI  )r   r  r8  r|  s        r   test___call___miss_w_alternate-InterfaceTests.test___call___miss_w_alternate  s6    ,	9 		 	 Cd1mT*r   c                    ^  SSK Jn  SSKJn  S nU 4S jn " S SU5      n " S S	5      nU" 5       nUS S  nX4/US S &  T R	                  U" U5      T 5        XS S & g ! XS S & f = f)
Nr   r  r  c                     g r   r   r  s     r   _miss:InterfaceTests.test___call___w_adapter_hook.<locals>._miss  s    r   c                    > T$ r   r   )rm  r   r+   s     r   _hit9InterfaceTests.test___call___w_adapter_hook.<locals>._hit  s    Kr   c                       \ rS rSrSrg)9InterfaceTests.test___call___w_adapter_hook.<locals>.IFooi  r   Nr   r   r   r   r  r    r6  r   r  c                       \ rS rSrSrg)6InterfaceTests.test___call___w_adapter_hook.<locals>.Ci  r   Nr   r   r   r   rI  r    r6  r   rI  )r   r  r(   r  r8  )	r+   r  r  r  r  r  rI  rt  old_adapter_hookss	   `        r   test___call___w_adapter_hook+InterfaceTests.test___call___w_adapter_hook  sr    ,:			9 		 	 C)!,!=a	1MM$q'4(0!0!s   A A"c                    ^ SSK Jn  SSK Jn  SSK Jm   " U4S jSU5      nU" U5       " S S5      5       nU R	                  S	U" [        5       5      5        U R	                  S	U" U" 5       5      5        g )
Nr   r  r	  interfacemethodc                   (   > \ rS rSr Y S 5       rSrg)=InterfaceTests.test___call___w_overridden_adapt.<locals>.IFooi		  c                     gNr  r   r+   r   s     r   r  GInterfaceTests.test___call___w_overridden_adapt.<locals>.IFoo.__adapt__	      r   r   Nr    r!   r"   r#   r  r$   r  s   r   r  r  		  s     r   r  c                       \ rS rSrSrg)<InterfaceTests.test___call___w_overridden_adapt.<locals>.Obji	  r   Nr   r   r   r   Objr  	  r  r   r  r  )r   r  r
  r  r)   r   )r+   r  r
  r  r  r  s        @r    test___call___w_overridden_adapt/InterfaceTests.test___call___w_overridden_adapt	  sf    ,.2	9 	 
T		 	 
	 	T&(^, 	T#%[)r   c                   ^ SSK Jn  SSK Jn  SSK Jm   " U4S jSU5      n " S SU5      nU" U5       " S	 S
5      5       nU" U5       " S S5      5       nU R	                  SU" [        5       5      5        U R	                  SU" U" 5       5      5        U R	                  SU" U" 5       5      5        U R                  [        5         U" U" 5       5        S S S 5        U R	                  SU" U" 5       5      5        g ! , (       d  f       N,= f)Nr   r  r	  r  c                   (   > \ rS rSr Y S 5       rSrg)KInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdapti	  c                     gr  r   r  s     r   r  UInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdapt.__adapt__ 	  r  r   r   Nr  r  s   r   IAdaptr  	       r   r  c                       \ rS rSrSrSrg)LInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ISimplei$	  zNothing special.r   Nr  r   r   r   r  r  $	  s    "r   r  c                       \ rS rSrS rSrg)NInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24i'	  c                     gN   r   r  s     r   ro  ZInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24.__conform__)	  s    r   r   Nrq  r   r   r   	Conform24r  '	  s    r   r  c                       \ rS rSrS rSrg)PInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ConformNonei,	  c                     g r   r   r  s     r   ro  \InterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ConformNone.__conform__.	  r(  r   r   Nrq  r   r   r   ConformNoner  ,	  s    r   r  r  r  )r   r  r
  r  r)   r   rt   r:  )r+   r  r
  r  r  r  r  r  s          @r   ,test___call___w_overridden_adapt_and_conform;InterfaceTests.test___call___w_overridden_adapt_and_conform	  s     	-.2	Y 	
	#i 	# 
V		 	 
	 
V		 	 
	 	VFH-.WY[12VIK01y)KM" * 	VKM23 *)s   C::
Dc                    ^ SS K nSSKJn  SSKJn  SSKJm   " U4S jSU5      nU" U5       " S S5      5       nU R                  S	U" [        5       5      5        U" 5       nU R                  Xd" U5      5        g )
Nr   r  r	  r  c                   6   >^  \ rS rSr YU 4S j5       rSrU =r$ )HInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.IFooiB	  c                 P   > U R                  U5      (       d  g[        TU ]	  U5      $ r  )r   superr  )r+   r   rO  s     r   r  RInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.IFoo.__adapt__D	  s%    s++w(--r   r   )r    r!   r"   r#   r  r$   __classcell__)rO  r  s   @r   r  r  B	  s    . .r   r  c                       \ rS rSrSrg)GInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.ObjiJ	  r   Nr   r   r   r   r  r  J	  r  r   r  r  )sysr   r  r
  r  r)   r   r8  )r+   r  r  r
  r  r  r   r  s          @r   +test___call___w_overridden_adapt_call_super:InterfaceTests.test___call___w_overridden_adapt_call_super;	  sj    ,.2	.9 	. 
T		 	 
	 	T&(^,ec49%r   c                    ^ SSK Jn  SSK Jm   " U4S jSU5      nU R                  SU" [	        5       5      5        U R                  US   R                  5       S5        g )	Nr   r  r  c                   .   > \ rS rSr Y S 5       rS rSrg)HInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFooiV	  c                     gr  r   r  s     r   r  RInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFoo.__adapt__W	  r  r   c                     g)zThis is a protocolNr   )to_adapts    r   r  r  [	  r;  r   r   Nr  r  s   r   r  r  V	  s     %r   r  r  r  z
(to_adapt))r   r  r  r)   r   getSignatureStringr+   r  r  r  s      @r   +test___adapt___as_method_and_implementation:InterfaceTests.test___adapt___as_method_and_implementationR	  sK    ,2	%9 	% 	T&(^,k*==?Nr   c                 *  ^	 SSK Jn  SSK Jm	   " S SU5      n " U	4S jSU5      n " S S	U5      n " S
 SU5      n " S SXSU5      n " U	4S jSU5      nU R                  SU" [	        5       5      5        X#XEU4 H#  nU R                  [
        UR                  5        M%     X$U4 H'  nU R                  [        U5      [        U5      5        M)     U R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        U R                  U[        U5      5        U R                  SU" [	        5       5      5        U R                  [        U5      [        U5      5        U R                  U[        U5      5        g )Nr   r  r  c                       \ rS rSrSrSrg)@InterfaceTests.test___adapt__inheritance_and_type.<locals>.IRootie	  Rootr   Nr  r   r   r   IRootr  e	  s    r   r  c                   (   > \ rS rSr Y S 5       rSrg)EInterfaceTests.test___adapt__inheritance_and_type.<locals>.IWithAdaptih	  c                     gr  r   r  s     r   r  OInterfaceTests.test___adapt__inheritance_and_type.<locals>.IWithAdapt.__adapt__i	  r  r   r   Nr  r  s   r   
IWithAdaptr  h	  r  r   r  c                       \ rS rSrSrSrg)AInterfaceTests.test___adapt__inheritance_and_type.<locals>.IOtherim	  zSecond branchr   Nr  r   r   r   r  r  m	  s    r   r  c                       \ rS rSrSrSrg)EInterfaceTests.test___adapt__inheritance_and_type.<locals>.IUnrelatedip	  	Unrelatedr   Nr  r   r   r   
IUnrelatedr  p	  s    r   r  c                       \ rS rSrSrSrg)HInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerivedAdaptis	  zInherits an adaptr   Nr  r   r   r   IDerivedAdaptr  s	  s    #r   r  c                   ,   > \ rS rSrSr Y S 5       rSrg)IInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerived2Adaptiw	  z$Overrides an inherited custom adapt.c                     gr  r   r  s     r   r  SInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerived2Adapt.__adapt__y	  r  r   r   N)r    r!   r"   r#   rf   r  r$   r  s   r   IDerived2Adaptr  w	  s    6 r   r  r  r  )
r   r  r  r)   r   r    r!   rN  r7  r  )
r+   r  r  r  r  r  r  r  rm  r  s
            @r   "test___adapt__inheritance_and_type1InterfaceTests.test___adapt__inheritance_and_typea	  sL   ,2	I 		 	
	 U 	 	 		$JF 	$	] 	 	]6845MIEXu'7'78 J J.ET%[$y/: / 	DOT*-=>j)4+>?j$y/:^FH56D0$}2EFnd=.ABr   c                    ^ SSK Jn  SSK Jm   " U4S jSU5      nU R                  U" U 5      S5        U R                  UR	                  5       S5        g )Nr   r  r  c                   :   > \ rS rSr Y S 5       r Y S 5       rSrg)<InterfaceTests.test_interfacemethod_is_general.<locals>.IFooi	  c                     g)zReplace an existing methodr  r   r  s     r   rJ  EInterfaceTests.test_interfacemethod_is_general.<locals>.IFoo.__call__	  s     r   c                     gr  r   r   s    r   this_is_newHInterfaceTests.test_interfacemethod_is_general.<locals>.IFoo.this_is_new	  r  r   r   N)r    r!   r"   r#   rJ  r  r$   r  s   r   r  r  	  s)       r   r  r  )r   r  r  r)   r  r  s      @r   test_interfacemethod_is_general.InterfaceTests.test_interfacemethod_is_general	  sD    ,2		9 		 	dR())+R0r   r   N)9r    r!   r"   r#   ri  rt  r  r  r  r  r  r  r  r
  r  r  r-  r;  rO  rV  ra  rq  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  r8  rP  rU  rX  rc  rm  ru  r}  r  r  r  r  r  r  r  r  r$   r   r   r   rc  rc    s   02 6D865:0B)1V="8(:,;
FA0A.6BpJ6*&8PD6*&8P-)+0+
DA,	?4	=5 &<-M^7@rD$2:N28=*F,'*'"
.
+12*(!4F&.O*CX1r   rc  c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
AttributeTestsi	  TestAttributec                     SSK Jn  U$ )Nr   r  )r(   r  )r+   r  s     r   r\   AttributeTests._getTargetClass	  s    6r   c                     U R                  5       n[        U 5      Ul        [        U5      nU R	                  UR                  S5      U5        U R	                  UR                  S[        -   S-   5      U5        g )N-<zope.interface.interface.Attribute object at z.AttributeTests.TestAttribute>)ra   rN  r   reprr   
startswithendswithr    r+   rq  rs      r   test__repr__w_interface&AttributeTests.test__repr__w_interface	  sc    :LLLHI1	
 	JJsX~(HHI1	
r   c                     U R                  5       n[        U5      nU R                  UR                  S5      U5        U R                  UR	                  S5      U5        g )Nr  z TestAttribute>)ra   r  r   r  r   r  s      r   test__repr__wo_interface'AttributeTests.test__repr__wo_interface	  sK    LLLHI1	
 	

#45q9r   c                     U R                  5       n[        U 5      Ul        [        U5      nU R	                  U[
        S-   5        g )Nz.AttributeTests.TestAttribute)ra   rN  r   r}  r)   r    r  s      r   test__str__w_interface%AttributeTests.test__str__w_interface	  s8    :KH'FFGr   c                 ^    U R                  5       n[        U5      nU R                  US5        g )Nr  )ra   r}  r)   r  s      r   test__str__wo_interface&AttributeTests.test__str__wo_interface	  s&    KO,r   r   N)r    r!   r"   r#   r_   r\   r  r  r	  r  r$   r   r   r   r  r  	  s!    "L	
:H-r   r  c                   f    \ 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S rS rS rS rSrg)MethodTestsi	  
TestMethodc                     SSK Jn  U$ )Nr   r0  )r(   r1  )r+   r1  s     r   r\   MethodTests._getTargetClass	  s
    3r   c                     U R                  5       nU R                  UR                  0 5        SS0Ul        U R                  UR                  SS05        U?U R                  UR                  0 5        g rz   )ra   r)   r  r+   rq  s     r   test_optional_as_property%MethodTests.test_optional_as_property	  s]    "- %.5%.9O"-r   c                    SSK Jn  U R                  5       n U" 5         U R                  S5        g ! U aL  nU R	                  UR
                  S 5        U R	                  UR                  U R                  5         S nAg S nAff = f)Nr   )BrokenImplementationz*__call__ should raise BrokenImplementation)rU  r  ra   r  r)   r   r`   r_   )r+   r  rq  r  s       r   )test___call___raises_BrokenImplementation5MethodTests.test___call___raises_BrokenImplementation	  sm    B	DH
 IIBC	 $ 	8Q[[$/QVVT%6%677	8s   1 BAA>>Bc                 :   U R                  5       nUR                  5       nU R                  [        US   5      / 5        U R                  [        US   5      / 5        U R                  US   0 5        U R                  US   S 5        U R                  US   S 5        g )N
positionalrequiredr  varargskwargs)ra   getSignatureInfor)   rh   )r+   rq  infos      r   test_getSignatureInfo_bare&MethodTests.test_getSignatureInfo_bare	  s    &&(d<0126d:./4j)2.i$/h.r   c                 d    U R                  5       nU R                  UR                  5       S5        g )Nz())ra   r)   r  r  s     r   test_getSignatureString_bare(MethodTests.test_getSignatureString_bare	  s&    224d;r   c                     U R                  5       nS/=Ul        Ul        U R                  UR	                  5       S5        g )Nr{   z(foo))ra   r  r  r)   r  r  s     r   'test_getSignatureString_w_only_required3MethodTests.test_getSignatureString_w_only_required	  s7    /4g5FO224g>r   c                     U R                  5       nS/=Ul        Ul        SS0Ul        U R	                  UR                  5       S5        g )Nr{   rB   z(foo='bar'))ra   r  r  r  r)   r  r  s     r   "test_getSignatureString_w_optional.MethodTests.test_getSignatureString_w_optional	  sB    /4g5FO %.224mDr   c                 r    U R                  5       nSUl        U R                  UR                  5       S5        g )Nr   z(*args))ra   r  r)   r  r  s     r   !test_getSignatureString_w_varargs-MethodTests.test_getSignatureString_w_varargs	  s-    224i@r   c                 r    U R                  5       nSUl        U R                  UR                  5       S5        g )Nr   z(**kw))ra   r  r)   r  r  s     r    test_getSignatureString_w_kwargs,MethodTests.test_getSignatureString_w_kwargs	  s-    224h?r   c                     U R                  5       nSUl        [        U 5      Ul        [	        U5      nU R                  UR                  S5      U5        U R                  UR                  S[        -   S-   5      U5        g )Nr   *<zope.interface.interface.Method object atr  z.MethodTests.TestMethod(**kw)>)	ra   r  rN  r   r  r   r  r   r    r  s      r   r  #MethodTests.test__repr__w_interface
  sj    :LLLEF	
 	JJsX~(HHI1	
r   c                     U R                  5       nSUl        [        U5      nU R                  UR	                  S5      U5        U R                  UR                  S5      U5        g )Nr   r4  z TestMethod(**kw)>)ra   r  r  r   r  r   r  s      r   r  $MethodTests.test__repr__wo_interface
  sR    LLLEF	
 	

#78!<r   c                     U R                  5       nSUl        [        U 5      Ul        [	        U5      nU R                  U[        S-   5        g )Nr   z.MethodTests.TestMethod(**kw))ra   r  rN  r   r}  r)   r    r  s      r   r	  "MethodTests.test__str__w_interface
  s?    :KH'FFGr   c                 l    U R                  5       nSUl        [        U5      nU R                  US5        g )Nr   zTestMethod(**kw))ra   r  r}  r)   r  s      r   r  #MethodTests.test__str__wo_interface 
  s.    K./r   r   N)r    r!   r"   r#   r_   r\   r  r  r"  r%  r(  r+  r.  r1  r  r  r	  r  r$   r   r   r   r  r  	  sM    L.	D/<?
EA
@


=H0r   r  c                   P    \ 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Srg)Test_fromFunctioni'
  c                     SSK Jn  U" U0 UD6$ )Nr   r4  )r(   r5  )r+   r   r   r5  s       r   _callFUTTest_fromFunction._callFUT)
  s    9T(R((r   c                 L   S nU R                  U5      nU R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S 5        U R                  [        UR                  5       5      / 5        UR                  5       nU R                  [        US   5      / 5        U R                  [        US   5      / 5        U R                  US   0 5        U R                  US   S 5        U R                  US   S 5        g )	Nc                      gr7  r   r   r   r   _func*Test_fromFunction.test_bare.<locals>._func/
  r;  r   rC  r8  r  r  r  r  r  r?  r)   re   rg   r   rh   ri   r   r+   rC  rq  r!  s       r   	test_bareTest_fromFunction.test_bare-
  s    	 u%)73+6))40f779:B?&&(d<0126d:./4j)2.i$/h.r   c                     SSK Jn   " S SU5      nS nU R                  X2S9nU R                  UR                  U5        g )Nr   r$  c                       \ rS rSrSrg)0Test_fromFunction.test_w_interface.<locals>.IFooiA
  r   Nr   r   r   r   r  rK  A
  r6  r   r  c                      gr7  r   r   r   r   rC  1Test_fromFunction.test_w_interface.<locals>._funcD
  r;  r   r   )r(   r%  r?  r)   r   )r+   r%  r  rC  rq  s        r   test_w_interface"Test_fromFunction.test_w_interface>
  s>    ;	> 		 u5))40r   c                 j    S nU R                  USS9nU R                  UR                  5       S5        g )Nc                      gr7  r   r   r   r   rC  ,Test_fromFunction.test_w_name.<locals>._funcL
  r;  r   anotherName)r`   )r?  r)   re   )r+   rC  rq  s      r   test_w_nameTest_fromFunction.test_w_nameJ
  s2    	 u=9)=9r   c                 F   S nU R                  U5      nUR                  5       nU R                  [        US   5      S/5        U R                  [        US   5      S/5        U R                  US   0 5        U R                  US   S 5        U R                  US   S 5        g )Nc                     gr7  r   r{   s    r   rC  5Test_fromFunction.test_w_only_required.<locals>._funcT
  r;  r   r  r{   r  r  r  r  r?  r   r)   rh   rF  s       r   test_w_only_required&Test_fromFunction.test_w_only_requiredR
  s    	 u%&&(d<01E7;d:./%9j)2.i$/h.r   c                 L   S	S jnU R                  U5      nUR                  5       nU R                  [        US   5      S/5        U R                  [        US   5      / 5        U R                  US   SS05        U R                  US   S 5        U R                  US   S 5        g )
NrB   c                     gr7  r   rX  s    r   rC  0Test_fromFunction.test_w_optional.<locals>._funca
  r;  r   r  r{   r  r  r  r  rB   rZ  rF  s       r   test_w_optional!Test_fromFunction.test_w_optional_
  s    	 u%&&(d<01E7;d:./4j)E5>:i$/h.r   c                 D   S	S jnU R                  USS9nUR                  5       nU R                  [        US   5      / 5        U R                  [        US   5      / 5        U R                  US   0 5        U R                  US   S 5        U R                  US   S 5        g )
Nc                     gr7  r   r   s    r   rC  5Test_fromFunction.test_w_optional_self.<locals>._funcu
  r;  r   r  )imlevelr  r  r  r  r  r`  rZ  rF  s       r   test_w_optional_self&Test_fromFunction.test_w_optional_selfl
  s    	 ua0&&(d<0126d:./4j)2.i$/h.r   c                 B   S nU R                  U5      nUR                  5       nU R                  [        US   5      / 5        U R                  [        US   5      / 5        U R                  US   0 5        U R                  US   S5        U R                  US   S 5        g )Nc                      gr7  r   )r   s    r   rC  /Test_fromFunction.test_w_varargs.<locals>._func
  r;  r   r  r  r  r  r   r  rZ  rF  s       r   test_w_varargs Test_fromFunction.test_w_varargs
  s    	 u%&&(d<0126d:./4j)2.i&1h.r   c                 B   S nU R                  U5      nUR                  5       nU R                  [        US   5      / 5        U R                  [        US   5      / 5        U R                  US   0 5        U R                  US   S 5        U R                  US   S5        g )Nc                      gr7  r   )r   s    r   rC  .Test_fromFunction.test_w_kwargs.<locals>._func
  r;  r   r  r  r  r  r  r   rZ  rF  s       r   test_w_kwargsTest_fromFunction.test_w_kwargs
  s    	 u%&&(d<0126d:./4j)2.i$/h.r   c                 R    SS jnU R                  U5      nUR                  5       nU R                  [        US   5      SS/5        U R                  [        US   5      S/5        U R                  US   SS05        U R                  US   S	5        U R                  US
   S5        g )NrC   c                     gr7  r   )r{   rB   r   r   s       r   rC  3Test_fromFunction.test_full_spectrum.<locals>._func
  r;  r   r  r{   rB   r  r  r  r   r  r   rC   rZ  rF  s       r   test_full_spectrum$Test_fromFunction.test_full_spectrum
  s     	
 u%&&(d<01E5>Bd:./%9j)E5>:i&1h.r   r   N)r    r!   r"   r#   r?  rG  rN  rT  r[  ra  rg  rl  rq  rw  r$   r   r   r   r=  r=  '
  s4    )/"
1:///(///r   r=  c                   ,    \ rS rSrS rS rS rS rSrg)Test_fromMethodi
  c                     SSK Jn  U" U0 UD6$ )Nr   )
fromMethod)r(   r|  )r+   r   r   r|  s       r   r?  Test_fromMethod._callFUT
  s    74&2&&r   c                 n    " S S5      nU R                  UR                  5      nU R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR
                  S 5        U R                  [        UR                  5       5      / 5        UR                  5       nU R                  [        US   5      / 5        U R                  [        US   5      / 5        U R                  US   0 5        U R                  US   S 5        U R                  US	   S 5        g )
Nc                       \ rS rSrS rSrg))Test_fromMethod.test_no_args.<locals>.Fooi
  c                     gr7  r   r   s    r   rB   -Test_fromMethod.test_no_args.<locals>.Foo.bar
  r;  r   r   Nr  r   r   r   r%   r  
  r  r   r%   rB   r8  r  r  r  r  r  )	r?  rB   r)   re   rg   r   rh   ri   r   r+   r%   rq  r!  s       r   test_no_argsTest_fromMethod.test_no_args
  s    	 	 sww')51+6))40f779:B?&&(d<0126d:./4j)2.i$/h.r   c                 n    " S S5      nU R                  UR                  5      nUR                  5       nU R                  [	        US   5      SS/5        U R                  [	        US   5      S/5        U R                  US   SS05        U R                  US	   S
5        U R                  US   S5        g )Nc                        \ rS rSr SS jrSrg)/Test_fromMethod.test_full_spectrum.<locals>.Fooi
  c                     gr7  r   )r+   r{   rB   r   r   s        r   rB   3Test_fromMethod.test_full_spectrum.<locals>.Foo.bar
  r;  r   r   Nrv  r  r   r   r   r%   r  
  s
    $r   r%   r  r{   rB   r  r  rC   r  r   r  r   )r?  rB   r   r)   rh   r  s       r   rw  "Test_fromMethod.test_full_spectrum
  s    	 	 sww'&&(d<01E5>Bd:./%9j)E5>:i&1h.r   c                 L   S nU R                  U5      nU R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S 5        U R                  [        UR                  5       5      / 5        UR                  5       nU R                  [        US   5      / 5        U R                  [        US   5      / 5        U R                  US   0 5        U R                  US   S 5        U R                  US   S 5        g )	Nc                      gr7  r   r   r   r   r{   .Test_fromMethod.test_w_non_method.<locals>.foo
  r;  r   r{   r8  r  r  r  r  r  rE  )r+   r{   rq  r!  s       r   test_w_non_method!Test_fromMethod.test_w_non_method
  s    	 s#)51+6))40f779:B?&&(d<0126d:./4j)2.i$/h.r   r   N)	r    r!   r"   r#   r?  r  rw  r  r$   r   r   r   rz  rz  
  s    '/$/ /r   rz  c                        \ rS rSrS rS rSrg)r  i
  c                     / U l         g r   r  r   s    r   r  DummyDependent.__init__
  s	    r   c                 :    U R                   R                  U5        g r   )r  r  )r+   originally_changeds     r   r  DummyDependent.changed
  s    /0r   r  N)r    r!   r"   r#   r  r  r$   r   r   r   r  r  
  s    1r   r  c                     SSK Jn  [        U SS 5      n[        U SS 5      nUb)  [        U[	        U5      5      (       a  X2:  d  U" S5      eg g g )Nr   r  r{   rB   r  )rU  r  r*   
isinstancerN  )r   r  r{   rB   s       r   r   r   
  sU    1
#ud
#C
#ud
#C
:c4955
 yABB  6r   c                 j    SSK Jn  [        U SS 5      (       a  [        U SS 5      (       d  U" S5      eg g )Nr   r  r{   rB   r  )rU  r  r*   )r   r  s     r   r  r  
  s7    1sE4  eT)B)B)** *C r   c                   &    \ rS rSrS rS rS rSrg)r   i   c                     Xl         U Vs0 s H  o3[        X5      _M     snU l        UR                  5        H  u  p4[	        XU5        M     g s  snf r   )rg  r*   
to_restoreitemssetattr)r+   rg  r   keyr  s        r   r  _Monkey.__init__  sG    @BC 44C((*JCF' % Ds   Ac                     U $ r   r   r   s    r   	__enter___Monkey.__enter__  s    r   c                 v    U R                   R                  5        H  u  pE[        U R                  XE5        M     g r   )r  r  r  rg  )r+   exc_typeexc_valexc_tbr  r  s         r   __exit___Monkey.__exit__  s)    ////1JCDKK, 2r   )rg  r  N)r    r!   r"   r#   r  r  r  r$   r   r   r   r   r      s    (-r   r   c                   $    \ rS rSrSrS rS rSrg)TestTypeAnnotationsi  z*Test using Interfaces in type annotations.c                    ^^ SSK Jn  SSK Jn  SSKJn   " S SU5      m " S SU5      m " UU4S	 jS
5      nU R                  UR                  UT   UTT4   S.5        g )Nr   OptionalUnionr  c                       \ rS rSrSrg)+TestTypeAnnotations.test___or__.<locals>.I1i  r   Nr   r   r   r   rh  r    r6  r   rh  c                       \ rS rSrSrg)+TestTypeAnnotations.test___or__.<locals>.I2i  r   Nr   r   r   r   r_  r    r6  r   r_  c                   >   > \ rS rSr%  Y S-  \S'    Y  Y-  \S'   Srg)*TestTypeAnnotations.test___or__.<locals>.Bi  Nr  r  r   r    r!   r"   r#   rJ  r$   )rh  r_  s   r   rL  r    s    DyLBwJr   rL  r|  typingr  r  r   r  r)   rJ  )r+   r  r  r  rL  rh  r_  s        @@r   test___or__TestTypeAnnotations.test___or__  s[    # ,	 		 		 	 	Xb\b"fF	Hr   c                    ^^ SSK Jn  SSK Jn  SSKJn   " S SU5      m " S S5      m " UU4S	 jS
5      nU R                  UR                  UT   UTT4   S.5        g )Nr   r  r  r  c                       \ rS rSrSrg),TestTypeAnnotations.test___ror__.<locals>.I1i,  r   Nr   r   r   r   rh  r  ,  r6  r   rh  c                       \ rS rSrSrg)+TestTypeAnnotations.test___ror__.<locals>.Ai/  r   Nr   r   r   r   rO  r  /  r6  r   rO  c                   >   > \ rS rSr% S Y-  \S'    Y  Y-  \S'   Srg)+TestTypeAnnotations.test___ror__.<locals>.Bi2  Nr  r  r   r  )rO  rh  s   r   rL  r  2  s    byL2vIr   rL  r|  r  )r+   r  r  r  rL  rO  rh  s        @@r   test___ror__ TestTypeAnnotations.test___ror__&  sY    # ,	 		 		 	 	Xb\aeE	Gr   r   N)r    r!   r"   r#   rf   r  r  r$   r   r   r   r  r    s    4H&Gr   r  ) rf   unittestzope.interface.testsr   r   r   r   r   r  TestCaser   r:   rW   r   r   r   r   rV  r  r  r  r"  rc  r  r  r=  rz  r  r   r  r   r  r   r   r   <module>r     s  $  ( 1 6 2 (CX&& CB!9x(( !9HG(8$$ G(T9H$5$5 9D	!!	!15< 15hh5 h5V1
? 1
h			"72H4E4E "7Jf
** f
Ru	1(++ u	1pP1X&& P1f$$-\ $-N]0. ]0@@/)) @/F7/h'' 7/t1 1
C+- - 'G(++ 'Gr   