
    cTi                       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          Z G d de          Z G d de          Z G d de          Z G d d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*e          Zd+ Zd, Z G d- d.e          ZdS )/zTest Interface implementation
    N)_skip_under_py3k)MissingSomeAttrs)OptimizationTestMixin)CleanUpc                       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                    }|                     t          ||d           dgi           d S )Nr   	invariantTAGGED_DATAc                      t                      NNotImplementedErrorargskws     Clib/python3.11/site-packages/zope/interface/tests/test_interface.py_checkz,Test_invariant.test_w_single.<locals>._check(       %'''    c                   &    e Zd Z             dS ))Test_invariant.test_w_single.<locals>.FooN__name__
__module____qualname__)r   r   s   r   Foor   +   s!        Ifr   r   
invariantszope.interface.interfacer   r   objectassertEqualgetattr)selfr   r   r   r   s      @@r   test_w_singlezTest_invariant.test_w_single$   s    666666888888	( 	( 	(	 	 	 	 	 	 	 	& 	 	 	 	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                    }|                     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>._check5   r   r   c                      t                      r   r   r   s     r   _another_checkz6Test_invariant.test_w_multiple.<locals>._another_check8   r   r   c                   <    e Zd Z                         dS )+Test_invariant.test_w_multiple.<locals>.FooNr   )r+   r   r   s   r   r   r-   ;   s1        IfIn%%%%%r   r   r    r!   )r&   r   r   r+   r   r   s      @@@r   test_w_multiplezTest_invariant.test_w_multiple1   s    666666888888	( 	( 	(	( 	( 	(	& 	& 	& 	& 	& 	& 	& 	& 	&& 	& 	& 	& 	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                    }|                     t          ||d           ddgi           d S )Nr   taggedValuer   c                   *    e Zd Z  ddg           dS )+Test_taggedValue.test_w_single.<locals>.FoobarbazNr   r3   s   r   r   r6   I   s%        Kw'''''r   r   r7   r8   r"   r4   r   r#   r$   r%   r&   r   r   r4   s      @r   r'   zTest_taggedValue.test_w_singleE   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                    }|                     t          ||d           dgdd           d S )	Nr   r3   r   c                   B    e Zd Z  ddg             dd           dS )-Test_taggedValue.test_w_multiple.<locals>.Foor7   r8   quxspamNr   r3   s   r   r   r=   S   s7        Kw'''Kv&&&&&r   r   r8   r?   r7   r>   r9   r:   s      @r   r.   z Test_taggedValue.test_w_multipleO   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                    }|                     t          ||d           ddd           d S )	Nr   r3   r   c                   Z    e Zd Z  ddg             dd             dd           dS )9Test_taggedValue.test_w_multiple_overwriting.<locals>.Foor7   r8   r>   r?   frobNr   r3   s   r   r   rC   ^   sI        Kw'''Kv&&&Kv&&&&&r   r   rD   r?   r@   r9   r:   s      @r   test_w_multiple_overwritingz,Test_taggedValue.test_w_multiple_overwritingZ   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.   rE   r/   r   r   r1   r1   C   sA        + + +	: 	: 	:
9 
9 
9 
9 
9r   r1   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"   rJ   )r&   rJ   s     r   _getTargetClasszElementTests._getTargetClassk   s    444444r   Nc                 N    || j         } |                                 |          S r   )DEFAULT_NAMErK   )r&   names     r   _makeOnezElementTests._makeOneo   s.     	%$D%t##%%d+++r   c                    |                                  }|                     |j        | j                   |                     |                                | j                   |                     |j        d           |                     |                                d           |                     t          |                                          g            d S )N )	rO   r$   r   rM   getName__doc__getDoclistgetTaggedValueTagsr&   elements     r   test_ctor_defaultszElementTests.test_ctor_defaultst   s    --//)4+<===**D,=>>>"---))2...g88::;;R@@@@@r   c                     |                      d          }|                     |j        d            |                     |j        d           d S )Nz
An Element)rO   r$   r   rS   rW   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)rO   assertRaisesKeyErrorgetTaggedValuerW   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foor7   )rO   r$   rU   getDirectTaggedValueTagssetTaggedValuerW   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]   rO   r$   queryTaggedValuerW   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^   r7   rj   rW   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]   )rO   r_   r`   getDirectTaggedValuerW   s     r   test_getDirectTaggedValue_missz+ElementTests.test_getDirectTaggedValue_miss   s0    --//(G$@*MMMMMr   c                     |                                  }|                     |                    d          d            d S r]   rO   r$   queryDirectTaggedValuerW   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 rn   rt   rW   s     r   *test_queryDirectTaggedValue_miss_w_defaultz7ElementTests.test_queryDirectTaggedValue_miss_w_default   s;    --//77
EJJERRRRRr   c                 j   |                                  }|                    dd           |                     t          |                                          dg           |                     |                    d          d           |                     |                    d          d           d S rd   )rO   rg   r$   rU   rV   ra   rk   rW   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~   rO   )r&   r|   r~   rX   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   rM   rK   rO   rY   r[   rb   rh   rl   ro   rr   rv   rx   rz   r   r/   r   r   rG   rG   g   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S S SA A A( ( ( ( (r   rG   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   rK   r&   s    r   rO   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   rO   _MonkeyassertFalser   r#   )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   rO   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   rK   rO   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   rK   z&SpecificationBaseTests._getTargetClass   s    >>>>>>  r   Nr   r   r   rK   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   rO   _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   rO   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t                    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              ByHHHr   r   c                                  S r   r/   r   r   s    r   r   zGSpecificationBasePyTests.test_implementedBy_hit.<locals>._implementedBy       577Nr   r   )r   r   rO   r#   r   r   r   )r&   r   r   r   r   s      @@r   test_implementedBy_hitz/SpecificationBasePyTests.test_implementedBy_hit   s   ,,,,,,]]__	! 	! 	! 	! 	! 	! 	!F 	! 	! 	!	 	 	 	 	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t                    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   rO   r#   r   r   r   )r&   r   r   r   r   s      @@r   test_providedBy_hitz,SpecificationBasePyTests.test_providedBy_hit   s	   ,,,,,,]]__	! 	! 	! 	! 	! 	! 	!F 	! 	! 	!	 	 	 	 	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)rO   r   s    r   _makeOneToComparez3NameAndModuleComparisonTestsMixin._makeOneToCompare  s    }}S#&&&r   c                    dd l }|                                 }t          ||          }t          |d|z            } G fddt                     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                     |                     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&   rN   excRaisesErrorOnMissings      r   r   zrNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissing.__getattribute__  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 Nre   )r   r   s    r   __init__ziNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__init__  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     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   re   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__6      tr   N	r   r   r   r   __lt____le____gt____ge____ne__r/   r   r   AllowsAnyComparisonr   5  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   B  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   O          Dr   r   )operatorr   r%   r#   r$   r   r   r_   r   assertIsNotImplementedr   	TypeError	Exceptionr   )r&   rN   r   ibopmethr   r   clsr   r   r   r   s               @r   !__check_NotImplemented_comparisonzCNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison  s    	##%%Xt$$r8d?++
	$ 	$ 	$ 	$ 	$ 	$ 	$6 	$ 	$ 	$	% 	% 	% 	% 	%"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~   C33C7:C7D==EE5IIIJ55J9<J9K::K>K> MM	M	!NN	N	c                 0    |                      d           d S )NltC_NameAndModuleComparisonTestsMixin__check_NotImplemented_comparisonr   s    r   test__lt__NotImplementedz:NameAndModuleComparisonTestsMixin.test__lt__NotImplemented_      ..t44444r   c                 0    |                      d           d S )Nler  r   s    r   test__le__NotImplementedz:NameAndModuleComparisonTestsMixin.test__le__NotImplementedb  r  r   c                 0    |                      d           d S )Ngtr  r   s    r   test__gt__NotImplementedz:NameAndModuleComparisonTestsMixin.test__gt__NotImplementede  r  r   c                 0    |                      d           d S )Nger  r   s    r   test__ge__NotImplementedz:NameAndModuleComparisonTestsMixin.test__ge__NotImplementedh  r  r   N)	r   r   r   r   r  r  r  r  r  r/   r   r   r   r     sr        ' ' 'U U Un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   rK   z'InterfaceBaseTestsMixin._getTargetClasso  s    !!r   c                     ddl m} |S )Nr   )InterfaceBasePy)r"   r  )r&   r  s     r   r   z)InterfaceBaseTestsMixin._getFallbackClassr  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_conformy  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  x  s=        % % %- - - - - - -r   r%  r   )r&   r$  rN   moduler%  s    `   r   rO   z InterfaceBaseTestsMixin._makeOnew  sW    	- 	- 	- 	- 	- 	- 	-%%'' 	- 	- 	-
 r$r   c                     |                      d          }t                       G fddt                    }|                      | |                                 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/  rO   r#   r   )r&   r  r/  r,  s      @r   +test___call___w___conform___returning_valuezCInterfaceBaseTestsMixin.test___call___w___conform___returning_value  s{    ]]5!!HH		! 	! 	! 	! 	! 	! 	!v 	! 	! 	! 	bbnni00000r   c                     |                      d          }||                                 f}t                      }t                      }|                      |||          |           d S )NF)rO   rK   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)rO   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_raisesrO   r   s    r   6test___call___w_no_conform_catches_only_AttributeErrorzNInterfaceBaseTestsMixin.test___call___w_no_conform_catches_only_AttributeError  s(    $T4==??][[[[[[r   )FNN)
