
    il                    X   d Z ddl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
ej        j                            d          Z G d d	ej                  Z G d
 dej                  Z G d dej                  Z G d dej                  Z G d deee          Z G d de          Z G d de          Z G d de          Z G d deeeej                  Z G d deej                  Z G d dej                  Z G d dej                  Z G d  d!ej                  Z G d" d#e          Z G d$ d%e          Z G d& d'ej                  Z G d( d)ej                  Z G d* d+          Z d, Z!d- Z" G d. d/          Z# G d0 d1ej                  Z$dS )2zTest Interface implementation
    N)CleanUp)MissingSomeAttrs)OptimizationTestMixin)SubclassableMixinHashMec                       e Zd Zd Zd ZdS )Test_invariantc                     ddl m} ddl m d  G fdd          }|                     t	          ||d           dgi           d S )Nr   TAGGED_DATA	invariantc                      t                      NNotImplementedErrorargskws     N/usr/local/lib/python3.11/dist-packages/zope/interface/tests/test_interface.py_checkz,Test_invariant.test_w_single.<locals>._check3       %'''    c                   &    e Zd Z             dS ))Test_invariant.test_w_single.<locals>.FooN__name__
__module____qualname__)r   r   s   r   Foor   6   s!        Ifr   r    
invariantszope.interface.interfacer   r   assertEqualgetattr)selfr   r    r   r   s      @@r   test_w_singlezTest_invariant.test_w_single/   s    888888666666	( 	( 	(	 	 	 	 	 	 	 	 	 	 	 	k488&1	3 	3 	3 	3 	3r   c                     ddl m} ddl m d d  G fdd          }|                     t	          ||d           dgi           d S )	Nr   r   r   c                      t                      r   r   r   s     r   r   z.Test_invariant.test_w_multiple.<locals>._check@   r   r   c                      t                      r   r   r   s     r   _another_checkz6Test_invariant.test_w_multiple.<locals>._another_checkC   r   r   c                   <    e Zd Z                         dS )+Test_invariant.test_w_multiple.<locals>.FooNr   )r+   r   r   s   r   r    r-   F   s1        IfIn%%%%%r   r    r!   r"   )r&   r   r    r+   r   r   s      @@@r   test_w_multiplezTest_invariant.test_w_multiple<   s    888888666666	( 	( 	(	( 	( 	(	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	k488&(@A	C 	C 	C 	C 	Cr   N)r   r   r   r'   r.    r   r   r	   r	   -   s7        3 3 3C C C C Cr   r	   c                        e Zd Zd Zd Zd ZdS )Test_taggedValuec                     ddl m} ddl m  G fdd          }|                     t	          ||d           ddgi           d S )Nr   r   taggedValuec                   *    e Zd Z  ddg           dS )+Test_taggedValue.test_w_single.<locals>.FoobarbazNr   r3   s   r   r    r6   T   s%        Kw'''''r   r    r7   r8   r#   r   r4   r$   r%   r&   r   r    r4   s      @r   r'   zTest_taggedValue.test_w_singleP   s    888888888888	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	k488%)	+ 	+ 	+ 	+ 	+r   c                     ddl m} ddl m  G fdd          }|                     t	          ||d           dgdd           d S )	Nr   r   r3   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=   ^   s7        Kw'''Kv&&&&&r   r    r8   r?   r7   r>   r9   r:   s      @r   r.   z Test_taggedValue.test_w_multipleZ   s    888888888888	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	k488"'88	: 	: 	: 	: 	:r   c                     ddl m} ddl m  G fdd          }|                     t	          ||d           ddd           d S )	Nr   r   r3   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   i   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_overwritinge   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   N   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._getTargetClassv   s    444444r   Nc                 N    || j         } |                                 |          S r   )DEFAULT_NAMErK   )r&   names     r   _makeOnezElementTests._makeOnez   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_defaults   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   sF    --//**:u==u	
 	
 	
 	
 	
r   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   r   s        L  , , , ,
A A A8 8 8
H H HL L LE E EM M MN N NK K K
 
 
A A A( ( ( ( (r   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   object)r&   r   sbr   r   s       @r   test_providedBy_missz2GenericSpecificationBaseTests.test_providedBy_miss   s    ,,,,,,666666]]__	 	 	 	 	 Y;777 	6 	6R]]68844555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6   5A::A>A>c                    ddl m} ddlm |                                 }fd}t          ||          5  |                     |                    t                                           d d d            d S # 1 swxY w Y   d S )Nr   r   r   c                     S r   r/   r   s    r   _implementedByzMGenericSpecificationBaseTests.test_implementedBy_miss.<locals>._implementedBy   r   r   implementedBy)	r   r   r   r   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          fd}t          ||          5  |                                         t                                           d d d            d S # 1 swxY w Y   d S )Nr   r   c                       e Zd Z i iZdS )>SpecificationBasePyTests.test_implementedBy_hit.<locals>._DeclNr   r   r   r   r   s   r   _Declr             BxHHHr   r   c                                  S r   r/   r   r   s    r   r   zGSpecificationBasePyTests.test_implementedBy_hit.<locals>._implementedBy
      577Nr   r   )r   r   rO   r   r   r   r   )r&   r   r   r   r   s      @@r   test_implementedBy_hitz/SpecificationBasePyTests.test_implementedBy_hit  s   ,,,,,,]]__	  	  	  	  	  	  	  	  	  	 	 	 	 	 	 Yn=== 	8 	8OOB,,VXX66777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8   5BBBc                 "   ddl m} |                                  G fdd          fd}t          ||          5  |                                         t                                           d d d            d S # 1 swxY w Y   d S )Nr   r   c                       e Zd Z i iZdS );SpecificationBasePyTests.test_providedBy_hit.<locals>._DeclNr   r   s   r   r   r     r   r   r   c                                  S r   r/   r   s    r   r   zASpecificationBasePyTests.test_providedBy_hit.<locals>._providedBy  r   r   r   )r   r   rO   r   r   r   r   )r&   r   r   r   r   s      @@r   test_providedBy_hitz,SpecificationBasePyTests.test_providedBy_hit  s	   ,,,,,,]]__	  	  	  	  	  	  	  	  	  	 	 	 	 	 	 Y;777 	5 	5OOBMM&((33444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r   N)	r   r   r   r   r   r   r   r   r   r/   r   r   r   r      sn        3 3 3
% % %3 3 3
% % %8 8 85 5 5 5 5r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )!NameAndModuleComparisonTestsMixinc                 .    |                      dd          S )Nab)rO   r   s    r   _makeOneToComparez3NameAndModuleComparisonTestsMixin._makeOneToCompare   s    }}S#&&&r   c                    dd l }|                                 }t          ||          }t          |d|z            } G fdd           G d d          } G d d          }|                      |            j        d	           |                      |            j        d	           |                     t                    5  t           |            d
           d d d            n# 1 swxY w Y   |                     t                    5  t           |            d           d d d            n# 1 swxY w Y   ||fD ].}|                      | |                      t                     / G d d          }	| 
                     || |	                                 |                      | |	                      t                      G d d          }
|                      | |
                      t                     |                     t                    5   || |
                       d d d            n# 1 swxY w Y    G d dt                    }|_        |                     |          5  t           |            d
           d d d            n# 1 swxY w Y   |                     |          5  t           |            d           d d d            n# 1 swxY w Y   ||fD ]}|                     |          5   || |                       d d d            n# 1 swxY w Y   |                     |          5   | |                       d d d            n# 1 swxY w Y   d S )Nr   z__%s__c                       e Zd ZeZ fdZdS )aNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissingc                 |    	 t                               | |          S # t          $ r j        } ||          w xY wr   )r   __getattribute__AttributeErrorExc)r&   rN   excRaisesErrorOnMissings      r   r   zrNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissing.__getattribute__2  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   9  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__B  s    "'r   Nr   r   r   r   r/   r   r   RaisesErrorOnNamer   A  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__S      tr   N	r   r   r   r   __lt____le____gt____ge____ne__r/   r   r   AllowsAnyComparisonr   R  s6          FFFFFFFr   r   c                   &    e Zd ZdZeZeZeZeZeZdS )_NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsNoComparisonNr   r/   r   r   AllowsNoComparisonr   _  s,        FFFFFFFFr   r   c                       e Zd ZdS )XNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.MyExceptionNr   r/   r   r   MyExceptionr   l          Dr   r   )operatorr   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 	% 	% 	%	( 	( 	( 	( 	( 4 	( 	( 	( 	,,..7???**,,7???~.. 	9 	9''))<888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9~.. 	5 	5%%''444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 '(99 	7 	7CMM$$ssuu++~6666
	 	 	 	 	"6 	 	 	 	2224455666dd..0011>BBB	 	 	 	 	 	 	 	 	dd--//00.AAAy)) 	) 	)Br%%''(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)	 	 	 	 	) 	 	 	 $/ {++ 	9 	9''))<888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9{++ 	5 	5%%''444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 '(99 	 	C"";//  2ssuu              "";//  SSUU              	 	s~   C--C14C1D77D;>D;)I

