
    OfCk                       d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ  e            Z G d dej	                  Z
 G d	 d
ej	                  Z G d dej	                  Z G d dej	                  Z G d deee          Z G d de          Z G d de          Z G d de          Z G d deeeej	                  Z G d deej	                  Z G d dej	                  Z G d dej	                  Z G d d ej	                  Z G d! d"e          Z G d# d$e          Z G d% d&ej	                  Z G d' d(ej	                  Z G d) d*          Zd+ Zd, Z G d- d.          Z G d/ d0ej	                  ZdS )1zTest Interface implementation
    N)CleanUp)MissingSomeAttrs)OptimizationTestMixin)SubclassableMixinc                       e Zd Zd Zd ZdS )Test_invariantc                     ddl m} ddl m d  G fdd          }|                     t	          ||d           dgi           d S )Nr   TAGGED_DATA	invariantc                      t                      NNotImplementedErrorargskws     U/var/www/html/env/lib/python3.11/site-packages/zope/interface/tests/test_interface.py_checkz,Test_invariant.test_w_single.<locals>._check1       %'''    c                   &    e Zd Z             dS ))Test_invariant.test_w_single.<locals>.FooN__name__
__module____qualname__)r   r   s   r   Foor   4   s!        Ifr   r   
invariantszope.interface.interfacer   r   assertEqualgetattr)selfr   r   r   r   s      @@r   test_w_singlezTest_invariant.test_w_single-   s    888888666666	( 	( 	(	 	 	 	 	 	 	 	 	 	 	 	k488&1	3 	3 	3 	3 	3r   c                     ddl m} ddl m d d  G fdd          }|                     t	          ||d           dgi           d S )	Nr   r
   r   c                      t                      r   r   r   s     r   r   z.Test_invariant.test_w_multiple.<locals>._check>   r   r   c                      t                      r   r   r   s     r   _another_checkz6Test_invariant.test_w_multiple.<locals>._another_checkA   r   r   c                   <    e Zd Z                         dS )+Test_invariant.test_w_multiple.<locals>.FooNr   )r*   r   r   s   r   r   r,   D   s1        IfIn%%%%%r   r   r    r!   )r%   r   r   r*   r   r   s      @@@r   test_w_multiplezTest_invariant.test_w_multiple:   s    888888666666	( 	( 	(	( 	( 	(	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	k488&(@A	C 	C 	C 	C 	Cr   N)r   r   r   r&   r-    r   r   r   r   +   s7        3 3 3C C C C Cr   r   c                        e Zd Zd Zd Zd ZdS )Test_taggedValuec                     ddl m} ddl m  G fdd          }|                     t	          ||d           ddgi           d S )Nr   r
   taggedValuec                   *    e Zd Z  ddg           dS )+Test_taggedValue.test_w_single.<locals>.FoobarbazNr   r2   s   r   r   r5   R   s%        Kw'''''r   r   r6   r7   r"   r   r3   r#   r$   r%   r   r   r3   s      @r   r&   zTest_taggedValue.test_w_singleN   s    888888888888	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	k488%)	+ 	+ 	+ 	+ 	+r   c                     ddl m} ddl m  G fdd          }|                     t	          ||d           dgdd           d S )	Nr   r
   r2   c                   B    e Zd Z  ddg             dd           dS )-Test_taggedValue.test_w_multiple.<locals>.Foor6   r7   quxspamNr   r2   s   r   r   r<   \   s7        Kw'''Kv&&&&&r   r   r7   r>   r6   r=   r8   r9   s      @r   r-   z Test_taggedValue.test_w_multipleX   s    888888888888	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	k488"'88	: 	: 	: 	: 	:r   c                     ddl m} ddl m  G fdd          }|                     t	          ||d           ddd           d S )	Nr   r
   r2   c                   Z    e Zd Z  ddg             dd             dd           dS )9Test_taggedValue.test_w_multiple_overwriting.<locals>.Foor6   r7   r=   r>   frobNr   r2   s   r   r   rB   g   sI        Kw'''Kv&&&Kv&&&&&r   r   rC   r>   r?   r8   r9   s      @r   test_w_multiple_overwritingz,Test_taggedValue.test_w_multiple_overwritingc   s    888888888888	' 	' 	' 	' 	' 	' 	' 	' 	' 	'
 	k488!'77	9 	9 	9 	9 	9r   N)r   r   r   r&   r-   rD   r.   r   r   r0   r0   L   sA        + + +	: 	: 	:
9 
9 
9 
9 
9r   r0   c                   b    e Zd ZdZd ZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd ZdS )ElementTests	AnElementc                     ddl m} |S )Nr   )Element)r"   rI   )r%   rI   s     r   _getTargetClasszElementTests._getTargetClasst   s    444444r   Nc                 N    || j         } |                                 |          S r   )DEFAULT_NAMErJ   )r%   names     r   _makeOnezElementTests._makeOnex   s+    <$D%t##%%d+++r   c                    |                                  }|                     |j        | j                   |                     |                                | j                   |                     |j        d           |                     |                                d           |                     t          |                                          g            d S )N )	rN   r#   r   rL   getName__doc__getDoclistgetTaggedValueTagsr%   elements     r   test_ctor_defaultszElementTests.test_ctor_defaults}   s    --//)4+<===**D,=>>>"---))2...g88::;;R@@@@@r   c                     |                      d          }|                     |j        d            |                     |j        d           d S )Nz
An Element)rN   r#   r   rR   rV   s     r   test_ctor_no_doc_space_in_namez+ElementTests.test_ctor_no_doc_space_in_name   sJ    ----)4000,77777r   c                 p    |                                  }|                     t          |j        d           d S Nnonesuch)rN   assertRaisesKeyErrorgetTaggedValuerV   s     r   test_getTaggedValue_missz%ElementTests.test_getTaggedValue_miss   s0    --//(G$:JGGGGGr   c                 0   |                                  }|                     g t          |                                                     |                    dd           |                     dgt          |                                                     d S Nfoor6   )rN   r#   rT   getDirectTaggedValueTagssetTaggedValuerV   s     r   test_getDirectTaggedValueTagsz*ElementTests.test_getDirectTaggedValueTags   s    --//T'"B"B"D"DEEFFFue,,,%$w'G'G'I'I"J"JKKKKKr   c                     |                                  }|                     |                    d          d            d S r\   rN   r#   queryTaggedValuerV   s     r   test_queryTaggedValue_missz'ElementTests.test_queryTaggedValue_miss   s9    --//11*==tDDDDDr   c                     |                                  }|                     |                    dd          d           d S Nr]   r6   ri   rV   s     r   $test_queryTaggedValue_miss_w_defaultz1ElementTests.test_queryTaggedValue_miss_w_default   s;    --//11*eDDeLLLLLr   c                 p    |                                  }|                     t          |j        d           d S r\   )rN   r^   r_   getDirectTaggedValuerV   s     r   test_getDirectTaggedValue_missz+ElementTests.test_getDirectTaggedValue_miss   s0    --//(G$@*MMMMMr   c                     |                                  }|                     |                    d          d            d S r\   rN   r#   queryDirectTaggedValuerV   s     r    test_queryDirectTaggedValue_missz-ElementTests.test_queryDirectTaggedValue_miss   s9    --//77
CCTJJJJJr   c                     |                                  }|                     |                    dd          d           d S rm   rs   rV   s     r   *test_queryDirectTaggedValue_miss_w_defaultz7ElementTests.test_queryDirectTaggedValue_miss_w_default   sF    --//**:u==u	
 	
 	
 	
 	
r   c                 j   |                                  }|                    dd           |                     t          |                                          dg           |                     |                    d          d           |                     |                    d          d           d S rc   )rN   rf   r#   rT   rU   r`   rj   rV   s     r   test_setTaggedValuez ElementTests.test_setTaggedValue   s    --//ue,,,g88::;;eWEEE//66>>>11%88%@@@@@r   c                 ^    ddl m} ddlm} |                                 } |||           d S )Nr   )IElementverifyObject)zope.interface.interfacesr{   zope.interface.verifyr}   rN   )r%   r{   r}   rW   s       r   test_verifieszElementTests.test_verifies   sK    666666666666--//Xw'''''r   r   )r   r   r   rL   rJ   rN   rX   rZ   ra   rg   rk   rn   rq   ru   rw   ry   r   r.   r   r   rF   rF   p   s        L  , , , ,
A A A8 8 8
H H HL L LE E EM M MN N NK K K
 
 
A A A( ( ( ( (r   rF   c                   *    e Zd Zd ZeZd Zd Zd ZdS )GenericSpecificationBaseTestsc                     ddl m} |S )Nr   )SpecificationBasePy)r"   r   )r%   r   s     r   _getFallbackClassz/GenericSpecificationBaseTests._getFallbackClass   s    @@@@@@""r   c                 :     |                                              S r   rJ   r%   s    r   rN   z&GenericSpecificationBaseTests._makeOne   s    %t##%%'''r   c                    ddl m} ddlm |                                 }fd}t          ||          5  |                     |                    t                                           d d d            d S # 1 swxY w Y   d S )Nr   	interface_emptyc                     S r   r.   objr   s    r   _providedByzGGenericSpecificationBaseTests.test_providedBy_miss.<locals>._providedBy       Mr   
providedBy)	zope.interfacer   zope.interface.declarationsr   rN   _MonkeyassertFalser   object)r%   r   sbr   r   s       @r   test_providedBy_missz2GenericSpecificationBaseTests.test_providedBy_miss   s    ,,,,,,666666]]__	 	 	 	 	 Y;777 	6 	6R]]68844555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6   5A::A>A>c                    ddl m} ddlm |                                 }fd}t          ||          5  |                     |                    t                                           d d d            d S # 1 swxY w Y   d S )Nr   r   r   c                     S r   r.   r   s    r   _implementedByzMGenericSpecificationBaseTests.test_implementedBy_miss.<locals>._implementedBy   r   r   implementedBy)	r   r   r   r   rN   r   r   r   r   )r%   r   r   r   r   s       @r   test_implementedBy_missz5GenericSpecificationBaseTests.test_implementedBy_miss   s    ,,,,,,666666]]__	 	 	 	 	 Yn=== 	9 	9R--fhh77888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9r   N)r   r   r   r   rJ   rN   r   r   r.   r   r   r   r      sW        # # # (O( ( (	6 	6 	6	9 	9 	9 	9 	9r   r   c                       e Zd Zd ZdS )SpecificationBaseTestsc                     ddl m} |S )Nr   )SpecificationBase)r"   r   )r%   r   s     r   rJ   z&SpecificationBaseTests._getTargetClass   s    >>>>>>  r   Nr   r   r   rJ   r.   r   r   r   r      s#        ! ! ! ! !r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )SpecificationBasePyTestsc                     |                                  }i |_        |                     |                    t	                                           d S r   rN   _impliedr   isOrExtendsr   r%   r   s     r   test___call___missz+SpecificationBasePyTests.test___call___miss   @    ]]__1122222r   c                     |                                  }t                      }|i i|_        |                      ||                     d S r   rN   r   r   
assertTruer%   r   testings      r   test___call___hitz*SpecificationBasePyTests.test___call___hit   C    ]]__((m7$$$$$r   c                     |                                  }i |_        |                     |                    t	                                           d S r   r   r   s     r   test_isOrExtends_missz.SpecificationBasePyTests.test_isOrExtends_miss   r   r   c                     |                                  }t                      }|i i|_        |                      ||                     d S r   r   r   s      r   test_isOrExtends_hitz-SpecificationBasePyTests.test_isOrExtends_hit   r   r   c                 "   ddl m} |                                  G fdd          fd}t          ||          5  |                                         t                                           d d d            d S # 1 swxY w Y   d S )Nr   r   c                       e Zd Z i iZdS )>SpecificationBasePyTests.test_implementedBy_hit.<locals>._DeclNr   r   r   r   r   s   r   _Declr             BxHHHr   r   c                                  S r   r.   r   r   s    r   r   zGSpecificationBasePyTests.test_implementedBy_hit.<locals>._implementedBy      577Nr   r   )r   r   rN   r   r   r   r   )r%   r   r   r   r   s      @@r   test_implementedBy_hitz/SpecificationBasePyTests.test_implementedBy_hit  s   ,,,,,,]]__	  	  	  	  	  	  	  	  	  	 	 	 	 	 	 Yn=== 	8 	8OOB,,VXX66777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8   5BBBc                 "   ddl m} |                                  G fdd          fd}t          ||          5  |                                         t                                           d d d            d S # 1 swxY w Y   d S )Nr   r   c                       e Zd Z i iZdS );SpecificationBasePyTests.test_providedBy_hit.<locals>._DeclNr   r   s   r   r   r     r   r   r   c                                  S r   r.   r   s    r   r   zASpecificationBasePyTests.test_providedBy_hit.<locals>._providedBy  r   r   r   )r   r   rN   r   r   r   r   )r%   r   r   r   r   s      @@r   test_providedBy_hitz,SpecificationBasePyTests.test_providedBy_hit  s	   ,,,,,,]]__	  	  	  	  	  	  	  	  	  	 	 	 	 	 	 Y;777 	5 	5OOBMM&((33444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r   N)	r   r   r   r   r   r   r   r   r   r.   r   r   r   r      sn        3 3 3
% % %3 3 3
% % %8 8 85 5 5 5 5r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )!NameAndModuleComparisonTestsMixinc                 .    |                      dd          S )Nab)rN   r   s    r   _makeOneToComparez3NameAndModuleComparisonTestsMixin._makeOneToCompare  s    }}S#&&&r   c                    dd l }|                                 }t          ||          }t          |d|z            } G fdd           G d d          } G d d          }|                      |            j        d	           |                      |            j        d	           |                     t                    5  t           |            d
           d d d            n# 1 swxY w Y   |                     t                    5  t           |            d           d d d            n# 1 swxY w Y   ||fD ].}|                      | |                      t                     / G d d          }	| 
                     || |	                                 |                      | |	                      t                      G d d          }
|                      | |
                      t                     |                     t                    5   || |
                       d d d            n# 1 swxY w Y    G d dt                    }|_        |                     |          5  t           |            d
           d d d            n# 1 swxY w Y   |                     |          5  t           |            d           d d d            n# 1 swxY w Y   ||fD ]}|                     |          5   || |                       d d d            n# 1 swxY w Y   |                     |          5   | |                       d d d            n# 1 swxY w Y   d S )Nr   z__%s__c                       e Zd ZeZ fdZdS )aNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissingc                 |    	 t                               | |          S # t          $ r j        } ||          w xY wr   )r   __getattribute__AttributeErrorExc)r%   rM   excRaisesErrorOnMissings      r   r   zrNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissing.__getattribute__0  sN    $!224>>>% $ $ $.2C#d))O$s    ;N)r   r   r   r   r   r   )r   s   r   r   r   -  s3         C$ $ $ $ $ $ $r   r   c                   *    e Zd Zd Zed             ZdS )`NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModulec                     d| _         d S Nrd   )r   r   s    r   __init__ziNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__init__8  s     %r   c                     t           r   )r   r   s    r   r   zkNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__module__;  s    $$r   N)r   r   r   r   propertyr.   r   r   RaisesErrorOnModuler   7  s>        & & & % % X% % %r   r   c                       e Zd Zd ZdS )^NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnNamec                     d| _         d S r   r   r   s    r   r   zgNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnName.__init__@  s    "'r   Nr   r   r   r   r.   r   r   RaisesErrorOnNamer   ?  s#        ( ( ( ( (r   r   rd   r   r   c                   (    e Zd Zd ZeZeZeZeZeZdS )`NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparisonc                     dS NTr.   )r%   others     r   __eq__zgNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparison.__eq__Q      tr   N	r   r   r   r   __lt____le____gt____ge____ne__r.   r   r   AllowsAnyComparisonr   P  s6          FFFFFFFr   r   c                   &    e Zd ZdZeZeZeZeZeZdS )_NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsNoComparisonNr   r.   r   r   AllowsNoComparisonr   ]  s,        FFFFFFFFr   r   c                       e Zd ZdS )XNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.MyExceptionNr   r.   r   r   MyExceptionr   j          Dr   r   )operatorr   r$   r#   r   r   r^   r   assertIsNotImplementedr   	TypeError	Exceptionr   )r%   rM   r   ibopmethr   r   clsr   r   r   r   s               @r   !__check_NotImplemented_comparisonzCNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison!  s    	##%%Xt$$r8d?++
	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$	% 	% 	% 	% 	%"6 	% 	% 	%	( 	( 	( 	( 	( 4 	( 	( 	( 	,,..7???**,,7???~.. 	9 	9''))<888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9~.. 	5 	5%%''444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 '(99 	7 	7CMM$$ssuu++~6666
	 	 	 	 	"6 	 	 	 	2224455666dd..0011>BBB	 	 	 	 	 	 	 	 	dd--//00.AAAy)) 	) 	)Br%%''(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)	 	 	 	 	) 	 	 	 $/ {++ 	9 	9''))<888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9{++ 	5 	5%%''444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 '(99 	 	C"";//  2ssuu              "";//  SSUU              	 	s~   C--C14C1D77D;>D;)I