r   r   r   rK   r   rO   r1  r6  r;  r?  r/   r   r   r  r  l  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"   rC  )r&   rC  s     r   rK   z"InterfaceBaseTests._getTargetClass      ::::::r   Nr   r/   r   r   rA  rA    s#            r   rA  c                   .    e Zd Zej        Zd Zd Zd ZdS )InterfaceBasePyTestsc                     |                      d          } G d dt                    } |            }|                      ||          |           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/  rI    #            r   r/  r0  )r&   r  r/  r4  s       r   ,test___call___w___conform___miss_ob_provideszAInterfaceBasePyTests.test___call___w___conform___miss_ob_provides  sl    ]]4  	 	 	 	 	v 	 	 	 (**bbkk7+++++r   c                     |                      d          }t                      }|                     |                    |          |           d S r   )rO   r#   r   	__adapt__)r&   r  r4  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   rO   r#   r   r   rO  r$   )r&   r   r  r4  rV  rY  rU  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   rK   rM  rP  r\  r/   r   r   rF  rF    sK         .?O, , ,6 6 6
7 7 7 7 7r   rF  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   rK   z"SpecificationTests._getTargetClass  rD  r   c                     |t           u r |                                             S  |                                 |          S r   )_markerrK   )r&   basess     r   rO   zSpecificationTests._makeOne  sE    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"   rf  rO   r$   	__bases__lenr   r   
dependents)r&   rf  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   )rO   DummyDependent	subscriber$   ri  rj  r&   rk  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 )Nrg  )rO   rp  rq  r$   rj  rr  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   )rO   rp  r_   r`   unsubscriberr  s      r   test_unsubscribe_missz(SpecificationTests.test_unsubscribe_miss  s;    }}(D$4c:::::r   c                 l   |                                  }t                      }|                    |           |                    |           |                    |           |                     |j        |         d           |                    |           |                     ||j        v            d S rn  )rO   rp  rq  rx  r$   rj  r   rr  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   re  c                       e Zd ZdS )VSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.INr   r/   r   r   Ir~    r   r   r  c                       e Zd ZdS )VSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.JNr   r/   r   r   Jr    r   r   r  ro  )
r"   rf  rO   rp  rq  rh  r$   _changedrj  get)r&   rf  rk  rs  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	 	 	 	 		 	 	 		 	 	 	 		 	 	 	v...d+Q///))$//666d+Q/////r   c                    ddl m}  G d d|          }|                                 }d|_        d|j        |<   |                    |           |                     |j                   |                     ||j        v            d S )Nr   re  c                       e Zd ZdS )GSpecificationTests.test_changed_clears_volatiles_and_implied.<locals>.INr   r/   r   r   r  r    r   r   r  r   r/   )r"   rf  rO   _v_attrsr   changedassertIsNoner   )r&   rf  r  rk  s       r   )test_changed_clears_volatiles_and_impliedz<SpecificationTests.test_changed_clears_volatiles_and_implied  s    666666	 	 	 	 		 	 	 	}}aT$-(((dm+,,,,,r   c                     ddl m}  G d d|          }|                     ||g          }|                     t	          |                                          |g           d S )Nr   re  c                       e Zd ZdS )CSpecificationTests.test_interfaces_skips_already_seen.<locals>.IFooNr   r/   r   r   IFoor    r   r   r  )r"   rf  rO   r$   rU   
interfacesr&   rf  r  rk  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   re  c                       e Zd ZdS )<SpecificationTests.test_extends_strict_wo_self.<locals>.IFooNr   r/   r   r   r  r    r   r   r  Tstrict)r"   rf  rO   r   extendsr  s       r   test_extends_strict_wo_selfz.SpecificationTests.test_extends_strict_wo_self  sy    666666	 	 	 	 	9 	 	 	}}T""d48899999r   c                     |                                  }|                     |                    |d                     d S )NTr  )rO   r   r  r&   rk  s     r   test_extends_strict_w_selfz-SpecificationTests.test_extends_strict_w_self  s9    }}d48899999r   c                     |                                  }|                     |                    |d                     d S )NFr  )rO   r   r  r  s     r   test_extends_non_strict_w_selfz1SpecificationTests.test_extends_non_strict_w_self  s7    }}T%8899999r   c                     |                                  }t                      }d|i|_        |                     |                    d          |u            d S r   )rO   r#   r  r   r  )r&   rk  re   s      r   test_get_hit_w__v_attrsz*SpecificationTests.test_get_hit_w__v_attrs#  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   	Attributere  c                   &    e Zd Z  d          ZdS )CSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IFoore   N)r   r   r   re   r  s   r   r  r  ,          )E""CCCr   r  c                   &    e Zd Z  d          ZdS )CSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IBarr7   Nr   r   r   r7   r  s   r   IBarr  .  r  r   r  re   r7   )r"   r  rf  rO   r   r  )r&   rf  r  r  rk  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t
                    } G d	 d
|          } G d d|          } ||           G d dt
                                } G d d||          }	|                      ||	          j         ||	           ||          | ||           |t
                    |f           d S )Nr   re  implementerr   c                       e Zd ZdS )TSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IDefaultViewNameNr   r/   r   r   IDefaultViewNamer  >  r   r   r  c                       e Zd ZdS )KSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ContextNr   r/   r   r   Contextr  A  r   r   r  c                       e Zd ZdS )LSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.RDBModelNr   r/   r   r   RDBModelr  D  r   r   r  c                       e Zd ZdS )JSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IOtherNr   r/   r   r   IOtherr  G  r   r   r  c                       e Zd ZdS )MSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.OtherBaseNr   r/   r   r   	OtherBaser  J          Dr   r  c                       e Zd ZdS )ISpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ModelNr   r/   r   r   Modelr  N  r   r   r  )r"   rf  r   r  r   r#   r$   __sro__)
r&   rf  r  r   r  r  r  r  r  r  s
             r   'test_multiple_inheritance_no_interfacesz:SpecificationTests.test_multiple_inheritance_no_interfaces4  s    	766666;;;;;;======	 	 	 	 	y 	 	 		 	 	 	 	f 	 	 		 	 	 	 	w 	 	 		 	 	 	 	Y 	 	 	 
V			 	 	 	 	 	 	 
			 	 	 	 	Iw 	 	 	 	M%  (e$$i((g&&f%%
	
 
	
 
	
 
	
 
	
r   N)r   r   r   rK   rb  rO   rl  rt  rv  ry  r{  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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   rK   z#InterfaceClassTests._getTargetClass`  s    ;;;;;;r   ITestr/   Nc                 D     |                                  |||||          S r   r   )r&   rN   rc  attrsrS   r   s         r   rO   zInterfaceClassTests._makeOned  s&    %t##%%dE5':NNNr   c                 6   |                                  } |d          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |                                d           d S )NITestingrQ   r/   )rK   r$   r   rS   rh  getBases)r&   klassinsts      r   rY   z&InterfaceClassTests.test_ctor_defaultsh  s    $$&&uZ  
333r***,,,"-----r   c                     |                                  }|                     t          |dt                      f           d S )Nr  )rK   r_   r  r#   )r&   r  s     r   test_ctor_bad_basesz'InterfaceClassTests.test_ctor_bad_basesp  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>._barw        r   r   rQ   re   r7   r  r  r/   )
r"   r  r  rK   r$   r   rS   rh  nameskeys)r&   r  r  r  ATTRSr  r  s          r    test_ctor_w_attrs_attrib_methodsz4InterfaceClassTests.test_ctor_w_attrs_attrib_methodst  s    666666999999	 	 	!	%,,$T**  $$&&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  rQ   r/   rK   r$   r   rS   rh  rU   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  rQ   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  rQ   r/   )	r"   r  rK   r$   r   rS   rh  rU   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#   rK   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 )NrS   ATTRr  EXPLICIT)r  rS   )rK   r$   rS   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   )rO   r$   rU   r  rK  s     r   test_interfacesz#InterfaceClassTests.test_interfaces  sA    e..0011E7;;;;;r   c                     |                                  }|                      d|f          }|                     |                                |f           d S NISub)rc  )rO   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   )rO   r   isEqualOrExtendedByrK  s     r   !test_isEqualOrExtendedBy_identityz5InterfaceClassTests.test_isEqualOrExtendedBy_identity  s5    11%8899999r   c                     |                                  }|                      d|f          }|                     |                    |                     |                     |                    |                     d S r  )rO   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)rO   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   rQ   r  r8   BazIBaser  IDerivedrc  r  Fallr"   r  r  rO   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	 	 	&Yub11)\$// 
 		% 4 4 }}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   rQ   r  r  Tr  r7   re   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	 	 	!	%,,$T**  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   rQ   r  r8   r  r  r  r  r  Tr  r7   r8   re   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	 	 	&Yub11)\$// 
 		% 4 4 }}WJ}77--