IIJ))J-0J-	K..K25K2L55L9	<L9	M55M9	<M9	c                 0    |                      d           d S )NltC_NameAndModuleComparisonTestsMixin__check_NotImplemented_comparisonr   s    r   test__lt__NotImplementedz:NameAndModuleComparisonTestsMixin.test__lt__NotImplemented|      ..t44444r   c                 0    |                      d           d S )Nler  r   s    r   test__le__NotImplementedz:NameAndModuleComparisonTestsMixin.test__le__NotImplemented  r  r   c                 0    |                      d           d S )Ngtr  r   s    r   test__gt__NotImplementedz:NameAndModuleComparisonTestsMixin.test__gt__NotImplemented  r  r   c                 0    |                      d           d S )Nger  r   s    r   test__ge__NotImplementedz:NameAndModuleComparisonTestsMixin.test__ge__NotImplemented  r  r   N)	r   r   r   r   r  r  r  r  r  r/   r   r   r   r     sr        ' ' 'W W Wr5 5 55 5 55 5 55 5 5 5 5r   r   c                   :    e Zd Zd Zd Zd
dZd Zd Zd Zd	 Z	dS )InterfaceBaseTestsMixinc                     t           r   r   r   s    r   rK   z'InterfaceBaseTestsMixin._getTargetClass  s    !!r   c                     ddl m} |S )Nr   )InterfaceBasePy)r#   r  )r&   r  s     r   r   z)InterfaceBaseTestsMixin._getFallbackClass  s    <<<<<<r   FNc                 `     G fdd|                                            } |||          S )Nc                        e Zd Zd Z fdZdS ),InterfaceBaseTestsMixin._makeOne.<locals>.IBc                      ||           S r   r/   )r&   conforms     r   _call_conformz:InterfaceBaseTestsMixin._makeOne.<locals>.IB._call_conform  s    wt}}$r   c                     S r   r/   )r&   r   object_should_provides     r   r   z7InterfaceBaseTestsMixin._makeOne.<locals>.IB.providedBy  s	    ,,r   N)r   r   r   r#  r   )r%  s   r   IBr     s=        % % %- - - - - - -r   r&  r   )r&   r%  rN   moduler&  s    `   r   rO   z InterfaceBaseTestsMixin._makeOne  sW    	- 	- 	- 	- 	- 	- 	-%%'' 	- 	- 	- r$r   c                     |                      d          }t                       G fdd          }|                      | |                                 d S )NFc                       e Zd Z fdZdS )UInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adaptedc                     S r   r/   )r&   iface	conformeds     r   __conform__zaInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adapted.__conform__  s	      r   Nr   r   r   r.  )r-  s   r   _Adaptedr*    s.        ! ! ! ! ! ! !r   r0  )rO   r   r  )r&   r  r0  r-  s      @r   +test___call___w___conform___returning_valuezCInterfaceBaseTestsMixin.test___call___w___conform___returning_value  sy    ]]5!!HH		! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	bbnni00000r   c                     |                      d          }||                                 f}t                      }t                      }|                      |||          |           d S )NF)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  s5    $$--//M	
 	
 	
 	
 	
 	
r   )FNN)
r   r   r   rK   r   rO   r1  r6  r;  r?  r/   r   r   r  r    s        " " "  
	  	  	  	 1 1 19 9 9= = =
 
 
 
 
r   r  c                       e Zd Zd ZdS )InterfaceBaseTestsc                     ddl m} |S )Nr   )InterfaceBase)r#   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          } |            }|                      ||          |           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   r0  rI    #            r   r0  )rO   r  )r&   r  r0  r4  s       r   ,test___call___w___conform___miss_ob_provideszAInterfaceBasePyTests.test___call___w___conform___miss_ob_provides  sj    ]]4  	 	 	 	 	 	 	 	 (**bbkk7+++++r   c                     |                      d          }t                      }|                     |                    |          |           d S r   )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  sC    G)4''))+++%t##%%e,,,r   c                 |   ddl m} |                                 }|                     |j        d           |                     t          |j                  d           |                     ||j                   |                     ||j                   |                     t          |j                  d           d S )Nr   	Interfacer/      )	r#   rf  rO   r$   	__bases__lenr   r8  
dependents)r&   rf  specs      r   	test_ctorzSpecificationTests.test_ctor  s    666666}},,,T]++Q///dDM***i///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                 j   |                                  }t                      }|                    |           |                    |           |                    |           |                     |j        |         d           |                    |           |                     ||j                   d S rn  )rO   rp  rq  rx  r$   rj  assertNotInrr  s      r   test_unsubscribez#SpecificationTests.test_unsubscribe  s    }}ss-q111do.....r   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 )YSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.IFooNr   r/   r   r   IFoor  %  r   r   r  c                       e Zd ZdS )YSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.IBarNr   r/   r   r   IBarr  (  r   r   r  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	 	 	 	 	9 	 	 		 	 	 	 	9 	 	 	 v....222,,T22D999.22222r   c                    ddl m}  G d d|          }|                                 }d|_        d|j        |<   |                    |           |                     |j                   |                     ||j                   d S )Nr   re  c                       e Zd ZdS )JSpecificationTests.test_changed_clears_volatiles_and_implied.<locals>.IFooNr   r/   r   r   r  r  5  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_implied2  s    666666	 	 	 	 	9 	 	 	 }} dT$-(((t}-----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   r  r  B  r   r   r  )r#   rf  rO   r$   rU   
interfacesr  s       r   "test_interfaces_skips_already_seenz5SpecificationTests.test_interfaces_skips_already_seen?  s    666666	 	 	 	 	9 	 	 	 }}dD\**doo//004&99999r   c                     ddl m}  G d d|          }|                     |          }|                     |                    |d                     d S )Nr   re  c                       e Zd ZdS )<SpecificationTests.test_extends_strict_wo_self.<locals>.IFooNr   r/   r   r   r  r  K  r   r   r  Tstrict)r#   rf  rO   r   extendsr  s       r   test_extends_strict_wo_selfz.SpecificationTests.test_extends_strict_wo_selfH  s{    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_selfQ  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_selfU  s7    }}T%8899999r   c                     |                                  }t                      }d|i|_        |                     |                    d          |           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_attrsY  sG    }}hhdhhuoos+++++r   c                 ~   ddl m ddl m}  G fdd|          } G fdd|          }|                     ||g          }|                     |                    d          |                    d                     |                     |                    d	          |                    d	                     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  c          )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   r  r  f  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\**dhhuootxx777dhhuootxx77777r   c           
         ddl m} ddl m} ddlm}  G d d|          } G d d          } G d	 d
|          } G d d|          } ||           G d d                      } G d d||          }	|                      ||	          j         ||	           ||          | ||           |t                    |f           d S )Nr   r   implementerre  c                       e Zd ZdS )TSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IDefaultViewNameNr   r/   r   r   IDefaultViewNamer  w  r   r   r  c                       e Zd ZdS )KSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ContextNr   r/   r   r   Contextr  z  r   r   r  c                       e Zd ZdS )LSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.RDBModelNr   r/   r   r   RDBModelr  }  r   r   r  c                       e Zd ZdS )JSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IOtherNr   r/   r   r   IOtherr    r   r   r  c                       e Zd ZdS )MSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.OtherBaseNr   r/   r   r   	OtherBaser            Dr   r  c                       e Zd ZdS )ISpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ModelNr   r/   r   r   Modelr    r   r   r  )r   r   r  r#   rf  r$   __sro__r   )
r&   r   r  rf  r  r  r  r  r  r  s
             r   'test_multiple_inheritance_no_interfacesz:SpecificationTests.test_multiple_inheritance_no_interfacesm  s    	>=====;;;;;;666666	 	 	 	 	y 	 	 		 	 	 	 	 	 	 		 	 	 	 	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; ; ;
/ / /3 3 3&. . .: : :: : :: : :: : :, , ,8 8 8'
 '
 '
 '
 '
r   r^  c                   B   e Zd Zd Z	 	 d7dZd Zd Zd Zd	 Zd
 Z	d8d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 Z/d2 Z0d3 Z1d4 Z2d5 Z3d6 Z4dS )9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._makeOne  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_defaults  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_bases  s9    $$&&)UJDDDDDr   c                    ddl m} ddl m} d } |dd           ||          d}|                                 } |d|	          }|                     |j        d           |                     |j        d           |                     |j        d
           |                     |                                |	                                           d S )Nr   r  fromFunctionc                      dS 	DOCSTRINGNr/   r/   r   r   _barzBInterfaceClassTests.test_ctor_w_attrs_attrib_methods.<locals>._bar        r   r    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_methods  s    666666999999	 	 	 9UB''<%%
 
 $$&&uZu---
333r***,,,uzz||44444r   c                 \   di i}|                                  } |d|          }|                     |j        d           |                     |j        d           |                     |j        d           |                     t          |                                          g            d S )N
__locals__r  r  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   returnc                 "   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
g            |            } |||            |||           d S )Nr   r  re  directlyProvidesr}   c                   2    e Zd ZU   d          Zeed<   dS )KInterfaceClassTests.test_ctor_attrs_w___annotate_func__.<locals>.IAnnotatedValuevalueNr   r   r   r  intr  r  s   r   
IAnnotatedr    s-         "7++E3+++++r   r  c                       e Zd ZU dZeed<   dS )JInterfaceClassTests.test_ctor_attrs_w___annotate_func__.<locals>.Annotatedr   r  Nr  r/   r   r   	Annotatedr    s         E3NNNNNr   r  r  )	r   r  rf  r  r   r~   r$   rU   r  )r&   rf  r  r~   r  r  	annotatedr  s          @r   #test_ctor_attrs_w___annotate_func__z7InterfaceClassTests.test_ctor_attrs_w___annotate_func__  s   ,,,,,,,,,,,,333333666666	, 	, 	, 	, 	, 	, 	, 	, 	, 	,	 	 	 	 	 	 	 	 	j..0011G9===IKK	J///Z+++++r   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	 	 	 9UB''<%%
 


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


 99UB''
 }}WJ}77--
4'-OO7==T=**++-B-B-B	
 	
 	
 	
 	
r   c                 \   ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     t          |                    d                    g d           d S )Nr   r  r  c                      dS r  r/   r/   r   r   r  zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._barI  r  r   c                      dS r  r/   r/   r   r   _foozJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._fooL  r  r   r    rQ   r  r  re   r8   r  r  r  r  Tr  r/  r!  	r&   r  r  r  r4  r$  r%  r&  r'  s	            r   (test_names_w_all_True_bases_w_same_namesz<InterfaceClassTests.test_names_w_all_True_bases_w_same_namesE  s   666666999999	 	 		 	 	 9UB''<%%
 


  <%%9UB''
 
 }}WJ}77--