IIJ))J-0J-	K..K25K2L55L9	<L9	M55M9	<M9	c                 0    |                      d           d S )NltC_NameAndModuleComparisonTestsMixin__check_NotImplemented_comparisonr   s    r   test__lt__NotImplementedz:NameAndModuleComparisonTestsMixin.test__lt__NotImplementedz      ..t44444r   c                 0    |                      d           d S )Nler  r   s    r   test__le__NotImplementedz:NameAndModuleComparisonTestsMixin.test__le__NotImplemented}  r  r   c                 0    |                      d           d S )Ngtr  r   s    r   test__gt__NotImplementedz:NameAndModuleComparisonTestsMixin.test__gt__NotImplemented  r  r   c                 0    |                      d           d S )Nger  r   s    r   test__ge__NotImplementedz:NameAndModuleComparisonTestsMixin.test__ge__NotImplemented  r  r   N)	r   r   r   r   r  r  r  r  r  r.   r   r   r   r     sr        ' ' 'W W Wr5 5 55 5 55 5 55 5 5 5 5r   r   c                   :    e Zd Zd Zd Zd
dZd Zd Zd Zd	 Z	dS )InterfaceBaseTestsMixinc                     t           r   r   r   s    r   rJ   z'InterfaceBaseTestsMixin._getTargetClass  s    !!r   c                     ddl m} |S )Nr   )InterfaceBasePy)r"   r  )r%   r  s     r   r   z)InterfaceBaseTestsMixin._getFallbackClass  s    <<<<<<r   FNc                 `     G fdd|                                            } |||          S )Nc                        e Zd Zd Z fdZdS ),InterfaceBaseTestsMixin._makeOne.<locals>.IBc                      ||           S r   r.   )r%   conforms     r   _call_conformz:InterfaceBaseTestsMixin._makeOne.<locals>.IB._call_conform  s    wt}}$r   c                     S r   r.   )r%   r   object_should_provides     r   r   z7InterfaceBaseTestsMixin._makeOne.<locals>.IB.providedBy  s	    ,,r   N)r   r   r   r"  r   )r$  s   r   IBr    s=        % % %- - - - - - -r   r%  r   )r%   r$  rM   moduler%  s    `   r   rN   z InterfaceBaseTestsMixin._makeOne  sW    	- 	- 	- 	- 	- 	- 	-%%'' 	- 	- 	- r$r   c                     |                      d          }t                       G fdd          }|                      | |                                 d S )NFc                       e Zd Z fdZdS )UInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adaptedc                     S r   r.   )r%   iface	conformeds     r   __conform__zaInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adapted.__conform__  s	      r   Nr   r   r   r-  )r,  s   r   _Adaptedr)    s.        ! ! ! ! ! ! !r   r/  )rN   r   r   )r%   r  r/  r,  s      @r   +test___call___w___conform___returning_valuezCInterfaceBaseTestsMixin.test___call___w___conform___returning_value  sy    ]]5!!HH		! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	bbnni00000r   c                     |                      d          }||                                 f}t                      }t                      }|                      |||          |           d S )NF)rN   rJ   r   r   )r%   r  __traceback_info__adapted	alternates        r   7test___call___wo___conform___ob_no_provides_w_alternatezOInterfaceBaseTestsMixin.test___call___wo___conform___ob_no_provides_w_alternate  sb    ]]5!!!5!5!7!77((HH	bb),,i88888r   c                    |                      d          }|                     t                    5 } |t                                 d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NFzCould not adapt)rN   r^   r  r   assertInstr	exception)r%   r  r   s      r   7test___call___w___conform___ob_no_provides_wo_alternatezOInterfaceBaseTestsMixin.test___call___w___conform___ob_no_provides_wo_alternate  s    ]]5!!y)) 	SBvxxLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'S]););<<<<<s   AAAc                 X    t          j        | |                                 d           d S )Nr-  )expected_missing)r   test_raisesrN   r   s    r   6test___call___w_no_conform_catches_only_AttributeErrorzNInterfaceBaseTestsMixin.test___call___w_no_conform_catches_only_AttributeError  s5    $$--//M	
 	
 	
 	
 	
 	
r   )FNN)
r   r   r   rJ   r   rN   r0  r5  r:  r>  r.   r   r   r  r    s        " " "  
	  	  	  	 1 1 19 9 9= = =
 
 
 
 
r   r  c                       e Zd Zd ZdS )InterfaceBaseTestsc                     ddl m} |S )Nr   )InterfaceBase)r"   rB  )r%   rB  s     r   rJ   z"InterfaceBaseTests._getTargetClass      ::::::r   Nr   r.   r   r   r@  r@    s#            r   r@  c                   .    e Zd Zej        Zd Zd Zd ZdS )InterfaceBasePyTestsc                     |                      d          } G d d          } |            }|                      ||          |           d S )NTc                       e Zd Zd ZdS )SInterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adaptedc                     d S r   r.   r%   r+  s     r   r-  z_InterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adapted.__conform__  r   r   Nr.  r.   r   r   r/  rH    #            r   r/  )rN   r   )r%   r  r/  r3  s       r   ,test___call___w___conform___miss_ob_provideszAInterfaceBasePyTests.test___call___w___conform___miss_ob_provides  sj    ]]4  	 	 	 	 	 	 	 	 (**bbkk7+++++r   c                     |                      d          }t                      }|                     |                    |          |           d S r   )rN   r   r   	__adapt__)r%   r  r3  s      r   test___adapt___ob_providesz/InterfaceBasePyTests.test___adapt___ob_provides  sB    ]]4  ((bll7++W55555r   c                 J   ddl m} |                     d          }t                      }g fd}d }t	          |||g          5  |                     |                    |          |           |                     ||fg           d d d            d S # 1 swxY w Y   d S )Nr   r   Fc                 6                         | |f           d S r   append)r+  r   _misseds     r   
_hook_misszQInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_miss  s    NNE3<(((((r   c                     |S r   r.   r+  r   s     r   	_hook_hitzPInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_hit  s    Jr   adapter_hooks)r   r   rN   r   r   r   rN  r#   )r%   r   r  r3  rU  rX  rT  s         @r   (test___adapt___ob_no_provides_uses_hooksz=InterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks  s   ,,,,,,]]5!!((	) 	) 	) 	) 	)	 	 	 Yz9.EFFF 	7 	7MM",,w//999WG}o666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   ABBBN)	r   r   r   r  r   rJ   rL  rO  r[  r.   r   r   rE  rE    sK         .?O, , ,6 6 6
7 7 7 7 7r   rE  c                   r    e Zd Zd ZefdZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )SpecificationTestsc                     ddl m} |S )Nr   )Specification)r"   r_  )r%   r_  s     r   rJ   z"SpecificationTests._getTargetClass  rC  r   c                     |t           u r |                                             S  |                                 |          S r   )_markerrJ   )r%   basess     r   rN   zSpecificationTests._makeOne  sC    G)4''))+++%t##%%e,,,r   c                    ddl m} |                                 }|                     |j        d           |                     t          |j                  d           |                     ||j        v            |                     ||j        v            |                     t          |j                  d           d S )Nr   	Interfacer.      )	r"   re  rN   r#   	__bases__lenr   r   
dependents)r%   re  specs      r   	test_ctorzSpecificationTests.test_ctor  s    666666}},,,T]++Q///-...	T]2333T_--q11111r   c                    |                                  }t                      }|                    |           |                     t	          |j                  d           |                     |j        |         d           d S N   )rN   DummyDependent	subscriber#   rh  ri  r%   rj  deps      r   test_subscribe_first_timez,SpecificationTests.test_subscribe_first_time   so    }}sT_--q111-q11111r   c                     |                                  }t                      }|                    |           |                    |           |                     |j        |         d           d S )Nrf  )rN   ro  rp  r#   ri  rq  s      r   test_subscribe_againz'SpecificationTests.test_subscribe_again  sa    }}ss-q11111r   c                     |                                  }t                      }|                     t          |j        |           d S r   )rN   ro  r^   r_   unsubscriberq  s      r   test_unsubscribe_missz(SpecificationTests.test_unsubscribe_miss  s;    }}(D$4c:::::r   c                 l   |                                  }t                      }|                    |           |                    |           |                    |           |                     |j        |         d           |                    |           |                     ||j        v            d S rm  )rN   ro  rp  rw  r#   ri  r   rq  s      r   test_unsubscribez#SpecificationTests.test_unsubscribe  s    }}ss-q111/00000r   c                    ddl m} |                                 }t                      }|                    |            G d d|          } G d d|          }|f|_        |                     |j        |g           |                     |j        |         d           |f|_        |                     |j        	                    |          d            |                     |j        |         d           d S )Nr   rd  c                       e Zd ZdS )YSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.IFooNr   r.   r   r   IFoor}  #  r   r   r~  c                       e Zd ZdS )YSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.IBarNr   r.   r   r   IBarr  &  r   r   r  rn  )
r"   re  rN   ro  rp  rg  r#   _changedri  get)r%   re  rj  rr  r~  r  s         r   8test___setBases_subscribes_bases_and_notifies_dependentszKSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents  s&   666666}}s	 	 	 	 	9 	 	 		 	 	 	 	9 	 	 	 v....222,,T22D999.22222r   c                    ddl m}  G d d|          }|                                 }d|_        d|j        |<   |                    |           |                     |j                   |                     ||j        v            d S )Nr   rd  c                       e Zd ZdS )JSpecificationTests.test_changed_clears_volatiles_and_implied.<locals>.IFooNr   r.   r   r   r~  r  3  r   r   r~  r   r.   )r"   re  rN   _v_attrsr   changedassertIsNoner   r%   re  r~  rj  s       r   )test_changed_clears_volatiles_and_impliedz<SpecificationTests.test_changed_clears_volatiles_and_implied0  s    666666	 	 	 	 	9 	 	 	 }} dT$-(((./////r   c                     ddl m}  G d d|          }|                     ||g          }|                     t	          |                                          |g           d S )Nr   rd  c                       e Zd ZdS )CSpecificationTests.test_interfaces_skips_already_seen.<locals>.IFooNr   r.   r   r   r~  r  @  r   r   r~  )r"   re  rN   r#   rT   
interfacesr  s       r   "test_interfaces_skips_already_seenz5SpecificationTests.test_interfaces_skips_already_seen=  s    666666	 	 	 	 	9 	 	 	 }}dD\**doo//004&99999r   c                     ddl m}  G d d|          }|                     |          }|                     |                    |d                     d S )Nr   rd  c                       e Zd ZdS )<SpecificationTests.test_extends_strict_wo_self.<locals>.IFooNr   r.   r   r   r~  r  I  r   r   r~  Tstrict)r"   re  rN   r   extendsr  s       r   test_extends_strict_wo_selfz.SpecificationTests.test_extends_strict_wo_selfF  s{    666666	 	 	 	 	9 	 	 	 }}T""d48899999r   c                     |                                  }|                     |                    |d                     d S )NTr  )rN   r   r  r%   rj  s     r   test_extends_strict_w_selfz-SpecificationTests.test_extends_strict_w_selfO  s9    }}d48899999r   c                     |                                  }|                     |                    |d                     d S )NFr  )rN   r   r  r  s     r   test_extends_non_strict_w_selfz1SpecificationTests.test_extends_non_strict_w_selfS  s7    }}T%8899999r   c                     |                                  }t                      }d|i|_        |                     |                    d          |u            d S r   )rN   r   r  r   r  )r%   rj  rd   s      r   test_get_hit_w__v_attrsz*SpecificationTests.test_get_hit_w__v_attrsW  sJ    }}hh3./////r   c                    ddl m ddl m}  G fdd|          } G fdd|          }|                     ||g          }|                     |                    d          |                    d          u            |                     |                    d	          |                    d	          u            d S )
Nr   	Attributerd  c                   &    e Zd Z  d          ZdS )CSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IFoord   N)r   r   r   rd   r  s   r   r~  r  a          )E""CCCr   r~  c                   &    e Zd Z  d          ZdS )CSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IBarr6   Nr   r   r   r6   r  s   r   r  r  d  r  r   r  rd   r6   )r"   r  re  rN   r   r  )r%   re  r~  r  rj  r  s        @r   "test_get_hit_from_base_wo__v_attrsz5SpecificationTests.test_get_hit_from_base_wo__v_attrs]  s   666666666666	# 	# 	# 	# 	# 	# 	#9 	# 	# 	#	# 	# 	# 	# 	# 	# 	#9 	# 	# 	# }}dD\**488E??:;;;488E??:;;;;;r   c           
         ddl m} ddl m} ddlm}  G d d|          } G d d          } G d	 d
|          } G d d|          } ||           G d d                      } G d d||          }	|                      ||	          j         ||	           ||          | ||           |t                    |f           d S )Nr   r   implementerrd  c                       e Zd ZdS )TSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IDefaultViewNameNr   r.   r   r   IDefaultViewNamer  u  r   r   r  c                       e Zd ZdS )KSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ContextNr   r.   r   r   Contextr  x  r   r   r  c                       e Zd ZdS )LSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.RDBModelNr   r.   r   r   RDBModelr  {  r   r   r  c                       e Zd ZdS )JSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IOtherNr   r.   r   r   IOtherr  ~  r   r   r  c                       e Zd ZdS )MSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.OtherBaseNr   r.   r   r   	OtherBaser            Dr   r  c                       e Zd ZdS )ISpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ModelNr   r.   r   r   Modelr    r   r   r  )r   r   r  r"   re  r#   __sro__r   )
r%   r   r  re  r  r  r  r  r  r  s
             r   'test_multiple_inheritance_no_interfacesz:SpecificationTests.test_multiple_inheritance_no_interfacesk  s    	>=====;;;;;;666666	 	 	 	 	y 	 	 		 	 	 	 	 	 	 		 	 	 	 	w 	 	 		 	 	 	 	Y 	 	 	 
V			 	 	 	 	 	 	 
			 	 	 	 	Iw 	 	 	 	M%  (e$$i((g&&f%%
	
 
	
 
	
 
	
 
	
r   N)r   r   r   rJ   ra  rN   rk  rs  ru  rx  rz  r  r  r  r  r  r  r  r  r  r.   r   r   r]  r]    s          % - - - -
2 2 22 2 22 2 2; ; ;
1 1 13 3 3&0 0 0: : :: : :: : :: : :0 0 0< < <'
 '
 '
 '
 '
r   r]  c                   :   e Zd Zd Z	 	 d5dZd Zd Zd Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Z d" Z!d# Z"d$ Z#d% Z$d& Z%d' Z&d( Z'd) Z(d* Z)d+ Z*d, Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0d2 Z1d3 Z2d4 Z3dS )6InterfaceClassTestsc                     ddl m} |S )Nr   InterfaceClass)r"   r  )r%   r  s     r   rJ   z#InterfaceClassTests._getTargetClass  s    ;;;;;;r   ITestr.   Nc                 D     |                                  |||||          S r   r   )r%   rM   rb  attrsrR   r   s         r   rN   zInterfaceClassTests._makeOne  s&    %t##%%dE5':NNNr   c                 6   |                                  } |d          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |                                d           d S )NITestingrP   r.   )rJ   r#   r   rR   rg  getBases)r%   klassinsts      r   rX   z&InterfaceClassTests.test_ctor_defaults  s    $$&&uZ  
333r***,,,"-----r   c                     |                                  }|                     t          |dt                      f           d S )Nr  )rJ   r^   r  r   )r%   r  s     r   test_ctor_bad_basesz'InterfaceClassTests.test_ctor_bad_bases  s9    $$&&)UJDDDDDr   c                    ddl m} ddl m} d } |dd           ||          d}|                                 } |d|	          }|                     |j        d           |                     |j        d           |                     |j        d
           |                     |                                |	                                           d S )Nr   r  fromFunctionc                      dS 	DOCSTRINGNr.   r.   r   r   _barzBInterfaceClassTests.test_ctor_w_attrs_attrib_methods.<locals>._bar        r   r   rP   rd   r6   r  r  r.   )