4'-OO$ 7 788:O:O:OPPPPPr   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>._bar  r  r   c                      dS r  r/   r/   r   r   _foozJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._foo  r  r   r   rQ   r  r  re   r8   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_names  s    666666999999	 	 		 	 	&Yub11)\$// 
 !-T 2 2 )	% 4 4  }}WJ}77--
4'-OO$ 7 788:O:O:OPPPPPr   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>._bar  r  r   c                      dS r  r/   r/   r   r   r%  z/InterfaceClassTests.test___iter__.<locals>._foo  r  r   r   rQ   r  r  r&  r  r  r  r  r   )r"   r  r  rO   r$   r  r'  s	            r   test___iter__z!InterfaceClassTests.test___iter__  s    666666999999	 	 		 	 	&Yub11)\$// 
 !-T 2 2 )	% 4 4  }}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>._bar  r  r   r   rQ   r  r8   r  r  r  r  r  Fr  r"   r  r  rO   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	 	 	&Yub11)\$// 
 		% 4 4 }}WJ}77--
4'-OO < < < G GHH -"67 	 	 	 	 	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>._bar   r  r   r   rQ   r  r  Fr  r7   re   r/  r  s         r   -test_namesAndDescriptions_w_all_True_no_baseszAInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases  s    666666999999	 	 	!	%,,$T**  mm%m(( 8 8U 8 C CDD %,/ %,/	 	 	 	 	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   rQ   r  r8   r  r  r  r  r  Tr  r7   re   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	 	 	&Yub11)\$// 
 		% 4 4 }}WJ}77--
4'-OO < < < F FGG *U"34 -"67 *U"34	 	 	 	 	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>._fooB  r  r   r   rQ   r  r  r&  r  r  r  r  Tr  r7   r8   re   r/  r'  s	            r   7test_namesAndDescriptions_w_all_True_bases_w_same_nameszKInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names=  s/   666666999999	 	 		 	 	&Yub11)\$// 
 !-T 2 2 )	% 4 4  }}WJ}77--
4'-OO < < < F FGG *U"34 -"67 -"67	 	 	 	 	r   c                 p    |                                  }|                     t          |j        d           d S r]   )rO   r_   r`   getDescriptionForr&   r  s     r   test_getDescriptionFor_missz/InterfaceClassTests.test_getDescriptionFor_missR  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>._barY  r  r   r   rQ   r  r  re   r7   )r"   r  r  rO   r$   r=  r  s         r   test_getDescriptionFor_hitz.InterfaceClassTests.test_getDescriptionFor_hitV  s    666666999999	 	 	!	%,,$T**  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>._testd  s    z?"r   )rO   r_   r`   )r&   rE  r  s     @r   test___getitem___missz)InterfaceClassTests.test___getitem___missb  sE    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>._bark  r  r   r   rQ   r  r  re   r7   )r"   r  r  rO   r$   r  s         r   test___getitem___hitz(InterfaceClassTests.test___getitem___hith  s    666666999999	 	 	!	%,,$T**  mm%m((UU5\222UU5\22222r   c                 \    |                                  }|                     d|v            d S r]   )rO   r   r>  s     r   test___contains___missz*InterfaceClassTests.test___contains___misst  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   rQ   r  r  re   r7   )r"   r  r  rO   r   r  s         r   test___contains___hitz)InterfaceClassTests.test___contains___hitx  s    666666999999	 	 	!	%,,$T**  mm%m((%%%%%%%%r   c                     |                                  }|                     |                    d          d            d S r]   )rO   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   rQ   r  r  r&  r  r  r  r  re   r8   r7   )r"   r  r  rO   r$   rP  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	 	 		 	 	&Yub11)\$// 
 !-T 2 2 )	% 4 4  }}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]   )rO   r$   queryDescriptionForrK  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  rO   r$   rW  )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   rS  )r   r   _called_withs     r   	_passablezCInterfaceClassTests.test_validateInvariants_pass.<locals>._passable  s     r
+++4r   r    )rO   r#   rg   r$   validateInvariants)r&   ra  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   rS  r   r   _passable_called_withs     r   ra  zTInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._passable       !(($4444r   c                  6                         | |f           r   rS  r   r   rf  _fail_called_withs     r   _failzPInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._fail       $$dBZ000Mr   r    r  rf  rO   r#   rg   r_   rb  r$   )r&   ra  rn  r+  r   rf  rm  ri  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   re  c                  6                         | |f           r   rS  rl  s     r   rn  zOInterfaceClassTests.test_validateInvariants_fail_w_errors_passed.<locals>._fail  ro  r   r    ro  r  rf  rO   r#   rg   r_   rb  r$   ri  r   
isinstance)r&   _errorsrn  r+  r   rf  rm  s        @@r   ,test_validateInvariants_fail_w_errors_passedz@InterfaceClassTests.test_validateInvariants_fail_w_errors_passed  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   re  c                  6                         | |f           dS r   rS  rh  s     r   ra  z\InterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._passable  rj  r   c                  6                         | |f           r   rS  rl  s     r   rn  zXInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._fail  ro  r   r  r  r    rp  )	r&   ra  rn  r  r  r   rf  rm  ri  s	         @@@r   5test_validateInvariants_fail_in_base_wo_errors_passedzIInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed  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   re  c                  6                         | |f           dS r   rS  rh  s     r   ra  z[InterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._passable  rj  r   c                  6                         | |f           r   rS  rl  s     r   rn  zWInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._fail  ro  r   r  r  r    ro  rt  )
r&   rv  ra  rn  r  r  r   rf  rm  ri  s
          @@@r   4test_validateInvariants_fail_in_base_w_errors_passedzHInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed  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   rS  rh  s     r   ra  zbInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_times.<locals>._passable  rj  r   r  r    r  ro  )r#   rO   rg   rb  r$   ri  )r&   ra  r   r  r  ri  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)rO   r$   