4'-OOMMdM##% %&;&;&;	
 	
 	
 	
 	
r   c                 4   ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     t          |          g d           d S )Nr   r  r  c                      dS r  r/   r/   r   r   r  z/InterfaceClassTests.test___iter__.<locals>._bara  r  r   c                      dS r  r/   r/   r   r   r4  z/InterfaceClassTests.test___iter__.<locals>._food  r  r   r    rQ   r  r  r5  r  r  r  r  r/  )r#   r  r  rO   r$   r"  r6  s	            r   test___iter__z!InterfaceClassTests.test___iter__]  s    666666999999	 	 		 	 	 9UB''<%%
 


  <%%9UB''
 
 }}WJ}77--
4'-OO*?*?*?@@@@@r   c                 P   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    d|d         fg           d S )Nr   r  r  c                      dS r  r/   r/   r   r   r  zUInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases.<locals>._barw  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_basess  s    666666999999	 	 	 9UB''<%%
 


 99UB''
 }}WJ}77--
4'-OO7//E/::;;e,->	
 	
 	
 	
 	
r   c                    ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     t          |                    d	
                    d|d         fd|d         fg           d S )Nr   r  r  c                      dS r  r/   r/   r   r   r  zOInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases.<locals>._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	 	 	 9UB''<%%
 
 mm%m((3+++6677e%e%:	
 	
 	
 	
 	
r   c                 t   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    d|d         fd|d         fd|d         fg           d S )Nr   r  r  c                      dS r  r/   r/   r   r   r  zMInterfaceClassTests.test_namesAndDescriptions_w_all_True_simple.<locals>._bar  r  r   r    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	 	 	 9UB''<%%
 


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


  <%%9UB''
 
 }}WJ}77--
4'-OO7//D/99::
5)*e,-e,-=	
 	
 	
 	
 	
r   c                 p    |                                  }|                     t          |j        d           d S r]   )rO   r_   r`   getDescriptionForr&   r  s     r   test_getDescriptionFor_missz/InterfaceClassTests.test_getDescriptionFor_miss  s0    mmoo(C$9:FFFFFr   c                 <   ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     |                    d	          |d	                    |                     |                    d
          |d
                    d S )Nr   r  r  c                      dS r  r/   r/   r   r   r  z<InterfaceClassTests.test_getDescriptionFor_hit.<locals>._bar  r  r   r    rQ   r  r  re   r7   )r#   r  r  rO   r$   rL  r+  s         r   test_getDescriptionFor_hitz.InterfaceClassTests.test_getDescriptionFor_hit  s    666666999999	 	 	 9UB''<%%
 
 mm%m((..u55uU|DDD..u55uU|DDDDDr   c                 p    |                                  fd}|                     t          |           d S )Nc                       d         S r]   r/   )r  s   r   _testz8InterfaceClassTests.test___getitem___miss.<locals>._test  s    z?"r   )rO   r_   r`   )r&   rT  r  s     @r   test___getitem___missz)InterfaceClassTests.test___getitem___miss  sG    mmoo	# 	# 	# 	# 	# 	(E*****r   c                    ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     |d	         |d	                    |                     |d
         |d
                    d S )Nr   r  r  c                      dS r  r/   r/   r   r   r  z6InterfaceClassTests.test___getitem___hit.<locals>._bar  r  r   r    rQ   r  r  re   r7   )r#   r  r  rO   r$   r+  s         r   test___getitem___hitz(InterfaceClassTests.test___getitem___hit  s    666666999999	 	 	 9UB''<%%
 
 mm%m((UU5\222UU5\22222r   c                 Z    |                                  }|                     d|           d S r]   )rO   r{  rM  s     r   test___contains___missz*InterfaceClassTests.test___contains___miss  s+    mmooS)))))r   c                     ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     d	|           |                     d
|           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   r8  r+  s         r   test___contains___hitz)InterfaceClassTests.test___contains___hit  s    666666999999	 	 	 9UB''<%%
 
 mm%m((eS!!!eS!!!!!r   c                     |                                  }|                     |                    d          d            d S r]   )rO   r$   directrM  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   r4  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._foo  r  r   r    rQ   r  r  r5  r  r  r  r  re   r8   r7   )r#   r  r  rO   r$   r_  r6  s	            r    test_direct_hit_local_miss_basesz4InterfaceClassTests.test_direct_hit_local_miss_bases  s>   666666999999	 	 		 	 	 9UB''<%%
 


  <%%9UB''
 
 }}WJ}77--
4'-OO..e0DEEE..e0DEEE..55555r   c                     |                                  }|                     |                    d          d            d S r]   )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$   rf  )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>._passable6  s     r
+++4r   r!   )rO   r   rg   r$   validateInvariants)r&   rp  r,  r   ro  s       @r   test_validateInvariants_passz0InterfaceClassTests.test_validateInvariants_pass3  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   rp  zTInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._passableD       !(($4444r   c                  6                         | |f           r   rS  r   r   ru  _fail_called_withs     r   _failzPInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._failJ       $$dBZ000Mr   r!   r   ru  rO   r   rg   r_   rq  r$   )r&   rp  r}  r,  r   ru  r|  rx  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           | 	                    |d                    d S )Nr   rt  c                  6                         | |f           r   rS  r{  s     r   r}  zOInterfaceClassTests.test_validateInvariants_fail_w_errors_passed.<locals>._failZ  r~  r   r!   ro  
r   ru  rO   r   rg   r_   rq  r$   ri  assertIsInstance)r&   _errorsr}  r,  r   ru  r|  s        @@r   ,test_validateInvariants_fail_w_errors_passedz@InterfaceClassTests.test_validateInvariants_fail_w_errors_passedU  s    555555	 	 	 	 	 	 hh\E7333'5#;S'JJJ*sfb\N;;;Wq)))gaj'22222r   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   rt  c                  6                         | |f           dS r   rS  rw  s     r   rp  z\InterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._passablej  ry  r   c                  6                         | |f           r   rS  r{  s     r   r}  zXInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._failp  r~  r   r  r  r!   r  )	r&   rp  r}  r&  r'  r   ru  r|  rx  s	         @@@r   5test_validateInvariants_fail_in_base_wo_errors_passedzIInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passedf  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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           | 	                    |d                    d S )	Nr   rt  c                  6                         | |f           dS r   rS  rw  s     r   rp  z[InterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._passable  ry  r   c                  6                         | |f           r   rS  r{  s     r   r}  zWInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._fail  r~  r   r  r  r!   ro  r  )
r&   r  rp  r}  r&  r'  r   ru  r|  rx  s
          @@@r   4test_validateInvariants_fail_in_base_w_errors_passedzHInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed}  sY   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)))gaj'22222r   c                 (   g fd}t                      }|                     d          }|                    d|g           |                     d|f          }|                    |           |                     dt                               d S )Nc                  6                         | |f           dS r   rS  rw  s     r   rp  zbInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_times.<locals>._passable  ry  r   r  r!   r  ro  )r   rO   rg   rq  r$   ri  )r&   rp  r   r&  r'  rx  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                 r    ddl m} |                     t          |          t          d                     d S )Nr   )r   )r   z#zope.interface.tests.test_interface)#zope.interface.tests.test_interfacer   r$   hashrK  s     r   test___hash___normalz(InterfaceClassTests.test___hash___normal  sK    GGGGGGKKBCC	
 	
 	
 	
 	
r   c                      G d d|                                            } |            }|                     t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )IInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derivedc                     d S r   r/   r   s    r   r   zRInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derived.__init__  s    r   Nr   r/   r   r   Derivedr    s#            r   r  )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                 V   |                                  }|                     |d            |                     |d            |                     |d            |                     |d            |                     |d k               |                     |d k               |                     d |k                |                     d |k               |                     d |           |                     d |           |                     d |           |                     d |           d S r   )rO   
assertLessassertLessEqualassertNotEqualr   assertGreaterEqualassertGreaterrK  s     r   test_comparison_with_Nonez-InterfaceClassTests.test_comparison_with_None  s#   t$$$UD)))E4(((E4((($'''&&&&&&'''D%(((D%(((e,,,4'''''r   c                 B   |                                  }|                     ||k                |                     ||           |                     ||           |                     ||           |                     ||           |                     ||k               d S r   )rO   r   r  r$   r  rK  s     r   "test_comparison_with_same_instancez6InterfaceClassTests.test_comparison_with_same_instance  s    '''UE***&&&&&&u---'''''r   c                    |                      dd          }|                      dd          }|                     ||           |                     ||k                |                     ||           |                     ||k               |                     ||           |                     ||           |                     ||           |                     ||           |                     ||k               |                     ||           |                     ||k               |                     ||           d S )NINamezzope.interface.tests.oner   zzope.interface.tests.other)rO   r  r   r  r  r  r  )r&   r  r   s      r   8test_comparison_with_same_named_instance_in_other_modulezLInterfaceClassTests.test_comparison_with_same_named_instance_in_other_module  sB   mmG0JmKKg2NOOU###%%%S%(((#&&&C'''E3'''C'''E3'''&&&s+++u%%%5#&&&&&r   c                     G d dt                      G fdd|                                           }|                     d          }|                     ||                                            |                     t          |          |                                            |                     t                    5   |d           d d d            n# 1 swxY w Y   ||_        |                     ||           |                     t          |          |           |                               5   |d           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )DInterfaceClassTests.test_assignment_to__class__.<locals>.MyExceptionNr   r/   r   r   r   r    r   r   r   c                       e Zd Z fdZdS )IInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClassc                      |          r   r/   )r&   targetr   s     r   __call__zRInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClass.__call__  s    !k&)))r   Nr   r   r   r  )r   s   r   MyInterfaceClassr    s.        * * * * * * *r   r  r  ro  )	r  rK   rO   r  r  typer_   r  	__class__)r&   r  r  r   s      @r   test_assignment_to__class__z/InterfaceClassTests.test_assignment_to__class__  s   	 	 	 	 	) 	 	 		* 	* 	* 	* 	* 	* 	*t3355 	* 	* 	* }}W%%dD$8$8$:$:;;;d4jj$"6"6"8"8999y)) 	 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 *d$4555d4jj"2333{++ 	 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   CC"C;EEEc                    ddl m}  G d d|                                           } |d|f          }|                      |d          d            G d d	|          }|                      |d          d            G d
 d|          }|                     t
                    5   |             d d d            n# 1 swxY w Y   ||_        |                      |d          d           d S )Nr   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__  s    r   Nr  r/   r   r   r  r    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    r   r   r  c                       e Zd ZdS )?InterfaceClassTests.test_assignment_to__class__2.<locals>.ISpamNr   r/   r   r   ISpamr    r   r   r  )r   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                    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  s     r   test__module__is_readonlyz-InterfaceClassTests.test__module__is_readonly  s    }}~.. 	1 	10DO	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AAA)r  r/   NNN)r  N)5r   r   r   rK   rO   rY   r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r,  r0  r7  r;  r@  rC  rF  rJ  rN  rQ  rU  rX  rZ  r]  r`  rd  rg  rl  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/   r   r   r  r    s5          DH O O O O. . .E E E5 5 5$1 1 11 1 1, , , ,"1 1 1L L L3 3 3< < <3 3 3