r"   r  r  rJ   r#   r   rR   rg  nameskeys)r%   r  r  r  ATTRSr  r  s          r    test_ctor_w_attrs_attrib_methodsz4InterfaceClassTests.test_ctor_w_attrs_attrib_methods  s    666666999999	 	 	 9UB''<%%
 
 $$&&uZu---
333r***,,,uzz||44444r   c                 \   di i}|                                  } |d|          }|                     |j        d           |                     |j        d           |                     |j        d           |                     t          |                                          g            d S )N
__locals__r  r  rP   r.   rJ   r#   r   rR   rg  rT   r  r%   r  r  r  s       r   test_ctor_attrs_w___locals__z0InterfaceClassTests.test_ctor_attrs_w___locals__  s    r"$$&&uZu---
333r***,,,djjll++R00000r   c                 \   di i}|                                  } |d|          }|                     |j        d           |                     |j        d           |                     |j        d           |                     t          |                                          g            d S )N__annotations__r  r  rP   r.   r  r  s       r   !test_ctor_attrs_w___annotations__z5InterfaceClassTests.test_ctor_attrs_w___annotations__  s    "B'$$&&uZu---
333r***,,,djjll++R00000r   c                 h   ddl m} d|i}|                                 } |d|          }|                     |j        d           |                     |j        d           |                     |j        d           |                     t          |                                          g            d S )Nr   )_decorator_non_returndropmer  r  rP   r.   )	r"   r  rJ   r#   r   rR   rg  rT   r  )r%   r  r  r  r  s        r   'test_ctor_attrs_w__decorator_non_returnz;InterfaceClassTests.test_ctor_attrs_w__decorator_non_return  s    BBBBBB01$$&&uZu---
333r***,,,djjll++R00000r   c                     ddl m} dt                      i}|                                 }|                     ||d|           d S )Nr   )InvalidInterfaceinvalidr  r  )zope.interface.exceptionsr  r   rJ   r^   )r%   r  r  r  s       r   #test_ctor_attrs_w_invalid_attr_typez7InterfaceClassTests.test_ctor_attrs_w_invalid_attr_type  sW    >>>>>>FHH%$$&&*E:UKKKKKr   c                     ddi}|                                  } |d|d          }|                     |j        d           d S )NrR   ATTRr  EXPLICIT)r  rR   )rJ   r#   rR   r  s       r   test_ctor_w_explicit___doc__z0InterfaceClassTests.test_ctor_w_explicit___doc__  sQ    F#$$&&uZujAAAz22222r   c                     |                                  }|                     t          |                                          |g           d S r   )rN   r#   rT   r  rJ  s     r   test_interfacesz#InterfaceClassTests.test_interfaces  sA    e..0011E7;;;;;r   c                     |                                  }|                      d|f          }|                     |                                |f           d S NISub)rb  )rN   r#   r  r%   r+  subs      r   test_getBasesz!InterfaceClassTests.test_getBases  sL    mmF5(m33%22222r   c                 ~    |                                  }|                     |                    |                     d S r   )rN   r   isEqualOrExtendedByrJ  s     r   !test_isEqualOrExtendedBy_identityz5InterfaceClassTests.test_isEqualOrExtendedBy_identity  s5    11%8899999r   c                     |                                  }|                      d|f          }|                     |                    |                     |                     |                    |                     d S r  )rN   r   r  r   r  s      r   !test_isEqualOrExtendedBy_subifacez5InterfaceClassTests.test_isEqualOrExtendedBy_subiface  sn    mmF5(m3311#66777007788888r   c                     |                      d          }|                      d          }|                     |                    |                     |                     |                    |                     d S )NOneAnother)rN   r   r  )r%   oneanothers      r   "test_isEqualOrExtendedBy_unrelatedz6InterfaceClassTests.test_isEqualOrExtendedBy_unrelated  sn    mmE""--	**0099:::44S99:::::r   c                 @   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    dg           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  zFInterfaceClassTests.test_names_w_all_False_ignores_bases.<locals>._bar  r  r   r   rP   r  r7   BazIBaser  IDerivedrb  r  Fallr"   r  r  rN   r#   sortedr  r%   r  r  r  
BASE_ATTRSDERIVED_ATTRSbasederiveds           r   $test_names_w_all_False_ignores_basesz8InterfaceClassTests.test_names_w_all_False_ignores_bases  s    666666999999	 	 	 9UB''<%%
 


 99UB''
 }}WJ}77--
4'-OO% 8 899E7CCCCCr   c                     ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     t          |                    d	
                    ddg           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  z@InterfaceClassTests.test_names_w_all_True_no_bases.<locals>._bar  r  r   r   rP   r  r  Tr  r6   rd   r  r%   r  r  r  r  r  s         r   test_names_w_all_True_no_basesz2InterfaceClassTests.test_names_w_all_True_no_bases  s    666666999999	 	 	 9UB''<%%
 
 mm%m((		d	 3 344uenEEEEEr   c                 B   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    g d           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  zFInterfaceClassTests.test_names_w_all_True_w_bases_simple.<locals>._bar"  r  r   r   rP   r  r7   r	  r
  r  r  r  Tr  r6   r7   rd   r  r  s           r   $test_names_w_all_True_w_bases_simplez8InterfaceClassTests.test_names_w_all_True_w_bases_simple  s    666666999999	 	 	 9UB''<%%
 


 99UB''
 }}WJ}77--
4'-OO7==T=**++-B-B-B	
 	
 	
 	
 	
r   c                 \   ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     t          |                    d                    g d           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._bar6  r  r   c                      dS r  r.   r.   r   r   _foozJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._foo9  r  r   r   rP   r  r	  rd   r7   r
  r  r  r  Tr  r  r  	r%   r  r  r  r"  r  r  r  r  s	            r   (test_names_w_all_True_bases_w_same_namesz<InterfaceClassTests.test_names_w_all_True_bases_w_same_names2  s   666666999999	 	 		 	 	 9UB''<%%
 


  <%%9UB''
 
 }}WJ}77--
4'-OOMMdM##% %&;&;&;	
 	
 	
 	
 	
r   c                 4   ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     t          |          g d           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  z/InterfaceClassTests.test___iter__.<locals>._barN  r  r   c                      dS r  r.   r.   r   r   r"  z/InterfaceClassTests.test___iter__.<locals>._fooQ  r  r   r   rP   r  r	  r#  r
  r  r  r  r  )r"   r  r  rN   r#   r  r$  s	            r   test___iter__z!InterfaceClassTests.test___iter__J  s    666666999999	 	 		 	 	 9UB''<%%
 


  <%%9UB''
 
 }}WJ}77--
4'-OO*?*?*?@@@@@r   c                 P   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    d|d         fg           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  zUInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases.<locals>._bard  r  r   r   rP   r  r7   r	  r
  r  r  r  Fr  r"   r  r  rN   r#   r  namesAndDescriptionsr  s           r   3test_namesAndDescriptions_w_all_False_ignores_baseszGInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases`  s    666666999999	 	 	 9UB''<%%
 


 99UB''
 }}WJ}77--
4'-OO7//E/::;;e,->	
 	
 	
 	
 	
r   c                    ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     t          |                    d	
                    d|d         fd|d         fg           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  zOInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases.<locals>._barz  r  r   r   rP   r  r  Fr  r6   rd   r,  r  s         r   -test_namesAndDescriptions_w_all_True_no_baseszAInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_basesv  s    666666999999	 	 	 9UB''<%%
 
 mm%m((3+++6677e%e%:	
 	
 	
 	
 	
r   c                 t   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    d|d         fd|d         fd|d         fg           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  zMInterfaceClassTests.test_namesAndDescriptions_w_all_True_simple.<locals>._bar  r  r   r   rP   r  r7   r	  r
  r  r  r  Tr  r6   rd   r,  r  s           r   +test_namesAndDescriptions_w_all_True_simplez?InterfaceClassTests.test_namesAndDescriptions_w_all_True_simple  s   666666999999	 	 	 9UB''<%%
 


 99UB''
 }}WJ}77--
4'-OO7//D/99::
5)*e,-
5)*=	
 	
 	
 	
 	
r   c                    ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     t          |                    d                    d|d         fd|d         fd|d         fg           d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._bar  r  r   c                      dS r  r.   r.   r   r   r"  zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._foo  r  r   r   rP   r  r	  r#  r
  r  r  r  Tr  r6   r7   rd   r,  r$  s	            r   7test_namesAndDescriptions_w_all_True_bases_w_same_nameszKInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names  s2   666666999999	 	 		 	 	 9UB''<%%
 


  <%%9UB''
 
 }}WJ}77--
4'-OO7//D/99::
5)*e,-e,-=	
 	
 	
 	
 	
r   c                 p    |                                  }|                     t          |j        d           d S r\   )rN   r^   r_   getDescriptionForr%   r  s     r   test_getDescriptionFor_missz/InterfaceClassTests.test_getDescriptionFor_miss  s0    mmoo(C$9:FFFFFr   c                 <   ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     |                    d	          |d	                    |                     |                    d
          |d
                    d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  z<InterfaceClassTests.test_getDescriptionFor_hit.<locals>._bar  r  r   r   rP   r  r  rd   r6   )r"   r  r  rN   r#   r:  r  s         r   test_getDescriptionFor_hitz.InterfaceClassTests.test_getDescriptionFor_hit  s    666666999999	 	 	 9UB''<%%
 
 mm%m((..u55uU|DDD..u55uU|DDDDDr   c                 p    |                                  fd}|                     t          |           d S )Nc                       d         S r\   r.   )r  s   r   _testz8InterfaceClassTests.test___getitem___miss.<locals>._test  s    z?"r   )rN   r^   r_   )r%   rB  r  s     @r   test___getitem___missz)InterfaceClassTests.test___getitem___miss  sG    mmoo	# 	# 	# 	# 	# 	(E*****r   c                    ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     |d	         |d	                    |                     |d
         |d
                    d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  z6InterfaceClassTests.test___getitem___hit.<locals>._bar  r  r   r   rP   r  r  rd   r6   )r"   r  r  rN   r#   r  s         r   test___getitem___hitz(InterfaceClassTests.test___getitem___hit  s    666666999999	 	 	 9UB''<%%
 
 mm%m((UU5\222UU5\22222r   c                 \    |                                  }|                     d|v            d S r\   )rN   r   r;  s     r   test___contains___missz*InterfaceClassTests.test___contains___miss  s.    mmoos*+++++r   c                     ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     d	|v            |                     d
|v            d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  z7InterfaceClassTests.test___contains___hit.<locals>._bar  r  r   r   rP   r  r  rd   r6   )r"   r  r  rN   r   r  s         r   test___contains___hitz)InterfaceClassTests.test___contains___hit  s    666666999999	 	 	 9UB''<%%
 
 mm%m((%%%%%%%%r   c                     |                                  }|                     |                    d          d            d S r\   )rN   r#   directr;  s     r   test_direct_missz$InterfaceClassTests.test_direct_miss  s7    mmooJ//66666r   c                    ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     |                    d          |d                    |                     |                    d          |d                    |                     |                    d          d            d S )Nr   r  r  c                      dS r  r.   r.   r   r   r  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._bar  r  r   c                      dS r  r.   r.   r   r   r"  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._foo  r  r   r   rP   r  r	  r#  r
  r  r  r  rd   r7   r6   )r"   r  r  rN   r#   rM  r$  s	            r    test_direct_hit_local_miss_basesz4InterfaceClassTests.test_direct_hit_local_miss_bases  s>   666666999999	 	 		 	 	 9UB''<%%
 


  <%%9UB''
 
 }}WJ}77--
4'-OO..e0DEEE..e0DEEE..55555r   c                     |                                  }|                     |                    d          d            d S r\   )rN   r#   queryDescriptionForrJ  s     r   test_queryDescriptionFor_missz1InterfaceClassTests.test_queryDescriptionFor_miss  s9    22:>>EEEEEr   c                     ddl m} d |dd          i}|                     |          }|                     |                    d          |d                    d S )Nr   r  attrTitleDescriptionr  )r   r  rN   r#   rT  )r%   r  r  r+  s       r   test_queryDescriptionFor_hitz0InterfaceClassTests.test_queryDescriptionFor_hit  sk    ,,,,,,7M::;E**226::E&MJJJJJr   c                    g fd}|                                  }t                      }|                    d|g           |                     |                    |          d            |                     |fi fg           d S )Nc                  6                         | |f           dS r   rR  )r   r   _called_withs     r   	_passablezCInterfaceClassTests.test_validateInvariants_pass.<locals>._passable#  s     r
+++4r   r    )rN   r   rf   r#   validateInvariants)r%   r^  r+  r   r]  s       @r   test_validateInvariants_passz0InterfaceClassTests.test_validateInvariants_pass   s    	 	 	 	 	 hh\I;77711#66===#~66666r   c                 J   ddl m g fd}g fd}|                                 }t                      }|                    d||g           |                     |j        |           |                     |fi fg           |                     |fi fg           d S )Nr   Invalidc                  6                         | |f           dS r   rR  r   r   _passable_called_withs     r   r^  zTInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._passable1       !(($4444r   c                  6                         | |f           r   rR  r   r   rc  _fail_called_withs     r   _failzPInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._fail7       $$dBZ000Mr   r    r  rc  rN   r   rf   r^   r_  r#   )r%   r^  rk  r+  r   rc  rj  rf  s        @@@r   -test_validateInvariants_fail_wo_errors_passedzAInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed-  s    555555 "	 	 	 	 	 	 	 	 	 	 	 hh\Iu+=>>>'5#;SAAA.3&"???*sfb\N;;;;;r   c                    ddl m g }g fd}|                                 }t                      }|                    d|g           |                     |j        ||           |                     |fi fg           |                     t          |          d           | 	                    t          |d                              d S )Nr   rb  c                  6                         | |f           r   rR  ri  s     r   rk  zOInterfaceClassTests.test_validateInvariants_fail_w_errors_passed.<locals>._failG  rl  r   r    rn  r  rc  rN   r   rf   r^   r_  r#   rh  r   
isinstance)r%   _errorsrk  r+  r   rc  rj  s        @@r   ,test_validateInvariants_fail_w_errors_passedz@InterfaceClassTests.test_validateInvariants_fail_w_errors_passedB  s    555555	 	 	 	 	 	 hh\E7333'5#;S'JJJ*sfb\N;;;Wq)))
71:w7788888r   c                    ddl m g fd}g fd}|                     d          }|                     d|f          }t                      }|                    d|g           |                    d|g           |                     |j        |           |                     |fi fg           |                     |fi fg           d S )Nr   rb  c                  6                         | |f           dS r   rR  re  s     r   r^  z\InterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._passableW  rg  r   c                  6                         | |f           r   rR  ri  s     r   rk  zXInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._fail]  rl  r   r
  r  r    rm  )	r%   r^  rk  r  r  r   rc  rj  rf  s	         @@@r   5test_validateInvariants_fail_in_base_wo_errors_passedzIInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passedS  s   555555 "	 	 	 	 	 	 	 	 	 	 	 }}W%%--
TG44hhL5'222|i[999'7#=sCCC.3&"???*sfb\N;;;;;r   c                 D  	 ddl m g }g 		fd}g fd}|                     d          }|                     d|f          }t                      }|                    d|g           |                    d|g           |                     |j        ||           |                     	|fi fg           |                     |fi fg           |                     t          |          d           | 	                    t          |d                              d S )	Nr   rb  c                  6                         | |f           dS r   rR  re  s     r   r^  z[InterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._passableo  rg  r   c                  6                         | |f           r   rR  ri  s     r   rk  zWInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._failu  rl  r   r
  r  r    rn  rq  )
r%   rs  r^  rk  r  r  r   rc  rj  rf  s
          @@@r   4test_validateInvariants_fail_in_base_w_errors_passedzHInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passedj  s_   555555 "	 	 	 	 	 	 	 	 	 	 	 }}W%%--
TG44hhL5'222|i[999'7#=sGLLL.3&"???*sfb\N;;;Wq)))
71:w7788888r   c                 (   g fd}t                      }|                     d          }|                    d|g           |                     d|f          }|                    |           |                     dt                               d S )Nc                  6                         | |f           dS r   rR  re  s     r   r^  zbInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_times.<locals>._passable  rg  r   r
  r    r  rn  )r   rN   rf   r_  r#   rh  )r%   r^  r   r  r  rf  s        @r   ;test_validateInvariants_inherited_not_called_multiple_timeszOInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_times  s     "	 	 	 	 	 hh}}W%%L9+666--