__reduce__rK  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)rO   r$   hashrK  s     r   test___hash___normalz(InterfaceClassTests.test___hash___normal  sW    h''e  G I I	J 	J 	J 	J 	J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__      r   Nr   r/   r   r   Derivedr    #            r   r  )rK   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   rO   r   r   rK  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   )rO   r   r   rK  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_module5  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  I  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__M  s    !k&)))r   Nr   r   r   r  )r   s   r   MyInterfaceClassr  L  s.        * * * * * * *r   r  r  ro  )	r  rK   rO   assertIsInstancer   typer_   r  	__class__)r&   r  r  r   s      @r   test_assignment_to__class__z/InterfaceClassTests.test_assignment_to__class__G  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   re  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__d  s    r   Nr  r/   r   r   r  r  c  rL  r   r  r  ro  )ro  c                       e Zd ZdS )>InterfaceClassTests.test_assignment_to__class__2.<locals>.IBarNr   r/   r   r   r  r  j  r   r   r  c                       e Zd ZdS )?InterfaceClassTests.test_assignment_to__class__2.<locals>.ISpamNr   r/   r   r   ISpamr  o  r   r   r  )r   rf  rK   r$   r_   r  r  )r&   rf  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          t          f          5  d|_        d d d            d S # 1 swxY w Y   d S )Nzdifferent.module)rO   r_   r   r  r   )r&   r  s     r   test__module__is_readonlyz-InterfaceClassTests.test__module__is_readonlyx  s    }}	:;; 	1 	1 1DO	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   rK   rO   rY   r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r!  r(  r,  r1  r4  r7  r;  r?  rB  rF  rI  rK  rN  rQ  rU  rX  r]  rc  rq  rw  r{  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Q Q QQ Q Q"A A A"       $  *G G G
E 
E 
E+ + +
3 
3 
3, , ,
& 
& 
&7 7 76 6 6&F F FK K K	7 	7 	7< < <"9 9 9< < <&9 9 9,8 8 89 9 9J J J  & & &"	( 	( 	(% % %$  .) ) )41 1 1 1 1r   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 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%e&d$             Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6S )7InterfaceTestsc                     ddl m} ddl m  G fdd|          }|                     |d         j        |u            d S )Nr   re  r  c                   &    e Zd Z  d          ZdS )<InterfaceTests.test_attributes_link_to_interface.<locals>.I1My attrN)r   r   r   rZ  r  s   r   I1r    s        9Y''DDDr   r  rZ  )r   rf  r  r   r   )r&   rf  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   re  c                       e Zd Zd ZdS )9InterfaceTests.test_methods_link_to_interface.<locals>.I1c                     dS zA methodNr/   )re   r7   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   rf  r   r   )r&   rf  r  s      r   test_methods_link_to_interfacez-InterfaceTests.test_methods_link_to_interface  sd    ,,,,,,	 	 	 	 	 	 	 	
 	8."455555r   c                 n   ddl m} ddl m} ddl m}  G d d|           G d d|          } G fd	d
t                    } |            }|                                         |                     |                     |                    |                     |                                |                      ||          v            |                     | ||          v            |                      ||          v            |                     | ||          v            d S )Nr   re  r   r   c                       e Zd Zd Zd ZdS )<InterfaceTests.test_classImplements_simple.<locals>.ICurrentc                     d S r   r/   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.method1      )+++r   c                     t                      r   r   r  s      r   r  zCInterfaceTests.test_classImplements_simple.<locals>.Current.method2  r  r   N)r   r   r   __implemented__r  r  )r  s   r   Currentr    s8        &O, , ,, , , , ,r   r  )r   rf  r   r   r#   r   r   r$   )r&   rf  r   r   r  r  currentr  s          @r   test_classImplements_simplez*InterfaceTests.test_classImplements_simple  s   ,,,,,,000000------	 	 	 	 	y 	 	 		 	 	 	 	Y 	 	 		, 	, 	, 	, 	, 	, 	,f 	, 	, 	, '))..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   re  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.method  r  r   Nr  r/   r   r   r  r    r  r   r  c                       e Zd ZdS )FInterfaceTests.test_classImplements_base_not_derived.<locals>.IDerivedNr   r/   r   r   r  r    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.method  r  r   Nr   r   r   r  r  )r  s   r   r  r    s)        #O, , , , ,r   r  )r   rf  r   r   r   r   )r&   rf  r   r   r  r  r  r  s          @r   %test_classImplements_base_not_derivedz4InterfaceTests.test_classImplements_base_not_derived  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
t                    } |            }|                     |                    |                     |                                         |                     |                     | ||          v            |                     | ||                                          v            |                      ||          v            |                     | ||          v            |                     | ||                                          v            |                      ||          v            d S )Nr   re  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.method  r  r   Nr  r/   r   r   r  r    r  r   r  c                       e Zd ZdS )FInterfaceTests.test_classImplements_base_and_derived.<locals>.IDerivedNr   r/   r   r   r  r    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.method  r  r   Nr  )r  s   r   r  r    s)        &O, , , , ,r   r  )r   rf  r   r   r#   r   r   	flattened)r&   rf  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 	 	 		, 	, 	, 	, 	, 	, 	,f 	, 	, 	,
 '))++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                   	 ddl m} ddl m} ddl m}  G d d|           G d d          	 G fd	d
t                    } G 	fddt                    } G d d||          } |            }|                                         |                     |                     	                    |                     |                      ||          v            |                     	 ||          v            |                      ||          v            |                     	 ||          v            d S )Nr   re  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    )        #O, , , , ,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   rf  r   r   r#   r   )
r&   rf  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 	 	 		, 	, 	, 	, 	, 	, 	,6 	, 	, 	,	% 	% 	% 	% 	% 	% 	%F 	% 	% 	%	 	 	 	 	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t                    } G fddt                     G 
fdd
|          } |            }|                                         |                     |                     	                    |                     |                                         |                     |                      ||          v            |                     	 ||          v            |                      ||          v            |                      ||          v            |                     	 ||          v            |                      ||          v            d S )Nr   re  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   rf  r   r   r#   r   r   )r&   rf  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 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	,	% 	% 	% 	% 	% 	% 	%F 	% 	% 	%	% 	% 	% 	% 	% 	% 	%F 	% 	% 	%	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   re  FunInterfaceBarInterfaceBobInterfaceBazInterface)r   rf  r  r   r  r   )r&   rf  newr   r!  r"  r#  s          r   testInterfaceExtendsInterfacez,InterfaceTests.testInterfaceExtendsInterface2  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t
                    }|                      ||                     d S )	Nr   r  re  )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.methodL  r  r   Nr   r   r   rZ  r  r  s   r   ICheckMer)  I  3        9Z((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.methodS  r  r   Nr   r   r   r  rZ  r  r,  s   r   CheckMer/  O  .        &OD, , , , ,r   r4  )r   r  rf  r   r'  r#   r   )r&   rf  r'  r4  r  r,  s       @@r   test_verifyClasszInterfaceTests.test_verifyClassC  s    ,,,,,,,,,,,,555555	 	 	 	 	 	 	y 	 	 		, 	, 	, 	, 	, 	, 	,f 	, 	, 	, 	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t
                    } |            }|                      ||                     d S )	Nr   r  re  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.methoda  r  r   Nr+  r  s   r   r,  r9  ^  r-  r   r,  c                       e Zd Z ZdZd ZdS )1InterfaceTests.test_verifyObject.<locals>.CheckMer0  c                     t                      r   r   r   s    r   r  z8InterfaceTests.test_verifyObject.<locals>.CheckMe.methodh  r  r   Nr2  r3  s   r   r4  r<  d  r5  r   r4  )r   r  rf  r   r~   r#   r   )r&   rf  r~   r4  check_mer  r,  s        @@r   test_verifyObjectz InterfaceTests.test_verifyObjectX  s    ,,,,,,,,,,,,666666	 	 	 	 	 	 	y 	 	 		, 	, 	, 	, 	, 	, 	,f 	, 	, 	, 799Xx8899999r   c                 ~    ddl m}  G d d|          }|                     |                    |                     d S )Nr   re  c                       e Zd ZdS )LInterfaceTests.test_interface_object_provides_Interface.<locals>.AnInterfaceNr   r/   r   r   AnInterfacerB  r  r   r   rC  )r   rf  r   r   )r&   rf  rC  s      r   (test_interface_object_provides_Interfacez7InterfaceTests.test_interface_object_provides_Interfaceo  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  re  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   ISimplerG  |  3        9Z((D    r   rI  rZ  r  r   r  rf  r$   r  r  r&   rf  rI  r  s      @r   test_names_simplez InterfaceTests.test_names_simplew  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  re  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  rP    rJ  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  rS    sB        Ik**E      r   r  )rX  r  r  Tr  rZ  rX  r  r  rK  r&   rf  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  Methodre  c                   ,    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.method  r  r   Nr+  r  s   r   rI  r`    3        9Z((D    r   rI  rg  rZ  ro  r  r  rc  )r   r  r"   r^  rf  r  r0  r$   ri  r   ru  r   rS   )r&   r^  rf  rI  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  re  r]  c                   ,    e Zd Z  d          Zd ZdS )?InterfaceTests.test_namesAndDescriptions_derived.<locals>.IBaser  c                      dS rb  r/   r/   r   r   r  zFInterfaceTests.test_namesAndDescriptions_derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  ri    rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )BInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerivedrT  c                      dS My method, overriddenNr/   r/   r   r   r  zIInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method  r  r   c                      dS 