: : :9 9 9; ; ;D D D$F F F
 
 
(
 
 
0A A A,
 
 
,
 
 
&
 
 
0
 
 
8G G GE E E+ + +3 3 3* * *" " "7 7 76 6 60F F FK K K7 7 7< < <*3 3 3"< < <.3 3 348 8 89 9 9
 
 
  ( ( ("	( 	( 	(' ' '$  .) ) )61 1 1 1 1r   r  c                   F   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5S )6InterfaceTestsc                     ddl m ddl m}  G fdd|          }|                     |d         j        |           d S )Nr   r  re  c                   &    e Zd Z  d          ZdS )<InterfaceTests.test_attributes_link_to_interface.<locals>.I1My attrN)r   r   r   ri  r  s   r   I1r  &  s        9Y''DDDr   r  ri  )r   r  rf  r  r   )r&   rf  r  r  s      @r   !test_attributes_link_to_interfacez0InterfaceTests.test_attributes_link_to_interface"  s~    ,,,,,,,,,,,,	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	bj*B/////r   c                 p    ddl m}  G d d|          }|                     |d         j        |           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+  sa    ,,,,,,	 	 	 	 	 	 	 	 	bl,b11111r   c                 Z   ddl m} ddl m} ddl m}  G d d|           G d d|          } G fd	d
          } |            }|                                         |                     |                     |                    |                     |                                |                      ||                     |                     | ||                     |                      ||                     |                     | ||                     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 	docstringNr/   r   r   s     r   method1zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method1:  r  r   c                     dS r  r/   r  s     r   method2zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method2=  r  r   N)r   r   r   r  r  r/   r   r   ICurrentr  9  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.method1F      )+++r   c                     t                      r   r   r  s      r   r  zCInterfaceTests.test_classImplements_simple.<locals>.Current.method2I  r  r   N)r   r   r   __implemented__r  r  )r  s   r   Currentr  C  s8        &O, , ,, , , , ,r   r  )	r   rf  r   r   r   r   r$   r8  r{  )r&   rf  r   r   r  r  currentr  s          @r   test_classImplements_simplez*InterfaceTests.test_classImplements_simple4  s   ,,,,,,000000------	  	  	  	  	 y 	  	  	 	 	 	 	 	Y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, '))..w77888--g667778,,,hg 6 6777w!7!7888h

7 3 3444G!4!455555r   c                 .   ddl m} ddl m} ddl m}  G d d|           G d d          } G fd	d
          } |            }|                                         |                     |                     |                    |                     |                      ||                     |                     | ||                     |                      ||                     |                     | ||                     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  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.methode  r  r   Nr   r   r   r  r  )r  s   r   r  r  b  )        #O, , , , ,r   r  r   rf  r   r   r   r   r8  r{  )r&   rf  r   r   r  r  r  r  s          @r   %test_classImplements_base_not_derivedz4InterfaceTests.test_classImplements_base_not_derivedV  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 	 	 	 	 	u 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, '))++G44555//88999e]]733444==#9#9:::eZZ00111::g#6#677777r   c                    ddl m} ddl m} ddl m}  G d d|          } G d d|           G fd	d
          } |            }|                     |                    |                     |                                         |                     |                     | ||                     |                     | ||                                                     |                      ||                     |                     | ||                     |                     | ||                                                     |                      ||                     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.methodw  r  r   Nr  r/   r   r   r  r  v  r  r   r  c                       e Zd ZdS )FInterfaceTests.test_classImplements_base_and_derived.<locals>.IDerivedNr   r/   r   r   r  r   z  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{  r8  	flattened)r&   rf  r   r   r  r  r  r  s          @r   %test_classImplements_base_and_derivedz4InterfaceTests.test_classImplements_base_and_derivedq  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 	 	 	 	 	u 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, '))++G44555..w77888g 6 6777e]]733==??@@@hg 6 6777

7 3 3444eZZ00::<<===h

7 3 344444r   c                 l  	 ddl m} ddl m} ddl m}  G d d|           G d d          	 G fd	d
          } G 	fdd          } G d d||          } |            }|                                         |                     |                     	                    |                     |                      ||                     |                     	 ||                     |                      ||                     |                     	 ||                     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    r  r   r  c                       e Zd Z ZdS );InterfaceTests.test_classImplements_multiple.<locals>.RightNr   r   r   r  r  s   r   Rightr            $OOOr   r  c                       e Zd ZdS ):InterfaceTests.test_classImplements_multiple.<locals>.AmbiNr   r/   r   r   Ambir    r   r   r  )r   rf  r   r   r   r8  )
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 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	,	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	4 	 	 	 tvv++D11222,,T22333e]]400111fmmD11222eZZ--...fjj../////r   c                 ~  	
 ddl m} ddl m} ddl m}  G d d|           G d d          	 G d	 d
|           G fdd          
 G 	fdd          } G fdd           G 
fdd
|          } |            }|                                         |                     |                     	                    |                     |                                         |                     |                      ||                     |                     	 ||                     |                      ||                     |                      ||                     |                     	 ||                     |                      ||                     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   r0  r  )r&   rf  r   r   r  r0  mixedr
  r  r  r  r-  s          @@@@@r   2test_classImplements_multiple_w_explict_implementszAInterfaceTests.test_classImplements_multiple_w_explict_implements  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 
	 	 	 	 	U 	 	 		 	 	 	 	Y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	,	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	J 	J 	J 	J 	J 	J 	J 	JD% 	J 	J 	J ++E22333--e44555,,U33444e]]511222u!5!5666fmmE22333eZZ..///E!2!2333fjj//00000r   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  newr4  r5  r6  r7  s          r   testInterfaceExtendsInterfacez,InterfaceTests.testInterfaceExtendsInterface  sO   ,,,,,,!s>**s>L?;;s>**s>L,+HII,,\::;;;,,\::;;;,,\::;;;--l;;<<<--l;;<<<,,\::;;;--l;;<<<<<r   c                     ddl m ddl m} ddlm}  G fdd|           G fdd          }|                      ||                     d S )	Nr   r  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.method  r  r   Nr   r   r   ri  r  r  s   r   ICheckMer=    3        9Y''D    r   r@  c                       e Zd Z ZdZd ZdS )0InterfaceTests.test_verifyClass.<locals>.CheckMer  c                     t                      r   r   r   s    r   r  z7InterfaceTests.test_verifyClass.<locals>.CheckMe.method  r  r   Nr   r   r   r  ri  r  r@  s   r   CheckMerC    .        &OD, , , , ,r   rG  )r   r  rf  r   r;  r   )r&   rf  r;  rG  r  r@  s       @@r   test_verifyClasszInterfaceTests.test_verifyClass  s    ,,,,,,,,,,,,555555	 	 	 	 	 	 	y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	Hg6677777r   c                     ddl m ddl m} ddlm}  G fdd|           G fdd          } |            }|                      ||                     d S )	Nr   r  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.method  r  r   Nr?  r  s   r   r@  rL    rA  r   r@  c                       e Zd Z ZdZd ZdS )1InterfaceTests.test_verifyObject.<locals>.CheckMer  c                     t                      r   r   r   s    r   r  z8InterfaceTests.test_verifyObject.<locals>.CheckMe.method  r  r   NrE  rF  s   r   rG  rO  
  rH  r   rG  )r   r  rf  r   r~   r   )r&   rf  r~   rG  check_mer  r@  s        @@r   test_verifyObjectz InterfaceTests.test_verifyObject  s    ,,,,,,,,,,,,666666	 	 	 	 	 	 	y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 799Xx8899999r   c                 ~    ddl m}  G d d|          }|                     |                    |                     d S )Nr   re  c                       e Zd ZdS )LInterfaceTests.test_interface_object_provides_Interface.<locals>.AnInterfaceNr   r/   r   r   AnInterfacerU    r   r   rV  )r   rf  r   r   )r&   rf  rV  s      r   (test_interface_object_provides_Interfacez7InterfaceTests.test_interface_object_provides_Interface  sf    ,,,,,,	 	 	 	 	) 	 	 	 		,,[99:::::r   c                     ddl m ddl m}  G fdd|          }|                     t	          |                                          ddg           d S )Nr   r  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   ISimplerZ  !  3        9Y''D         r   r\  ri  r  r   r  rf  r$   r"  r  r&   rf  r\  r  s      @r   test_names_simplez InterfaceTests.test_names_simple  s    ,,,,,,,,,,,,	  	  	  	  	  	  	 i 	  	  	  	00682DEEEEEr   c                 @   ddl m ddl m}  G fdd|          } G fdd|          }|                     t	          |                                          g d           |                     t	          |                    d	
                    g d           d S )Nr   r  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.method0  r  r   Nr?  r  s   r   r  rc  -  r]  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.method6  r  r   c                      dS r  r/   r/   r   r   r  z;InterfaceTests.test_names_derived.<locals>.IDerived.method29  r  r   Nr   r   r   attr2r  r  r  s   r   r  rf  3  sB        Ij))E              r   r  )rk  r  r  Tr  ri  rk  r  r  r^  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                    ddl m ddl m} ddlm}  G fdd|          }t          |                                          }|                     t          |          d           |                     |d         d         d           | 	                    |d         d	                    |                     |d         d	         j
        d           |                     |d         d	         j        d
           |                     |d	         d         d           | 	                    |d	         d	         |           |                     |d	         d	         j
        d           |                     |d	         d	         j        d           d S )Nr   r  re  Methodc                   ,    e Zd Z  d          Zd ZdS )@InterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimpler  c                      dS 	My methodNr/   r/   r   r   r  zGInterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimple.methodI  r  r   Nr?  r  s   r   r\  rs  F  3        9Y''D    r   r\  rg  ri  ro  r  r  rv  r   r  rf  r#   rq  r"  r?  r$   ri  r  r   rS   )r&   rf  rq  r\  name_valuesr  s        @r    test_namesAndDescriptions_simplez/InterfaceTests.test_namesAndDescriptions_simpleA  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 W99;;<<[))1---Q*F333k!nQ/;;;Q*3V<<<Q*2I>>>Q*H555k!nQ/888Q*3X>>>Q*2K@@@@@r   c                 |	   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
           | 	                    |d         d                    |                     |d         d         j
        d
           |                     |d         d         j        d           |                     |d         d         d           | 	                    |d         d         |           |                     |d         d         j
        d           |                     |d         d         j        d           |                     |d         d         d           | 	                    |d         d         |           |                     |d         d         j
        d           |                     |d         d         j        d           t          |                    d                    }|                     t          |          d           |                     |d         d         d           | 	                    |d         d                    |                     |d         d         j
        d           |                     |d         d         j        d           |                     |d         d         d
           | 	                    |d         d                    |                     |d         d         j
        d
           |                     |d         d         j        d           |                     |d         d         d           | 	                    |d         d         |           |                     |d         d         j
        d           |                     |d         d         j        d           |                     |d	         d         d           | 	                    |d	         d         |           |                     |d	         d         j
        d           |                     |d	         d         j        d           d S )Nr   r  re  rp  c                   ,    e Zd Z  d          Zd ZdS )?InterfaceTests.test_namesAndDescriptions_derived.<locals>.IBaser  c                      dS ru  r/   r/   r   r   r  zFInterfaceTests.test_namesAndDescriptions_derived.<locals>.IBase.method`  r  r   Nr?  r  s   r   r  r}  ]  rw  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )BInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerivedrg  c                      dS My method, overriddenNr/   r/   r   r   r  zIInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.methodf  r  r   c                      dS 
My method2Nr/   r/   r   r   r  zJInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method2i  r  r   Nrj  r  s   r   r  r  c  B        Ij))E( ( (    r   r     rk  ro  rg  r  r  rg  r  r  Tr     ri  r  rx  )r&   rf  rq  r  r  ry  r  s         @r   !test_namesAndDescriptions_derivedz0InterfaceTests.test_namesAndDescriptions_derivedX  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 X::<<==[))1---Q*G444k!nQ/;;;Q*3W===Q*2J???Q*H555k!nQ/888Q*3X>>>Q*24KLLLQ*I666k!nQ/888Q*3Y???Q*2LAAAX::t:DDEE[))1---Q*F333k!nQ/;;;Q*3V<<<Q*2I>>>Q*G444k!nQ/;;;Q*3W===Q*2J???Q*H555k!nQ/888Q*3X>>>Q*24KLLLQ*I666k!nQ/888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   IEmptyr    r   r   r  r^   )r   rf  r_   r`   rL  r&   rf  r  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          }|                     |           |                     |j        d           |                     |j	        d           |                    d	          }|                     ||           |                     |j        d	           |                     |j	        d
           d S )Nr   r  re  rp  c                   ,    e Zd Z  d          Zd ZdS )=InterfaceTests.test_getDescriptionFor_simple.<locals>.ISimpler  c                      dS ru  r/   r/   r   r   r  zDInterfaceTests.test_getDescriptionFor_simple.<locals>.ISimple.method  r  r   Nr?  r  s   r   r\  r    rw  r   r\  ri  r  r  rv  