TG44""3'''C 56677777r   c                     |                      d          }|                     |                                d           d S )NPickleMe)rN   r#   
__reduce__rJ  s     r   test___reduce__z#InterfaceClassTests.test___reduce__  s;    j))))++Z88888r   c                     |                      d          }|                     t          |          t          d                     d S )NHashMe)r  z#zope.interface.tests.test_interface)rN   r#   hashrJ  s     r   test___hash___normalz(InterfaceClassTests.test___hash___normal  sJ    h''KKBCC	
 	
 	
 	
 	
r   c                      G d d|                                            } |            }|                     t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )IInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derivedc                     d S r   r.   r   s    r   r   zRInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derived.__init__  s    r   Nr   r.   r   r   Derivedr    s#            r   r  )rJ   r^   r   r  )r%   r  r  s      r   $test___hash___missing_required_attrsz8InterfaceClassTests.test___hash___missing_required_attrs  s    	 	 	 	 	d**,, 	 	 	 '))~.. 	 	MMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A""A&)A&c                    |                                  }|                     |d k                |                     |d k               |                     |d k               |                     |d k               |                     |d k               |                     |d k               |                     d |k                |                     d |k               |                     d |k               |                     d |k               |                     d |k               |                     d |k               d S r   rN   r   r   rJ  s     r   test_comparison_with_Nonez-InterfaceClassTests.test_comparison_with_None  s)   %%%&&&$'''&&&$'''&&&&&&''''''&&&&&&u%%%%%r   c                 Z   |                                  }|                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               d S r   )rN   r   r   rJ  s     r   "test_comparison_with_same_instancez6InterfaceClassTests.test_comparison_with_same_instance  s    '''''''''%(((''''''''r   c                    |                      dd          }|                      dd          }|                     ||k                |                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               d S )NINamezzope.interface.tests.oner   zzope.interface.tests.otherr  )r%   r  r   s      r   8test_comparison_with_same_named_instance_in_other_modulezLInterfaceClassTests.test_comparison_with_same_named_instance_in_other_module  sH   mmG0JmKKg2NOOe$$$%%%u%%%#&&&&&&#&&&u%%%%%%&&&%%%u%%%$$$$$r   c                     G d dt                      G fdd|                                           }|                     d          }|                     ||                                            |                     t          |          |                                            |                     t                    5   |d           d d d            n# 1 swxY w Y   ||_        |                     ||           |                     t          |          |           |                               5   |d           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )DInterfaceClassTests.test_assignment_to__class__.<locals>.MyExceptionNr   r.   r   r   r   r    r   r   r   c                       e Zd Z fdZdS )IInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClassc                      |          r   r.   )r%   targetr   s     r   __call__zRInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClass.__call__  s    !k&)))r   Nr   r   r   r  )r   s   r   MyInterfaceClassr    s.        * * * * * * *r   r  r  rn  )	r  rJ   rN   assertIsInstancer   typer^   r  	__class__)r%   r  r~  r   s      @r   test_assignment_to__class__z/InterfaceClassTests.test_assignment_to__class__  s   	 	 	 	 	) 	 	 		* 	* 	* 	* 	* 	* 	*t3355 	* 	* 	* }}W%%dD$8$8$:$:;;;d4jj$"6"6"8"8999y)) 	 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 *d$4555d4jj"2333{++ 	 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   CC"C;EEEc                    ddl m}  G d d|                                           } |d|f          }|                      |d          d            G d d	|          }|                      |d          d            G d
 d|          }|                     t
                    5   |             d d d            n# 1 swxY w Y   ||_        |                      |d          d           d S )Nr   rd  c                       e Zd Zd ZdS )JInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClassc                     |S r   r.   )r%   r   s     r   r  zSInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClass.__call__  s    r   Nr  r.   r   r   r  r    rK  r   r  r~  rn  )rn  c                       e Zd ZdS )>InterfaceClassTests.test_assignment_to__class__2.<locals>.IBarNr   r.   r   r   r  r    r   r   r  c                       e Zd ZdS )?InterfaceClassTests.test_assignment_to__class__2.<locals>.ISpamNr   r.   r   r   ISpamr    r   r   r  )r   re  rJ   r#   r^   r  r  )r%   re  r  r~  r  r  s         r   test_assignment_to__class__2z0InterfaceClassTests.test_assignment_to__class__2  s    	-,,,,,	 	 	 	 	t3355 	 	 	  55a$'''	 	 	 	 	4 	 	 	 	a$'''	 	 	 	 	I 	 	 	 y)) 	 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 +q4(((((s   (B??CCc                     |                                  }|                     t                    5  d|_        d d d            d S # 1 swxY w Y   d S )Nzdifferent.module)rN   r^   r   r   )r%   r  s     r   test__module__is_readonlyz-InterfaceClassTests.test__module__is_readonly  s    }}~.. 	1 	10DO	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AAA)r  r.   NNN)4r   r   r   rJ   rN   rX   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r%  r)  r.  r1  r4  r8  r<  r?  rC  rF  rH  rK  rN  rR  rU  rZ  r`  rn  rt  rx  r|  r  r  r  r  r  r  r  r  r  r  r.   r   r   r  r    s!          DH O O O O. . .E E E5 5 5$1 1 11 1 11 1 1L L L3 3 3< < <3 3 3
: : :9 9 9; ; ;D D D$F F F
 
 
(
 
 
0A A A,
 
 
,
 
 
&
 
 
0
 
 
8G G GE E E+ + +3 3 3, , ,& & &7 7 76 6 60F F FK K K7 7 7< < <*9 9 9"< < <.9 9 948 8 89 9 9
 
 
  & & &"	( 	( 	(% % %$  .) ) )61 1 1 1 1r   r  c                   F   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5S )6InterfaceTestsc                     ddl m ddl m}  G fdd|          }|                     |d         j        |u            d S )Nr   r  rd  c                   &    e Zd Z  d          ZdS )<InterfaceTests.test_attributes_link_to_interface.<locals>.I1My attrN)r   r   r   rW  r  s   r   I1r    s        9Y''DDDr   r  rW  )r   r  re  r   r   )r%   re  r  r  s      @r   !test_attributes_link_to_interfacez0InterfaceTests.test_attributes_link_to_interface  s    ,,,,,,,,,,,,	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	6
,233333r   c                 r    ddl m}  G d d|          }|                     |d         j        |u            d S )Nr   rd  c                       e Zd Zd ZdS )9InterfaceTests.test_methods_link_to_interface.<locals>.I1c                     dS zA methodNr.   )rd   r6   bingos      r   methodz@InterfaceTests.test_methods_link_to_interface.<locals>.I1.method  r  r   Nr   r   r   r  r.   r   r   r  r    s#            r   r  r  )r   re  r   r   )r%   re  r  s      r   test_methods_link_to_interfacez-InterfaceTests.test_methods_link_to_interface  sd    ,,,,,,	 	 	 	 	 	 	 	 	8."455555r   c                 b   ddl m} ddl m} ddl m}  G d d|           G d d|          } G fd	d
          } |            }|                                         |                     |                     |                    |                     |                                |                      ||          v            |                     | ||          v            |                      ||          v            |                     | ||          v            d S )Nr   rd  r   r   c                       e Zd Zd Zd ZdS )<InterfaceTests.test_classImplements_simple.<locals>.ICurrentc                     dS 	docstringNr.   r   r   s     r   method1zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method1'  r  r   c                     dS r  r.   r  s     r   method2zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method2*  r  r   N)r   r   r   r  r  r.   r   r   ICurrentr  &  s2                      r   r  c                       e Zd ZdS ):InterfaceTests.test_classImplements_simple.<locals>.IOtherNr   r.   r   r   r  r  -  r   r   r  c                        e Zd Z Zd Zd ZdS );InterfaceTests.test_classImplements_simple.<locals>.Currentc                     t                      r   r   r%   r   r   s      r   r  zCInterfaceTests.test_classImplements_simple.<locals>.Current.method13      )+++r   c                     t                      r   r   r  s      r   r  zCInterfaceTests.test_classImplements_simple.<locals>.Current.method26  r  r   N)r   r   r   __implemented__r  r  )r  s   r   Currentr  0  s8        &O, , ,, , , , ,r   r  )r   re  r   r   r   r   r#   )r%   re  r   r   r  r  currentr  s          @r   test_classImplements_simplez*InterfaceTests.test_classImplements_simple!  s   ,,,,,,000000------	  	  	  	  	 y 	  	  	 	 	 	 	 	Y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, '))..w77888--g667778,,,MM'$:$::;;;==#9#99:::JJw$7$77888::g#6#6677777r   c                 6   ddl m} ddl m} ddl m}  G d d|           G d d          } G fd	d
          } |            }|                                         |                     |                     |                    |                     |                      ||          v            |                     | ||          v            |                      ||          v            |                     | ||          v            d S )Nr   rd  r   r   c                       e Zd Zd ZdS )CInterfaceTests.test_classImplements_base_not_derived.<locals>.IBasec                      dS r  r.   r.   r   r   r  zJInterfaceTests.test_classImplements_base_not_derived.<locals>.IBase.methodI  r  r   Nr  r.   r   r   r
  r  H  #                 r   r
  c                       e Zd ZdS )FInterfaceTests.test_classImplements_base_not_derived.<locals>.IDerivedNr   r.   r   r   r  r  L  r   r   r  c                       e Zd Z Zd ZdS )EInterfaceTests.test_classImplements_base_not_derived.<locals>.Currentc                     t                      r   r   r   s    r   r  zLInterfaceTests.test_classImplements_base_not_derived.<locals>.Current.methodR  r  r   Nr   r   r   r  r  )r
  s   r   r  r  O  )        #O, , , , ,r   r  r   re  r   r   r   r   )r%   re  r   r   r  r  r  r
  s          @r   %test_classImplements_base_not_derivedz4InterfaceTests.test_classImplements_base_not_derivedC  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 	 	 	 	 	u 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, '))++G44555//88999w!7!77888]]7%;%;;<<<G!4!44555ZZ%8%8899999r   c                    ddl m} ddl m} ddl m}  G d d|          } G d d|           G fd	d
          } |            }|                     |                    |                     |                                         |                     |                     | ||          v            |                     | ||                                          v            |                      ||          v            |                     | ||          v            |                     | ||                                          v            |                      ||          v            d S )Nr   rd  r   r   c                       e Zd Zd ZdS )CInterfaceTests.test_classImplements_base_and_derived.<locals>.IBasec                      dS r  r.   r.   r   r   r  zJInterfaceTests.test_classImplements_base_and_derived.<locals>.IBase.methodd  r  r   Nr  r.   r   r   r
  r  c  r  r   r
  c                       e Zd ZdS )FInterfaceTests.test_classImplements_base_and_derived.<locals>.IDerivedNr   r.   r   r   r  r  g  r   r   r  c                       e Zd Z Zd ZdS )EInterfaceTests.test_classImplements_base_and_derived.<locals>.Currentc                     t                      r   r   r   s    r   r  zLInterfaceTests.test_classImplements_base_and_derived.<locals>.Current.methodm  r  r   Nr  )r  s   r   r  r  j  s)        &O, , , , ,r   r  )r   re  r   r   r   r   	flattened)r%   re  r   r   r
  r  r  r  s          @r   %test_classImplements_base_and_derivedz4InterfaceTests.test_classImplements_base_and_derived^  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 	 	 	 	 	u 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, '))++G44555..w77888--"8"88999w!7!7!A!A!C!CCDDDMM'$:$::;;;**W"5"55666G!4!4!>!>!@!@@AAAJJw$7$7788888r   c                 t  	 ddl m} ddl m} ddl m}  G d d|           G d d          	 G fd	d
          } G 	fdd          } G d d||          } |            }|                                         |                     |                     	                    |                     |                      ||          v            |                     	 ||          v            |                      ||          v            |                     	 ||          v            d S )Nr   rd  r   r   c                       e Zd Zd ZdS );InterfaceTests.test_classImplements_multiple.<locals>.ILeftc                      dS r  r.   r.   r   r   r  zBInterfaceTests.test_classImplements_multiple.<locals>.ILeft.method  r  r   Nr  r.   r   r   ILeftr    r  r   r  c                       e Zd ZdS )<InterfaceTests.test_classImplements_multiple.<locals>.IRightNr   r.   r   r   IRightr    r   r   r  c                       e Zd Z Zd ZdS ):InterfaceTests.test_classImplements_multiple.<locals>.Leftc                     t                      r   r   r   s    r   r  zAInterfaceTests.test_classImplements_multiple.<locals>.Left.method  r  r   Nr  r  s   r   Leftr    r  r   r  c                       e Zd Z ZdS );InterfaceTests.test_classImplements_multiple.<locals>.RightNr   r   r   r  r  s   r   Rightr            $OOOr   r  c                       e Zd ZdS ):InterfaceTests.test_classImplements_multiple.<locals>.AmbiNr   r.   r   r   Ambir    r   r   r  )r   re  r   r   r   )
r%   re  r   r   r  r  r  ambir  r  s
           @@r   test_classImplements_multiplez,InterfaceTests.test_classImplements_multiple{  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 	 	 	 	 	U 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	,	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	4 	 	 	 tvv++D11222,,T22333t!4!44555--"5"55666D!1!11222**T"2"2233333r   c                   	
 ddl m} ddl m} ddl m}  G d d|           G d d          	 G d	 d
|           G fdd          
 G 	fdd          } G fdd           G 