My method2Nr/   r/   r   r   r  zJInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method2  r  r   NrW  r  s   r   r  rl    B        Ik**E( ( (    r   r     rX  ro  rT  r  ro  rg  r  rr  Tr     rZ  r  )r   r  rf  r"   r^  r  r0  r$   ri  r   ru  r   rS   )r&   rf  r^  r  r  re  r  s         @r   !test_namesAndDescriptions_derivedz0InterfaceTests.test_namesAndDescriptions_derived  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   re  c                       e Zd ZdS )IInterfaceTests.test_getDescriptionFor_nonesuch_no_default.<locals>.IEmptyNr   r/   r   r   IEmptyry    r   r   rz  r^   )r   rf  r_   r`   r=  r&   rf  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  r]  re  c                   ,    e Zd Z  d          Zd ZdS )=InterfaceTests.test_getDescriptionFor_simple.<locals>.ISimpler  c                      dS rb  r/   r/   r   r   r  zDInterfaceTests.test_getDescriptionFor_simple.<locals>.ISimple.method  r  r   Nr+  r  s   r   rI  r    rd  r   rI  rZ  r  r  rc  r   r  r"   r^  rf  r=  r   ru  r$   r   rS   r&   r^  rf  rI  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  r]  re  c                   ,    e Zd Z  d          Zd ZdS )<InterfaceTests.test_getDescriptionFor_derived.<locals>.IBaser  c                      dS rb  r/   r/   r   r   r  zCInterfaceTests.test_getDescriptionFor_derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  r    rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )?InterfaceTests.test_getDescriptionFor_derived.<locals>.IDerivedrT  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   NrW  r  s   r   r  r    rs  r   r  rZ  r  r  ro  rX  rT  r  rr  r  
r&   r^  rf  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   re  c                       e Zd ZdS )7InterfaceTests.test___getitem__nonesuch.<locals>.IEmptyNr   r/   r   r   rz  r  8  r   r   rz  r^   )r   rf  r_   r`   __getitem__r{  s      r   test___getitem__nonesuchz'InterfaceTests.test___getitem__nonesuch5  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  r]  re  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___getitem__simple.<locals>.ISimpler  c                      dS rb  r/   r/   r   r   r  z=InterfaceTests.test___getitem__simple.<locals>.ISimple.methodF  r  r   Nr+  r  s   r   rI  r  C  rd  r   rI  rZ  r  r  rc  
r   r  r"   r^  rf  r   ru  r$   r   rS   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  r]  re  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___getitem___derived.<locals>.IBaser  c                      dS rb  r/   r/   r   r   r  z=InterfaceTests.test___getitem___derived.<locals>.IBase.method\  r  r   Nr+  r  s   r   r  r  Y  rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )9InterfaceTests.test___getitem___derived.<locals>.IDerivedrT  c                      dS rn  r/   r/   r   r   r  z@InterfaceTests.test___getitem___derived.<locals>.IDerived.methodb  r  r   c                      dS rq  r/   r/   r   r   r  zAInterfaceTests.test___getitem___derived.<locals>.IDerived.method2e  r  r   NrW  r  s   r   r  r  _  rs  r   r  rZ  r  r  ro  rX  rT  r  rr  r  r  s
            @r   test___getitem___derivedz'InterfaceTests.test___getitem___derivedS  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   re  c                       e Zd ZdS )8InterfaceTests.test___contains__nonesuch.<locals>.IEmptyNr   r/   r   r   rz  r    r   r   rz  r^   )r   rf  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  re  c                   ,    e Zd Z  d          Zd ZdS )7InterfaceTests.test___contains__simple.<locals>.ISimpler  c                      dS rb  r/   r/   r   r   r  z>InterfaceTests.test___contains__simple.<locals>.ISimple.method  r  r   Nr+  r  s   r   rI  r    rd  r   rI  rZ  r  r   r  rf  r   rL  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  re  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___contains__derived.<locals>.IBaser  c                      dS rb  r/   r/   r   r   r  z=InterfaceTests.test___contains__derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  r    rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )9InterfaceTests.test___contains__derived.<locals>.IDerivedrT  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   NrW  r  s   r   r  r    rs  r   r  rZ  r  rX  r  r  rZ  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   re  c                       e Zd ZdS )1InterfaceTests.test___iter__empty.<locals>.IEmptyNr   r/   r   r   rz  r    r   r   rz  )r   rf  r$   rU   r{  s      r   test___iter__emptyz!InterfaceTests.test___iter__empty  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  re  c                   ,    e Zd Z  d          Zd ZdS )3InterfaceTests.test___iter__simple.<locals>.ISimpler  c                      dS rb  r/   r/   r   r   r  z:InterfaceTests.test___iter__simple.<locals>.ISimple.method  r  r   Nr+  r  s   r   rI  r    rd  r   rI  rZ  r  r   r  rf  r$   r  rU   rL  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  re  c                   ,    e Zd Z  d          Zd ZdS )2InterfaceTests.test___iter__derived.<locals>.IBaser  c                      dS rb  r/   r/   r   r   r  z9InterfaceTests.test___iter__derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  r    rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )5InterfaceTests.test___iter__derived.<locals>.IDerivedrT  c                      dS rn  r/   r/   r   r   r  z<InterfaceTests.test___iter__derived.<locals>.IDerived.method  r  r   c                      dS rq  r/   r/   r   r   r  z=InterfaceTests.test___iter__derived.<locals>.IDerived.method2  r  r   NrW  r  s   r   r  r    rs  r   r  rY  r  rZ  s       @r   test___iter__derivedz#InterfaceTests.test___iter__derived  s    ,,,,,,,,,,,,	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 	X//???	A 	A 	A 	A 	Ar   c                     ddl m}  G d d|          }|d         }|                     |                    d          d           d S )Nr   re  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.method  r  r   ro  N)r   r   r   r  optionalr/   r   r   ITagMer    s$          FOOOr   r  r  r  ro  )r   rf  r$   ra   )r&   rf  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   re  c                       e Zd ZdZdS )@InterfaceTests.test___doc___non_element.<locals>.IHaveADocStringxxxNr   r   r   rS   r/   r   r   IHaveADocStringr            EEEr   r  r  )r   rf  r$   rS   rU   )r&   rf  r  s      r   test___doc___non_elementz'InterfaceTests.test___doc___non_element  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  re  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    s#        Ei	**GGGr   r  rQ   rS   )r   r  rf  r$   rS   rU   )r&   rf  r  r  s      @r   test___doc___as_elementz&InterfaceTests.test___doc___as_element  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   re  z&validateInvariants should always raisec                 (    g | ]}|j         d          S )r   r   ).0errors     r   
<listcomp>z/InterfaceTests._errorsEqual.<locals>.<listcomp>  s    ---%
1---r   )
r  rf  r_   rb  failr$   r   ri  sortpop)
r&   has_invariant	error_len
error_msgsr+  rf  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                 T   ddl m ddl m} ddl m} ddl m  G fdd|          } G d d	t
                    } |            } |||           |                     |                    d
          t          g           |                     |	                    |          d            d|_
        |                     |	                    |          d            d|_        |                     |	                    |          d            |`
|                     |ddg|           d S )Nr   r  re  directlyProvidesr
   c                   R    e Zd Z  d          Z  d          Z e           dS )8InterfaceTests.test_invariant_simple.<locals>.IInvariantre   *bar; must eval to Boolean True if foo doesNr   r   r   re   r7   _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       *   ro  If Foo, then Bar!)r   r  rf  r  r   r#   r$   ra   r  rb  r7   re   r  )r&   rf  r  r  r  r  r  r   s         @@r   test_invariant_simplez$InterfaceTests.test_invariant_simple  s   ,,,,,,,,,,,,333333,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	 	 	 	 	6 	 	 	 %
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                 x   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t
                    }|                     |                    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  re  r  r
   c                   R    e Zd Z  d          Z  d          Z e           dS )8InterfaceTests.test_invariant_nested.<locals>.IInvariantre   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
  2  r   r   r  r    r  ro  r   rg  %Please, Boo MUST be greater than Foo!)r   r  rf  r  r   r#   r$   ra   r  re   r  r7   rb  )	r&   rf  r  r  r  r  r  r  r   s	          @@r   test_invariant_nestedz$InterfaceTests.test_invariant_nested$  s   ,,,,,,,,,,,,333333,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	* 	* 	* 	* 	* 	* 	*J 	* 	* 	*	 	 	 	 	6 	 	 	 	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	t
                    } |            } |||           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  re  r  r
   c                   R    e Zd Z  d          Z  d          Z e           dS ):InterfaceTests.test_invariant_mutandis.<locals>.IInvariantre   r  Nr  r  s   r   r  r  Y  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    ro  r   rg  r  )r   r  rf  r  r   r#   re   ra   rT  r  rg   r  r7   r$   rb  )