r   r  rf  r#   rq  rL  r  r$   r   rS   r&   rf  rq  r\  a_descm_descr  s         @r   test_getDescriptionFor_simplez,InterfaceTests.test_getDescriptionFor_simple  s'   ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 **622fi000&111333**844ff---(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	          }|                     |	           |                     |j        d	           |                     |j	        d
           |                    d          }|                     ||           |                     |j        d           |                     |j	        d           |                    d          }|                     |	           |                     |j        d           |                     |j	        d           |                    d          }|                     ||           |                     |j        d           |                     |j	        d           d S )Nr   r  re  rp  c                   ,    e Zd Z  d          Zd ZdS )<InterfaceTests.test_getDescriptionFor_derived.<locals>.IBaser  c                      dS ru  r/   r/   r   r   r  zCInterfaceTests.test_getDescriptionFor_derived.<locals>.IBase.method  r  r   Nr?  r  s   r   r  r    rw  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )?InterfaceTests.test_getDescriptionFor_derived.<locals>.IDerivedrg  c                      dS r  r/   r/   r   r   r  zFInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method  r  r   c                      dS r  r/   r/   r   r   r  zGInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method2  r  r   Nrj  r  s   r   r  r    r  r   r  ri  r  r  r  rk  rg  r  r  r  
r&   rf  rq  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fi000&111333++H55ff---(333)@AAA,,W55gy111)7333*555,,Y77gv...)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   r  r    r   r   r  r^   )r   rf  r_   r`   __getitem__r  s      r   test___getitem__nonesuchz'InterfaceTests.test___getitem__nonesuch  sa    ,,,,,,	 	 	 	 	Y 	 	 	 	(F$6
CCCCCr   c                    ddl m ddl m} ddlm}  G fdd|          }|d         }|                     |           |                     |j        d           |                     |j        d           |d	         }|                     ||           |                     |j        d	           |                     |j        d
           d S )Nr   r  re  rp  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___getitem__simple.<locals>.ISimpler  c                      dS ru  r/   r/   r   r   r  z=InterfaceTests.test___getitem__simple.<locals>.ISimple.method  r  r   Nr?  r  s   r   r\  r    rw  r   r\  ri  r  r  rv  	r   r  rf  r#   rq  r  r$   r   rS   r  s         @r   test___getitem__simplez%InterfaceTests.test___getitem__simple  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 fi000&111333"ff---(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	         }|                     |	           |                     |j        d	           |                     |j        d
           |d         }|                     ||           |                     |j        d           |                     |j        d           |d         }|                     |	           |                     |j        d           |                     |j        d           |d         }|                     ||           |                     |j        d           |                     |j        d           d S )Nr   r  re  rp  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___getitem___derived.<locals>.IBaser  c                      dS ru  r/   r/   r   r   r  z=InterfaceTests.test___getitem___derived.<locals>.IBase.method  r  r   Nr?  r  s   r   r  r    rw  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )9InterfaceTests.test___getitem___derived.<locals>.IDerivedrg  c                      dS r  r/   r/   r   r   r  z@InterfaceTests.test___getitem___derived.<locals>.IDerived.method   r  r   c                      dS r  r/   r/   r   r   r  zAInterfaceTests.test___getitem___derived.<locals>.IDerived.method2  r  r   Nrj  r  s   r   r  r    r  r   r  ri  r  r  r  rk  rg  r  r  r  r  s
            @r   test___getitem___derivedz'InterfaceTests.test___getitem___derived  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 &!fi000&111333(#ff---(333)@AAA7#gy111)7333*5559%gv...)9555,77777r   c                 Z    ddl m}  G d d|          }|                     d|           d S )Nr   re  c                       e Zd ZdS )8InterfaceTests.test___contains__nonesuch.<locals>.IEmptyNr   r/   r   r   r  r    r   r   r  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|           |                     d|           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 ru  r/   r/   r   r   r  z>InterfaceTests.test___contains__simple.<locals>.ISimple.method)  r  r   Nr?  r  s   r   r\  r  &  rw  r   r\  ri  r  r   r  rf  r8  r_  s      @r   test___contains__simplez&InterfaceTests.test___contains__simple"  s    ,,,,,,,,,,,,	 	 	 	 	 	 	i 	 	 	 	fg&&&h(((((r   c                    ddl m ddl m}  G fdd|          } G fdd|          }|                     d|           |                     d	|           |                     d
|           |                     d|           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 ru  r/   r/   r   r   r  z=InterfaceTests.test___contains__derived.<locals>.IBase.method6  r  r   Nr?  r  s   r   r  r  3  rw  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )9InterfaceTests.test___contains__derived.<locals>.IDerivedrg  c                      dS r  r/   r/   r   r   r  z@InterfaceTests.test___contains__derived.<locals>.IDerived.method<  r  r   c                      dS r  r/   r/   r   r   r  zAInterfaceTests.test___contains__derived.<locals>.IDerived.method2?  r  r   Nrj  r  s   r   r  r  9  r  r   r  ri  r  rk  r  r  rm  s       @r   test___contains__derivedz'InterfaceTests.test___contains__derived/  s    ,,,,,,,,,,,,	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 	fh'''h)))gx(((i*****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   r  r  J  r   r   r  )r   rf  r$   rU   r  s      r   test___iter__emptyz!InterfaceTests.test___iter__emptyG  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 ru  r/   r/   r   r   r  z:InterfaceTests.test___iter__simple.<locals>.ISimple.methodV  r  r   Nr?  r  s   r   r\  r  S  rw  r   r\  ri  r  r   r  rf  r$   r"  rU   r_  s      @r   test___iter__simplez"InterfaceTests.test___iter__simpleO  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 ru  r/   r/   r   r   r  z9InterfaceTests.test___iter__derived.<locals>.IBase.methodb  r  r   Nr?  r  s   r   r  r  _  rw  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )5InterfaceTests.test___iter__derived.<locals>.IDerivedrg  c                      dS r  r/   r/   r   r   r  z<InterfaceTests.test___iter__derived.<locals>.IDerived.methodh  r  r   c                      dS r  r/   r/   r   r   r  z=InterfaceTests.test___iter__derived.<locals>.IDerived.method2k  r  r   Nrj  r  s   r   r  r  e  r  r   r  rl  r  rm  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.methodu  r  r   ro  N)r   r   r   r  optionalr/   r   r   ITagMer  t  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_valuesq  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   rt  z&validateInvariants should always raisec                 (    g | ]}|j         d          S )r   r   ).0errors     r   
<listcomp>z/InterfaceTests._errorsEqual.<locals>.<listcomp>  s    ---%
1---r   )
r   ru  r_   rq  failr$   r   ri  sortpop)
r&   has_invariant	error_len
error_msgsr,  ru  er  msgsmsgs
             r   _errorsEqualzInterfaceTests._errorsEqual  s+   555555'5#;]KKK	/$$]A666II>???? 	/ 	/ 	/UZ]A........	/ 	Q+++--1---		 	5 	5CS*.."3"34444	5 	5s   +A B!A==Bc                 H   ddl m ddl m} ddl m} ddl m  G fdd|          } G d d	          } |            } |||           |                     |                    d
          t          g           |                     |                    |          d            d|_	        |                     |                    |          d            d|_
        |                     |                    |          d            |`	|                     |ddg|           d S )Nr   r  re  r  r   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$   ra   r
  rq  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,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	 	 	 	 	 	 	 	 %