fdd
|          } |            }|                                         |                     |                     	                    |                     |                                         |                     |                      ||          v            |                     	 ||          v            |                      ||          v            |                      ||          v            |                     	 ||          v            |                      ||          v            d S )Nr   rd  r   r   c                       e Zd Zd ZdS )PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeftc                      dS r  r.   r.   r   r   r  zWInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeft.method  r  r   Nr  r.   r   r   r  r    s#                 r   r  c                       e Zd ZdS )QInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IRightNr   r.   r   r   r  r    r   r   r  c                       e Zd ZdS )QInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IOtherNr   r.   r   r   r  r    r   r   r  c                       e Zd Z Zd ZdS )OInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Leftc                     t                      r   r   r   s    r   r  zVInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Left.method  r  r   Nr  r  s   r   r  r    r  r   r  c                       e Zd Z ZdS )PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.RightNr   r  s   r   r  r    r  r   r  c                       e Zd Z ZdS )PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.OtherNr   )r  s   r   Otherr    r  r   r  c                   ,    e Zd Z j        j        fZdS )PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.MixedNr   )r  r  s   r   Mixedr    s        "2E4IIOOOr   r  r  )r%   re  r   r   r  r  mixedr  r  r  r  r  s          @@@@@r   2test_classImplements_multiple_w_explict_implementszAInterfaceTests.test_classImplements_multiple_w_explict_implements  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 
	 	 	 	 	U 	 	 		 	 	 	 	Y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	,	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	J 	J 	J 	J 	J 	J 	J 	JD% 	J 	J 	J ++E22333--e44555,,U33444u!5!55666==#7#77888--"6"66777E!2!22333::e#4#44555**U"3"3344444r   c                    ddl m} |j        } |d          } |d|f          } |d          } |d||f          }|                     |                    |                     |                     |                    |                     |                     |                    |                     |                     |                    |                     |                     |                    |                     |                     |                    |                     |                     |                    |                     d S )Nr   rd  FunInterfaceBarInterfaceBobInterfaceBazInterface)r   re  r  r   r  r   )r%   re  newr  r   r!  r"  s          r   testInterfaceExtendsInterfacez,InterfaceTests.testInterfaceExtendsInterface  sO   ,,,,,,!s>**s>L?;;s>**s>L,+HII,,\::;;;,,\::;;;,,\::;;;--l;;<<<--l;;<<<,,\::;;;--l;;<<<<<r   c                     ddl m ddl m} ddlm}  G fdd|           G fdd          }|                      ||                     d S )	Nr   r  rd  )verifyClassc                   ,    e Zd Z  d          Zd ZdS )1InterfaceTests.test_verifyClass.<locals>.ICheckMer  c                      dS r  r.   r.   r   r   r  z8InterfaceTests.test_verifyClass.<locals>.ICheckMe.method  r  r   Nr   r   r   rW  r  r  s   r   ICheckMer(    3        9Y''D    r   r+  c                       e Zd Z ZdZd ZdS )0InterfaceTests.test_verifyClass.<locals>.CheckMevaluec                     t                      r   r   r   s    r   r  z7InterfaceTests.test_verifyClass.<locals>.CheckMe.method  r  r   Nr   r   r   r  rW  r  r+  s   r   CheckMer.    .        &OD, , , , ,r   r3  )r   r  re  r   r&  r   )r%   re  r&  r3  r  r+  s       @@r   test_verifyClasszInterfaceTests.test_verifyClass  s    ,,,,,,,,,,,,555555	 	 	 	 	 	 	y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	Hg6677777r   c                     ddl m ddl m} ddlm}  G fdd|           G fdd          } |            }|                      ||                     d S )	Nr   r  rd  r|   c                   ,    e Zd Z  d          Zd ZdS )2InterfaceTests.test_verifyObject.<locals>.ICheckMer  c                      dS r  r.   r.   r   r   r  z9InterfaceTests.test_verifyObject.<locals>.ICheckMe.method  r  r   Nr*  r  s   r   r+  r8    r,  r   r+  c                       e Zd Z ZdZd ZdS )1InterfaceTests.test_verifyObject.<locals>.CheckMer/  c                     t                      r   r   r   s    r   r  z8InterfaceTests.test_verifyObject.<locals>.CheckMe.method  r  r   Nr1  r2  s   r   r3  r;    r4  r   r3  )r   r  re  r   r}   r   )r%   re  r}   r3  check_mer  r+  s        @@r   test_verifyObjectz InterfaceTests.test_verifyObject  s    ,,,,,,,,,,,,666666	 	 	 	 	 	 	y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 799Xx8899999r   c                 ~    ddl m}  G d d|          }|                     |                    |                     d S )Nr   rd  c                       e Zd ZdS )LInterfaceTests.test_interface_object_provides_Interface.<locals>.AnInterfaceNr   r.   r   r   AnInterfacerA    r   r   rB  )r   re  r   r   )r%   re  rB  s      r   (test_interface_object_provides_Interfacez7InterfaceTests.test_interface_object_provides_Interface  sf    ,,,,,,	 	 	 	 	) 	 	 	 		,,[99:::::r   c                     ddl m ddl m}  G fdd|          }|                     t	          |                                          ddg           d S )Nr   r  rd  c                   ,    e Zd Z  d          Zd ZdS )1InterfaceTests.test_names_simple.<locals>.ISimpler  c                      dS r  r.   r.   r   r   r  z8InterfaceTests.test_names_simple.<locals>.ISimple.method  r  r   Nr*  r  s   r   ISimplerF    3        9Y''D         r   rH  rW  r  r   r  re  r#   r  r  r%   re  rH  r  s      @r   test_names_simplez InterfaceTests.test_names_simple
  s    ,,,,,,,,,,,,	  	  	  	  	  	  	 i 	  	  	  	00682DEEEEEr   c                 @   ddl m ddl m}  G fdd|          } G fdd|          }|                     t	          |                                          g d           |                     t	          |                    d	
                    g d           d S )Nr   r  rd  c                   ,    e Zd Z  d          Zd ZdS )0InterfaceTests.test_names_derived.<locals>.IBaser  c                      dS r  r.   r.   r   r   r  z7InterfaceTests.test_names_derived.<locals>.IBase.method  r  r   Nr*  r  s   r   r
  rO    rI  r   r
  c                   2    e Zd Z  d          Zd Zd ZdS )3InterfaceTests.test_names_derived.<locals>.IDerivedMy attr2c                      dS r  r.   r.   r   r   r  z:InterfaceTests.test_names_derived.<locals>.IDerived.method#  r  r   c                      dS r  r.   r.   r   r   r  z;InterfaceTests.test_names_derived.<locals>.IDerived.method2&  r  r   Nr   r   r   attr2r  r  r  s   r   r  rR     sB        Ij))E              r   r  )rW  r  r  Tr  rW  rW  r  r  rJ  r%   re  r
  r  r  s       @r   test_names_derivedz!InterfaceTests.test_names_derived  s   ,,,,,,,,,,,,	  	  	  	  	  	  	 I 	  	  	 	  	  	  	  	  	  	 u 	  	  	  	 0 011777	9 	9 	94 8 899???	A 	A 	A 	A 	Ar   c                 P   ddl m ddl m} ddlm}  G fdd|          }t          |                                          }|                     t          |          d           |                     |d         d         d           | 	                    t          |d         d	                              |                     |d         d	         j        d           |                     |d         d	         j        d
           |                     |d	         d         d           | 	                    t          |d	         d	         |                     |                     |d	         d	         j        d           |                     |d	         d	         j        d           d S )Nr   r  rd  Methodc                   ,    e Zd Z  d          Zd ZdS )@InterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimpler  c                      dS 	My methodNr.   r.   r   r   r  zGInterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimple.method6  r  r   Nr*  r  s   r   rH  r_  3  3        9Y''D    r   rH  rf  rW  rn  r  r  rb  r   r  re  r"   r]  r  r-  r#   rh  r   rr  r   rR   )r%   re  r]  rH  name_valuesr  s        @r    test_namesAndDescriptions_simplez/InterfaceTests.test_namesAndDescriptions_simple.  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 W99;;<<[))1---Q*F333
;q>!#4i@@AAAQ*3V<<<Q*2I>>>Q*H555
;q>!#4f==>>>Q*3X>>>Q*2K@@@@@r   c                 2
   ddl m ddl m} ddlm}  G fdd|          } G fdd|          }t          |                                          }|                     t          |          d	           |                     |d         d         d
           | 	                    t          |d         d                              |                     |d         d         j        d
           |                     |d         d         j        d           |                     |d         d         d           | 	                    t          |d         d         |                     |                     |d         d         j        d           |                     |d         d         j        d           |                     |d         d         d           | 	                    t          |d         d         |                     |                     |d         d         j        d           |                     |d         d         j        d           t          |                    d                    }|                     t          |          d           |                     |d         d         d           | 	                    t          |d         d                              |                     |d         d         j        d           |                     |d         d         j        d           |                     |d         d         d
           | 	                    t          |d         d                              |                     |d         d         j        d
           |                     |d         d         j        d           |                     |d         d         d           | 	                    t          |d         d         |                     |                     |d         d         j        d           |                     |d         d         j        d           |                     |d	         d         d           | 	                    t          |d	         d         |                     |                     |d	         d         j        d           |                     |d	         d         j        d           d S )Nr   r  rd  r\  c                   ,    e Zd Z  d          Zd ZdS )?InterfaceTests.test_namesAndDescriptions_derived.<locals>.IBaser  c                      dS ra  r.   r.   r   r   r  zFInterfaceTests.test_namesAndDescriptions_derived.<locals>.IBase.methodM  r  r   Nr*  r  s   r   r
  ri  J  rc  r   r
  c                   2    e Zd Z  d          Zd Zd ZdS )BInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerivedrS  c                      dS My method, overriddenNr.   r.   r   r   r  zIInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.methodS  r  r   c                      dS 
My method2Nr.   r.   r   r   r  zJInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method2V  r  r   NrV  r  s   r   r  rl  P  B        Ij))E( ( (    r   r     rW  rn  rS  r  ro  rf  r  rr  Tr     rW  r  rd  )r%   re  r]  r
  r  re  r  s         @r   !test_namesAndDescriptions_derivedz0InterfaceTests.test_namesAndDescriptions_derivedE  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 X::<<==[))1---Q*G444
;q>!#4i@@AAAQ*3W===Q*2J???Q*H555
;q>!#4f==>>>Q*3X>>>Q*24KLLLQ*I666
;q>!#4f==>>>Q*3Y???Q*2LAAAX::t:DDEE[))1---Q*F333
;q>!#4i@@AAAQ*3V<<<Q*2I>>>Q*G444
;q>!#4i@@AAAQ*3W===Q*2J???Q*H555
;q>!#4f==>>>Q*3X>>>Q*24KLLLQ*I666
;q>!#4f==>>>Q*3Y???Q*2LAAAAAr   c                 p    ddl m}  G d d|          }|                     t          |j        d           d S )Nr   rd  c                       e Zd ZdS )IInterfaceTests.test_getDescriptionFor_nonesuch_no_default.<locals>.IEmptyNr   r.   r   r   IEmptyry    r   r   rz  r]   )r   re  r^   r_   r:  r%   re  rz  s      r   *test_getDescriptionFor_nonesuch_no_defaultz9InterfaceTests.test_getDescriptionFor_nonesuch_no_default}  sa    ,,,,,,	 	 	 	 	Y 	 	 	 	(F$<jIIIIIr   c                    ddl m ddl m} ddlm}  G fdd|          }|                    d          }|                     t          |                     |                     |j	        d           |                     |j
        d           |                    d	          }|                     t          ||                     |                     |j	        d	           |                     |j
        d
           d S )Nr   r  rd  r\  c                   ,    e Zd Z  d          Zd ZdS )=InterfaceTests.test_getDescriptionFor_simple.<locals>.ISimpler  c                      dS ra  r.   r.   r   r   r  zDInterfaceTests.test_getDescriptionFor_simple.<locals>.ISimple.method  r  r   Nr*  r  s   r   rH  r    rc  r   rH  rW  r  r  rb  r   r  re  r"   r]  r:  r   rr  r#   r   rR   r%   re  r]  rH  a_descm_descr  s         @r   test_getDescriptionFor_simplez,InterfaceTests.test_getDescriptionFor_simple  s3   ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 **622
6955666&111333**844
6622333(33355555r   c                   	 ddl m	 ddl m} ddlm}  G 	fdd|          } G 	fdd|          }|                    d	          }|                     t          |	                     |                     |j	        d	           |                     |j
        d
           |                    d          }|                     t          ||                     |                     |j	        d           |                     |j
        d           |                    d          }|                     t          |	                     |                     |j	        d           |                     |j
        d           |                    d          }|                     t          ||                     |                     |j	        d           |                     |j
        d           d S )Nr   r  rd  r\  c                   ,    e Zd Z  d          Zd ZdS )<InterfaceTests.test_getDescriptionFor_derived.<locals>.IBaser  c                      dS ra  r.   r.   r   r   r  zCInterfaceTests.test_getDescriptionFor_derived.<locals>.IBase.method  r  r   Nr*  r  s   r   r
  r    rc  r   r
  c                   2    e Zd Z  d          Zd Zd ZdS )?InterfaceTests.test_getDescriptionFor_derived.<locals>.IDerivedrS  c                      dS rn  r.   r.   r   r   r  zFInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method  r  r   c                      dS rq  r.   r.   r   r   r  zGInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method2  r  r   NrV  r  s   r   r  r    rs  r   r  rW  r  r  ro  rW  rS  r  rr  r  
r%   re  r]  r
  r  r  r  a2_descm2_descr  s
            @r   test_getDescriptionFor_derivedz-InterfaceTests.test_getDescriptionFor_derived  s(   ,,,,,,,,,,,,333333	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 ++F33
6955666&111333++H55
6622333(333)@AAA,,W55
7I66777)7333*555,,Y77
7F33444)9555,77777r   c                 p    ddl m}  G d d|          }|                     t          |j        d           d S )Nr   rd  c                       e Zd ZdS )7InterfaceTests.test___getitem__nonesuch.<locals>.IEmptyNr   r.   r   r   rz  r    r   r   rz  r]   )r   re  r^   r_   __getitem__r{  s      r   test___getitem__nonesuchz'InterfaceTests.test___getitem__nonesuch  sa    ,,,,,,	 	 	 	 	Y 	 	 	 	(F$6
CCCCCr   c                    ddl m ddl m} ddlm}  G fdd|          }|d         }|                     t          |                     |                     |j        d           |                     |j	        d           |d	         }|                     t          ||                     |                     |j        d	           |                     |j	        d
           d S )Nr   r  rd  r\  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___getitem__simple.<locals>.ISimpler  c                      dS ra  r.   r.   r   r   r  z=InterfaceTests.test___getitem__simple.<locals>.ISimple.method  r  r   Nr*  r  s   r   rH  r    rc  r   rH  rW  r  r  rb  
r   r  re  r"   r]  r   rr  r#   r   rR   r  s         @r   test___getitem__simplez%InterfaceTests.test___getitem__simple  s    ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 
6955666&111333"
6622333(33355555r   c                 t  	 ddl m	 ddl m} ddlm}  G 	fdd|          } G 	fdd|          }|d	         }|                     t          |	                     |                     |j        d	           |                     |j	        d
           |d         }|                     t          ||                     |                     |j        d           |                     |j	        d           |d         }|                     t          |	                     |                     |j        d           |                     |j	        d           |d         }|                     t          ||                     |                     |j        d           |                     |j	        d           d S )Nr   r  rd  r\  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___getitem___derived.<locals>.IBaser  c                      dS ra  r.   r.   r   r   r  z=InterfaceTests.test___getitem___derived.<locals>.IBase.method  r  r   Nr*  r  s   r   r
  r    rc  r   r
  c                   2    e Zd Z  d          Zd Zd ZdS )9InterfaceTests.test___getitem___derived.<locals>.IDerivedrS  c                      dS rn  r.   r.   r   r   r  z@InterfaceTests.test___getitem___derived.<locals>.IDerived.method  r  r   c                      dS rq  r.   r.   r   r   r  zAInterfaceTests.test___getitem___derived.<locals>.IDerived.method2  r  r   NrV  r  s   r   r  r    rs  r   r  rW  r  r  ro  rW  rS  r  rr  r  r  s
            @r   test___getitem___derivedz'InterfaceTests.test___getitem___derived  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 &!
6955666&111333(#
6622333(333)@AAA7#
7I66777)7333*5559%
7F33444)9555,77777r   c                 \    ddl m}  G d d|          }|                     d|v            d S )Nr   rd  c                       e Zd ZdS )8InterfaceTests.test___contains__nonesuch.<locals>.IEmptyNr   r.   r   r   rz  r  
  r   r   rz  r]   )r   re  r   r{  s      r   test___contains__nonesuchz(InterfaceTests.test___contains__nonesuch  s_    ,,,,,,	 	 	 	 	Y 	 	 	 	v-.....r   c                     ddl m ddl m}  G fdd|          }|                     d|v            |                     d|v            d S )Nr   r  rd  c                   ,    e Zd Z  d          Zd ZdS )7InterfaceTests.test___contains__simple.<locals>.ISimpler  c                      dS ra  r.   r.   r   r   r  z>InterfaceTests.test___contains__simple.<locals>.ISimple.method  r  r   Nr*  r  s   r   rH  r    rc  r   rH  rW  r  r   r  re  r   rK  s      @r   test___contains__simplez&InterfaceTests.test___contains__simple  s    ,,,,,,,,,,,,	 	 	 	 	 	 	i 	 	 	 	')***G+,,,,,r   c                    ddl m ddl m}  G fdd|          } G fdd|          }|                     d|v            |                     d	|v            |                     d