r&   rf  r  r  r  r  old_invariantsr    r  r   s
           @@r   test_invariant_mutandisz&InterfaceTests.test_invariant_mutandisS  s   ,,,,,,,,,,,,333333,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	 	 	 	 	6 	 	 	 %
333 $22<@@#AAA&
,---!!,
;;; 	--@,A$	& 	& 	& -BCZ	Q 	Q 	Q -.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   re  r  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  rQ   rS   )r   rf  r  r$   rS   rU   )r&   rf  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}  G d d|          } G d d          }|                     t          |j        |           d S )Nr   re  c                       e Zd ZdZdS )&InterfaceTests.testIssue228.<locals>.Ir  Nr  r/   r   r   r  r    r  r   r  c                       e Zd ZdZdS )-InterfaceTests.testIssue228.<locals>.OldStyleN)r   r   r   __providedBy__r/   r   r   OldStyler     s        !NNNr   r"  )r   rf  r_   r   r   )r&   rf  r  r"  s       r   testIssue228zInterfaceTests.testIssue228  s    
 	-,,,,,	 	 	 	 		 	 	 		" 	" 	" 	" 	" 	" 	" 	" 	.!,AAAAAr   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
t                                }|                     |dd                     |                     |dd                     	 |                     |dd                     d S # $ r.}| 	                    t          |          d           Y d }~d S d }~ww xY w)Nr   re  r  r  r
   re  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)obrf  s    r   range_invariantzJInterfaceTests.test_invariant_as_decorator.<locals>.IRange.range_invariant  s-    6BF? /!'+.../ /r   N)r   r   r   r*  r)  r,  )r  rf  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__  s    %(#"$(((r   Nr   r/   r   r   Ranger/    s#        . . . . .r   r1  ro  rg  r(  )r   rf  r  r  r   r  rf  r#   rb  r$   r9  )	r&   rf  r  r-  r1  r  r  rf  r   s	         @@@r   test_invariant_as_decoratorz*InterfaceTests.test_invariant_as_decorator  s   ,,,,,,,,,,,,......,,,,,,555555	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/Y 	/ 	/ 	/ 
V			. 	. 	. 	. 	.F 	. 	. 
		.
 	!!%%1++...!!%%1++...	2%%eeAqkk22222 	2 	2 	2SVV[111111111	2s   B8 8C+=#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          |	                                          t          ddg                     d S )Nr   r  re  r3   c                   T    e Zd Z  d          Z  d          Z dd           dS )0InterfaceTests.test_taggedValue.<locals>.ITaggedre   r  r>   SpamN)r   r   r   re   r7   r  r4   s   r   ITaggedr5    sB        )E""C)HIICKv&&&&&r   r8  c                   @    e Zd Z  dd             dd           dS )1InterfaceTests.test_taggedValue.<locals>.IDerivedr>   	Spam Spamre   r7   Nr   r3   s   r   r  r:    s5        K{+++Ku%%%%%r   r  c                       e Zd ZdS )2InterfaceTests.test_taggedValue.<locals>.IDerived2Nr   r/   r   r   	IDerived2r=    r   r   r>  r>   r6  re   r;  r7   )r   r  rf  r4   r$   ra   r_   r`   rU   rV   set)r&   rf  r8  r  r>  r  r4   s        @@r   test_taggedValuezInterfaceTests.test_taggedValue  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;;<<c5%.>Q>QRRRRRr   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   r3   r  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.FtagFNr   r   r   rD  r7  s   r   rE  rC    .        Ks###)C..CCCr   rE  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.ErD  ENrF  r7  s   r   rJ  rI    rG  r   rJ  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.DrD  DNrF  r7  s   r   rM  rL    rG  r   rM  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.CrD  CNrF  r7  s   r   rP  rO    rG  r   rP  c                       e Zd ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.BNr   r/   r   r   BrR    r   r   rS  c                       e Zd ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.ANr   r/   r   r   ArU    r   r   rV  )r   r4   r  )r&   r  OrE  rJ  rM  rP  rS  rV  r  r4   s            @@r   _make_taggedValue_treez%InterfaceTests._make_taggedValue_tree  sr   ......,,,,,,	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	!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   re  rP  rD  rS  )r   rf  rX  r#   r$   rD  r   ra   rk   rh  rg   )r&   rf  class_Aiface_As       r   "test_getTaggedValue_follows__iro__z1InterfaceTests.test_getTaggedValue_follows__iro__  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   re  rD  rV  ro  rP  )r   rf  rX  r  ru   r$   rU   rf   r_   r`   rq   rg   rh  r   )r&   rf  rV  rP  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   re  r  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  ra  '  s        	#AAAr   r  c                       e Zd ZdS )<InterfaceTests.test_description_cache_management.<locals>.I2Nr   r/   r   r   I2rc  *  r   r   rd  c                       e Zd ZdS )<InterfaceTests.test_description_cache_management.<locals>.I3Nr   r/   r   r   I3rf  -  r   r   rg  r   )r   rf  r  r   r  rh  )r&   rf  r  rd  rg  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t                                }|                      | |                      d           d S )Nr   re  r  c                       e Zd ZdS )>InterfaceTests.test___call___defers_to___conform___.<locals>.INr   r/   r   r   r  rk  9  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   rP  rm  <  s#            r   rP  )r   rf  r  r#   r$   )r&   rf  r  r  rP  s        r   $test___call___defers_to___conform___z3InterfaceTests.test___call___defers_to___conform___5  s    ,,,,,,......	 	 	 	 		 	 	 	 
Q	 	 	 	 	 	 	 
	 	1133#####r   c                     ddl m} ddl m}  G d d|          } ||           G d dt                                } |            }|                      ||          |u            d S )Nr   re  r  c                       e Zd ZdS )9InterfaceTests.test___call___object_implements.<locals>.INr   r/   r   r   r  rs  G  r   r   r  c                       e Zd ZdS )9InterfaceTests.test___call___object_implements.<locals>.CNr   r/   r   r   rP  ru  J  r  r   rP  )r   rf  r  r#   r   )r&   rf  r  r  rP  cs         r   test___call___object_implementsz.InterfaceTests.test___call___object_implementsC  s    ,,,,,,......	 	 	 	 		 	 	 	 
Q	 	 	 	 	 	 	 
	 ACC!	"""""r   c                     ddl m}  G d d|          } G d dt                    } |            }|                     t          ||           d S )Nr   re  c                       e Zd ZdS )9InterfaceTests.test___call___miss_wo_alternate.<locals>.INr   r/   r   r   r  rz  T  r   r   r  c                       e Zd ZdS )9InterfaceTests.test___call___miss_wo_alternate.<locals>.CNr   r/   r   r   rP  r|  W  r   r   rP  )r   rf  r#   r_   r  r&   rf  r  rP  rv  s        r   test___call___miss_wo_alternatez.InterfaceTests.test___call___miss_wo_alternateQ  s    ,,,,,,	 	 	 	 		 	 	 		 	 	 	 	 	 	 	 ACC)Q*****r   c                     ddl m}  G d d|          } G d dt                    } |            }|                      |||           | u            d S )Nr   re  c                       e Zd ZdS )8InterfaceTests.test___call___miss_w_alternate.<locals>.INr   r/   r   r   r  r  `  r   r   r  c                       e Zd ZdS )8InterfaceTests.test___call___miss_w_alternate.<locals>.CNr   r/   r   r   rP  r  c  r   r   rP  )r   rf  r#   r   r}  s        r   test___call___miss_w_alternatez-InterfaceTests.test___call___miss_w_alternate]  s    ,,,,,,	 	 	 	 		 	 	 		 	 	 	 	 	 	 	 ACC!T

d*+++++r   c                     ddl m} ddlm} d } fd} G d d|          } G d d	t                    } |            }|d d          }||g|d d <   	                       ||           u            ||d d <   d S # ||d d <   w xY w)
Nr   re  rZ  c                     d S r   r/   rX  s     r   _missz:InterfaceTests.test___call___w_adapter_hook.<locals>._missm  s    Dr   c                     S r   r/   )r+  r   r&   s     r   _hitz9InterfaceTests.test___call___w_adapter_hook.<locals>._hitp  s    Kr   c                       e Zd ZdS )6InterfaceTests.test___call___w_adapter_hook.<locals>.INr   r/   r   r   r  r  s  r   r   r  c                       e Zd ZdS )6InterfaceTests.test___call___w_adapter_hook.<locals>.CNr   r/   r   r   rP  r  v  r   r   rP  )r   rf  r"   r[  r#   r   )	r&   rf  r[  r  r  r  rP  rv  old_adapter_hookss	   `        r   test___call___w_adapter_hookz+InterfaceTests.test___call___w_adapter_hooki  s#   ,,,,,,::::::	 	 		 	 	 	 		 	 	 	 		 	 	 		 	 	 	 	 	 	 	 ACC)!!!,!4=aaa	1OOAAaDDDL)))0M!!!0M!!!0000s    A> >	Bc                 8   ddl m} ddl m ddl m}  G fdd|          } ||           G d dt                                }|                     d	 |t	                                           |                     d	 | |                                 d S )
Nr   re  interfacemethodr  c                   &    e Zd Z d             ZdS ):InterfaceTests.test___call___w_overridden_adapt.<locals>.Ic                     dS Nr  r/   r&   r   s     r   rO  zDInterfaceTests.test___call___w_overridden_adapt.<locals>.I.__adapt__      rr   Nr   r   r   rO  r  s   r   r  r    s.          _  r   r  c                       e Zd ZdS ):InterfaceTests.test___call___w_overridden_adapt.<locals>.ONr   r/   r   r   rW  r    r  r   rW  r  )r   rf  r  r  r#   r$   )r&   rf  r  r  rW  r  s        @r    test___call___w_overridden_adaptz/InterfaceTests.test___call___w_overridden_adapt  s    ,,,,,,222222......	 	 	 	 	 	 		 	 	 	 
Q	 	 	 	 	 	 	 
	 	QQvxx[[))) 	QQqqssVV$$$$$r   c                    ddl m} ddl m ddl m}  G fdd|          } G d d|          } ||           G d	 d
t                                } ||           G d dt                                }|                     d |t	                                           |                     d | |                                 |                     d | |                                 |                     t                    5   | |                       d d d            n# 1 swxY w Y   |                     d | |                                 d S )Nr   re  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   rO  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   rI  r    s        """"r   rI  c                       e Zd Zd ZdS )NInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24c                     dS N   r/   rK  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/   rK  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   rf  r  r  r#   r$   r_   r  )r&   rf  r  r  rI  r  r  r  s          @r   ,test___call___w_overridden_adapt_and_conformz;InterfaceTests.test___call___w_overridden_adapt_and_conform  s:    	-,,,,,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--D14D1c                 L   dd l ddlm} ddlm ddlm}  G fdd|           |           G d dt
                                }|                     d	 t                                            |            }|                     | |                     d S )