333 	22<@@'	* 	* 	*66}EEtLLL66}EEtLLL66}EEtLLL--@,A$	& 	& 	& 	& 	&r   c                 l   ddl m ddl m} ddl m} ddl m  G fdd|          } G fdd	|          } G d
 d          }|                     |                    d          t          g            |            } |||           d|_        | 	                    |ddg|           d|_        d|_
        | 	                    |ddg|           d|_        d|_
        | 	                    |dddg|           d|_        d|_
        |                     |                    |          d            d S )Nr   r  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    r   r   r  r!   r  ro  r  rg  %Please, Boo MUST be greater than Foo!)r   r  rf  r  r   r$   ra   r  re   r  r7   rq  )	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 	* 	* 	*	 	 	 	 	 	 	 	 	55lCC,-	/ 	/ 	/$666 	--@,A'	) 	) 	) -BC'	) 	) 	)
 -.BD'	) 	) 	)
 66}EEtLLLLLr   c                   	 ddl m ddl m} ddl m} ddl m	  G 	fdd|          } G d d	          } |            } |||           d
|_        |                    d          }|d d          }|                    t                     |	                    d|           | 
                    |ddg|           d|_        d|_        | 
                    |ddg|           d|_        d|_        | 
                    |dddg|           d|_        d|_        |                     |                    |          d            |	                    d|           d S )Nr   r  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"    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   re   ra   rT  r  rg   r  r7   r$   rq  )
r&   rf  r  r  r  r  old_invariantsr!   r  r   s
           @@r   test_invariant_mutandisz&InterfaceTests.test_invariant_mutandis  s   ,,,,,,,,,,,,333333,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	 	 	 	 	 	 	 	 %
333 $22<@@#AAA&
,---!!,
;;; 	--@,A$	& 	& 	& 45		
 	
 	
 -.BD$	& 	& 	&
 66}EEtLLL!!,?????r   c                 V   ddl m ddl m}  G d d|          }|                     |j        d           |                     t          |          g             G fdd|          }|                     |j        d	           |                     t          |          d
g           d S )Nr   r  re  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,  0  s#        Ei	**GGGr   r-  rQ   rS   r  )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 ddl m} ddl m} ddl m ddlm  G fdd|          } ||           G d	 d
                      }|                     |dd                     |                     |dd                     	 |                     |dd                     d S # $ r.}|                     t          |          d           Y d }~d S d }~ww xY w)Nr   r  re  r  r   rt  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)obru  s    r   range_invariantzJInterfaceTests.test_invariant_as_decorator.<locals>.IRange.range_invariantC  s'    6BF??!'+... #?r   N)r   r   r   r5  r4  r7  )r  ru  r   s   r   IRanger1  ?  sV        )M**C)M**C/ / / / Y/ / /r   r8  c                       e Zd Zd ZdS )9InterfaceTests.test_invariant_as_decorator.<locals>.Rangec                 $    ||c| _         | _        d S r   )r5  r4  )r&   r5  r4  s      r   r   zBInterfaceTests.test_invariant_as_decorator.<locals>.Range.__init__K  s    %(#"$(((r   Nr   r/   r   r   Ranger:  H  s#        . . . . .r   r<  ro  rg  r3  )
r   r  rf  r  r   r   ru  rq  r$   r9  )	r&   rf  r  r8  r<  r  r  ru  r   s	         @@@r   test_invariant_as_decoratorz*InterfaceTests.test_invariant_as_decorator8  s   ,,,,,,,,,,,,......,,,,,,555555	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/Y 	/ 	/ 	/ 
V			. 	. 	. 	. 	. 	. 	. 
		.
 	!!%%1++...!!%%1++...	2%%eeAqkk22222 	2 	2 	2SVV[111111111	2s   B2 2C%7#C  C%c                    ddl m ddl m} ddl m  G fdd|          } G fdd|          } G d	 d
|          }|                     |                    d          d           |                     t          |j        d           |                     t          |	                                          dg           |                     |                    d          d           |                     |                    d          d           |                     t          |	                                          ddh           d S )Nr   r  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   ITaggedr@  Z  sB        )E""C)HIICKv&&&&&r   rC  c                   @    e Zd Z  dd             dd           dS )1InterfaceTests.test_taggedValue.<locals>.IDerivedr>   	Spam Spamre   r7   Nr   r3   s   r   r  rE  _  s5        K{+++Ku%%%%%r   r  c                       e Zd ZdS )2InterfaceTests.test_taggedValue.<locals>.IDerived2Nr   r/   r   r   	IDerived2rH  c  r   r   rI  r>   rA  re   rF  r7   )r   r  rf  r4   r$   ra   r_   r`   rU   rV   set)r&   rf  rC  r  rI  r  r4   s        @@r   test_taggedValuezInterfaceTests.test_taggedValueU  s   ,,,,,,,,,,,,......	' 	' 	' 	' 	' 	' 	' 	'i 	' 	' 	'
	& 	& 	& 	& 	& 	& 	&w 	& 	& 	&	 	 	 	 	 	 	 	 	//66???(G$:EBBBg88::;;eWEEE11%88+FFF11%88%@@@Y99;;<<uenMMMMMr   c                    	 ddl m ddl m	  G 	fdd|          } G 	fdd|          } G 	fdd	|          } G 	fd
d||          } G d d||          } G d d||          }|S )Nr   r  r3   c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.FtagFNr   r   r   rO  rB  s   r   rP  rN  r  .        Ks###)C..CCCr   rP  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.ErO  ENrQ  rB  s   r   rU  rT  v  rR  r   rU  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.DrO  DNrQ  rB  s   r   rX  rW  z  rR  r   rX  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.CrO  CNrQ  rB  s   r   r[  rZ  ~  rR  r   r[  c                       e Zd ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.BNr   r/   r   r   Br]    r   r   r^  c                       e Zd ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.ANr   r/   r   r   Ar`    r   r   ra  )r   r  r4   )
r&   r&  rP  rU  rX  r[  r^  ra  r  r4   s
           @@r   _make_taggedValue_treez%InterfaceTests._make_taggedValue_treen  sm   ,,,,,,......	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	!1 	! 	! 	!	 	 	 	 	1 	 	 		 	 	 	 	1 	 	 	 r   c                 Z   ddl m} |                     t                    }|                     |j        j        d           |                     |          }|                     |d         j        d           |                     |                    d          d           |                     |                    d          d           |j	        d         j        dk    sJ |j	        d         
                    dd           |                     |                    d          d           d S )Nr   re  r[  rO  r^  )r   rf  rb  r   r$   rO  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  rO  ra  ro  r[  )r   rf  rb  r  ru   r$   rU   rf   r_   r`   rq   rg   rh  r   )r&   rf  ra  r[  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                 P   ddl m ddl m}  G fdd|          } G d d|          } G d d	|          }|                     |                    d
          |                    d
                     |f|_        |                     |                    d
                     d S )Nr   r  re  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  rk    s        	#AAAr   r  c                       e Zd ZdS )<InterfaceTests.test_description_cache_management.<locals>.I2Nr   r/   r   r   I2rm    r   r   rn  c                       e Zd ZdS )<InterfaceTests.test_description_cache_management.<locals>.I3Nr   r/   r   r   I3rp    r   r   rq  r   )r   r  rf  r  r  rh  r  )r&   rf  r  rn  rq  r  s        @r   !test_description_cache_managementz0InterfaceTests.test_description_cache_management  s    	-,,,,,,,,,,,	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	bffSkk266#;;///!|"&&++&&&&&r   c                     ddl m} ddl m}  G d d|          } ||           G d d                      }|                      | |                      d           d S )Nr   re  r  c                       e Zd ZdS )AInterfaceTests.test___call___defers_to___conform___.<locals>.IFooNr   r/   r   r   r  ru    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   r[  rw    s#            r   r[  )r   rf  r  r$   )r&   rf  r  r  r[  s        r   $test___call___defers_to___conform___z3InterfaceTests.test___call___defers_to___conform___  s    ,,,,,,......	 	 	 	 	9 	 	 	 
T			 	 	 	 	 	 	 
		 	aaccA&&&&&r   c                     ddl m} ddl m}  G d d|          } ||           G d d                      } |            }|                      ||          |           d S )Nr   re  r  c                       e Zd ZdS )<InterfaceTests.test___call___object_implements.<locals>.IFooNr   r/   r   r   r  r}    r   r   r  c                       e Zd ZdS )9InterfaceTests.test___call___object_implements.<locals>.CNr   r/   r   r   r[  r    r  r   r[  )r   rf  r  r  )r&   rf  r  r  r[  cs         r   test___call___object_implementsz.InterfaceTests.test___call___object_implements  s    ,,,,,,......	 	 	 	 	9 	 	 	 
T			 	 	 	 	 	 	 
		 ACCdd1ggq!!!!!r   c                     ddl m}  G d d|          } G d d          } |            }|                     t          ||           d S )Nr   re  c                       e Zd ZdS )<InterfaceTests.test___call___miss_wo_alternate.<locals>.IFooNr   r/   r   r   r  r    r   r   r  c                       e Zd ZdS )9InterfaceTests.test___call___miss_wo_alternate.<locals>.CNr   r/   r   r   r[  r    r   r   r[  )r   rf  r_   r  r&   rf  r  r[  r  s        r   test___call___miss_wo_alternatez.InterfaceTests.test___call___miss_wo_alternate  s    ,,,,,,	 	 	 	 	9 	 	 		 	 	 	 	 	 	 	 ACC)T1-----r   c                     ddl m}  G d d|          } G d d          } |            }|                      |||           |            d S )Nr   re  c                       e Zd ZdS );InterfaceTests.test___call___miss_w_alternate.<locals>.IFooNr   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   r[  r    r   r   r[  )r   rf  r  r  s        r   test___call___miss_w_alternatez-InterfaceTests.test___call___miss_w_alternate  s    ,,,,,,	 	 	 	 	9 	 	 		 	 	 	 	 	 	 	 ACCdd1dmmT*****r   c                     ddl m} ddlm} d } fd} G d d|          } G d d	          } |            }|d d          }||g|d d <   	                       ||                      ||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>._miss	  s    Dr   c                     S r   r/   )r,  r   r&   s     r   _hitz9InterfaceTests.test___call___w_adapter_hook.<locals>._hit	  s    Kr   c                       e Zd ZdS )9InterfaceTests.test___call___w_adapter_hook.<locals>.IFooNr   r/   r   r   r  r  	  r   r   r  c                       e Zd ZdS )6InterfaceTests.test___call___w_adapter_hook.<locals>.CNr   r/   r   r   r[  r  	  r   r   r[  )r   rf  r#   r[  r  )	r&   rf  r[  r  r  r  r[  r  old_adapter_hookss	   `        r   test___call___w_adapter_hookz+InterfaceTests.test___call___w_adapter_hook  s   ,,,,,,::::::	 	 		 	 	 	 		 	 	 	 	9 	 	 		 	 	 	 	 	 	 	 ACC)!!!,!4=aaa	1MM$$q''4(((0M!!!0M!!!0000s   A7 7	B c                 ,   ddl m} ddl m} ddl m  G fdd|          } ||           G d d                      }|                     d	 |t                                           |                     d	 | |                                 d S )