|v            |                     d|v            d S )Nr   r  rd  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___contains__derived.<locals>.IBaser  c                      dS ra  r.   r.   r   r   r  z=InterfaceTests.test___contains__derived.<locals>.IBase.method#  r  r   Nr*  r  s   r   r
  r     rc  r   r
  c                   2    e Zd Z  d          Zd Zd ZdS )9InterfaceTests.test___contains__derived.<locals>.IDerivedrS  c                      dS rn  r.   r.   r   r   r  z@InterfaceTests.test___contains__derived.<locals>.IDerived.method)  r  r   c                      dS rq  r.   r.   r   r   r  zAInterfaceTests.test___contains__derived.<locals>.IDerived.method2,  r  r   NrV  r  s   r   r  r  &  rs  r   r  rW  r  rW  r  r  rY  s       @r   test___contains__derivedz'InterfaceTests.test___contains__derived  s    ,,,,,,,,,,,,	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 	(*+++H,---8+,,,	X-.....r   c                 t    ddl m}  G d d|          }|                     t          |          g            d S )Nr   rd  c                       e Zd ZdS )1InterfaceTests.test___iter__empty.<locals>.IEmptyNr   r.   r   r   rz  r  7  r   r   rz  )r   re  r#   rT   r{  s      r   test___iter__emptyz!InterfaceTests.test___iter__empty4  sb    ,,,,,,	 	 	 	 	Y 	 	 	 	fr*****r   c                     ddl m ddl m}  G fdd|          }|                     t	          t          |                    ddg           d S )Nr   r  rd  c                   ,    e Zd Z  d          Zd ZdS )3InterfaceTests.test___iter__simple.<locals>.ISimpler  c                      dS ra  r.   r.   r   r   r  z:InterfaceTests.test___iter__simple.<locals>.ISimple.methodC  r  r   Nr*  r  s   r   rH  r  @  rc  r   rH  rW  r  r   r  re  r#   r  rT   rK  s      @r   test___iter__simplez"InterfaceTests.test___iter__simple<  s    ,,,,,,,,,,,,	 	 	 	 	 	 	i 	 	 	 	W..0BCCCCCr   c                     ddl m ddl m}  G fdd|          } G fdd|          }|                     t	          t          |                    g d           d S )	Nr   r  rd  c                   ,    e Zd Z  d          Zd ZdS )2InterfaceTests.test___iter__derived.<locals>.IBaser  c                      dS ra  r.   r.   r   r   r  z9InterfaceTests.test___iter__derived.<locals>.IBase.methodO  r  r   Nr*  r  s   r   r
  r  L  rc  r   r
  c                   2    e Zd Z  d          Zd Zd ZdS )5InterfaceTests.test___iter__derived.<locals>.IDerivedrS  c                      dS rn  r.   r.   r   r   r  z<InterfaceTests.test___iter__derived.<locals>.IDerived.methodU  r  r   c                      dS rq  r.   r.   r   r   r  z=InterfaceTests.test___iter__derived.<locals>.IDerived.method2X  r  r   NrV  r  s   r   r  r  R  rs  r   r  rX  r  rY  s       @r   test___iter__derivedz#InterfaceTests.test___iter__derivedH  s    ,,,,,,,,,,,,	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 	X//???	A 	A 	A 	A 	Ar   c                     ddl m}  G d d|          }|d         }|                     |                    d          d           d S )Nr   rd  c                   "    e Zd Zd Zde_        dS )LInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMec                      dS r  r.   r.   r   r   r  zSInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMe.methodb  r  r   rn  N)r   r   r   r  optionalr.   r   r   ITagMer  a  s$             FOOOr   r  r  r  rn  )r   re  r#   r`   )r%   re  r  r  s       r   -test_function_attributes_become_tagged_valuesz<InterfaceTests.test_function_attributes_become_tagged_values^  st    ,,,,,,	  	  	  	  	 Y 	  	  	 
 !..z::A>>>>>r   c                     ddl m}  G d d|          }|                     |j        d           |                     t	          |          g            d S )Nr   rd  c                       e Zd ZdZdS )@InterfaceTests.test___doc___non_element.<locals>.IHaveADocStringxxxNr   r   r   rR   r.   r   r   IHaveADocStringr  l          EEEr   r  r  )r   re  r#   rR   rT   )r%   re  r  s      r   test___doc___non_elementz'InterfaceTests.test___doc___non_elementi  s}    ,,,,,,	 	 	 	 	i 	 	 	 	0%888o..33333r   c                     ddl m ddl m}  G fdd|          }|                     |j        d           |                     t          |          dg           d S )Nr   r  rd  c                   *    e Zd ZdZ  d          ZdS )?InterfaceTests.test___doc___as_element.<locals>.IHaveADocStringr  the docNr  r  s   r   r  r  v  s#        Ei	**GGGr   r  rP   rR   r   r  re  r#   rR   rT   )r%   re  r  r  s      @r   test___doc___as_elementz&InterfaceTests.test___doc___as_elementr  s    ,,,,,,,,,,,,	+ 	+ 	+ 	+ 	+ 	+ 	+i 	+ 	+ 	+ 	0"555o..<<<<<r   c                    ddl m} |                     ||j        |           g }	 |                    ||           |                     d           n3# |$ r+}|                     |j        d         |           Y d }~nd }~ww xY w|                     t          |          |           d |D             }|                                 |D ]+}	|                     |	|	                    d                     ,d S )Nr   rb  z&validateInvariants should always raisec                 (    g | ]}|j         d          S )r   r   ).0errors     r   
<listcomp>z/InterfaceTests._errorsEqual.<locals>.<listcomp>  s    ---%
1---r   )
r  rc  r^   r_  failr#   r   rh  sortpop)
r%   has_invariant	error_len
error_msgsr+  rc  er  msgsmsgs
             r   _errorsEqualzInterfaceTests._errorsEqual}  s+   555555'5#;]KKK	/$$]A666II>???? 	/ 	/ 	/UZ]A........	/ 	Q+++--1---		 	5 	5CS*.."3"34444	5 	5s   +A B!A==Bc                 H   ddl m ddl m} ddl m} ddl m  G fdd|          } G d d	          } |            } |||           |                     |                    d
          t          g           |                     |                    |          d            d|_	        |                     |                    |          d            d|_
        |                     |                    |          d            |`	|                     |ddg|           d S )Nr   r  rd  directlyProvidesr   c                   R    e Zd Z  d          Z  d          Z e           dS )8InterfaceTests.test_invariant_simple.<locals>.IInvariantrd   *bar; must eval to Boolean True if foo doesNr   r   r   rd   r6   _ifFooThenBarr  r   s   r   
IInvariantr    @        )E""C)HIICIm$$$$$r   r  c                       e Zd ZdS ):InterfaceTests.test_invariant_simple.<locals>.HasInvariantNr   r.   r   r   HasInvariantr    r   r   r  r       *   rn  If Foo, then Bar!)r   r  re  r  r   r#   r`   r  r_  r6   rd   r  )r%   re  r  r  r  r  r  r   s         @@r   test_invariant_simplez$InterfaceTests.test_invariant_simple  s   ,,,,,,,,,,,,333333,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	 	 	 	 	 	 	 	 %
333 	22<@@'	* 	* 	*66}EEtLLL66}EEtLLL66}EEtLLL--@,A$	& 	& 	& 	& 	&r   c                 l   ddl m ddl m} ddl m} ddl m  G fdd|          } G fdd	|          } G d
 d          }|                     |                    d          t          g            |            } |||           d|_        | 	                    |ddg|           d|_        d|_
        | 	                    |ddg|           d|_        d|_
        | 	                    |dddg|           d|_        d|_
        |                     |                    |          d            d S )Nr   r  rd  r  r   c                   R    e Zd Z  d          Z  d          Z e           dS )8InterfaceTests.test_invariant_nested.<locals>.IInvariantrd   r  Nr  r  s   r   r  r    r  r   r  c                   &    e Zd Z  e           dS );InterfaceTests.test_invariant_nested.<locals>.ISubInvariantN)r   r   r   _barGreaterThanFoor   s   r   ISubInvariantr    s"        I()))))r   r	  c                       e Zd ZdS ):InterfaceTests.test_invariant_nested.<locals>.HasInvariantNr   r.   r   r   r  r    r   r   r  r    r   rn  r  rf  %Please, Boo MUST be greater than Foo!)r   r  re  r  r   r#   r`   r  rd   r  r6   r_  )	r%   re  r  r  r	  r  r  r  r   s	          @@r   test_invariant_nestedz$InterfaceTests.test_invariant_nested  s   ,,,,,,,,,,,,333333,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	* 	* 	* 	* 	* 	* 	*J 	* 	* 	*	 	 	 	 	 	 	 	 	55lCC,-	/ 	/ 	/$666 	--@,A'	) 	) 	) -BC'	) 	) 	)
 -.BD'	) 	) 	)
 66}EEtLLLLLr   c                   	 ddl m ddl m} ddl m} ddl m	  G 	fdd|          } G d d	          } |            } |||           d
|_        |                    d          }|d d          }|                    t                     |	                    d|           | 
                    |ddg|           d|_        d|_        | 
                    |ddg|           d|_        d|_        | 
                    |dddg|           d|_        d|_        |                     |                    |          d            |	                    d|           d S )Nr   r  rd  r  r   c                   R    e Zd Z  d          Z  d          Z e           dS ):InterfaceTests.test_invariant_mutandis.<locals>.IInvariantrd   r  Nr  r  s   r   r  r    r  r   r  c                       e Zd ZdS )<InterfaceTests.test_invariant_mutandis.<locals>.HasInvariantNr   r.   r   r   r  r    r   r   r  r   r    rn  r  rf  r  )r   r  re  r  r   rd   r`   rS  r  rf   r  r6   r#   r_  )
r%   re  r  r  r  r  old_invariantsr    r  r   s
           @@r   test_invariant_mutandisz&InterfaceTests.test_invariant_mutandis  s   ,,,,,,,,,,,,333333,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	 	 	 	 	 	 	 	 %
333 $22<@@#AAA&
,---!!,
;;; 	--@,A$	& 	& 	& 45		
 	
 	
 -.BD$	& 	& 	&
 66}EEtLLL!!,?????r   c                 V   ddl m ddl m}  G d d|          }|                     |j        d           |                     t          |          g             G fdd|          }|                     |j        d	           |                     t          |          d
g           d S )Nr   r  rd  c                       e Zd ZdZdS )7InterfaceTests.test___doc___element.<locals>.IDocstringr  Nr  r.   r   r   
IDocstringr    r  r   r  r  c                   *    e Zd ZdZ  d          ZdS )CInterfaceTests.test___doc___element.<locals>.IDocstringAndAttributer  r  Nr  r  s   r   IDocstringAndAttributer    s#        Ei	**GGGr   r  rP   rR   r  )r%   re  r  r  r  s       @r   test___doc___elementz#InterfaceTests.test___doc___element  s   ,,,,,,,,,,,,	 	 	 	 	 	 	 	 	+U333j))2...	+ 	+ 	+ 	+ 	+ 	+ 	+Y 	+ 	+ 	+
 	/7<<<455	{CCCCCr   c                    ddl m ddl m} ddl m} ddl m ddlm  G fdd|          } ||           G d	 d
                      }|                     |dd                     |                     |dd                     	 |                     |dd                     d S # $ r.}|                     t          |          d           Y d }~d S d }~ww xY w)Nr   r  rd  r  r   rb  c                   V    e Zd Z  d          Z  d          Zfd            ZdS ):InterfaceTests.test_invariant_as_decorator.<locals>.IRangezLower boundzUpper boundc                 >    | j         | j        k     r d          d S )N	max < min)maxmin)obrc  s    r   range_invariantzJInterfaceTests.test_invariant_as_decorator.<locals>.IRange.range_invariant0  s'    6BF??!'+... #?r   N)r   r   r   r#  r"  r%  )r  rc  r   s   r   IRanger  ,  sV        )M**C)M**C/ / / / Y/ / /r   r&  c                       e Zd Zd ZdS )9InterfaceTests.test_invariant_as_decorator.<locals>.Rangec                 $    ||c| _         | _        d S r   )r#  r"  )r%   r#  r"  s      r   r   zBInterfaceTests.test_invariant_as_decorator.<locals>.Range.__init__8  s    %(#"$(((r   Nr   r.   r   r   Ranger(  5  s#        . . . . .r   r*  rn  rf  r!  )
r   r  re  r  r   r  rc  r_  r#   r8  )	r%   re  r  r&  r*  r  r  rc  r   s	         @@@r   test_invariant_as_decoratorz*InterfaceTests.test_invariant_as_decorator%  s   ,,,,,,,,,,,,......,,,,,,555555	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/Y 	/ 	/ 	/ 
V			. 	. 	. 	. 	. 	. 	. 
		.
 	!!%%1++...!!%%1++...	2%%eeAqkk22222 	2 	2 	2SVV[111111111	2s   B2 2C%7#C  C%c                    ddl m ddl m} ddl m  G fdd|          } G fdd|          } G d	 d
|          }|                     |                    d          d           |                     t          |j        d           |                     t          |	                                          dg           |                     |                    d          d           |                     |                    d          d           |                     t          |	                                          ddh           d S )Nr   r  rd  r2   c                   T    e Zd Z  d          Z  d          Z dd           dS )0InterfaceTests.test_taggedValue.<locals>.ITaggedrd   r  r=   SpamN)r   r   r   rd   r6   r  r3   s   r   ITaggedr.  G  sB        )E""C)HIICKv&&&&&r   r1  c                   @    e Zd Z  dd             dd           dS )1InterfaceTests.test_taggedValue.<locals>.IDerivedr=   	Spam Spamrd   r6   Nr   r2   s   r   r  r3  L  s5        K{+++Ku%%%%%r   r  c                       e Zd ZdS )2InterfaceTests.test_taggedValue.<locals>.IDerived2Nr   r.   r   r   	IDerived2r6  P  r   r   r7  r=   r/  rd   r4  r6   )r   r  re  r3   r#   r`   r^   r_   rT   rU   set)r%   re  r1  r  r7  r  r3   s        @@r   test_taggedValuezInterfaceTests.test_taggedValueB  s   ,,,,,,,,,,,,......	' 	' 	' 	' 	' 	' 	' 	'i 	' 	' 	'
	& 	& 	& 	& 	& 	& 	&w 	& 	& 	&	 	 	 	 	 	 	 	 	//66???(G$:EBBBg88::;;eWEEE11%88+FFF11%88%@@@Y99;;<<uenMMMMMr   c                    	 ddl m ddl m	  G 	fdd|          } G 	fdd|          } G 	fdd	|          } G 	fd
d||          } G d d||          } G d d||          }|S )Nr   r  r2   c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.FtagFNr   r   r   r=  r0  s   r   r>  r<  _  .        Ks###)C..CCCr   r>  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.Er=  ENr?  r0  s   r   rC  rB  c  r@  r   rC  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.Dr=  DNr?  r0  s   r   rF  rE  g  r@  r   rF  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.Cr=  CNr?  r0  s   r   rI  rH  k  r@  r   rI  c                       e Zd ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.BNr   r.   r   r   BrK  o  r   r   rL  c                       e Zd ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.ANr   r.   r   r   ArN  r  r   r   rO  )r   r  r3   )
r%   r  r>  rC  rF  rI  rL  rO  r  r3   s
           @@r   _make_taggedValue_treez%InterfaceTests._make_taggedValue_tree[  sm   ,,,,,,......	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	!1 	! 	! 	!	 	 	 	 	1 	 	 		 	 	 	 	1 	 	 	 r   c                 Z   ddl m} |                     t                    }|                     |j        j        d           |                     |          }|                     |d         j        d           |                     |                    d          d           |                     |                    d          d           |j	        d         j        dk    sJ |j	        d         
                    dd           |                     |                    d          d           d S )Nr   rd  rI  r=  rL  )r   re  rP  r   r#   r=  r   r`   rj   rg  rf   )r%   re  class_Aiface_As       r   "test_getTaggedValue_follows__iro__z1InterfaceTests.test_getTaggedValue_follows__iro__w  s$    	-,,,,, --f55-s333 --i880#666//66<<<11%88#>>> #,3333!++E3777//66<<<<<r   c                    ddl m} |                     |          }|                     |                    d                     |                     g t          |                                                     |                     t                    5  |
                    d           d d d            n# 1 swxY w Y   |                    dd           |                     |                    d          d           |                     |
                    d          d           |                     dgt          |                                                     |j        d         j        dk    sJ |j        d         }|                     |                    d          d           |                     |
                    d          d           |                     dgt          |                                                     d S )Nr   rd  r=  rO  rn  rI  )r   re  rP  r  rt   r#   rT   re   r^   r_   rp   rf   rg  r   )r%   re  rO  rI  s       r   (test_getDirectTaggedValue_ignores__iro__z7InterfaceTests.test_getDirectTaggedValue_ignores__iro__  s   ,,,,,,''	22!22599:::T!"<"<">">??@@@x(( 	* 	*""5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	