Nr   re  r  r  c                   4     e Zd Z fd            Z xZS )EInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.Ic                     |                      |          sdS j        d d         dk    r!t                                          |          S t          t	                    |                               |          S )Nr  rg  )rt     )r   version_infosuperrO  r  )r&   r   r  r  syss     r   rO  zOInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.I.__adapt__  sq    s++ 2#BQB'&0 2 77,,S111T!WWd++55c:::r   )r   r   r   rO  __classcell__)r  r  r  r  s   @r   r  r    sM        ; ; ; ; ; ; _; ; ; ; ;r   r  c                       e Zd ZdS )EInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.ONr   r/   r   r   rW  r    r  r   rW  r  )r  r   rf  r  r  r#   r$   r   )r&   rf  r  rW  or  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......
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	; 
	;	 
	; 
	; 
	; 
Q	 	 	 	 	 	 	 
	 	QQvxx[[)))ACCa1r   c                     ddl m} ddl m  G fdd|          }|                     d |t	                                           |                     |d                                         d           d S )	Nr   re  r  c                   ,    e Zd Z d             Zd ZdS )EInterfaceTests.test___adapt___as_method_and_implementation.<locals>.Ic                     dS r  r/   r  s     r   rO  zOInterfaceTests.test___adapt___as_method_and_implementation.<locals>.I.__adapt__  r  r   c                     dS )zThis is a protocolNr/   )to_adapts    r   rO  zOInterfaceTests.test___adapt___as_method_and_implementation.<locals>.I.__adapt__  r  r   Nr  r  s   r   r  r    s=          _% % % % %r   r  r  rO  z
(to_adapt))r   rf  r  r$   r#   getSignatureStringr&   rf  r  r  s      @r   +test___adapt___as_method_and_implementationz:InterfaceTests.test___adapt___as_method_and_implementation  s    ,,,,,,222222	% 	% 	% 	% 	% 	% 	%	 	% 	% 	% 	QQvxx[[)));::<<lKKKKKr   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   re  r  c                       e Zd ZdZdS )@InterfaceTests.test___adapt__inheritance_and_type.<locals>.IRootRootNr  r/   r   r   IRootr    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   rO  zOInterfaceTests.test___adapt__inheritance_and_type.<locals>.IWithAdapt.__adapt__  r  r   Nr  r  s   r   
IWithAdaptr    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    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    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        ####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   rO  zSInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerived2Adapt.__adapt__  r  r   N)r   r   r   rS   rO  r  s   r   IDerived2Adaptr    s4        66  _  r   r  r  r  )
r   rf  r  r$   r#   r   r   r  assertNotEqualr  )
r&   rf  r  r  r  r  r  r  r+  r  s
            @r   "test___adapt__inheritance_and_typez1InterfaceTests.test___adapt__inheritance_and_type  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   re  r  c                   <    e Zd Z d             Z d             ZdS )9InterfaceTests.test_interfacemethod_is_general.<locals>.Ic                     dS )zReplace an existing methodr  r/   r  s     r   r  zBInterfaceTests.test_interfacemethod_is_general.<locals>.I.__call__	  s	     rr   c                     dS r  r/   r   s    r   this_is_newzEInterfaceTests.test_interfacemethod_is_general.<locals>.I.this_is_new	  r  r   N)r   r   r   r  r  r  s   r   r  r  	  sI          _   _  r   r  r  )r   rf  r  r$   r  r  s      @r   test_interfacemethod_is_generalz.InterfaceTests.test_interfacemethod_is_general	  s    ,,,,,,222222		 		 		 		 		 		 			 		 		 		 	4"%%%"-----r   N)9r   r   r   r  r  r  r  r  r	  r  r%  r6  r?  rD  rM  r[  rf  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r2  r@  rX  r\  r^  rh  rp  rw  r~  r  r  r  r  r  r  r  r  r/   r   r   r  r    su       4 4 46 6 68 8 8>: : :,9 9 984 4 4B)5 )5 )5V= = ="8 8 8*: : :.; ; ;F F FA A A2A A A07B 7B 7BrJ J J6 6 6,'8 '8 '8RD D D6 6 6,'8 '8 '8R/ / /- - -/ / /2+ + +D D DA A A.	? 	? 	?4 4 4	= 	= 	=5 5 5 & & &<-M -M -M^3@ 3@ 3@jD D D" B B B2 2 2:S S S2  .= = =*F F F,- - -*$ $ $# # #