Nr   re  r  interfacemethodc                   &    e Zd Z d             ZdS )=InterfaceTests.test___call___w_overridden_adapt.<locals>.IFooc                     dS Nr  r/   r&   r   s     r   rO  zGInterfaceTests.test___call___w_overridden_adapt.<locals>.IFoo.__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>.ObjNr   r/   r   r   Objr  "	  r  r   r  r  )r   rf  r  r  r$   r   )r&   rf  r  r  r  r  s        @r    test___call___w_overridden_adaptz/InterfaceTests.test___call___w_overridden_adapt	  s    ,,,,,,......222222	 	 	 	 	 	 	9 	 	 	 
T			 	 	 	 	 	 	 
		 	TT&((^^,,, 	TT##%%[[)))))r   c                    ddl m} ddl m} ddl m  G fdd|          } G d d|          } ||           G d	 d
                      } ||           G d d                      }|                     d |t                                           |                     d | |                                 |                     d | |                                 |                     t                    5   | |                       d d d            n# 1 swxY w Y   |                     d | |                                 d S )Nr   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__3	  r  r   Nr  r  s   r   IAdaptr  2	  .          _  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   r\  r  7	  s        """"r   r\  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__A	  r   r   Nr/  r/   r   r   ConformNoner  ?	  s#            r   r  r  r  )r   rf  r  r  r$   r   r_   r  )r&   rf  r  r  r\  r  r  r  s          @r   ,test___call___w_overridden_adapt_and_conformz;InterfaceTests.test___call___w_overridden_adapt_and_conform+	  s6    	-,,,,,......222222	 	 	 	 	 	 	Y 	 	 	
	# 	# 	# 	# 	#i 	# 	# 	# 
V			 	 	 	 	 	 	 
		 
V			 	 	 	 	 	 	 
		 	VVFHH--...WWYY[[11222VVIIKK00111y)) 	# 	#GKKMM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	VVKKMM2233333s   D!!D%(D%c                 8   dd l }ddlm} ddlm} ddlm  G fdd|          } ||           G d d                      }|                     d	 |t                                            |            }|                     | ||                     d S )
Nr   re  r  r  c                   0     e Zd Z fd            Z xZS )HInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.IFooc                 t    |                      |          sdS t                                          |          S r  )r   superrO  )r&   r   r  s     r   rO  zRInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.IFoo.__adapt__W	  s4    s++ 2ww((---r   )r   r   r   rO  __classcell__)r  r  s   @r   r  r  U	  sC        . . . . _. . . . .r   r  c                       e Zd ZdS )GInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.ObjNr   r/   r   r   r  r  ]	  r  r   r  r  )sysr   rf  r  r  r$   r   r  )r&   r  rf  r  r  r  r   r  s          @r   +test___call___w_overridden_adapt_call_superz:InterfaceTests.test___call___w_overridden_adapt_call_superN	  s   


,,,,,,......222222	. 	. 	. 	. 	. 	. 	.9 	. 	. 	. 
T			 	 	 	 	 	 	 
		 	TT&((^^,,,ceec4499%%%%%r   c                     ddl m} ddl m  G fdd|          }|                     d |t	                                           |                     |d                                         d           d S )	Nr   re  r  c                   ,    e Zd Z d             Zd ZdS )HInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFooc                     dS r  r/   r  s     r   rO  zRInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFoo.__adapt__j	  r  r   c                     dS )zThis is a protocolNr/   )to_adapts    r   rO  zRInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFoo.__adapt__n	  r  r   Nr  r  s   r   r  r  i	  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_implementatione	  s    ,,,,,,222222	% 	% 	% 	% 	% 	% 	%9 	% 	% 	% 	TT&((^^,,,k*==??NNNNNr   c                   	 ddl m} ddl m	  G d d|          } G 	fdd|          } G d d	|          } G d
 d|          } G d d|||          } G 	fdd|          }|                     d |t	                                           |||||fD ]"}|                     t
          |j                   #|||fD ]2}|                     t          |          t          |                     3|                     t          |          t          |                     |                     t          |          t          |                     | 	                    |t          |                     |                     d |t	                                           |                     t          |          t          |                     | 	                    |t          |                     d S )Nr   re  r  c                       e Zd ZdZdS )@InterfaceTests.test___adapt__inheritance_and_type.<locals>.IRootRootNr  r/   r   r   IRootr  x	  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  r  r  )
r&   rf  r  r  r  r  r  r  r,  r  s
            @r   "test___adapt__inheritance_and_typez1InterfaceTests.test___adapt__inheritance_and_typet	  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 )<InterfaceTests.test_interfacemethod_is_general.<locals>.IFooc                     dS )zReplace an existing methodr  r/   r  s     r   r  zEInterfaceTests.test_interfacemethod_is_general.<locals>.IFoo.__call__	  s	     rr   c                     dS r  r/   r   s    r   this_is_newzHInterfaceTests.test_interfacemethod_is_general.<locals>.IFoo.this_is_new	  r  r   N)r   r   r   r  r  r  s   r   r  r  	  sI          _   _  r   r  r  )r   rf  r  r$   r  r  s      @r   test_interfacemethod_is_generalz.InterfaceTests.test_interfacemethod_is_general	  s    ,,,,,,222222		 		 		 		 		 		 		9 		 		 		 	dR((())++R00000r   N)7r   r   r   r  r  r  r  r  r  r2  r9  rI  rR  rW  r`  rn  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r.  r=  rK  rb  rf  rh  rr  rz  r  r  r  r  r  r  r  r  r  r  r/   r   r   r  r     sW       0 0 02 2 2 6  6  6D8 8 865 5 5:0 0 0B)1 )1 )1V= = ="8 8 8(: : :,; ; ;
F 
F 
FA A A0A A A.6B 6B 6BpJ J J6 6 6*&8 &8 &8PD D D6 6 6*&8 &8 &8P- - -) ) )+ + +0+ + +
D 
D 
DA A A,	? 	? 	?4 4 4	= 	= 	=5 5 5 & & &<-M -M -M^7@ 7@ 7@rD D D$2 2 2:N N N2  8= = =*F F F,' ' '*' ' '" " "
. 
. 
.
+ 
+ 
+1 1 12* * *(!4 !4 !4F& & &.O O O*C *C *CX1 1 1 1 1r   r  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )AttributeTestsTestAttributec                     ddl m} |S )Nr   r  )r#   r  )r&   r  s     r   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LLHII1	
 	
 	
 	JJsX~(HHII1	
 	
 	
 	
 	
r   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_interface	  sk    LLLLHII1	
 	
 	
 	

#455q99999r   c                     |                                  }t          |           |_        t          |          }|                     |t
          dz              d S )Nz.AttributeTests.TestAttribute)rO   r  r   r9  r$   r   r  s      r   test__str__w_interfacez%AttributeTests.test__str__w_interface	  sJ    ::KKH'FFGGGGGr   c                 x    |                                  }t          |          }|                     |d           d S )Nr  )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  	  sg        "L  	
 	
 	