$$$11%88#>>>//66<<<%$q'A'A'C'C"D"DEEE{1~&#----KN11%88#>>>//66<<<%$q'A'A'C'C"D"DEEEEEs   B55B9<B9c                 V   ddl m ddl m}  G fdd|          } G d d|          } G d d	|          }|                     |                    d
          |                    d
          u            |f|_        |                     |                    d
          d u            d S )Nr   r  rd  c                   &    e Zd Z  d          ZdS )<InterfaceTests.test_description_cache_management.<locals>.I1r   N)r   r   r   r   r  s   r   r  rY    s        	#AAAr   r  c                       e Zd ZdS )<InterfaceTests.test_description_cache_management.<locals>.I2Nr   r.   r   r   I2r[    r   r   r\  c                       e Zd ZdS )<InterfaceTests.test_description_cache_management.<locals>.I3Nr   r.   r   r   I3r^    r   r   r_  r   )r   r  re  r   r  rg  )r%   re  r  r\  r_  r  s        @r   !test_description_cache_managementz0InterfaceTests.test_description_cache_management  s    	-,,,,,,,,,,,	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	srvvc{{2333!|st+,,,,,r   c                     ddl m} ddl m}  G d d|          } ||           G d d                      }|                      | |                      d           d S )Nr   rd  r  c                       e Zd ZdS )AInterfaceTests.test___call___defers_to___conform___.<locals>.IFooNr   r.   r   r   r~  rc    r   r   r~  c                       e Zd Zd ZdS )>InterfaceTests.test___call___defers_to___conform___.<locals>.Cc                     dS )Nr   r.   )r%   protos     r   r-  zJInterfaceTests.test___call___defers_to___conform___.<locals>.C.__conform__  s    qr   Nr.  r.   r   r   rI  re    s#            r   rI  )r   re  r  r#   )r%   re  r  r~  rI  s        r   $test___call___defers_to___conform___z3InterfaceTests.test___call___defers_to___conform___  s    ,,,,,,......	 	 	 	 	9 	 	 	 
T			 	 	 	 	 	 	 
		 	aaccA&&&&&r   c                     ddl m} ddl m}  G d d|          } ||           G d d                      } |            }|                      ||          |u            d S )Nr   rd  r  c                       e Zd ZdS )<InterfaceTests.test___call___object_implements.<locals>.IFooNr   r.   r   r   r~  rk    r   r   r~  c                       e Zd ZdS )9InterfaceTests.test___call___object_implements.<locals>.CNr   r.   r   r   rI  rm    r  r   rI  )r   re  r  r   )r%   re  r  r~  rI  cs         r   test___call___object_implementsz.InterfaceTests.test___call___object_implements  s    ,,,,,,......	 	 	 	 	9 	 	 	 
T			 	 	 	 	 	 	 
		 ACCQ1%%%%%r   c                     ddl m}  G d d|          } G d d          } |            }|                     t          ||           d S )Nr   rd  c                       e Zd ZdS )<InterfaceTests.test___call___miss_wo_alternate.<locals>.IFooNr   r.   r   r   r~  rr    r   r   r~  c                       e Zd ZdS )9InterfaceTests.test___call___miss_wo_alternate.<locals>.CNr   r.   r   r   rI  rt    r   r   rI  )r   re  r^   r  r%   re  r~  rI  rn  s        r   test___call___miss_wo_alternatez.InterfaceTests.test___call___miss_wo_alternate  s    ,,,,,,	 	 	 	 	9 	 	 		 	 	 	 	 	 	 	 ACC)T1-----r   c                     ddl m}  G d d|          } G d d          } |            }|                      |||           | u            d S )Nr   rd  c                       e Zd ZdS );InterfaceTests.test___call___miss_w_alternate.<locals>.IFooNr   r.   r   r   r~  ry    r   r   r~  c                       e Zd ZdS )8InterfaceTests.test___call___miss_w_alternate.<locals>.CNr   r.   r   r   rI  r{    r   r   rI  )r   re  r   ru  s        r   test___call___miss_w_alternatez-InterfaceTests.test___call___miss_w_alternate  s    ,,,,,,	 	 	 	 	9 	 	 		 	 	 	 	 	 	 	 ACCQ-.....r   c                     ddl m} ddlm} d } fd} G d d|          } G d d	          } |            }|d d          }||g|d d <   	                       ||           u            ||d d <   d S # ||d d <   w xY w)
Nr   rd  rY  c                     d S r   r.   rW  s     r   _missz:InterfaceTests.test___call___w_adapter_hook.<locals>._miss  s    Dr   c                     S r   r.   )r+  r   r%   s     r   _hitz9InterfaceTests.test___call___w_adapter_hook.<locals>._hit  s    Kr   c                       e Zd ZdS )9InterfaceTests.test___call___w_adapter_hook.<locals>.IFooNr   r.   r   r   r~  r    r   r   r~  c                       e Zd ZdS )6InterfaceTests.test___call___w_adapter_hook.<locals>.CNr   r.   r   r   rI  r    r   r   rI  )r   re  r"   rZ  r   )	r%   re  rZ  r  r  r~  rI  rn  old_adapter_hookss	   `        r   test___call___w_adapter_hookz+InterfaceTests.test___call___w_adapter_hook  s!   ,,,,,,::::::	 	 		 	 	 	 		 	 	 	 	9 	 	 		 	 	 	 	 	 	 	 ACC)!!!,!4=aaa	1OODDGGtO,,,0M!!!0M!!!0000s    A8 8	Bc                 ,   ddl m} ddl m} ddl m  G fdd|          } ||           G d d                      }|                     d	 |t                                           |                     d	 | |                                 d S )
Nr   rd  r  interfacemethodc                   &    e Zd Z d             ZdS )=InterfaceTests.test___call___w_overridden_adapt.<locals>.IFooc                     dS Nr   r.   r%   r   s     r   rN  zGInterfaceTests.test___call___w_overridden_adapt.<locals>.IFoo.__adapt__	      rr   Nr   r   r   rN  r  s   r   r~  r  		  s.          _  r   r~  c                       e Zd ZdS )<InterfaceTests.test___call___w_overridden_adapt.<locals>.ObjNr   r.   r   r   Objr  	  r  r   r  r   )r   re  r  r  r#   r   )r%   re  r  r~  r  r  s        @r    test___call___w_overridden_adaptz/InterfaceTests.test___call___w_overridden_adapt	  s    ,,,,,,......222222	 	 	 	 	 	 	9 	 	 	 
T			 	 	 	 	 	 	 
		 	TT&((^^,,, 	TT##%%[[)))))r   c                    ddl m} ddl m} ddl m  G fdd|          } G d d|          } ||           G d	 d
                      } ||           G d d                      }|                     d |t                                           |                     d | |                                 |                     d | |                                 |                     t                    5   | |                       d d d            n# 1 swxY w Y   |                     d | |                                 d S )Nr   rd  r  r  c                   &    e Zd Z d             ZdS )KInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdaptc                     dS r  r.   r  s     r   rN  zUInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdapt.__adapt__ 	  r  r   Nr  r  s   r   IAdaptr  	  .          _  r   r  c                       e Zd ZdZdS )LInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ISimplezNothing special.Nr  r.   r   r   rH  r  $	  s        """"r   rH  c                       e Zd Zd ZdS )NInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24c                     dS N   r.   rJ  s     r   r-  zZInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24.__conform__)	  s    rr   Nr.  r.   r   r   	Conform24r  '	  s#            r   r  c                       e Zd Zd ZdS )PInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ConformNonec                     d S r   r.   rJ  s     r   r-  z\InterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ConformNone.__conform__.	  r   r   Nr.  r.   r   r   ConformNoner  ,	  s#            r   r  r   r  )r   re  r  r  r#   r   r^   r  )r%   re  r  r  rH  r  r  r  s          @r   ,test___call___w_overridden_adapt_and_conformz;InterfaceTests.test___call___w_overridden_adapt_and_conform	  s6    	-,,,,,......222222	 	 	 	 	 	 	Y 	 	 	
	# 	# 	# 	# 	#i 	# 	# 	# 
V			 	 	 	 	 	 	 
		 
V			 	 	 	 	 	 	 
		 	VVFHH--...WWYY[[11222VVIIKK00111y)) 	# 	#GKKMM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	VVKKMM2233333s   D!!D%(D%c                 8   dd l }ddlm} ddlm} ddlm  G fdd|          } ||           G d d                      }|                     d	 |t                                            |            }|                     | ||                     d S )
Nr   rd  r  r  c                   0     e Zd Z fd            Z xZS )HInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.IFooc                 t    |                      |          sdS t                                          |          S r  )r   superrN  )r%   r   r  s     r   rN  zRInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.IFoo.__adapt__D	  s4    s++ 2ww((---r   )r   r   r   rN  __classcell__)r  r  s   @r   r~  r  B	  sC        . . . . _. . . . .r   r~  c                       e Zd ZdS )GInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.ObjNr   r.   r   r   r  r  J	  r  r   r  r   )sysr   re  r  r  r#   r   r   )r%   r  re  r  r~  r  r   r  s          @r   +test___call___w_overridden_adapt_call_superz:InterfaceTests.test___call___w_overridden_adapt_call_super;	  s   


,,,,,,......222222	. 	. 	. 	. 	. 	. 	.9 	. 	. 	. 
T			 	 	 	 	 	 	 
		 	TT&((^^,,,ceec4499%%%%%r   c                     ddl m} ddl m  G fdd|          }|                     d |t	                                           |                     |d                                         d           d S )	Nr   rd  r  c                   ,    e Zd Z d             Zd ZdS )HInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFooc                     dS r  r.   r  s     r   rN  zRInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFoo.__adapt__W	  r  r   c                     dS )zThis is a protocolNr.   )to_adapts    r   rN  zRInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFoo.__adapt__[	  r  r   Nr  r  s   r   r~  r  V	  s=          _% % % % %r   r~  r   rN  z
(to_adapt))r   re  r  r#   r   getSignatureStringr%   re  r~  r  s      @r   +test___adapt___as_method_and_implementationz:InterfaceTests.test___adapt___as_method_and_implementationR	  s    ,,,,,,222222	% 	% 	% 	% 	% 	% 	%9 	% 	% 	% 	TT&((^^,,,k*==??NNNNNr   c                   	 ddl m} ddl m	  G d d|          } G 	fdd|          } G d d	|          } G d
 d|          } G d d|||          } G 	fdd|          }|                     d |t	                                           |||||fD ]"}|                     t
          |j                   #|||fD ]2}|                     t          |          t          |                     3|                     t          |          t          |                     |                     t          |          t          |                     | 	                    |t          |                     |                     d |t	                                           |                     t          |          t          |                     | 	                    |t          |                     d S )Nr   rd  r  c                       e Zd ZdZdS )@InterfaceTests.test___adapt__inheritance_and_type.<locals>.IRootRootNr  r.   r   r   IRootr  e	  s        JJJr   r  c                   &    e Zd Z d             ZdS )EInterfaceTests.test___adapt__inheritance_and_type.<locals>.IWithAdaptc                     dS r  r.   r  s     r   rN  zOInterfaceTests.test___adapt__inheritance_and_type.<locals>.IWithAdapt.__adapt__i	  r  r   Nr  r  s   r   
IWithAdaptr  h	  r  r   r  c                       e Zd ZdZdS )AInterfaceTests.test___adapt__inheritance_and_type.<locals>.IOtherzSecond branchNr  r.   r   r   r  r  m	  s        r   r  c                       e Zd ZdZdS )EInterfaceTests.test___adapt__inheritance_and_type.<locals>.IUnrelated	UnrelatedNr  r.   r   r   
IUnrelatedr  p	  s        OOOr   r  c                       e Zd ZdZdS )HInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerivedAdaptzInherits an adaptNr  r.   r   r   IDerivedAdaptr  s	  s        ####r   r  c                   *    e Zd ZdZ d             ZdS )IInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerived2Adaptz$Overrides an inherited custom adapt.c                     dS r  r.   r  s     r   rN  zSInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerived2Adapt.__adapt__y	  r  r   N)r   r   r   rR   rN  r  s   r   IDerived2Adaptr  w	  s4        66  _  r   r  r   r  )
r   re  r  r#   r   r   r   r  assertNotEqualr  )
r%   re  r  r  r  r  r  r  r+  r  s
            @r   "test___adapt__inheritance_and_typez1InterfaceTests.test___adapt__inheritance_and_typea	  s   ,,,,,,222222	 	 	 	 	I 	 	 		 	 	 	 	 	 	 	 	 	
	  	  	  	  	 U 	  	  	 	 	 	 	 	 	 	 		$ 	$ 	$ 	$ 	$J
F 	$ 	$ 	$	 	 	 	 	 	 	] 	 	 	 	]]68844555J
MI 	9 	9EXu'78888FJ. 	; 	;ET%[[$y//:::: 	DOOT*-=-=>>>j))4+>+>???j$y//:::^^FHH55666D00$}2E2EFFFnd=.A.ABBBBBr   c                     ddl m} ddl m  G fdd|          }|                      ||           d           |                     |                                d           d S )Nr   rd  r  c                   <    e Zd Z d             Z d             ZdS )<InterfaceTests.test_interfacemethod_is_general.<locals>.IFooc                     dS )zReplace an existing methodr   r.   r  s     r   r  zEInterfaceTests.test_interfacemethod_is_general.<locals>.IFoo.__call__	  s	     rr   c                     dS r  r.   r   s    r   this_is_newzHInterfaceTests.test_interfacemethod_is_general.<locals>.IFoo.this_is_new	  r  r   N)r   r   r   r  r  r  s   r   r~  r  	  sI          _   _  r   r~  r   )r   re  r  r#   r  r  s      @r   test_interfacemethod_is_generalz.InterfaceTests.test_interfacemethod_is_general	  s    ,,,,,,222222		 		 		 		 		 		 		9 		 		 		 	dR((())++R00000r   N)7r   r   r   r  r  r  r  r  r  r  r$  r5  r>  rC  rL  rZ  rf  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r9  rP  rT  rV  r`  rh  ro  rv  r|  r  r  r  r  r  r  r  r.   r   r   r  r    sW       4 4 46 6 6 8  8  8D: : :69 9 9:4 4 4B)5 )5 )5V= = ="8 8 8(: : :,; ; ;
F 
F 
FA A A0A A A.6B 6B 6BpJ J J6 6 6*&8 &8 &8PD D D6 6 6*&8 &8 &8P/ / /- - -/ / /0+ + +
D 
D 
DA A A,	? 	? 	?4 4 4	= 	= 	=5 5 5 & & &<-M -M -M^7@ 7@ 7@rD D D$2 2 2:N N N2  8= = =*F F F,- - -*' ' '& & &
. 
. 
.
/ 
/ 
/1 1 12* * *(!4 !4 !4F& & &.O O O*C *C *CX1 1 1 1 1r   r  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )AttributeTestsTestAttributec                     ddl m} |S )Nr   r  )r"   r  )r%   r  s     r   rJ   zAttributeTests._getTargetClass	  s    666666r   c                 .   |                                  }t          |           |_        t          |          }|                     |                    d          |           |                     |                    dt          z   dz             |           d S )N-<zope.interface.interface.Attribute object at z.AttributeTests.TestAttribute>)rN   r  r   reprr   
startswithendswithr   r%   r  rs      r   test__repr__w_interfacez&AttributeTests.test__repr__w_interface	  s    ::LLLLHII1	
 	
 	
 	JJsX~(HHII1	
 	
 	
 	
 	
r   c                     |                                  }t          |          }|                     |                    d          |           |                     |                    d          |           d S )Nr  z TestAttribute>)rN   r  r   r  r  r  s      r   test__repr__wo_interfacez'AttributeTests.test__repr__wo_interface	  sk    LLLLHII1	
 	
 	
 	

#455q99999r   c                     |                                  }t          |           |_        t          |          }|                     |t
          dz              d S )Nz.AttributeTests.TestAttribute)rN   r  r   r8  r#   r   r  s      r   test__str__w_interfacez%AttributeTests.test__str__w_interface	  sJ    ::KKH'FFGGGGGr   c                 x    |                                  }t          |          }|                     |d           d S )Nr  )rN   r8  r#   r  s      r   test__str__wo_interfacez&AttributeTests.test__str__wo_interface	  s6    KKO,,,,,r   N)	r   r   r   rL   rJ   r  r  r  r  r.   r   r   r  r  	  sg        "L  	
 	
 	