+ 
+ 
+
, 
, 
,1 1 12% % %(!4 !4 !4H  4L L L*C *C *CX. . . . .r   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   rK   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>)rO   r  r   reprr   
startswithendswithr   r&   r  rs      r   test__repr__w_interfacez&AttributeTests.test__repr__w_interface*	  s{    ::LL%TUUWXYYY

3>4T#TUUWXYYYYYr   c                     |                                  }t          |          }|                     |                    d          |           |                     |                    d          |           d S )Nr  z TestAttribute>)rO   r  r   r  r  r  s      r   test__repr__wo_interfacez'AttributeTests.test__repr__wo_interface1	  sc    LL%TUUWXYYY

#455q99999r   c                     |                                  }t          |           |_        t          |          }|                     |t
          dz              d S )Nz.AttributeTests.TestAttribute)rO   r  r   r9  r$   r   r  s      r   test__str__w_interfacez%AttributeTests.test__str__w_interface7	  sJ    ::KKH'FFGGGGGr   c                 x    |                                  }t          |          }|                     |d           d S )Nr  )rO   r9  r$   r  s      r   test__str__wo_interfacez&AttributeTests.test__str__wo_interface=	  s6    KKO,,,,,r   N)	r   r   r   rM   rK   r  r  r  r  r/   r   r   r  r  "	  sj        "L  Z Z Z: : :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   rK   zMethodTests._getTargetClassG	  s    333333r   c                     |                                  }|                     |j        i            ddi|_        |                     |j        ddi           |`|                     |j        i            d S rd   )rO   r$   r  r&   r  s     r   test_optional_as_propertyz%MethodTests.test_optional_as_propertyK	  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   rO   r  r$   r   rN   rM   )r&   r   r  r  s       r   )test___call___raises_BrokenImplementationz5MethodTests.test___call___raises_BrokenImplementationS	  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)rO   getSignatureInfor$   rU   )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())rO   r$   r  r  s     r   test_getSignatureString_barez(MethodTests.test_getSignatureString_bareg	  s7    2244d;;;;;r   c                     |                                  }dgx|_        |_        |                     |                                d           d S )Nre   z(foo))rO   r  r  r$   r  r  s     r   'test_getSignatureString_w_only_requiredz3MethodTests.test_getSignatureString_w_only_requiredk	  sH    /4g5FO2244g>>>>>r   c                     |                                  }dgx|_        |_        ddi|_        |                     |                                d           d S )Nre   r7   z(foo='bar'))rO   r  r  r  r$   r  r  s     r   "test_getSignatureString_w_optionalz.MethodTests.test_getSignatureString_w_optionalp	  sS    /4g5FO %.2244mDDDDDr   c                     |                                  }d|_        |                     |                                d           d S )Nr   z(*args))rO   r  r$   r  r  s     r   !test_getSignatureString_w_varargsz-MethodTests.test_getSignatureString_w_varargsv	  s>    2244i@@@@@r   c                     |                                  }d|_        |                     |                                d           d S )Nr   z(**kw))rO   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)>)	rO   r  r  r   r  r   r  r  r   r  s      r   r  z#MethodTests.test__repr__w_interface	  s    ::LL%QRRTUVVV

3>4T#TUUWXYYYYYr   c                     |                                  }d|_        t          |          }|                     |                    d          |           |                     |                    d          |           d S )Nr   r  z TestMethod(**kw)>)rO   r  r  r   r  r  r  s      r   r  z$MethodTests.test__repr__wo_interface	  sj    LL%QRRTUVVV

#788!<<<<<r   c                     |                                  }d|_        t          |           |_        t	          |          }|                     |t          dz              d S )Nr   z.MethodTests.TestMethod(**kw))rO   r  r  r   r9  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))rO   r  r9  r$   r  s      r   r  z#MethodTests.test__str__wo_interface	  s>    KK./////r   N)r   r   r   rM   rK   r  r  r	  r  r  r  r  r  r  r  r  r  r/   r   r   r  r  C	  s        L  . . .	D 	D 	D/ / /< < <? ? ?
E E EA A A
@ @ @
Z Z Z= = =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$   rR   rT   r   rU   rV   r  r&   r  r  r  s       r   	test_barezTest_fromFunction.test_bare	  sO   	 	 	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%  	  r   r   r  c                      dS r  r/   r/   r   r   r  z1Test_fromFunction.test_w_interface.<locals>._func	  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>._func	  r  r   anotherName)rN   )r  r$   rR   )r&   r  r  s      r   test_w_namezTest_fromFunction.test_w_name	  sL    	 	 	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/   re   s    r   r  z5Test_fromFunction.test_w_only_required.<locals>._func	  r  r   r  re   r  r  r  r  r  r  r$   rU   r!  s       r   test_w_only_requiredz&Test_fromFunction.test_w_only_required	  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 )
Nr7   c                     dS r  r/   r.  s    r   r  z0Test_fromFunction.test_w_optional.<locals>._func	  r  r   r  re   r  r  r  r  r7   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 )Nr7   c                     dS r  r/   r   s    r   r  z5Test_fromFunction.test_w_optional_self.<locals>._func	  r  r   ro  )imlevelr  r  r  r  r  r3  r/  r!  s       r   test_w_optional_selfz&Test_fromFunction.test_w_optional_self	  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 )Nr8   c                     dS r  r/   )re   r7   r   r   s       r   r  z3Test_fromFunction.test_full_spectrum.<locals>._func 
  r  r   r  re   r7   r  r  r  r   r  r   r8   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+  r0  r4  r8  r;  r>  rB  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"   rF  )r&   r   r   rF  s       r   r  zTest_fromMethod._callFUT
  s)    777777z4&2&&&r   c                     G d dt                     }|                     |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   r7   z-Test_fromMethod.test_no_args.<locals>.Foo.bar
  r  r   Nr  r/   r   r   r   rI  
  rL  r   r   r7   r  r  r  r  r  r  )
r#   r  r7   r$   rR   rT   r   rU   rV   r  r&   r   r  r  s       r   test_no_argszTest_fromMethod.test_no_args
  sn   	 	 	 	 	& 	 	 	 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t                     }|                     |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>.Foor8   c                     dS r  r/   )r&   re   r7   r   r   s        r   r7   z3Test_fromMethod.test_full_spectrum.<locals>.Foo.bar#
  r  r   NrA  r  r/   r   r   r   rO  "
  s(             r   r   r  re   r7   r  r  r8   r  r   r  r   )r#   r  r7   r  r$   rU   rK  s       r   rB  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   re   z.Test_fromMethod.test_w_non_method.<locals>.foo.
  r  r   re   r  r  r  r  r  r  r   )r&   re   r  r  s       r   test_w_non_methodz!Test_fromMethod.test_w_non_method-
  sO   	 	 	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  rL  rB  rS  r/   r   r   rD  rD  
  sP        ' ' '/ / / 
/ 
/ 
// / / / /r   rD  c                       e Zd Zd Zd ZdS )rp  c                     g | _         d S r   )r  r   s    r   r   zDummyDependent.__init__>
  s    r   c                 :    | j                             |           d S r   )r  rT  )r&   originally_changeds     r   r  zDummyDependent.changedA
  s    /00000r   N)r   r   r   r   r  r/   r   r   rp  rp  <
  s2          1 1 1 1 1r   rp  c                     ddl m} t          | dd           }t          | dd           }|.t          |t	          |                    r||k    s |d          d S d S d S )Nr   re  re   r7   r  )r  rf  r%   ru  r  )r   rf  re   r7   s       r   r  r  E
  s    111111
#ud
#
#C
#ud
#
#C
 C:c49955 C
 Sy 	C'ABBBC C C C
	C 	Cr   c                 p    ddl m} t          | dd           rt          | dd           s |d          d S d S )Nr   re  re   r7   r   )r  rf  r%   )r   rf  s     r   r  r  Q
  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   r]  r0  s    `   r   r   z_Monkey.__init__Y
  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   )r_  r`  ra  r&  )r&   exc_typeexc_valexc_tbr]  r0  s         r   __exit__z_Monkey.__exit__b
  sD    ///11 	- 	-JCDKe,,,,	- 	-r   N)r   r   r   r   rc  rh  r/   r   r   r   r   W
  sA        ( ( (  - - - - -r   r   ) rS   unittestzope.interface._compatr   zope.interface.testsr   r   r   r#   rb  TestCaser   r1   rG   r   r   r   r   r  rA  rF  r^  r  r  r  r  r  rD  rp  r  r  r   r/   r   r   <module>rm     s<     3 3 3 3 3 3 1 1 1 1 1 1 6 6 6 6 6 6 ( ( ( ( ( (
&((C C C C CX& C C CB!9 !9 !9 !9 !9x( !9 !9 !9HE( E( E( E( E(8$ E( E( E(P9 9 9 9 9H$5 9 9 9<! ! ! ! !:2! ! !+5 +5 +5 +5 +5< +5 +5 +5\f5 f5 f5 f5 f5 f5 f5 f5R*\ *\ *\ *\ *\? *\ *\ *\Z    0.!*  7 7 7 7 72H4E 7 7 7>Z
 Z
 Z
 Z
 Z
* Z
 Z
 Z
z_1 _1 _1 _1 _1(+ _1 _1 _1D_. _. _. _. _.X& _. _. _.D%- - - - -\ - - -BW0 W0 W0 W0 W0. W0 W0 W0tk/ k/ k/ k/ k/) k/ k/ k/\// // // // //h' // // //b1 1 1 1 1V 1 1 1
C 
C 
C+ + +- - - - -f - - - - -r   