: : :H H H- - - - -r   r  c                   `    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )MethodTests
TestMethodc                     ddl m} |S )Nr   rp  )r#   rq  )r&   rq  s     r   rK   zMethodTests._getTargetClass	  s    333333r   c                     |                                  }|                     |j        i            ddi|_        |                     |j        ddi           |`|                     |j        i            d S rd   )rO   r$   r  r&   r  s     r   test_optional_as_propertyz%MethodTests.test_optional_as_property	  sq    "--- %.5%.999O"-----r   c                    ddl m} |                                 }	  |             |                     d           d S # |$ rF}|                     |j        d            |                     |j        | j                   Y d }~d S d }~ww xY w)Nr   )BrokenImplementationz*__call__ should raise BrokenImplementation)r   r  rO   r  r$   r   rN   rM   )r&   r  r  r  s       r   )test___call___raises_BrokenImplementationz5MethodTests.test___call___raises_BrokenImplementation	  s    BBBBBB	DFHHH
 IIBCCCCC	 $ 	8 	8 	8Q[$///QVT%6777777777	8s   
= B;BBc                    |                                  }|                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d         d            d S )N
positionalrequiredr  varargskwargs)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_bare	  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_required
  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_optional
  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_varargs
  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LLEFF	
 	
 	
 	JJsX~(HHII1	
 	
 	
 	
 	
r   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#
  sr    LLLLEFF	
 	
 	
 	

#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_interface3
  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   	  s        L  . . .	D 	D 	D/ / /< < <? ? ?
E E EA A A
@ @ @


 

 

= = =H H H0 0 0 0 0r   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )Test_fromFunctionc                     ddl m}  ||i |S )Nr   r  )r#   r  )r&   r   r   r  s       r   _callFUTzTest_fromFunction._callFUT<
  s)    999999|T(R(((r   c                    d }|                      |          }|                     |                                d           |                     |                                d           |                     |j        d            |                     t          |                                          g            |                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d         d            d S )	Nc                      dS r  r/   r/   r   r   _funcz*Test_fromFunction.test_bare.<locals>._funcB
  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@
  sQ   	 	 	 u%%))7333+666)4000f7799::B???&&((d<0112666d:.//444j)2...i$///h.....r   c                     ddl m}  G d d|          }d }|                     ||          }|                     |j        |           d S )Nr   r  c                       e Zd ZdS )0Test_fromFunction.test_w_interface.<locals>.IFooNr   r/   r   r   r  r,  T
  r   r   r  c                      dS r  r/   r/   r   r   r&  z1Test_fromFunction.test_w_interface.<locals>._funcW
  r  r   r   )r#   r  r#  r$   r   )r&   r  r  r&  r  s        r   test_w_interfacez"Test_fromFunction.test_w_interfaceQ
  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]
  sN    	 	 	 u=99))=99999r   c                    d }|                      |          }|                                }|                     t          |d                   dg           |                     t          |d                   dg           |                     |d         i            |                     |d         d            |                     |d         d            d S )Nc                     dS r  r/   re   s    r   r&  z5Test_fromFunction.test_w_only_required.<locals>._funcg
  r  r   r
  re   r  r  r  r  r#  r  r$   rU   r(  s       r   test_w_only_requiredz&Test_fromFunction.test_w_only_requirede
  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/   r5  s    r   r&  z0Test_fromFunction.test_w_optional.<locals>._funct
  r  r   r
  re   r  r  r  r  r7   r6  r(  s       r   test_w_optionalz!Test_fromFunction.test_w_optionalr
  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  r:  r6  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  r6  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   r6  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   r6  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.  r2  r7  r;  r?  rB  rE  rI  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#   rM  )r&   r   r   rM  s       r   r#  zTest_fromMethod._callFUT
  s)    777777z4&2&&&r   c                     G d d          }|                      |j                  }|                     |                                d           |                     |                                d           |                     |j        d            |                     t          |                                          g            |                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d	         d            d S )
Nc                       e Zd Zd ZdS ))Test_fromMethod.test_no_args.<locals>.Fooc                     dS r  r/   r   s    r   r7   z-Test_fromMethod.test_no_args.<locals>.Foo.bar
  r  r   Nr  r/   r   r   r    rP  
  rL  r   r    r7   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
  sl   	 	 	 	 	 	 	 	 sw''))5111+666)4000f7799::B???&&((d<0112666d:.//444j)2...i$///h.....r   c                     G d d          }|                      |j                  }|                                }|                     t	          |d                   ddg           |                     t	          |d                   dg           |                     |d         ddi           |                     |d	         d
           |                     |d         d           d S )Nc                       e Zd Z	 ddZdS )/Test_fromMethod.test_full_spectrum.<locals>.Foor8   c                     dS r  r/   )r&   re   r7   r   r   s        r   r7   z3Test_fromMethod.test_full_spectrum.<locals>.Foo.bar
  r  r   NrH  r  r/   r   r   r    rV  
  s+        $     r   r    r
  re   r7   r  r  r8   r  r   r  r   )r#  r7   r  r$   rU   rR  s       r   rI  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
  sQ   	 	 	 s##))5111+666)4000f7799::B???&&((d<0112666d:.//444j)2...i$///h.....r   N)r   r   r   r#  rS  rI  rZ  r/   r   r   rK  rK  
  sP        ' ' '/ / /$/ / / / / / / /r   rK  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.changed
  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   rt  re   r7   r  )r   ru  r%   
isinstancer  )r   ru  re   r7   s       r   r  r     s}    111111
#ud
#
#C
#ud
#
#C
:c49955
 Syy'ABBB 
 yr   c                 p    ddl m} t          | dd           rt          | dd           s |d          d S d S )Nr   rt  re   r7   r  )r   ru  r%   )r   ru  s     r   r
  r
    s`    111111sE4   +eT)B)B +g)***+ + + +r   c                        e Zd Zd Zd Zd ZdS )r   c                     | _         fd|D             | _        |                                D ]\  }}t          ||           d S )Nc                 2    i | ]}|t          |          S r/   )r%   )r  keyr'  s     r   
<dictcomp>z$_Monkey.__init__.<locals>.<dictcomp>  s%    CCC3 4 4CCCr   )r'  
to_restoreitemssetattr)r&   r'  r   re  r  s    `   r   r   z_Monkey.__init__  s_    CCCCCCC((** 	( 	(JCFC''''	( 	(r   c                     | S r   r/   r   s    r   	__enter__z_Monkey.__enter__  s    r   c                 p    | j                                         D ]\  }}t          | j        ||           d S r   )rg  rh  ri  r'  )r&   exc_typeexc_valexc_tbre  r  s         r   __exit__z_Monkey.__exit__  sD    ///11 	- 	-JCDKe,,,,	- 	-r   N)r   r   r   r   rk  rp  r/   r   r   r   r     sA        ( ( (  - - - - -r   r   c                       e Zd ZdZd Zd ZdS )TestTypeAnnotationsz*Test using Interfaces in type annotations.c                     ddl m} ddl m} ddlm}  G d d|           G d d|           G fd	d
          }|                     |j        |         |f         d           d S )Nr   OptionalUnionre  c                       e Zd ZdS )+TestTypeAnnotations.test___or__.<locals>.I1Nr   r/   r   r   r  ry  ,  r   r   r  c                       e Zd ZdS )+TestTypeAnnotations.test___or__.<locals>.I2Nr   r/   r   r   rn  r{  /  r   r   rn  c                   2    e Zd ZU  dz  ed<    z  ed<   dS )*TestTypeAnnotations.test___or__.<locals>.BNr   r   r   r   r   r  )r  rn  s   r   r^  r}  2  s+         DyLLLBwJJJJJr   r^  r  typingru  rw  r   rf  r$   r  )r&   ru  rw  rf  r^  r  rn  s        @@r   test___or__zTestTypeAnnotations.test___or__&  s
   ######      ,,,,,,	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	Xb\b"fFF	H 	H 	H 	H 	Hr   c                     ddl m} ddl m} ddlm}  G d d|           G d d           G fd	d
          }|                     |j        |         |f         d           d S )Nr   rt  rv  re  c                       e Zd ZdS ),TestTypeAnnotations.test___ror__.<locals>.I1Nr   r/   r   r   r  r  ?  r   r   r  c                       e Zd ZdS )+TestTypeAnnotations.test___ror__.<locals>.ANr   r/   r   r   ra  r  B  r   r   ra  c                   2    e Zd ZU dz  ed<    z  ed<   dS )+TestTypeAnnotations.test___ror__.<locals>.BNr   r   r~  )ra  r  s   r   r^  r  E  s+         byLLL2vIIIIIr   r^  r  r  )r&   ru  rw  rf  r^  ra  r  s        @@r   test___ror__z TestTypeAnnotations.test___ror__9  s   ######      ,,,,,,	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	Xb\aeEE	G 	G 	G 	G 	Gr   N)r   r   r   rS   r  r  r/   r   r   rr  rr  #  s@        44H H H&G G G G Gr   rr  )%rS   unittestr#   zopezope.interface.testsr   r   r   r   r   rb  r   r  r   TestCaser	   r1   rG   r   r   r   r   r  rA  rF  r^  r  r  r  r   r!  rK  rp  r  r
  r   rr  r/   r   r   <module>r     s   $      ( ( ( ( ( ( 1 1 1 1 1 1 6 6 6 6 6 6 2 2 2 2 2 2 &((		!	0	0	:	:C C C C CX& C C CB!9 !9 !9 !9 !9x( !9 !9 !9HG( G( G( G( G(8$ G( G( G(T9 9 9 9 9H$5 9 9 9D	! 	! 	! 	! 	!!	! 	! 	!15 15 15 15 15< 15 15 15hh5 h5 h5 h5 h5 h5 h5 h5V1
 1
 1
 1
 1
? 1
 1
 1
h	 	 	 	 			 	 	"7 "7 "7 "7 "72H4E "7 "7 "7Jf
 f
 f
 f
 f
* f
 f
 f
RF
1 F
1 F
1 F
1 F
1(+ F
1 F
1 F
1RP1 P1 P1 P1 P1X& P1 P1 P1f$$- $- $- $- $-\ $- $- $-N]0 ]0 ]0 ]0 ]0. ]0 ]0 ]0@@/ @/ @/ @/ @/) @/ @/ @/F7/ 7/ 7/ 7/ 7/h' 7/ 7/ 7/t1 1 1 1 1 1 1 1
C 
C 
C+ + +- - - - - - - - 'G 'G 'G 'G 'G(+ 'G 'G 'G 'G 'Gr   