: : :H H H- - - - -r   r  c                   `    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )MethodTests
TestMethodc                     ddl m} |S )Nr   r\  )r"   r]  )r%   r]  s     r   rJ   zMethodTests._getTargetClass	  s    333333r   c                     |                                  }|                     |j        i            ddi|_        |                     |j        ddi           |`|                     |j        i            d S rc   )rN   r#   r  r%   r  s     r   test_optional_as_propertyz%MethodTests.test_optional_as_property	  sq    "--- %.5%.999O"-----r   c                    ddl m} |                                 }	  |             |                     d           d S # |$ rF}|                     |j        d            |                     |j        | j                   Y d }~d S d }~ww xY w)Nr   )BrokenImplementationz*__call__ should raise BrokenImplementation)r  r  rN   r  r#   r   rM   rL   )r%   r  r  r  s       r   )test___call___raises_BrokenImplementationz5MethodTests.test___call___raises_BrokenImplementation	  s    BBBBBB	DFHHH
 IIBCCCCC	 $ 	8 	8 	8Q[$///QVT%6777777777	8s   
= B;BBc                    |                                  }|                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d         d            d S )N
positionalrequiredr  varargskwargs)rN   getSignatureInfor#   rT   )r%   r  infos      r   test_getSignatureInfo_barez&MethodTests.test_getSignatureInfo_bare	  s    &&((d<0112666d:.//444j)2...i$///h.....r   c                 ~    |                                  }|                     |                                d           d S )Nz())rN   r#   r  r  s     r   test_getSignatureString_barez(MethodTests.test_getSignatureString_bare	  s7    2244d;;;;;r   c                     |                                  }dgx|_        |_        |                     |                                d           d S )Nrd   z(foo))rN   r  r  r#   r  r  s     r   'test_getSignatureString_w_only_requiredz3MethodTests.test_getSignatureString_w_only_required	  sH    /4g5FO2244g>>>>>r   c                     |                                  }dgx|_        |_        ddi|_        |                     |                                d           d S )Nrd   r6   z(foo='bar'))rN   r  r  r  r#   r  r  s     r   "test_getSignatureString_w_optionalz.MethodTests.test_getSignatureString_w_optional	  sS    /4g5FO %.2244mDDDDDr   c                     |                                  }d|_        |                     |                                d           d S )Nr   z(*args))rN   r  r#   r  r  s     r   !test_getSignatureString_w_varargsz-MethodTests.test_getSignatureString_w_varargs	  s>    2244i@@@@@r   c                     |                                  }d|_        |                     |                                d           d S )Nr   z(**kw))rN   r  r#   r  r  s     r    test_getSignatureString_w_kwargsz,MethodTests.test_getSignatureString_w_kwargs	  s>    2244h?????r   c                 <   |                                  }d|_        t          |           |_        t	          |          }|                     |                    d          |           |                     |                    dt          z   dz             |           d S )Nr   *<zope.interface.interface.Method object atr  z.MethodTests.TestMethod(**kw)>)	rN   r  r  r   r  r   r  r  r   r  s      r   r  z#MethodTests.test__repr__w_interface
  s    ::LLLLEFF	
 	
 	
 	JJsX~(HHII1	
 	
 	
 	
 	
r   c                     |                                  }d|_        t          |          }|                     |                    d          |           |                     |                    d          |           d S )Nr   r  z TestMethod(**kw)>)rN   r  r  r   r  r  r  s      r   r  z$MethodTests.test__repr__wo_interface
  sr    LLLLEFF	
 	
 	
 	

#788!<<<<<r   c                     |                                  }d|_        t          |           |_        t	          |          }|                     |t          dz              d S )Nr   z.MethodTests.TestMethod(**kw))rN   r  r  r   r8  r#   r   r  s      r   r  z"MethodTests.test__str__w_interface
  sQ    ::KKH'FFGGGGGr   c                     |                                  }d|_        t          |          }|                     |d           d S )Nr   zTestMethod(**kw))rN   r  r8  r#   r  s      r   r  z#MethodTests.test__str__wo_interface 
  s>    KK./////r   N)r   r   r   rL   rJ   r  r  r  r  r  r  r  r	  r  r  r  r  r.   r   r   r  r  	  s        L  . . .	D 	D 	D/ / /< < <? ? ?
E E EA A A
@ @ @


 

 

= = =H H H0 0 0 0 0r   r  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )Test_fromFunctionc                     ddl m}  ||i |S )Nr   r  )r"   r  )r%   r   r   r  s       r   _callFUTzTest_fromFunction._callFUT)
  s)    999999|T(R(((r   c                    d }|                      |          }|                     |                                d           |                     |                                d           |                     |j        d            |                     t          |                                          g            |                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d         d            d S )	Nc                      dS r  r.   r.   r   r   _funcz*Test_fromFunction.test_bare.<locals>._func/
  r  r   r  r  r  r  r  r  r  r  r#   rQ   rS   r   rT   rU   r  r%   r  r  r  s       r   	test_barezTest_fromFunction.test_bare-
  sQ   	 	 	 u%%))7333+666)4000f7799::B???&&((d<0112666d:.//444j)2...i$///h.....r   c                     ddl m}  G d d|          }d }|                     ||          }|                     |j        |           d S )Nr   r  c                       e Zd ZdS )0Test_fromFunction.test_w_interface.<locals>.IFooNr   r.   r   r   r~  r  A
  r   r   r~  c                      dS r  r.   r.   r   r   r  z1Test_fromFunction.test_w_interface.<locals>._funcD
  r  r   r   )r"   r  r  r#   r   )r%   r  r~  r  r  s        r   test_w_interfacez"Test_fromFunction.test_w_interface>
  s    ;;;;;;	 	 	 	 	> 	 	 		 	 	 u55)400000r   c                     d }|                      |d          }|                     |                                d           d S )Nc                      dS r  r.   r.   r   r   r  z,Test_fromFunction.test_w_name.<locals>._funcL
  r  r   anotherName)rM   )r  r#   rQ   )r%   r  r  s      r   test_w_namezTest_fromFunction.test_w_nameJ
  sN    	 	 	 u=99))=99999r   c                    d }|                      |          }|                                }|                     t          |d                   dg           |                     t          |d                   dg           |                     |d         i            |                     |d         d            |                     |d         d            d S )Nc                     dS r  r.   rd   s    r   r  z5Test_fromFunction.test_w_only_required.<locals>._funcT
  r  r   r  rd   r  r  r  r  r  r  r#   rT   r  s       r   test_w_only_requiredz&Test_fromFunction.test_w_only_requiredR
  s    	 	 	 u%%&&((d<011E7;;;d:.//%999j)2...i$///h.....r   c                    d	d}|                      |          }|                                }|                     t          |d                   dg           |                     t          |d                   g            |                     |d         ddi           |                     |d         d            |                     |d         d            d S )
Nr6   c                     dS r  r.   r$  s    r   r  z0Test_fromFunction.test_w_optional.<locals>._funca
  r  r   r  rd   r  r  r  r  r6   r%  r  s       r   test_w_optionalz!Test_fromFunction.test_w_optional_
  s    	 	 	 	 u%%&&((d<011E7;;;d:.//444j)E5>:::i$///h.....r   c                    d
d}|                      |d          }|                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d	         d            d S )Nr6   c                     dS r  r.   r   s    r   r  z5Test_fromFunction.test_w_optional_self.<locals>._funcu
  r  r   rn  )imlevelr  r  r  r  r  r)  r%  r  s       r   test_w_optional_selfz&Test_fromFunction.test_w_optional_selfl
  s    	 	 	 	 ua00&&((d<0112666d:.//444j)2...i$///h.....r   c                    d }|                      |          }|                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d           |                     |d         d            d S )Nc                      dS r  r.   r  s    r   r  z/Test_fromFunction.test_w_varargs.<locals>._func
  r  r   r  r  r  r  r   r  r%  r  s       r   test_w_varargsz Test_fromFunction.test_w_varargs
  s    	 	 	 u%%&&((d<0112666d:.//444j)2...i&111h.....r   c                    d }|                      |          }|                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d         d           d S )Nc                      dS r  r.   )r   s    r   r  z.Test_fromFunction.test_w_kwargs.<locals>._func
  r  r   r  r  r  r  r  r   r%  r  s       r   test_w_kwargszTest_fromFunction.test_w_kwargs
  s    	 	 	 u%%&&((d<0112666d:.//444j)2...i$///h.....r   c                    	 dd}|                      |          }|                                }|                     t          |d                   ddg           |                     t          |d                   dg           |                     |d         ddi           |                     |d         d	           |                     |d
         d           d S )Nr7   c                     dS r  r.   )rd   r6   r   r   s       r   r  z3Test_fromFunction.test_full_spectrum.<locals>._func
  r  r   r  rd   r6   r  r  r  r   r  r   r7   r%  r  s       r   test_full_spectrumz$Test_fromFunction.test_full_spectrum
  s     	 	 	 	
 u%%&&((d<011E5>BBBd:.//%999j)E5>:::i&111h.....r   N)r   r   r   r  r  r  r!  r&  r*  r.  r1  r4  r8  r.   r   r   r  r  '
  s        ) ) )/ / /"
1 
1 
1: : :/ / // / // / /(/ / // / // / / / /r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )Test_fromMethodc                     ddl m}  ||i |S )Nr   )
fromMethod)r"   r<  )r%   r   r   r<  s       r   r  zTest_fromMethod._callFUT
  s)    777777z4&2&&&r   c                     G d d          }|                      |j                  }|                     |                                d           |                     |                                d           |                     |j        d            |                     t          |                                          g            |                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d	         d            d S )
Nc                       e Zd Zd ZdS ))Test_fromMethod.test_no_args.<locals>.Fooc                     dS r  r.   r   s    r   r6   z-Test_fromMethod.test_no_args.<locals>.Foo.bar
  r  r   Nr  r.   r   r   r   r?  
  rK  r   r   r6   r  r  r  r  r  r  )	r  r6   r#   rQ   rS   r   rT   rU   r  r%   r   r  r  s       r   test_no_argszTest_fromMethod.test_no_args
  sl   	 	 	 	 	 	 	 	 sw''))5111+666)4000f7799::B???&&((d<0112666d:.//444j)2...i$///h.....r   c                     G d d          }|                      |j                  }|                                }|                     t	          |d                   ddg           |                     t	          |d                   dg           |                     |d         ddi           |                     |d	         d
           |                     |d         d           d S )Nc                       e Zd Z	 ddZdS )/Test_fromMethod.test_full_spectrum.<locals>.Foor7   c                     dS r  r.   )r%   rd   r6   r   r   s        r   r6   z3Test_fromMethod.test_full_spectrum.<locals>.Foo.bar
  r  r   Nr7  r  r.   r   r   r   rE  
  s+        $     r   r   r  rd   r6   r  r  r7   r  r   r  r   )r  r6   r  r#   rT   rA  s       r   r8  z"Test_fromMethod.test_full_spectrum
  s    	 	 	 	 	 	 	 	 sw''&&((d<011E5>BBBd:.//%999j)E5>:::i&111h.....r   c                    d }|                      |          }|                     |                                d           |                     |                                d           |                     |j        d            |                     t          |                                          g            |                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d         d            d S )	Nc                      dS r  r.   r.   r   r   rd   z.Test_fromMethod.test_w_non_method.<locals>.foo
  r  r   rd   r  r  r  r  r  r  r  )r%   rd   r  r  s       r   test_w_non_methodz!Test_fromMethod.test_w_non_method
  sQ   	 	 	 s##))5111+666)4000f7799::B???&&((d<0112666d:.//444j)2...i$///h.....r   N)r   r   r   r  rB  r8  rI  r.   r   r   r:  r:  
  sP        ' ' '/ / /$/ / / / / / / /r   r:  c                       e Zd Zd Zd ZdS )ro  c                     g | _         d S r   )r  r   s    r   r   zDummyDependent.__init__
  s    r   c                 :    | j                             |           d S r   )r  rS  )r%   originally_changeds     r   r  zDummyDependent.changed
  s    /00000r   N)r   r   r   r   r  r.   r   r   ro  ro  
  s2          1 1 1 1 1r   ro  c                     ddl m} t          | dd           }t          | dd           }|.t          |t	          |                    r||k    s |d          d S d S d S )Nr   rb  rd   r6   r  )r  rc  r$   rr  r  )r   rc  rd   r6   s       r   r  r  
  s}    111111
#ud
#
#C
#ud
#
#C
:c49955
 Syy'ABBB 
 yr   c                 p    ddl m} t          | dd           rt          | dd           s |d          d S d S )Nr   rb  rd   r6   r  )r  rc  r$   )r   rc  s     r   r  r  
  s`    111111sE4   +eT)B)B +g)***+ + + +r   c                        e Zd Zd Zd Zd ZdS )r   c                     | _         fd|D             | _        |                                D ]\  }}t          ||           d S )Nc                 2    i | ]}|t          |          S r.   )r$   )r  keyr&  s     r   
<dictcomp>z$_Monkey.__init__.<locals>.<dictcomp>  s%    CCC3 4 4CCCr   )r&  
to_restoreitemssetattr)r%   r&  r   rS  r/  s    `   r   r   z_Monkey.__init__  s_    CCCCCCC((** 	( 	(JCFC''''	( 	(r   c                     | S r   r.   r   s    r   	__enter__z_Monkey.__enter__  s    r   c                 p    | j                                         D ]\  }}t          | j        ||           d S r   )rU  rV  rW  r&  )r%   exc_typeexc_valexc_tbrS  r/  s         r   __exit__z_Monkey.__exit__  sD    ///11 	- 	-JCDKe,,,,	- 	-r   N)r   r   r   r   rY  r^  r.   r   r   r   r      sA        ( ( (  - - - - -r   r   c                       e Zd ZdZd Zd ZdS )TestTypeAnnotationsz*Test using Interfaces in type annotations.c                     ddl m} ddl m} ddlm}  G d d|           G d d|           G fd	d
          }|                     |j        |         |f         d           d S )Nr   OptionalUnionrd  c                       e Zd ZdS )+TestTypeAnnotations.test___or__.<locals>.I1Nr   r.   r   r   r  rg    r   r   r  c                       e Zd ZdS )+TestTypeAnnotations.test___or__.<locals>.I2Nr   r.   r   r   r\  ri    r   r   r\  c                   2    e Zd ZU  dz  ed<    z  ed<   dS )*TestTypeAnnotations.test___or__.<locals>.BNr   r   r   r   r   r  )r  r\  s   r   rL  rk    s+         DyLLLBwJJJJJr   rL  r  typingrc  re  r   re  r#   r  )r%   rc  re  re  rL  r  r\  s        @@r   test___or__zTestTypeAnnotations.test___or__  s
   ######      ,,,,,,	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	Xb\b"fFF	H 	H 	H 	H 	Hr   c                     ddl m} ddl m} ddlm}  G d d|           G d d           G fd	d
          }|                     |j        |         |f         d           d S )Nr   rb  rd  rd  c                       e Zd ZdS ),TestTypeAnnotations.test___ror__.<locals>.I1Nr   r.   r   r   r  rr  ,  r   r   r  c                       e Zd ZdS )+TestTypeAnnotations.test___ror__.<locals>.ANr   r.   r   r   rO  rt  /  r   r   rO  c                   2    e Zd ZU dz  ed<    z  ed<   dS )+TestTypeAnnotations.test___ror__.<locals>.BNr   r   rl  )rO  r  s   r   rL  rv  2  s+         byLLL2vIIIIIr   rL  r  rm  )r%   rc  re  re  rL  rO  r  s        @@r   test___ror__z TestTypeAnnotations.test___ror__&  s   ######      ,,,,,,	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	Xb\aeEE	G 	G 	G 	G 	Gr   N)r   r   r   rR   ro  rw  r.   r   r   r`  r`    s@        44H H H&G G G G Gr   r`  ) rR   unittestzope.interface.testsr   r   r   r   r   ra  TestCaser   r0   rF   r   r   r   r   r  r@  rE  r]  r  r  r  r  r  r:  ro  r  r  r   r`  r.   r   r   <module>r{     sq   $  ( ( ( ( ( ( 1 1 1 1 1 1 6 6 6 6 6 6 2 2 2 2 2 2 &((C C C C CX& C C CB!9 !9 !9 !9 !9x( !9 !9 !9HG( G( G( G( G(8$ G( G( G(T9 9 9 9 9H$5 9 9 9D	! 	! 	! 	! 	!!	! 	! 	!15 15 15 15 15< 15 15 15hh5 h5 h5 h5 h5 h5 h5 h5V1
 1
 1
 1
 1
? 1
 1
 1
h	 	 	 	 			 	 	"7 "7 "7 "7 "72H4E "7 "7 "7Jf
 f
 f
 f
 f
* f
 f
 f
Ru	1 u	1 u	1 u	1 u	1(+ u	1 u	1 u	1pP1 P1 P1 P1 P1X& P1 P1 P1f$$- $- $- $- $-\ $- $- $-N]0 ]0 ]0 ]0 ]0. ]0 ]0 ]0@@/ @/ @/ @/ @/) @/ @/ @/F7/ 7/ 7/ 7/ 7/h' 7/ 7/ 7/t1 1 1 1 1 1 1 1
C 
C 
C+ + +- - - - - - - - 'G 'G 'G 'G 'G(+ 'G 'G 'G 'G 'Gr   