
    /Jfh                       d Z ddlZddlmZ ddlmZ ddlmZ  e            Z G d dej                  Z	 G d d	ej                  Z
 G d
 dej                  Z G d dej                  Z G d dee          Z G d de          Z G d de          Z G d de          Z G d deeej                  Z G d deej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d  d!e          Z G d" d#e          Z G d$ d%ej                  Z G d& d'ej                  Z G d( d)          Zd* Zd+ Z G d, d-          Z G d. d/ej                  ZdS )0zTest Interface implementation
    N)CleanUp)MissingSomeAttrs)OptimizationTestMixinc                       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     f/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/zope/interface/tests/test_interface.py_checkz,Test_invariant.test_w_single.<locals>._check(       %'''    c                   &    e Zd Z             dS ))Test_invariant.test_w_single.<locals>.FooN__name__
__module____qualname__)r   r   s   r   Foor   +   s!        Ifr   r   
invariantszope.interface.interfacer
   r   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>._check5   r   r   c                      t                      r   r   r   s     r   _another_checkz6Test_invariant.test_w_multiple.<locals>._another_check8   r   r   c                   <    e Zd Z                         dS )+Test_invariant.test_w_multiple.<locals>.FooNr   )r)   r   r   s   r   r   r+   ;   s1        IfIn%%%%%r   r   r   r    )r$   r
   r   r)   r   r   s      @@@r   test_w_multiplezTest_invariant.test_w_multiple1   s    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   r1   s   r   r   r4   I   s%        Kw'''''r   r   r5   r6   r!   r
   r2   r"   r#   r$   r
   r   r2   s      @r   r%   zTest_taggedValue.test_w_singleE   s    888888888888	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	k488%)	+ 	+ 	+ 	+ 	+r   c                     ddl m} ddl m  G fdd          }|                     t	          ||d           dgdd           d S )	Nr   r	   r1   c                   B    e Zd Z  ddg             dd           dS )-Test_taggedValue.test_w_multiple.<locals>.Foor5   r6   quxspamNr   r1   s   r   r   r;   S   s7        Kw'''Kv&&&&&r   r   r6   r=   r5   r<   r7   r8   s      @r   r,   z Test_taggedValue.test_w_multipleO   s    888888888888	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	k488"'88	: 	: 	: 	: 	:r   c                     ddl m} ddl m  G fdd          }|                     t	          ||d           ddd           d S )	Nr   r	   r1   c                   Z    e Zd Z  ddg             dd             dd           dS )9Test_taggedValue.test_w_multiple_overwriting.<locals>.Foor5   r6   r<   r=   frobNr   r1   s   r   r   rA   ^   sI        Kw'''Kv&&&Kv&&&&&r   r   rB   r=   r>   r7   r8   s      @r   test_w_multiple_overwritingz,Test_taggedValue.test_w_multiple_overwritingZ   s    888888888888	' 	' 	' 	' 	' 	' 	' 	' 	' 	'
 	k488!'77	9 	9 	9 	9 	9r   N)r   r   r   r%   r,   rC   r-   r   r   r/   r/   C   sA        + + +	: 	: 	:
9 
9 
9 
9 
9r   r/   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!   rH   )r$   rH   s     r   _getTargetClasszElementTests._getTargetClassk   s    444444r   Nc                 N    || j         } |                                 |          S r   )DEFAULT_NAMErI   )r$   names     r   _makeOnezElementTests._makeOneo   s+    <$D%t##%%d+++r   c                    |                                  }|                     |j        | j                   |                     |                                | j                   |                     |j        d           |                     |                                d           |                     t          |                                          g            d S )N )	rM   r"   r   rK   getName__doc__getDoclistgetTaggedValueTagsr$   elements     r   test_ctor_defaultszElementTests.test_ctor_defaultst   s    --//)4+<===**D,=>>>"---))2...g88::;;R@@@@@r   c                     |                      d          }|                     |j        d            |                     |j        d           d S )Nz
An Element)rM   r"   r   rQ   rU   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)rM   assertRaisesKeyErrorgetTaggedValuerU   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foor5   )rM   r"   rS   getDirectTaggedValueTagssetTaggedValuerU   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[   rM   r"   queryTaggedValuerU   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\   r5   rh   rU   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[   )rM   r]   r^   getDirectTaggedValuerU   s     r   test_getDirectTaggedValue_missz+ElementTests.test_getDirectTaggedValue_miss   s0    --//(G$@*MMMMMr   c                     |                                  }|                     |                    d          d            d S r[   rM   r"   queryDirectTaggedValuerU   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 rl   rr   rU   s     r   *test_queryDirectTaggedValue_miss_w_defaultz7ElementTests.test_queryDirectTaggedValue_miss_w_default   s;    --//77
EJJERRRRRr   c                 j   |                                  }|                    dd           |                     t          |                                          dg           |                     |                    d          d           |                     |                    d          d           d S rb   )rM   re   r"   rS   rT   r_   ri   rU   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.interfacesrz   zope.interface.verifyr|   rM   )r$   rz   r|   rV   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   rK   rI   rM   rW   rY   r`   rf   rj   rm   rp   rt   rv   rx   r   r-   r   r   rE   rE   g   s        L  , , , ,
A A A8 8 8
H H HL L LE E EM M MN N NK K KS S SA A A( ( ( ( (r   rE   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   rI   r$   s    r   rM   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   rM   _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   rM   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   rI   rM   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   rI   z&SpecificationBaseTests._getTargetClass   s    >>>>>>  r   Nr   r   r   rI   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   rM   _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   rM   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              ByHHHr   r   c                                  S r   r-   r   r   s    r   r   zGSpecificationBasePyTests.test_implementedBy_hit.<locals>._implementedBy       577Nr   r   )r   r   rM   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   rM   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)rM   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$   rL   excRaisesErrorOnMissings      r   r   zrNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissing.__getattribute__  sN    $!224>>>% $ $ $.2C#d))O$s    ;N)r   r   r   r   r   r   )r   s   r   r   r     s3         C$ $ $ $ $ $ $r   r   c                   *    e Zd Zd Zed             ZdS )`NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModulec                     d| _         d S Nrc   )r   r   s    r   __init__ziNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__init__  s     %r   c                     t           r   )r   r   s    r   r   zkNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__module__   s    $$r   N)r   r   r   r   propertyr-   r   r   RaisesErrorOnModuler     s<        & & &% % X% % %r   r   c                       e Zd Zd ZdS )^NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnNamec                     d| _         d S r   r   r   s    r   r   zgNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnName.__init__%  s    "'r   Nr   r   r   r   r-   r   r   RaisesErrorOnNamer   $  s#        ( ( ( ( (r   r   rc   r   r   c                   (    e Zd Zd ZeZeZeZeZeZdS )`NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparisonc                     dS NTr-   )r$   others     r   __eq__zgNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparison.__eq__6      tr   N	r   r   r   r   __lt____le____gt____ge____ne__r-   r   r   AllowsAnyComparisonr   5  s6          FFFFFFFr   r   c                   &    e Zd ZdZeZeZeZeZeZdS )_NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsNoComparisonNr   r-   r   r   AllowsNoComparisonr   B  s,        FFFFFFFFr   r   c                       e Zd ZdS )XNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.MyExceptionNr   r-   r   r   MyExceptionr   O          Dr   r   )operatorr   r#   r"   r   r   r]   r   assertIsNotImplementedr   	TypeError	Exceptionr   )r$   rL   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__NotImplementedb  r  r   c                 0    |                      d           d S )Ngtr
  r   s    r   test__gt__NotImplementedz:NameAndModuleComparisonTestsMixin.test__gt__NotImplementede  r  r   c                 0    |                      d           d S )Nger
  r   s    r   test__ge__NotImplementedz:NameAndModuleComparisonTestsMixin.test__ge__NotImplementedh  r  r   N)	r   r   r   r   r  r  r  r  r  r-   r   r   r   r     sr        ' ' 'U U Un5 5 55 5 55 5 55 5 5 5 5r   r   c                   :    e Zd Zd Zd Zd
dZd Zd Zd Zd	 Z	dS )InterfaceBaseTestsMixinc                     t           r   r   r   s    r   rI   z'InterfaceBaseTestsMixin._getTargetClasso  s    !!r   c                     ddl m} |S )Nr   )InterfaceBasePy)r!   r  )r$   r  s     r   r   z)InterfaceBaseTestsMixin._getFallbackClassr  s    <<<<<<r   FNc                 `     G fdd|                                            } |||          S )Nc                        e Zd Zd Z fdZdS ),InterfaceBaseTestsMixin._makeOne.<locals>.IBc                      ||           S r   r-   )r$   conforms     r   _call_conformz:InterfaceBaseTestsMixin._makeOne.<locals>.IB._call_conformy  s    wt}}$r   c                     S r   r-   )r$   r   object_should_provides     r   r   z7InterfaceBaseTestsMixin._makeOne.<locals>.IB.providedBy{  s	    ,,r   N)r   r   r   r!  r   )r#  s   r   IBr  x  s=        % % %- - - - - - -r   r$  r   )r$   r#  rL   moduler$  s    `   r   rM   z InterfaceBaseTestsMixin._makeOnew  sW    	- 	- 	- 	- 	- 	- 	-%%'' 	- 	- 	-
 r$r   c                     |                      d          }t                       G fdd          }|                      | |                                 d S )NFc                       e Zd Z fdZdS )UInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adaptedc                     S r   r-   )r$   iface	conformeds     r   __conform__zaInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adapted.__conform__  s	      r   Nr   r   r   r,  )r+  s   r   _Adaptedr(    s.        ! ! ! ! ! ! !r   r.  )rM   r   r   )r$   r  r.  r+  s      @r   +test___call___w___conform___returning_valuezCInterfaceBaseTestsMixin.test___call___w___conform___returning_value  sy    ]]5!!HH		! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	bbnni00000r   c                     |                      d          }||                                 f}t                      }t                      }|                      |||          |           d S )NF)rM   rI   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)rM   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_raisesrM   r   s    r   6test___call___w_no_conform_catches_only_AttributeErrorzNInterfaceBaseTestsMixin.test___call___w_no_conform_catches_only_AttributeError  s(    $T4==??][[[[[[r   )FNN)
r   r   r   rI   r   rM   r/  r4  r9  r=  r-   r   r   r  r  l  s        " " "  
       1 1 19 9 9= = =\ \ \ \ \r   r  c                       e Zd Zd ZdS )InterfaceBaseTestsc                     ddl m} |S )Nr   )InterfaceBase)r!   rA  )r$   rA  s     r   rI   z"InterfaceBaseTests._getTargetClass      ::::::r   Nr   r-   r   r   r?  r?    s#            r   r?  c                   .    e Zd Zej        Zd Zd Zd ZdS )InterfaceBasePyTestsc                     |                      d          } G d d          } |            }|                      ||          |           d S )NTc                       e Zd Zd ZdS )SInterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adaptedc                     d S r   r-   r$   r*  s     r   r,  z_InterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adapted.__conform__  r   r   Nr-  r-   r   r   r.  rG    #            r   r.  )rM   r   )r$   r  r.  r2  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   )rM   r   r   	__adapt__)r$   r  r2  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   rM   r   r   r   rM  r"   )r$   r   r  r2  rT  rW  rS  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   rI   rK  rN  rZ  r-   r   r   rD  rD    sK         .?O, , ,6 6 6
7 7 7 7 7r   rD  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   rI   z"SpecificationTests._getTargetClass  rB  r   c                     |t           u r |                                             S  |                                 |          S r   )_markerrI   )r$   basess     r   rM   zSpecificationTests._makeOne  sC    G)4''))+++%t##%%e,,,r   c                    ddl m} |                                 }|                     |j        d           |                     t          |j                  d           |                     ||j        v            |                     ||j        v            |                     t          |j                  d           d S )Nr   	Interfacer-      )	r!   rd  rM   r"   	__bases__lenr   r   
dependents)r$   rd  specs      r   	test_ctorzSpecificationTests.test_ctor  s    666666}},,,T]++Q///-...	T]2333T_--q11111r   c                    |                                  }t                      }|                    |           |                     t	          |j                  d           |                     |j        |         d           d S N   )rM   DummyDependent	subscriber"   rg  rh  r$   ri  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 )Nre  )rM   rn  ro  r"   rh  rp  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   )rM   rn  r]   r^   unsubscriberp  s      r   test_unsubscribe_missz(SpecificationTests.test_unsubscribe_miss  s;    }}(D$4c:::::r   c                 l   |                                  }t                      }|                    |           |                    |           |                    |           |                     |j        |         d           |                    |           |                     ||j        v            d S rl  )rM   rn  ro  rv  r"   rh  r   rp  s      r   test_unsubscribez#SpecificationTests.test_unsubscribe  s    }}ss-q111/00000r   c                    ddl m} |                                 }t                      }|                    |            G d d|          } G d d|          }|f|_        |                     |j        |g           |                     |j        |         d           |f|_        |                     |j        	                    |          d            |                     |j        |         d           d S )Nr   rc  c                       e Zd ZdS )VSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.INr   r-   r   r   Ir|    r   r   r}  c                       e Zd ZdS )VSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.JNr   r-   r   r   Jr    r   r   r  rm  )
r!   rd  rM   rn  ro  rf  r"   _changedrh  get)r$   rd  ri  rq  r}  r  s         r   8test___setBases_subscribes_bases_and_notifies_dependentszKSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents  s$   666666}}s	 	 	 	 		 	 	 		 	 	 	 		 	 	 	v...d+Q///))$//666d+Q/////r   c                    ddl m}  G d d|          }|                                 }d|_        d|j        |<   |                    |           |                     |j                   |                     ||j        v            d S )Nr   rc  c                       e Zd ZdS )GSpecificationTests.test_changed_clears_volatiles_and_implied.<locals>.INr   r-   r   r   r}  r    r   r   r}  r   r-   )r!   rd  rM   _v_attrsr   changedassertIsNoner   )r$   rd  r}  ri  s       r   )test_changed_clears_volatiles_and_impliedz<SpecificationTests.test_changed_clears_volatiles_and_implied  s    666666	 	 	 	 		 	 	 	}}aT$-(((dm+,,,,,r   c                     ddl m}  G d d|          }|                     ||g          }|                     t	          |                                          |g           d S )Nr   rc  c                       e Zd ZdS )CSpecificationTests.test_interfaces_skips_already_seen.<locals>.IFooNr   r-   r   r   IFoor    r   r   r  )r!   rd  rM   r"   rS   
interfacesr$   rd  r  ri  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   rc  c                       e Zd ZdS )<SpecificationTests.test_extends_strict_wo_self.<locals>.IFooNr   r-   r   r   r  r    r   r   r  Tstrict)r!   rd  rM   r   extendsr  s       r   test_extends_strict_wo_selfz.SpecificationTests.test_extends_strict_wo_self  sy    666666	 	 	 	 	9 	 	 	}}T""d48899999r   c                     |                                  }|                     |                    |d                     d S )NTr  )rM   r   r  r$   ri  s     r   test_extends_strict_w_selfz-SpecificationTests.test_extends_strict_w_self  s9    }}d48899999r   c                     |                                  }|                     |                    |d                     d S )NFr  )rM   r   r  r  s     r   test_extends_non_strict_w_selfz1SpecificationTests.test_extends_non_strict_w_self  s7    }}T%8899999r   c                     |                                  }t                      }d|i|_        |                     |                    d          |u            d S r   )rM   r   r  r   r  )r$   ri  rc   s      r   test_get_hit_w__v_attrsz*SpecificationTests.test_get_hit_w__v_attrs#  sJ    }}hh3./////r   c                    ddl m ddl m}  G fdd|          } G fdd|          }|                     ||g          }|                     |                    d          |                    d          u            |                     |                    d	          |                    d	          u            d S )
Nr   	Attributerc  c                   &    e Zd Z  d          ZdS )CSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IFoorc   N)r   r   r   rc   r  s   r   r  r  ,          )E""CCCr   r  c                   &    e Zd Z  d          ZdS )CSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IBarr5   Nr   r   r   r5   r  s   r   IBarr  .  r  r   r  rc   r5   )r!   r  rd  rM   r   r  )r$   rd  r  r  ri  r  s        @r   "test_get_hit_from_base_wo__v_attrsz5SpecificationTests.test_get_hit_from_base_wo__v_attrs)  s    666666666666	# 	# 	# 	# 	# 	# 	#9 	# 	# 	#	# 	# 	# 	# 	# 	# 	#9 	# 	# 	#}}dD\**488E??:;;;488E??:;;;;;r   c           
         ddl m} ddl m} ddlm}  G d d|          } G d d          } G d	 d
|          } G d d|          } ||           G d d                      } G d d||          }	|                      ||	          j         ||	           ||          | ||           |t                    |f           d S )Nr   r   implementerrc  c                       e Zd ZdS )TSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IDefaultViewNameNr   r-   r   r   IDefaultViewNamer  >  r   r   r  c                       e Zd ZdS )KSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ContextNr   r-   r   r   Contextr  A  r   r   r  c                       e Zd ZdS )LSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.RDBModelNr   r-   r   r   RDBModelr  D  r   r   r  c                       e Zd ZdS )JSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IOtherNr   r-   r   r   IOtherr  G  r   r   r  c                       e Zd ZdS )MSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.OtherBaseNr   r-   r   r   	OtherBaser  J          Dr   r  c                       e Zd ZdS )ISpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ModelNr   r-   r   r   Modelr  N  r   r   r  )r   r   r  r!   rd  r"   __sro__r   )
r$   r   r  rd  r  r  r  r  r  r  s
             r   'test_multiple_inheritance_no_interfacesz:SpecificationTests.test_multiple_inheritance_no_interfaces4  s    	>=====;;;;;;666666	 	 	 	 	y 	 	 		 	 	 	 	 	 	 		 	 	 	 	w 	 	 		 	 	 	 	Y 	 	 	 
V			 	 	 	 	 	 	 
			 	 	 	 	Iw 	 	 	 	M%  (e$$i((g&&f%%
	
 
	
 
	
 
	
 
	
r   N)r   r   r   rI   r`  rM   rj  rr  rt  rw  ry  r  r  r  r  r  r  r  r  r  r-   r   r   r\  r\    s          % - - - -
2 2 22 2 22 2 2; ; ;
1 1 10 0 0 	- 	- 	-: : :: : :: : :: : :0 0 0	< 	< 	<'
 '
 '
 '
 '
r   r\  c                   :   e Zd Zd Z	 	 d5dZd Zd Zd Zd	 Zd
 Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Z d" Z!d# Z"d$ Z#d% Z$d& Z%d' Z&d( Z'd) Z(d* Z)d+ Z*d, Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0d2 Z1d3 Z2d4 Z3dS )6InterfaceClassTestsc                     ddl m} |S )Nr   InterfaceClass)r!   r  )r$   r  s     r   rI   z#InterfaceClassTests._getTargetClass`  s    ;;;;;;r   ITestr-   Nc                 D     |                                  |||||          S r   r   )r$   rL   ra  attrsrQ   r   s         r   rM   zInterfaceClassTests._makeOned  s&    %t##%%dE5':NNNr   c                 6   |                                  } |d          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |                                d           d S )NITestingrO   r-   )rI   r"   r   rQ   rf  getBases)r$   klassinsts      r   rW   z&InterfaceClassTests.test_ctor_defaultsh  s    $$&&uZ  
333r***,,,"-----r   c                     |                                  }|                     t          |dt                      f           d S )Nr  )rI   r]   r  r   )r$   r  s     r   test_ctor_bad_basesz'InterfaceClassTests.test_ctor_bad_basesp  s9    $$&&)UJDDDDDr   c                    ddl m} ddl m} d } |dd           ||          d}|                                 } |d|	          }|                     |j        d           |                     |j        d           |                     |j        d
           |                     |                                |	                                           d S )Nr   r  fromFunctionc                      dS 	DOCSTRINGNr-   r-   r   r   _barzBInterfaceClassTests.test_ctor_w_attrs_attrib_methods.<locals>._barw        r   r   rO   rc   r5   r  r  r-   )
r!   r  r  rI   r"   r   rQ   rf  nameskeys)r$   r  r  r  ATTRSr  r  s          r    test_ctor_w_attrs_attrib_methodsz4InterfaceClassTests.test_ctor_w_attrs_attrib_methodst  s    666666999999	 	 	!	%,,$T**  $$&&uZu---
333r***,,,uzz||44444r   c                 \   di i}|                                  } |d|          }|                     |j        d           |                     |j        d           |                     |j        d           |                     t          |                                          g            d S )N
__locals__r  r  rO   r-   rI   r"   r   rQ   rf  rS   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  rO   r-   r  r  s       r   !test_ctor_attrs_w___annotations__z5InterfaceClassTests.test_ctor_attrs_w___annotations__  s    "B'$$&&uZu---
333r***,,,djjll++R00000r   c                 h   ddl m} d|i}|                                 } |d|          }|                     |j        d           |                     |j        d           |                     |j        d           |                     t          |                                          g            d S )Nr   )_decorator_non_returndropmer  r  rO   r-   )	r!   r  rI   r"   r   rQ   rf  rS   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   rI   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 )NrQ   ATTRr  EXPLICIT)r  rQ   )rI   r"   rQ   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   )rM   r"   rS   r  rI  s     r   test_interfacesz#InterfaceClassTests.test_interfaces  sA    e..0011E7;;;;;r   c                     |                                  }|                      d|f          }|                     |                                |f           d S NISub)ra  )rM   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   )rM   r   isEqualOrExtendedByrI  s     r   !test_isEqualOrExtendedBy_identityz5InterfaceClassTests.test_isEqualOrExtendedBy_identity  s5    11%8899999r   c                     |                                  }|                      d|f          }|                     |                    |                     |                     |                    |                     d S r  )rM   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)rM   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   rO   r  r6   BazIBaser  IDerivedra  r  Fallr!   r  r  rM   r"   sortedr  r$   r  r  r  
BASE_ATTRSDERIVED_ATTRSbasederiveds           r   $test_names_w_all_False_ignores_basesz8InterfaceClassTests.test_names_w_all_False_ignores_bases  s    666666999999	 	 	&Yub11)\$// 
 		% 4 4 }}WJ}77--
4'-OO% 8 899E7CCCCCr   c                     ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     t          |                    d	
                    ddg           d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  z@InterfaceClassTests.test_names_w_all_True_no_bases.<locals>._bar  r  r   r   rO   r  r  Tr  r5   rc   r  r$   r  r  r  r  r  s         r   test_names_w_all_True_no_basesz2InterfaceClassTests.test_names_w_all_True_no_bases  s    666666999999	 	 	!	%,,$T**  mm%m((		d	 3 344uenEEEEEr   c                 B   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    g d           d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  zFInterfaceClassTests.test_names_w_all_True_w_bases_simple.<locals>._bar  r  r   r   rO   r  r6   r
  r  r  r  r  Tr  r5   r6   rc   r  r  s           r   $test_names_w_all_True_w_bases_simplez8InterfaceClassTests.test_names_w_all_True_w_bases_simple  s    666666999999	 	 	&Yub11)\$// 
 		% 4 4 }}WJ}77--
4'-OO$ 7 788:O:O:OPPPPPr   c                 \   ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     t          |                    d                    g d           d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._bar  r  r   c                      dS r  r-   r-   r   r   _foozJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._foo  r  r   r   rO   r  r
  rc   r6   r  r  r  r  Tr  r  r  	r$   r  r  r  r#  r  r  r  r  s	            r   (test_names_w_all_True_bases_w_same_namesz<InterfaceClassTests.test_names_w_all_True_bases_w_same_names  s    666666999999	 	 		 	 	&Yub11)\$// 
 !-T 2 2 )	% 4 4  }}WJ}77--
4'-OO$ 7 788:O:O:OPPPPPr   c                 4   ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     t          |          g d           d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  z/InterfaceClassTests.test___iter__.<locals>._bar  r  r   c                      dS r  r-   r-   r   r   r#  z/InterfaceClassTests.test___iter__.<locals>._foo  r  r   r   rO   r  r
  r$  r  r  r  r  r  )r!   r  r  rM   r"   r  r%  s	            r   test___iter__z!InterfaceClassTests.test___iter__  s    666666999999	 	 		 	 	&Yub11)\$// 
 !-T 2 2 )	% 4 4  }}WJ}77--
4'-OO*?*?*?@@@@@r   c                 P   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    d|d         fg           d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  zUInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases.<locals>._bar  r  r   r   rO   r  r6   r
  r  r  r  r  Fr  r!   r  r  rM   r"   r  namesAndDescriptionsr  s           r   3test_namesAndDescriptions_w_all_False_ignores_baseszGInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases  s    666666999999	 	 	&Yub11)\$// 
 		% 4 4 }}WJ}77--
4'-OO < < < G GHH -"67 	 	 	 	 	r   c                    ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     t          |                    d	
                    d|d         fd|d         fg           d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  zOInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases.<locals>._bar   r  r   r   rO   r  r  Fr  r5   rc   r-  r  s         r   -test_namesAndDescriptions_w_all_True_no_baseszAInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases  s    666666999999	 	 	!	%,,$T**  mm%m(( 8 8U 8 C CDD %,/ %,/	 	 	 	 	r   c                 t   ddl m} ddl m} d } |dd           ||          d}d |d	d          i}|                     d
|          }|                     d|f|          }|                     t          |                    d                    d|d         fd|d         fd|d         fg           d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  zMInterfaceClassTests.test_namesAndDescriptions_w_all_True_simple.<locals>._bar.  r  r   r   rO   r  r6   r
  r  r  r  r  Tr  r5   rc   r-  r  s           r   +test_namesAndDescriptions_w_all_True_simplez?InterfaceClassTests.test_namesAndDescriptions_w_all_True_simple+  s   666666999999	 	 	&Yub11)\$// 
 		% 4 4 }}WJ}77--
4'-OO < < < F FGG *U"34 -"67 *U"34	 	 	 	 	r   c                    ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     t          |                    d                    d|d         fd|d         fd|d         fg           d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._bar@  r  r   c                      dS r  r-   r-   r   r   r#  zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._fooB  r  r   r   rO   r  r
  r$  r  r  r  r  Tr  r5   r6   rc   r-  r%  s	            r   7test_namesAndDescriptions_w_all_True_bases_w_same_nameszKInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names=  s/   666666999999	 	 		 	 	&Yub11)\$// 
 !-T 2 2 )	% 4 4  }}WJ}77--
4'-OO < < < F FGG *U"34 -"67 -"67	 	 	 	 	r   c                 p    |                                  }|                     t          |j        d           d S r[   )rM   r]   r^   getDescriptionForr$   r  s     r   test_getDescriptionFor_missz/InterfaceClassTests.test_getDescriptionFor_missR  s0    mmoo(C$9:FFFFFr   c                 <   ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     |                    d	          |d	                    |                     |                    d
          |d
                    d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  z<InterfaceClassTests.test_getDescriptionFor_hit.<locals>._barY  r  r   r   rO   r  r  rc   r5   )r!   r  r  rM   r"   r;  r  s         r   test_getDescriptionFor_hitz.InterfaceClassTests.test_getDescriptionFor_hitV  s    666666999999	 	 	!	%,,$T**  mm%m((..u55uU|DDD..u55uU|DDDDDr   c                 p    |                                  fd}|                     t          |           d S )Nc                       d         S r[   r-   )r  s   r   _testz8InterfaceClassTests.test___getitem___miss.<locals>._testd  s    z?"r   )rM   r]   r^   )r$   rC  r  s     @r   test___getitem___missz)InterfaceClassTests.test___getitem___missb  sE    mmoo	# 	# 	# 	# 	#(E*****r   c                    ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     |d	         |d	                    |                     |d
         |d
                    d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  z6InterfaceClassTests.test___getitem___hit.<locals>._bark  r  r   r   rO   r  r  rc   r5   )r!   r  r  rM   r"   r  s         r   test___getitem___hitz(InterfaceClassTests.test___getitem___hith  s    666666999999	 	 	!	%,,$T**  mm%m((UU5\222UU5\22222r   c                 \    |                                  }|                     d|v            d S r[   )rM   r   r<  s     r   test___contains___missz*InterfaceClassTests.test___contains___misst  s.    mmoos*+++++r   c                     ddl m} ddl m} d } |dd           ||          d}|                     |          }|                     d	|v            |                     d
|v            d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  z7InterfaceClassTests.test___contains___hit.<locals>._bar{  r  r   r   rO   r  r  rc   r5   )r!   r  r  rM   r   r  s         r   test___contains___hitz)InterfaceClassTests.test___contains___hitx  s    666666999999	 	 	!	%,,$T**  mm%m((%%%%%%%%r   c                     |                                  }|                     |                    d          d            d S r[   )rM   r"   directr<  s     r   test_direct_missz$InterfaceClassTests.test_direct_miss  s7    mmooJ//66666r   c                    ddl m} ddl m} d }d } |dd           ||          d} ||           |d	d          d
}|                     d|          }|                     d|f|          }|                     |                    d          |d                    |                     |                    d          |d                    |                     |                    d          d            d S )Nr   r  r  c                      dS r  r-   r-   r   r   r  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._bar  r  r   c                      dS r  r-   r-   r   r   r#  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._foo  r  r   r   rO   r  r
  r$  r  r  r  r  rc   r6   r5   )r!   r  r  rM   r"   rN  r%  s	            r    test_direct_hit_local_miss_basesz4InterfaceClassTests.test_direct_hit_local_miss_bases  s<   666666999999	 	 		 	 	&Yub11)\$// 
 !-T 2 2 )	% 4 4  }}WJ}77--
4'-OO..e0DEEE..e0DEEE..55555r   c                     |                                  }|                     |                    d          d            d S r[   )rM   r"   queryDescriptionForrI  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  rM   r"   rU  )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   rQ  )r   r   _called_withs     r   	_passablezCInterfaceClassTests.test_validateInvariants_pass.<locals>._passable  s     r
+++4r   r   )rM   r   re   r"   validateInvariants)r$   r_  r*  r   r^  s       @r   test_validateInvariants_passz0InterfaceClassTests.test_validateInvariants_pass  s    	 	 	 	 	 hh\I;77711#66===#~66666r   c                 J   ddl m g fd}g fd}|                                 }t                      }|                    d||g           |                     |j        |           |                     |fi fg           |                     |fi fg           d S )Nr   Invalidc                  6                         | |f           dS r   rQ  r   r   _passable_called_withs     r   r_  zTInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._passable       !(($4444r   c                  6                         | |f           r   rQ  r   r   rd  _fail_called_withs     r   _failzPInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._fail       $$dBZ000Mr   r   r  rd  rM   r   re   r]   r`  r"   )r$   r_  rl  r*  r   rd  rk  rg  s        @@@r   -test_validateInvariants_fail_wo_errors_passedzAInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed  s    555555 "	 	 	 	 	 	 	 	 	 	 	 hh\Iu+=>>>'5#;SAAA.3&"???*sfb\N;;;;;r   c                    ddl m g }g fd}|                                 }t                      }|                    d|g           |                     |j        ||           |                     |fi fg           |                     t          |          d           | 	                    t          |d                              d S )Nr   rc  c                  6                         | |f           r   rQ  rj  s     r   rl  zOInterfaceClassTests.test_validateInvariants_fail_w_errors_passed.<locals>._fail  rm  r   r   rm  r  rd  rM   r   re   r]   r`  r"   rg  r   
isinstance)r$   _errorsrl  r*  r   rd  rk  s        @@r   ,test_validateInvariants_fail_w_errors_passedz@InterfaceClassTests.test_validateInvariants_fail_w_errors_passed  s    555555	 	 	 	 	 	 hh\E7333'5#;S'JJJ*sfb\N;;;Wq)))
71:w7788888r   c                    ddl m g fd}g fd}|                     d          }|                     d|f          }t                      }|                    d|g           |                    d|g           |                     |j        |           |                     |fi fg           |                     |fi fg           d S )Nr   rc  c                  6                         | |f           dS r   rQ  rf  s     r   r_  z\InterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._passable  rh  r   c                  6                         | |f           r   rQ  rj  s     r   rl  zXInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._fail  rm  r   r  r  r   rn  )	r$   r_  rl  r  r  r   rd  rk  rg  s	         @@@r   5test_validateInvariants_fail_in_base_wo_errors_passedzIInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed  s   555555 "	 	 	 	 	 	 	 	 	 	 	 }}W%%--
TG44hhL5'222|i[999'7#=sCCC.3&"???*sfb\N;;;;;r   c                 D  	 ddl m g }g 		fd}g fd}|                     d          }|                     d|f          }t                      }|                    d|g           |                    d|g           |                     |j        ||           |                     	|fi fg           |                     |fi fg           |                     t          |          d           | 	                    t          |d                              d S )	Nr   rc  c                  6                         | |f           dS r   rQ  rf  s     r   r_  z[InterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._passable  rh  r   c                  6                         | |f           r   rQ  rj  s     r   rl  zWInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._fail  rm  r   r  r  r   rm  rr  )
r$   rt  r_  rl  r  r  r   rd  rk  rg  s
          @@@r   4test_validateInvariants_fail_in_base_w_errors_passedzHInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed  s_   555555 "	 	 	 	 	 	 	 	 	 	 	 }}W%%--
TG44hhL5'222|i[999'7#=sGLLL.3&"???*sfb\N;;;Wq)))
71:w7788888r   c                 (   g fd}t                      }|                     d          }|                    d|g           |                     d|f          }|                    |           |                     dt                               d S )Nc                  6                         | |f           dS r   rQ  rf  s     r   r_  zbInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_times.<locals>._passable  rh  r   r  r   r  rm  )r   rM   re   r`  r"   rg  )r$   r_  r   r  r  rg  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)rM   r"   
__reduce__rI  s     r   test___reduce__z#InterfaceClassTests.test___reduce__  s;    j))))++Z88888r   c                     |                      d          }|                     t          |          t          d                     d S )NHashMe)r  z#zope.interface.tests.test_interface)rM   r"   hashrI  s     r   test___hash___normalz(InterfaceClassTests.test___hash___normal  sW    h''e G H H	I 	I 	I 	I 	I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  )rI   r]   r   r  )r$   r  r  s      r   $test___hash___missing_required_attrsz8InterfaceClassTests.test___hash___missing_required_attrs  s    	 	 	 	 	d**,, 	 	 	 '))~.. 	 	MMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A""A&)A&c                    |                                  }|                     |d k                |                     |d k               |                     |d k               |                     |d k               |                     |d k               |                     |d k               |                     d |k                |                     d |k               |                     d |k               |                     d |k               |                     d |k               |                     d |k               d S r   rM   r   r   rI  s     r   test_comparison_with_Nonez-InterfaceClassTests.test_comparison_with_None  s)   %%%&&&$'''&&&$'''&&&&&&''''''&&&&&&u%%%%%r   c                 Z   |                                  }|                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               d S r   )rM   r   r   rI  s     r   "test_comparison_with_same_instancez6InterfaceClassTests.test_comparison_with_same_instance*  s    '''''''''%(((''''''''r   c                    |                      dd          }|                      dd          }|                     ||k                |                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               d S )NINamezzope.interface.tests.oner   zzope.interface.tests.otherr  )r$   r  r   s      r   8test_comparison_with_same_named_instance_in_other_modulezLInterfaceClassTests.test_comparison_with_same_named_instance_in_other_module5  sH   mmG0JmKKg2NOOe$$$%%%u%%%#&&&&&&#&&&u%%%%%%&&&%%%u%%%$$$$$r   c                     G d dt                      G fdd|                                           }|                     d          }|                     ||                                            |                     t          |          |                                            |                     t                    5   |d           d d d            n# 1 swxY w Y   ||_        |                     ||           |                     t          |          |           |                               5   |d           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )DInterfaceClassTests.test_assignment_to__class__.<locals>.MyExceptionNr   r-   r   r   r   r  I  r   r   r   c                       e Zd Z fdZdS )IInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClassc                      |          r   r-   )r$   targetr   s     r   __call__zRInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClass.__call__M  s    !k&)))r   Nr   r   r   r  )r   s   r   MyInterfaceClassr  L  s.        * * * * * * *r   r  r  rm  )	r  rI   rM   assertIsInstancer   typer]   r  	__class__)r$   r  r  r   s      @r   test_assignment_to__class__z/InterfaceClassTests.test_assignment_to__class__G  s   	 	 	 	 	) 	 	 		* 	* 	* 	* 	* 	* 	*t3355 	* 	* 	* }}W%%dD$8$8$:$:;;;d4jj$"6"6"8"8999y)) 	 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 *d$4555d4jj"2333{++ 	 	DGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   CC"C;EEEc                    ddl m}  G d d|                                           } |d|f          }|                      |d          d            G d d	|          }|                      |d          d            G d
 d|          }|                     t
                    5   |             d d d            n# 1 swxY w Y   ||_        |                      |d          d           d S )Nr   rc  c                       e Zd Zd ZdS )JInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClassc                     |S r   r-   )r$   r   s     r   r  zSInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClass.__call__d  s    r   Nr  r-   r   r   r  r  c  rJ  r   r  r  rm  )rm  c                       e Zd ZdS )>InterfaceClassTests.test_assignment_to__class__2.<locals>.IBarNr   r-   r   r   r  r  j  r   r   r  c                       e Zd ZdS )?InterfaceClassTests.test_assignment_to__class__2.<locals>.ISpamNr   r-   r   r   ISpamr  o  r   r   r  )r   rd  rI   r"   r]   r  r  )r$   rd  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)rM   r]   r   r   )r$   r  s     r   test__module__is_readonlyz-InterfaceClassTests.test__module__is_readonlyx  s    }}~.. 	1 	10DO	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AAA)r  r-   NNN)4r   r   r   rI   rM   rW   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r*  r/  r2  r5  r9  r=  r@  rD  rG  rI  rL  rO  rS  rV  r[  ra  ro  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  r-   r   r   r  r  ^  s*          DH O O O O. . .E E E5 5 51 1 11 1 11 1 1L L L3 3 3< < <3 3 3
: : :9 9 9; ; ;D D D	F 	F 	FQ Q QQ Q Q"A A A"       $  *G G G
E 
E 
E+ + +
3 
3 
3, , ,
& 
& 
&7 7 76 6 6&F F FK K K	7 	7 	7< < <"9 9 9< < <&9 9 9,8 8 89 9 9I I I  & & &"	( 	( 	(% % %$  .) ) )41 1 1 1 1r   r  c                   F   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5S )6InterfaceTestsc                     ddl m ddl m}  G fdd|          }|                     |d         j        |u            d S )Nr   r  rc  c                   &    e Zd Z  d          ZdS )<InterfaceTests.test_attributes_link_to_interface.<locals>.I1My attrN)r   r   r   rX  r  s   r   I1r    s        9Y''DDDr   r  rX  )r   r  rd  r   r   )r$   rd  r  r  s      @r   !test_attributes_link_to_interfacez0InterfaceTests.test_attributes_link_to_interface  s    ,,,,,,,,,,,,	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	6
,233333r   c                 r    ddl m}  G d d|          }|                     |d         j        |u            d S )Nr   rc  c                       e Zd Zd ZdS )9InterfaceTests.test_methods_link_to_interface.<locals>.I1c                     dS zA methodNr-   )rc   r5   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   rd  r   r   )r$   rd  r  s      r   test_methods_link_to_interfacez-InterfaceTests.test_methods_link_to_interface  sd    ,,,,,,	 	 	 	 	 	 	 	
 	8."455555r   c                 b   ddl m} ddl m} ddl m}  G d d|           G d d|          } G fd	d
          } |            }|                                         |                     |                     |                    |                     |                                |                      ||          v            |                     | ||          v            |                      ||          v            |                     | ||          v            d S )Nr   rc  r   r   c                       e Zd Zd Zd ZdS )<InterfaceTests.test_classImplements_simple.<locals>.ICurrentc                     dS 	docstringNr-   r   r   s     r   method1zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method1  r  r   c                     dS r  r-   r  s     r   method2zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method2  r  r   N)r   r   r   r  r  r-   r   r   ICurrentr    s2                      r   r  c                       e Zd ZdS ):InterfaceTests.test_classImplements_simple.<locals>.IOtherNr   r-   r   r   r  r    r   r   r  c                        e Zd Z Zd Zd ZdS );InterfaceTests.test_classImplements_simple.<locals>.Currentc                     t                      r   r   r$   r   r   s      r   r  zCInterfaceTests.test_classImplements_simple.<locals>.Current.method1      )+++r   c                     t                      r   r   r  s      r   r  zCInterfaceTests.test_classImplements_simple.<locals>.Current.method2  r  r   N)r   r   r   __implemented__r  r  )r  s   r   Currentr    s8        &O, , ,, , , , ,r   r  )r   rd  r   r   r   r   r"   )r$   rd  r   r   r  r  currentr  s          @r   test_classImplements_simplez*InterfaceTests.test_classImplements_simple  s   ,,,,,,000000------	  	  	  	  	 y 	  	  	 	 	 	 	 	Y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, '))..w77888--g667778,,,MM'$:$::;;;==#9#99:::JJw$7$77888::g#6#6677777r   c                 6   ddl m} ddl m} ddl m}  G d d|           G d d          } G fd	d
          } |            }|                                         |                     |                     |                    |                     |                      ||          v            |                     | ||          v            |                      ||          v            |                     | ||          v            d S )Nr   rc  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.method  r  r   Nr   r   r   r  r  )r  s   r   r  r    s)        #O, , , , ,r   r  r   rd  r   r   r   r   )r$   rd  r   r   r  r  r  r  s          @r   %test_classImplements_base_not_derivedz4InterfaceTests.test_classImplements_base_not_derived  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 	 	 	 	 	u 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	, '))++G44555//88999w!7!77888]]7%;%;;<<<G!4!44555ZZ%8%8899999r   c                    ddl m} ddl m} ddl m}  G d d|          } G d d|           G fd	d
          } |            }|                     |                    |                     |                                         |                     |                     | ||          v            |                     | ||                                          v            |                      ||          v            |                     | ||          v            |                     | ||                                          v            |                      ||          v            d S )Nr   rc  r   r   c                       e Zd Zd ZdS )CInterfaceTests.test_classImplements_base_and_derived.<locals>.IBasec                      dS r  r-   r-   r   r   r  zJInterfaceTests.test_classImplements_base_and_derived.<locals>.IBase.method  r  r   Nr  r-   r   r   r  r    r  r   r  c                       e Zd ZdS )FInterfaceTests.test_classImplements_base_and_derived.<locals>.IDerivedNr   r-   r   r   r  r    r   r   r  c                       e Zd Z Zd ZdS )EInterfaceTests.test_classImplements_base_and_derived.<locals>.Currentc                     t                      r   r   r   s    r   r  zLInterfaceTests.test_classImplements_base_and_derived.<locals>.Current.method  r  r   Nr  )r  s   r   r  r    s)        &O, , , , ,r   r  )r   rd  r   r   r   r   	flattened)r$   rd  r   r   r  r  r  r  s          @r   %test_classImplements_base_and_derivedz4InterfaceTests.test_classImplements_base_and_derived  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 	 	 	 	 	u 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	,
 '))++G44555..w77888--"8"88999w!7!7!A!A!C!CCDDDMM'$:$::;;;**W"5"55666G!4!4!>!>!@!@@AAAJJw$7$7788888r   c                 t  	 ddl m} ddl m} ddl m}  G d d|           G d d          	 G fd	d
          } G 	fdd          } G d d||          } |            }|                                         |                     |                     	                    |                     |                      ||          v            |                     	 ||          v            |                      ||          v            |                     	 ||          v            d S )Nr   rc  r   r   c                       e Zd Zd ZdS );InterfaceTests.test_classImplements_multiple.<locals>.ILeftc                      dS r  r-   r-   r   r   r  zBInterfaceTests.test_classImplements_multiple.<locals>.ILeft.method  r  r   Nr  r-   r   r   ILeftr    r  r   r  c                       e Zd ZdS )<InterfaceTests.test_classImplements_multiple.<locals>.IRightNr   r-   r   r   IRightr    r   r   r  c                       e Zd Z Zd ZdS ):InterfaceTests.test_classImplements_multiple.<locals>.Leftc                     t                      r   r   r   s    r   r  zAInterfaceTests.test_classImplements_multiple.<locals>.Left.method  r  r   Nr  r  s   r   Leftr    )        #O, , , , ,r   r  c                       e Zd Z ZdS );InterfaceTests.test_classImplements_multiple.<locals>.RightNr   r   r   r  r  s   r   Rightr             $OOOr   r  c                       e Zd ZdS ):InterfaceTests.test_classImplements_multiple.<locals>.AmbiNr   r-   r   r   Ambir    r   r   r  )r   rd  r   r   r   )
r$   rd  r   r   r  r  r  ambir  r  s
           @@r   test_classImplements_multiplez,InterfaceTests.test_classImplements_multiple  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 	 	 	 	 	U 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	,	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	4 	 	 	 tvv++D11222,,T22333t!4!44555--"5"55666D!1!11222**T"2"2233333r   c                   	
 ddl m} ddl m} ddl m}  G d d|           G d d          	 G d	 d
|           G fdd          
 G 	fdd          } G fdd           G 
fdd
|          } |            }|                                         |                     |                     	                    |                     |                                         |                     |                      ||          v            |                     	 ||          v            |                      ||          v            |                      ||          v            |                     	 ||          v            |                      ||          v            d S )Nr   rc  r   r   c                       e Zd Zd ZdS )PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeftc                      dS r  r-   r-   r   r   r  zWInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeft.method  r  r   Nr  r-   r   r   r  r  
  s#                 r   r  c                       e Zd ZdS )QInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IRightNr   r-   r   r   r  r    r   r   r  c                       e Zd ZdS )QInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IOtherNr   r-   r   r   r  r    r   r   r  c                       e Zd Z Zd ZdS )OInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Leftc                     t                      r   r   r   s    r   r  zVInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Left.method  r  r   Nr  r  s   r   r  r    r  r   r  c                       e Zd Z ZdS )PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.RightNr  r  s   r   r  r    r  r   r  c                       e Zd Z ZdS )PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.OtherNr  )r  s   r   Otherr    r  r   r  c                   ,    e Zd Z j        j        fZdS )PInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.MixedNr  )r  r  s   r   Mixedr  !  s        "2E4IIOOOr   r  r  )r$   rd  r   r   r  r  mixedr  r  r  r  r  s          @@@@@r   2test_classImplements_multiple_w_explict_implementszAInterfaceTests.test_classImplements_multiple_w_explict_implements  s   ,,,,,,000000------	  	  	  	  	 I 	  	  	 
	 	 	 	 	U 	 	 		 	 	 	 	Y 	 	 		, 	, 	, 	, 	, 	, 	, 	, 	, 	,	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	J 	J 	J 	J 	J 	J 	J 	JD% 	J 	J 	J ++E22333--e44555,,U33444u!5!55666==#7#77888--"6"66777E!2!22333::e#4#44555**U"3"3344444r   c                    ddl m} |j        } |d          } |d|f          } |d          } |d||f          }|                     |                    |                     |                     |                    |                     |                     |                    |                     |                     |                    |                     |                     |                    |                     |                     |                    |                     |                     |                    |                     d S )Nr   rc  FunInterfaceBarInterfaceBobInterfaceBazInterface)r   rd  r  r   r  r   )r$   rd  newr   r!  r"  r#  s          r   testInterfaceExtendsInterfacez,InterfaceTests.testInterfaceExtendsInterface0  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  rc  )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.methodJ  r  r   Nr   r   r   rX  r  r  s   r   ICheckMer)  G  3        9Y''D    r   r,  c                       e Zd Z ZdZd ZdS )0InterfaceTests.test_verifyClass.<locals>.CheckMevaluec                     t                      r   r   r   s    r   r  z7InterfaceTests.test_verifyClass.<locals>.CheckMe.methodQ  r  r   Nr   r   r   r  rX  r  r,  s   r   CheckMer/  M  .        &OD, , , , ,r   r4  )r   r  rd  r~   r'  r   )r$   rd  r'  r4  r  r,  s       @@r   test_verifyClasszInterfaceTests.test_verifyClassA  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  rc  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,  r9  \  r-  r   r,  c                       e Zd Z ZdZd ZdS )1InterfaceTests.test_verifyObject.<locals>.CheckMer0  c                     t                      r   r   r   s    r   r  z8InterfaceTests.test_verifyObject.<locals>.CheckMe.methodf  r  r   Nr2  r3  s   r   r4  r<  b  r5  r   r4  )r   r  rd  r~   r|   r   )r$   rd  r|   r4  check_mer  r,  s        @@r   test_verifyObjectz InterfaceTests.test_verifyObjectV  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   rc  c                       e Zd ZdS )LInterfaceTests.test_interface_object_provides_Interface.<locals>.AnInterfaceNr   r-   r   r   AnInterfacerB  p  r   r   rC  )r   rd  r   r   )r$   rd  rC  s      r   (test_interface_object_provides_Interfacez7InterfaceTests.test_interface_object_provides_Interfacem  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  rc  c                   ,    e Zd Z  d          Zd ZdS )1InterfaceTests.test_names_simple.<locals>.ISimpler  c                      dS r  r-   r-   r   r   r  z8InterfaceTests.test_names_simple.<locals>.ISimple.method}  r  r   Nr+  r  s   r   ISimplerG  z  3        9Y''D         r   rI  rX  r  r   r  rd  r"   r  r  r$   rd  rI  r  s      @r   test_names_simplez InterfaceTests.test_names_simpleu  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  rc  c                   ,    e Zd Z  d          Zd ZdS )0InterfaceTests.test_names_derived.<locals>.IBaser  c                      dS r  r-   r-   r   r   r  z7InterfaceTests.test_names_derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  rP    rJ  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )3InterfaceTests.test_names_derived.<locals>.IDerivedMy attr2c                      dS r  r-   r-   r   r   r  z:InterfaceTests.test_names_derived.<locals>.IDerived.method  r  r   c                      dS r  r-   r-   r   r   r  z;InterfaceTests.test_names_derived.<locals>.IDerived.method2  r  r   Nr   r   r   attr2r  r  r  s   r   r  rS    sB        Ij))E              r   r  )rX  r  r  Tr  rX  rX  r  r  rK  r$   rd  r  r  r  s       @r   test_names_derivedz!InterfaceTests.test_names_derived  s   ,,,,,,,,,,,,	  	  	  	  	  	  	 I 	  	  	 	  	  	  	  	  	  	 u 	  	  	  	 0 011777	9 	9 	94 8 899???	A 	A 	A 	A 	Ar   c                 P   ddl m ddl m} ddlm}  G fdd|          }t          |                                          }|                     t          |          d           |                     |d         d         d           | 	                    t          |d         d	                              |                     |d         d	         j        d           |                     |d         d	         j        d
           |                     |d	         d         d           | 	                    t          |d	         d	         |                     |                     |d	         d	         j        d           |                     |d	         d	         j        d           d S )Nr   r  rc  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.method  r  r   Nr+  r  s   r   rI  r`    3        9Y''D    r   rI  re  rX  rm  r  r  rc  r   r  rd  r!   r^  r  r.  r"   rg  r   rs  r   rQ   )r$   rd  r^  rI  name_valuesr  s        @r    test_namesAndDescriptions_simplez/InterfaceTests.test_namesAndDescriptions_simple  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 W99;;<<[))1---Q*F333
;q>!#4i@@AAAQ*3V<<<Q*2I>>>Q*H555
;q>!#4f==>>>Q*3X>>>Q*2K@@@@@r   c                 2
   ddl m ddl m} ddlm}  G fdd|          } G fdd|          }t          |                                          }|                     t          |          d	           |                     |d         d         d
           | 	                    t          |d         d                              |                     |d         d         j        d
           |                     |d         d         j        d           |                     |d         d         d           | 	                    t          |d         d         |                     |                     |d         d         j        d           |                     |d         d         j        d           |                     |d         d         d           | 	                    t          |d         d         |                     |                     |d         d         j        d           |                     |d         d         j        d           t          |                    d                    }|                     t          |          d           |                     |d         d         d           | 	                    t          |d         d                              |                     |d         d         j        d           |                     |d         d         j        d           |                     |d         d         d
           | 	                    t          |d         d                              |                     |d         d         j        d
           |                     |d         d         j        d           |                     |d         d         d           | 	                    t          |d         d         |                     |                     |d         d         j        d           |                     |d         d         j        d           |                     |d	         d         d           | 	                    t          |d	         d         |                     |                     |d	         d         j        d           |                     |d	         d         j        d           d S )Nr   r  rc  r]  c                   ,    e Zd Z  d          Zd ZdS )?InterfaceTests.test_namesAndDescriptions_derived.<locals>.IBaser  c                      dS rb  r-   r-   r   r   r  zFInterfaceTests.test_namesAndDescriptions_derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  rj    rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )BInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerivedrT  c                      dS My method, overriddenNr-   r-   r   r   r  zIInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method  r  r   c                      dS 
My method2Nr-   r-   r   r   r  zJInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method2  r  r   NrW  r  s   r   r  rm    B        Ij))E( ( (    r   r     rX  rm  rT  r  rp  re  r  rs  Tr     rX  r  re  )r$   rd  r^  r  r  rf  r  s         @r   !test_namesAndDescriptions_derivedz0InterfaceTests.test_namesAndDescriptions_derived  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 X::<<==[))1---Q*G444
;q>!#4i@@AAAQ*3W===Q*2J???Q*H555
;q>!#4f==>>>Q*3X>>>Q*24KLLLQ*I666
;q>!#4f==>>>Q*3Y???Q*2LAAAX::t:DDEE[))1---Q*F333
;q>!#4i@@AAAQ*3V<<<Q*2I>>>Q*G444
;q>!#4i@@AAAQ*3W===Q*2J???Q*H555
;q>!#4f==>>>Q*3X>>>Q*24KLLLQ*I666
;q>!#4f==>>>Q*3Y???Q*2LAAAAAr   c                 p    ddl m}  G d d|          }|                     t          |j        d           d S )Nr   rc  c                       e Zd ZdS )IInterfaceTests.test_getDescriptionFor_nonesuch_no_default.<locals>.IEmptyNr   r-   r   r   IEmptyrz    r   r   r{  r\   )r   rd  r]   r^   r;  r$   rd  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          }|                     t          |                     |                     |j	        d           |                     |j
        d           |                    d	          }|                     t          ||                     |                     |j	        d	           |                     |j
        d
           d S )Nr   r  rc  r]  c                   ,    e Zd Z  d          Zd ZdS )=InterfaceTests.test_getDescriptionFor_simple.<locals>.ISimpler  c                      dS rb  r-   r-   r   r   r  zDInterfaceTests.test_getDescriptionFor_simple.<locals>.ISimple.method  r  r   Nr+  r  s   r   rI  r    rd  r   rI  rX  r  r  rc  r   r  rd  r!   r^  r;  r   rs  r"   r   rQ   r$   rd  r^  rI  a_descm_descr  s         @r   test_getDescriptionFor_simplez,InterfaceTests.test_getDescriptionFor_simple  s3   ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 **622
6955666&111333**844
6622333(33355555r   c                   	 ddl m	 ddl m} ddlm}  G 	fdd|          } G 	fdd|          }|                    d	          }|                     t          |	                     |                     |j	        d	           |                     |j
        d
           |                    d          }|                     t          ||                     |                     |j	        d           |                     |j
        d           |                    d          }|                     t          |	                     |                     |j	        d           |                     |j
        d           |                    d          }|                     t          ||                     |                     |j	        d           |                     |j
        d           d S )Nr   r  rc  r]  c                   ,    e Zd Z  d          Zd ZdS )<InterfaceTests.test_getDescriptionFor_derived.<locals>.IBaser  c                      dS rb  r-   r-   r   r   r  zCInterfaceTests.test_getDescriptionFor_derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  r    rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )?InterfaceTests.test_getDescriptionFor_derived.<locals>.IDerivedrT  c                      dS ro  r-   r-   r   r   r  zFInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method  r  r   c                      dS rr  r-   r-   r   r   r  zGInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method2  r  r   NrW  r  s   r   r  r    rt  r   r  rX  r  r  rp  rX  rT  r  rs  r  
r$   rd  r^  r  r  r  r  a2_descm2_descr  s
            @r   test_getDescriptionFor_derivedz-InterfaceTests.test_getDescriptionFor_derived
  s(   ,,,,,,,,,,,,333333	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 ++F33
6955666&111333++H55
6622333(333)@AAA,,W55
7I66777)7333*555,,Y77
7F33444)9555,77777r   c                 p    ddl m}  G d d|          }|                     t          |j        d           d S )Nr   rc  c                       e Zd ZdS )7InterfaceTests.test___getitem__nonesuch.<locals>.IEmptyNr   r-   r   r   r{  r  6  r   r   r{  r\   )r   rd  r]   r^   __getitem__r|  s      r   test___getitem__nonesuchz'InterfaceTests.test___getitem__nonesuch3  sa    ,,,,,,	 	 	 	 	Y 	 	 	 	(F$6
CCCCCr   c                    ddl m ddl m} ddlm}  G fdd|          }|d         }|                     t          |                     |                     |j        d           |                     |j	        d           |d	         }|                     t          ||                     |                     |j        d	           |                     |j	        d
           d S )Nr   r  rc  r]  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___getitem__simple.<locals>.ISimpler  c                      dS rb  r-   r-   r   r   r  z=InterfaceTests.test___getitem__simple.<locals>.ISimple.methodD  r  r   Nr+  r  s   r   rI  r  A  rd  r   rI  rX  r  r  rc  
r   r  rd  r!   r^  r   rs  r"   r   rQ   r  s         @r   test___getitem__simplez%InterfaceTests.test___getitem__simple;  s    ,,,,,,,,,,,,333333	 	 	 	 	 	 	i 	 	 	 
6955666&111333"
6622333(33355555r   c                 t  	 ddl m	 ddl m} ddlm}  G 	fdd|          } G 	fdd|          }|d	         }|                     t          |	                     |                     |j        d	           |                     |j	        d
           |d         }|                     t          ||                     |                     |j        d           |                     |j	        d           |d         }|                     t          |	                     |                     |j        d           |                     |j	        d           |d         }|                     t          ||                     |                     |j        d           |                     |j	        d           d S )Nr   r  rc  r]  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___getitem___derived.<locals>.IBaser  c                      dS rb  r-   r-   r   r   r  z=InterfaceTests.test___getitem___derived.<locals>.IBase.methodZ  r  r   Nr+  r  s   r   r  r  W  rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )9InterfaceTests.test___getitem___derived.<locals>.IDerivedrT  c                      dS ro  r-   r-   r   r   r  z@InterfaceTests.test___getitem___derived.<locals>.IDerived.method`  r  r   c                      dS rr  r-   r-   r   r   r  zAInterfaceTests.test___getitem___derived.<locals>.IDerived.method2c  r  r   NrW  r  s   r   r  r  ]  rt  r   r  rX  r  r  rp  rX  rT  r  rs  r  r  s
            @r   test___getitem___derivedz'InterfaceTests.test___getitem___derivedQ  s   ,,,,,,,,,,,,333333	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 &!
6955666&111333(#
6622333(333)@AAA7#
7I66777)7333*5559%
7F33444)9555,77777r   c                 \    ddl m}  G d d|          }|                     d|v            d S )Nr   rc  c                       e Zd ZdS )8InterfaceTests.test___contains__nonesuch.<locals>.IEmptyNr   r-   r   r   r{  r  }  r   r   r{  r\   )r   rd  r   r|  s      r   test___contains__nonesuchz(InterfaceTests.test___contains__nonesuchz  s_    ,,,,,,	 	 	 	 	Y 	 	 	 	v-.....r   c                     ddl m ddl m}  G fdd|          }|                     d|v            |                     d|v            d S )Nr   r  rc  c                   ,    e Zd Z  d          Zd ZdS )7InterfaceTests.test___contains__simple.<locals>.ISimpler  c                      dS rb  r-   r-   r   r   r  z>InterfaceTests.test___contains__simple.<locals>.ISimple.method  r  r   Nr+  r  s   r   rI  r    rd  r   rI  rX  r  r   r  rd  r   rL  s      @r   test___contains__simplez&InterfaceTests.test___contains__simple  s    ,,,,,,,,,,,,	 	 	 	 	 	 	i 	 	 	 	')***G+,,,,,r   c                    ddl m ddl m}  G fdd|          } G fdd|          }|                     d|v            |                     d	|v            |                     d
|v            |                     d|v            d S )Nr   r  rc  c                   ,    e Zd Z  d          Zd ZdS )6InterfaceTests.test___contains__derived.<locals>.IBaser  c                      dS rb  r-   r-   r   r   r  z=InterfaceTests.test___contains__derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  r    rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )9InterfaceTests.test___contains__derived.<locals>.IDerivedrT  c                      dS ro  r-   r-   r   r   r  z@InterfaceTests.test___contains__derived.<locals>.IDerived.method  r  r   c                      dS rr  r-   r-   r   r   r  zAInterfaceTests.test___contains__derived.<locals>.IDerived.method2  r  r   NrW  r  s   r   r  r    rt  r   r  rX  r  rX  r  r  rZ  s       @r   test___contains__derivedz'InterfaceTests.test___contains__derived  s    ,,,,,,,,,,,,	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 	(*+++H,---8+,,,	X-.....r   c                 t    ddl m}  G d d|          }|                     t          |          g            d S )Nr   rc  c                       e Zd ZdS )1InterfaceTests.test___iter__empty.<locals>.IEmptyNr   r-   r   r   r{  r    r   r   r{  )r   rd  r"   rS   r|  s      r   test___iter__emptyz!InterfaceTests.test___iter__empty  sb    ,,,,,,	 	 	 	 	Y 	 	 	 	fr*****r   c                     ddl m ddl m}  G fdd|          }|                     t	          t          |                    ddg           d S )Nr   r  rc  c                   ,    e Zd Z  d          Zd ZdS )3InterfaceTests.test___iter__simple.<locals>.ISimpler  c                      dS rb  r-   r-   r   r   r  z:InterfaceTests.test___iter__simple.<locals>.ISimple.method  r  r   Nr+  r  s   r   rI  r    rd  r   rI  rX  r  r   r  rd  r"   r  rS   rL  s      @r   test___iter__simplez"InterfaceTests.test___iter__simple  s    ,,,,,,,,,,,,	 	 	 	 	 	 	i 	 	 	 	W..0BCCCCCr   c                     ddl m ddl m}  G fdd|          } G fdd|          }|                     t	          t          |                    g d           d S )	Nr   r  rc  c                   ,    e Zd Z  d          Zd ZdS )2InterfaceTests.test___iter__derived.<locals>.IBaser  c                      dS rb  r-   r-   r   r   r  z9InterfaceTests.test___iter__derived.<locals>.IBase.method  r  r   Nr+  r  s   r   r  r    rd  r   r  c                   2    e Zd Z  d          Zd Zd ZdS )5InterfaceTests.test___iter__derived.<locals>.IDerivedrT  c                      dS ro  r-   r-   r   r   r  z<InterfaceTests.test___iter__derived.<locals>.IDerived.method  r  r   c                      dS rr  r-   r-   r   r   r  z=InterfaceTests.test___iter__derived.<locals>.IDerived.method2  r  r   NrW  r  s   r   r  r    rt  r   r  rY  r  rZ  s       @r   test___iter__derivedz#InterfaceTests.test___iter__derived  s    ,,,,,,,,,,,,	 	 	 	 	 	 	I 	 	 		 	 	 	 	 	 	u 	 	 	 	X//???	A 	A 	A 	A 	Ar   c                     ddl m}  G d d|          }|d         }|                     |                    d          d           d S )Nr   rc  c                   "    e Zd Zd Zde_        dS )LInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMec                      dS r  r-   r-   r   r   r  zSInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMe.method  r  r   rm  N)r   r   r   r  optionalr-   r   r   ITagMer    s$             FOOOr   r  r  r  rm  )r   rd  r"   r_   )r$   rd  r  r  s       r   -test_function_attributes_become_tagged_valuesz<InterfaceTests.test_function_attributes_become_tagged_values  st    ,,,,,,	  	  	  	  	 Y 	  	  	 
 !..z::A>>>>>r   c                     ddl m}  G d d|          }|                     |j        d           |                     t	          |          g            d S )Nr   rc  c                       e Zd ZdZdS )@InterfaceTests.test___doc___non_element.<locals>.IHaveADocStringxxxNr   r   r   rQ   r-   r   r   IHaveADocStringr            EEEr   r  r  )r   rd  r"   rQ   rS   )r$   rd  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  rc  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  rO   rQ   r   r  rd  r"   rQ   rS   )r$   rd  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   rc  z&validateInvariants should always raisec                 (    g | ]}|j         d          S )r   r   ).0errors     r   
<listcomp>z/InterfaceTests._errorsEqual.<locals>.<listcomp>  s    ---%
1---r   )
r  rd  r]   r`  failr"   r   rg  sortpop)
r$   has_invariant	error_len
error_msgsr*  rd  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  rc  directlyProvidesr   c                   R    e Zd Z  d          Z  d          Z e           dS )8InterfaceTests.test_invariant_simple.<locals>.IInvariantrc   *bar; must eval to Boolean True if foo doesNr   r   r   rc   r5   _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      *   rm  If Foo, then Bar!)r   r  rd  r  r   r"   r_   r  r`  r5   rc   r  )r$   rd  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  rc  r  r   c                   R    e Zd Z  d          Z  d          Z e           dS )8InterfaceTests.test_invariant_nested.<locals>.IInvariantrc   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  0  r   r   r  r   r  rm  r  re  %Please, Boo MUST be greater than Foo!)r   r  rd  r  r   r"   r_   r	  rc   r  r5   r`  )	r$   rd  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  rc  r  r   c                   R    e Zd Z  d          Z  d          Z e           dS ):InterfaceTests.test_invariant_mutandis.<locals>.IInvariantrc   r  Nr  r  s   r   r  r  W  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   rm  r  re  r  )r   r  rd  r  r   rc   r_   rR  r	  re   r  r5   r"   r`  )
r$   rd  r  r  r  r  old_invariantsr   r  r   s
           @@r   test_invariant_mutandisz&InterfaceTests.test_invariant_mutandisQ  s   ,,,,,,,,,,,,333333,,,,,,	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
	 	 	 	 	 	 	 	 %
333 $22<@@#AAA&
,---!!,
;;; 	--@,A$	& 	& 	& -BCZ	Q 	Q 	Q -.BD$	& 	& 	&
 66}EEtLLL!!,?????r   c                 V   ddl m ddl m}  G d d|          }|                     |j        d           |                     t          |          g             G fdd|          }|                     |j        d	           |                     t          |          d
g           d S )Nr   r  rc  c                       e Zd ZdZdS )7InterfaceTests.test___doc___element.<locals>.IDocstringr  Nr  r-   r   r   
IDocstringr    r  r   r  r  c                   *    e Zd ZdZ  d          ZdS )CInterfaceTests.test___doc___element.<locals>.IDocstringAndAttributer  r  Nr  r  s   r   IDocstringAndAttributer    s#        Ei	**GGGr   r  rO   rQ   r  )r$   rd  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  rc  r  r   rc  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)obrd  s    r   range_invariantzJInterfaceTests.test_invariant_as_decorator.<locals>.IRange.range_invariant  s'    6BF??!'+... #?r   N)r   r   r   r$  r#  r&  )r  rd  r   s   r   IRanger     sV        )M**C)M**C/ / / / Y/ / /r   r'  c                       e Zd Zd ZdS )9InterfaceTests.test_invariant_as_decorator.<locals>.Rangec                 $    ||c| _         | _        d S r   )r$  r#  )r$   r$  r#  s      r   r   zBInterfaceTests.test_invariant_as_decorator.<locals>.Range.__init__  s    %(#"$(((r   Nr   r-   r   r   Ranger)    s#        . . . . .r   r+  rm  re  r"  )
r   r  rd  r  r   r  rd  r`  r"   r7  )	r$   rd  r  r'  r+  r  r  rd  r   s	         @@@r   test_invariant_as_decoratorz*InterfaceTests.test_invariant_as_decorator  s   ,,,,,,,,,,,,......,,,,,,555555	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/Y 	/ 	/ 	/ 
V			. 	. 	. 	. 	. 	. 	. 
		.
 	!!%%1++...!!%%1++...	2%%eeAqkk22222 	2 	2 	2SVV[111111111	2s   B2 2C%7#C  C%c                    ddl m ddl m} ddl m  G fdd|          } G fdd|          } G d	 d
|          }|                     |                    d          d           |                     t          |j        d           |                     t          |	                                          dg           |                     |                    d          d           |                     |                    d          d           |                     t          |	                                          ddh           d S )Nr   r  rc  r1   c                   T    e Zd Z  d          Z  d          Z dd           dS )0InterfaceTests.test_taggedValue.<locals>.ITaggedrc   r  r<   SpamN)r   r   r   rc   r5   r  r2   s   r   ITaggedr/    sB        )E""C)HIICKv&&&&&r   r2  c                   @    e Zd Z  dd             dd           dS )1InterfaceTests.test_taggedValue.<locals>.IDerivedr<   	Spam Spamrc   r5   Nr   r1   s   r   r  r4    s5        K{+++Ku%%%%%r   r  c                       e Zd ZdS )2InterfaceTests.test_taggedValue.<locals>.IDerived2Nr   r-   r   r   	IDerived2r7    r   r   r8  r<   r0  rc   r5  r5   )r   r  rd  r2   r"   r_   r]   r^   rS   rT   set)r$   rd  r2  r  r8  r  r2   s        @@r   test_taggedValuezInterfaceTests.test_taggedValue  s   ,,,,,,,,,,,,......	' 	' 	' 	' 	' 	' 	' 	'i 	' 	' 	'
	& 	& 	& 	& 	& 	& 	&w 	& 	& 	&	 	 	 	 	 	 	 	 	//66???(G$:EBBBg88::;;eWEEE11%88+FFF11%88%@@@Y99;;<<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  r1   c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.FtagFNr   r   r   r>  r1  s   r   r?  r=    .        Ks###)C..CCCr   r?  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.Er>  ENr@  r1  s   r   rD  rC    rA  r   rD  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.Dr>  DNr@  r1  s   r   rG  rF    rA  r   rG  c                   >    e Zd Z dd             d          ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.Cr>  CNr@  r1  s   r   rJ  rI    rA  r   rJ  c                       e Zd ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.BNr   r-   r   r   BrL    r   r   rM  c                       e Zd ZdS )0InterfaceTests._make_taggedValue_tree.<locals>.ANr   r-   r   r   ArO    r   r   rP  )r   r  r2   )r$   r  Or?  rD  rG  rJ  rM  rP  r  r2   s            @@r   _make_taggedValue_treez%InterfaceTests._make_taggedValue_tree  sr   ,,,,,,......	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	!1 	! 	! 	!	 	 	 	 	1 	 	 		 	 	 	 	1 	 	 	 r   c                 Z   ddl m} |                     t                    }|                     |j        j        d           |                     |          }|                     |d         j        d           |                     |                    d          d           |                     |                    d          d           |j	        d         j        dk    sJ |j	        d         
                    dd           |                     |                    d          d           d S )Nr   rc  rJ  r>  rM  )r   rd  rR  r   r"   r>  r   r_   ri   rf  re   )r$   rd  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   rc  r>  rP  rm  rJ  )r   rd  rR  r  rs   r"   rS   rd   r]   r^   ro   re   rf  r   )r$   rd  rP  rJ  s       r   (test_getDirectTaggedValue_ignores__iro__z7InterfaceTests.test_getDirectTaggedValue_ignores__iro__  s   ,,,,,,''	22!22599:::T!"<"<">">??@@@x(( 	* 	*""5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	
$$$11%88#>>>//66<<<%$q'A'A'C'C"D"DEEE{1~&#----KN11%88#>>>//66<<<%$q'A'A'C'C"D"DEEEEEs   B55B9<B9c                 V   ddl m ddl m}  G fdd|          } G d d|          } G d d	|          }|                     |                    d
          |                    d
          u            |f|_        |                     |                    d
          d u            d S )Nr   r  rc  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  r[    s        	#AAAr   r  c                       e Zd ZdS )<InterfaceTests.test_description_cache_management.<locals>.I2Nr   r-   r   r   I2r]    r   r   r^  c                       e Zd ZdS )<InterfaceTests.test_description_cache_management.<locals>.I3Nr   r-   r   r   I3r`    r   r   ra  r   )r   r  rd  r   r  rf  )r$   rd  r  r^  ra  r  s        @r   !test_description_cache_managementz0InterfaceTests.test_description_cache_management  s    	-,,,,,,,,,,,	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	srvvc{{2333!|st+,,,,,r   c                     ddl m} ddl m}  G d d|          } ||           G d d                      }|                      | |                      d           d S )Nr   rc  r  c                       e Zd ZdS )>InterfaceTests.test___call___defers_to___conform___.<locals>.INr   r-   r   r   r}  re  (  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   rJ  rg  +  s#            r   rJ  )r   rd  r  r"   )r$   rd  r  r}  rJ  s        r   $test___call___defers_to___conform___z3InterfaceTests.test___call___defers_to___conform___$  s    ,,,,,,......	 	 	 	 		 	 	 	 
Q	 	 	 	 	 	 	 
	 	1133#####r   c                     ddl m} ddl m}  G d d|          } ||           G d d                      } |            }|                      ||          |u            d S )Nr   rc  r  c                       e Zd ZdS )9InterfaceTests.test___call___object_implements.<locals>.INr   r-   r   r   r}  rm  6  r   r   r}  c                       e Zd ZdS )9InterfaceTests.test___call___object_implements.<locals>.CNr   r-   r   r   rJ  ro  9  r  r   rJ  )r   rd  r  r   )r$   rd  r  r}  rJ  cs         r   test___call___object_implementsz.InterfaceTests.test___call___object_implements2  s    ,,,,,,......	 	 	 	 		 	 	 	 
Q	 	 	 	 	 	 	 
	 ACC!	"""""r   c                     ddl m}  G d d|          } G d d          } |            }|                     t          ||           d S )Nr   rc  c                       e Zd ZdS )9InterfaceTests.test___call___miss_wo_alternate.<locals>.INr   r-   r   r   r}  rt  C  r   r   r}  c                       e Zd ZdS )9InterfaceTests.test___call___miss_wo_alternate.<locals>.CNr   r-   r   r   rJ  rv  F  r   r   rJ  )r   rd  r]   r  r$   rd  r}  rJ  rp  s        r   test___call___miss_wo_alternatez.InterfaceTests.test___call___miss_wo_alternate@  s    ,,,,,,	 	 	 	 		 	 	 		 	 	 	 	 	 	 	 ACC)Q*****r   c                     ddl m}  G d d|          } G d d          } |            }|                      |||           | u            d S )Nr   rc  c                       e Zd ZdS )8InterfaceTests.test___call___miss_w_alternate.<locals>.INr   r-   r   r   r}  r{  O  r   r   r}  c                       e Zd ZdS )8InterfaceTests.test___call___miss_w_alternate.<locals>.CNr   r-   r   r   rJ  r}  R  r   r   rJ  )r   rd  r   rw  s        r   test___call___miss_w_alternatez-InterfaceTests.test___call___miss_w_alternateL  s    ,,,,,,	 	 	 	 		 	 	 		 	 	 	 	 	 	 	 ACC!T

d*+++++r   c                     ddl m} ddlm} d } fd} G d d|          } G d d	          } |            }|d d          }||g|d d <   	                       ||           u            ||d d <   d S # ||d d <   w xY w)
Nr   rc  rX  c                     d S r   r-   rV  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 )6InterfaceTests.test___call___w_adapter_hook.<locals>.INr   r-   r   r   r}  r  b  r   r   r}  c                       e Zd ZdS )6InterfaceTests.test___call___w_adapter_hook.<locals>.CNr   r-   r   r   rJ  r  e  r   r   rJ  )r   rd  r!   rY  r   )	r$   rd  rY  r  r  r}  rJ  rp  old_adapter_hookss	   `        r   test___call___w_adapter_hookz+InterfaceTests.test___call___w_adapter_hookX  s!   ,,,,,,::::::	 	 		 	 	 	 		 	 	 	 		 	 	 		 	 	 	 	 	 	 	 ACC)!!!,!4=aaa	1OOAAaDDDL)))0M!!!0M!!!0000s    A8 8	Bc                 ,   ddl m} ddl m} ddl m  G fdd|          } ||           G d d                      }|                     d	 |t                                           |                     d	 | |                                 d S )
Nr   rc  r  interfacemethodc                   &    e Zd Z d             ZdS ):InterfaceTests.test___call___w_overridden_adapt.<locals>.Ic                     dS Nr  r-   r$   r   s     r   rM  zDInterfaceTests.test___call___w_overridden_adapt.<locals>.I.__adapt__x      rr   Nr   r   r   rM  r  s   r   r}  r  v  s.          _  r   r}  c                       e Zd ZdS ):InterfaceTests.test___call___w_overridden_adapt.<locals>.ONr   r-   r   r   rQ  r  |  r  r   rQ  r  )r   rd  r  r  r"   r   )r$   rd  r  r}  rQ  r  s        @r    test___call___w_overridden_adaptz/InterfaceTests.test___call___w_overridden_adaptq  s    ,,,,,,......222222	 	 	 	 	 	 		 	 	 	 
Q	 	 	 	 	 	 	 
	 	QQvxx[[))) 	QQqqssVV$$$$$r   c                    ddl m} ddl m} ddl m  G fdd|          } G d d|          } ||           G d	 d
                      } ||           G d d                      }|                     d |t                                           |                     d | |                                 |                     d | |                                 |                     t                    5   | |                       d d d            n# 1 swxY w Y   |                     d | |                                 d S )Nr   rc  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   rM  zUInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdapt.__adapt__  r  r   Nr  r  s   r   IAdaptr    .          _  r   r  c                       e Zd ZdZdS )LInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ISimplezNothing special.Nr  r-   r   r   rI  r    s        """"r   rI  c                       e Zd Zd ZdS )NInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24c                     dS N   r-   rI  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-   rI  s     r   r,  z\InterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ConformNone.__conform__  r   r   Nr-  r-   r   r   ConformNoner    s#            r   r  r  r  )r   rd  r  r  r"   r   r]   r  )r$   rd  r  r  rI  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   rc  r  r  c                   0     e Zd Z fd            Z xZS )EInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.Ic                 t    |                      |          sdS t                                          |          S r  )r   superrM  )r$   r   r  s     r   rM  zOInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.I.__adapt__  s4    s++ 2ww((---r   )r   r   r   rM  __classcell__)r  r  s   @r   r}  r    sC        . . . . _. . . . .r   r}  c                       e Zd ZdS )EInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.ONr   r-   r   r   rQ  r    r  r   rQ  r  )sysr   rd  r  r  r"   r   r   )r$   r  rd  r  r}  rQ  or  s          @r   +test___call___w_overridden_adapt_call_superz:InterfaceTests.test___call___w_overridden_adapt_call_super  s   


,,,,,,......222222	. 	. 	. 	. 	. 	. 	.	 	. 	. 	. 
Q	 	 	 	 	 	 	 
	 	QQvxx[[)))ACCa1r   c                     ddl m} ddl m  G fdd|          }|                     d |t	                                           |                     |d                                         d           d S )	Nr   rc  r  c                   ,    e Zd Z d             Zd ZdS )EInterfaceTests.test___adapt___as_method_and_implementation.<locals>.Ic                     dS r  r-   r  s     r   rM  zOInterfaceTests.test___adapt___as_method_and_implementation.<locals>.I.__adapt__  r  r   c                     dS )zThis is a protocolNr-   )to_adapts    r   rM  zOInterfaceTests.test___adapt___as_method_and_implementation.<locals>.I.__adapt__  r  r   Nr  r  s   r   r}  r    s=          _% % % % %r   r}  r  rM  z
(to_adapt))r   rd  r  r"   r   getSignatureStringr$   rd  r}  r  s      @r   +test___adapt___as_method_and_implementationz:InterfaceTests.test___adapt___as_method_and_implementation  s    ,,,,,,222222	% 	% 	% 	% 	% 	% 	%	 	% 	% 	% 	QQvxx[[)));::<<lKKKKKr   c                   	 ddl m} ddl m	  G d d|          } G 	fdd|          } G d d	|          } G d
 d|          } G d d|||          } G 	fdd|          }|                     d |t	                                           |||||fD ]"}|                     t
          |j                   #|||fD ]2}|                     t          |          t          |                     3|                     t          |          t          |                     |                     t          |          t          |                     | 	                    |t          |                     |                     d |t	                                           |                     t          |          t          |                     | 	                    |t          |                     d S )Nr   rc  r  c                       e Zd ZdZdS )@InterfaceTests.test___adapt__inheritance_and_type.<locals>.IRootRootNr  r-   r   r   IRootr    s        JJJr   r  c                   &    e Zd Z d             ZdS )EInterfaceTests.test___adapt__inheritance_and_type.<locals>.IWithAdaptc                     dS r  r-   r  s     r   rM  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   rM  zSInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerived2Adapt.__adapt__  r  r   N)r   r   r   rQ   rM  r  s   r   IDerived2Adaptr    s4        66  _  r   r  r  r  )
r   rd  r  r"   r   r   r   r  assertNotEqualr  )
r$   rd  r  r  r  r  r  r  r*  r  s
            @r   "test___adapt__inheritance_and_typez1InterfaceTests.test___adapt__inheritance_and_type  s   ,,,,,,222222	 	 	 	 	I 	 	 		 	 	 	 	 	 	 	 	 	
	  	  	  	  	 U 	  	  	 	 	 	 	 	 	 	 		$ 	$ 	$ 	$ 	$J
F 	$ 	$ 	$	 	 	 	 	 	 	] 	 	 	 	]]68844555J
MI 	9 	9EXu'78888FJ. 	; 	;ET%[[$y//:::: 	DOOT*-=-=>>>j))4+>+>???j$y//:::^^FHH55666D00$}2E2EFFFnd=.A.ABBBBBr   c                     ddl m} ddl m  G fdd|          }|                      ||           d           |                     |                                d           d S )Nr   rc  r  c                   <    e Zd Z d             Z d             ZdS )9InterfaceTests.test_interfacemethod_is_general.<locals>.Ic                     dS )zReplace an existing methodr  r-   r  s     r   r  zBInterfaceTests.test_interfacemethod_is_general.<locals>.I.__call__	  s	     rr   c                     dS r  r-   r   s    r   this_is_newzEInterfaceTests.test_interfacemethod_is_general.<locals>.I.this_is_new	  r  r   N)r   r   r   r  r  r  s   r   r}  r    sI          _   _  r   r}  r  )r   rd  r  r"   r  r  s      @r   test_interfacemethod_is_generalz.InterfaceTests.test_interfacemethod_is_general  s    ,,,,,,222222		 		 		 		 		 		 			 		 		 		 	4"%%%"-----r   N)7r   r   r   r  r  r  r  r  r	  r  r%  r6  r?  rD  rM  r[  rg  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  r:  rR  rV  rX  rb  rj  rq  rx  r~  r  r  r  r  r  r  r  r-   r   r   r  r  ~  sV       4 4 46 6 68 8 8>: : :,9 9 984 4 4B)5 )5 )5V= = ="8 8 8*: : :.; ; ;F F FA A A2A A A07B 7B 7BrJ J J6 6 6,'8 '8 '8RD D D6 6 6,'8 '8 '8R/ / /- - -/ / /2+ + +D D DA A A.	? 	? 	?4 4 4	= 	= 	=5 5 5 & & &<-M -M -M^3@ 3@ 3@jD D D"2 2 2:N N N2  .= = =*F F F,- - -*$ $ $# # #
+ 
+ 
+
, 
, 
,1 1 12% % %(!4 !4 !4H  .L L L*C *C *CX. . . . .r   r  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )AttributeTestsTestAttributec                     ddl m} |S )Nr   r  )r!   r  )r$   r  s     r   rI   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>)rM   r  r   reprr   
startswithendswithr   r$   r  rs      r   test__repr__w_interfacez&AttributeTests.test__repr__w_interface	  s{    ::LL%TUUWXYYY

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

#455q99999r   c                     |                                  }t          |           |_        t          |          }|                     |t
          dz              d S )Nz.AttributeTests.TestAttribute)rM   r  r   r7  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  )rM   r7  r"   r  s      r   test__str__wo_interfacez&AttributeTests.test__str__wo_interface)	  s6    KKO,,,,,r   N)	r   r   r   rK   rI   r  r  r  r  r-   r   r   r  r  	  sj        "L  Z Z Z: : :H H H- - - - -r   r  c                   `    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )MethodTests
TestMethodc                     ddl m} |S )Nr   r]  )r!   r^  )r$   r^  s     r   rI   zMethodTests._getTargetClass3	  s    333333r   c                     |                                  }|                     |j        i            ddi|_        |                     |j        ddi           |`|                     |j        i            d S rb   )rM   r"   r  r$   r  s     r   test_optional_as_propertyz%MethodTests.test_optional_as_property7	  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  rM   r  r"   r   rL   rK   )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)rM   getSignatureInfor"   rS   )r$   r  infos      r   test_getSignatureInfo_barez&MethodTests.test_getSignatureInfo_bareJ	  s    &&((d<0112666d:.//444j)2...i$///h.....r   c                 ~    |                                  }|                     |                                d           d S )Nz())rM   r"   r  r  s     r   test_getSignatureString_barez(MethodTests.test_getSignatureString_bareS	  s7    2244d;;;;;r   c                     |                                  }dgx|_        |_        |                     |                                d           d S )Nrc   z(foo))rM   r  r  r"   r  r  s     r   'test_getSignatureString_w_only_requiredz3MethodTests.test_getSignatureString_w_only_requiredW	  sH    /4g5FO2244g>>>>>r   c                     |                                  }dgx|_        |_        ddi|_        |                     |                                d           d S )Nrc   r5   z(foo='bar'))rM   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))rM   r  r"   r  r  s     r   !test_getSignatureString_w_varargsz-MethodTests.test_getSignatureString_w_varargsb	  s>    2244i@@@@@r   c                     |                                  }d|_        |                     |                                d           d S )Nr   z(**kw))rM   r  r"   r  r  s     r    test_getSignatureString_w_kwargsz,MethodTests.test_getSignatureString_w_kwargsg	  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)>)	rM   r  r  r   r  r   r  r  r   r  s      r   r  z#MethodTests.test__repr__w_interfacel	  s    ::LL%QRRTUVVV

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

#788!<<<<<r   c                     |                                  }d|_        t          |           |_        t	          |          }|                     |t          dz              d S )Nr   z.MethodTests.TestMethod(**kw))rM   r  r  r   r7  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))rM   r  r7  r"   r  s      r   r  z#MethodTests.test__str__wo_interface	  s>    KK./////r   N)r   r   r   rK   rI   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
@ @ @
Z Z Z= = =H H H0 0 0 0 0r   r  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )Test_fromFunctionc                     ddl m}  ||i |S )Nr   r  )r!   r  )r$   r   r   r  s       r   _callFUTzTest_fromFunction._callFUT	  s)    999999|T(R(((r   c                    d }|                      |          }|                     |                                d           |                     |                                d           |                     |j        d            |                     t          |                                          g            |                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d         d            d S )	Nc                      dS r  r-   r-   r   r   _funcz*Test_fromFunction.test_bare.<locals>._func	  r  r   r  r  r  r  r  r  r  r  r"   rP   rR   r   rS   rT   r  r$   r  r  r   s       r   	test_barezTest_fromFunction.test_bare	  sO   	 	 	u%%))7333+666)4000f7799::B???&&((d<0112666d:.//444j)2...i$///h.....r   c                     ddl m}  G d d|          }d }|                     ||          }|                     |j        |           d S )Nr   r  c                       e Zd ZdS )0Test_fromFunction.test_w_interface.<locals>.IFooNr   r-   r   r   r  r  	  r   r   r  c                      dS r  r-   r-   r   r   r  z1Test_fromFunction.test_w_interface.<locals>._func	  r  r   r   )r!   r  r  r"   r   )r$   r  r  r  r  s        r   test_w_interfacez"Test_fromFunction.test_w_interface	  s    ;;;;;;	 	 	 	 	> 	 	 		 	 	u55)400000r   c                     d }|                      |d          }|                     |                                d           d S )Nc                      dS r  r-   r-   r   r   r  z,Test_fromFunction.test_w_name.<locals>._func	  r  r   anotherName)rL   )r  r"   rP   )r$   r  r  s      r   test_w_namezTest_fromFunction.test_w_name	  sL    	 	 	u=99))=99999r   c                    d }|                      |          }|                                }|                     t          |d                   dg           |                     t          |d                   dg           |                     |d         i            |                     |d         d            |                     |d         d            d S )Nc                     dS r  r-   rc   s    r   r  z5Test_fromFunction.test_w_only_required.<locals>._func	  r  r   r  rc   r  r  r  r  r  r  r"   rS   r  s       r   test_w_only_requiredz&Test_fromFunction.test_w_only_required	  s    	 	 	u%%&&((d<011E7;;;d:.//%999j)2...i$///h.....r   c                    d	d}|                      |          }|                                }|                     t          |d                   dg           |                     t          |d                   g            |                     |d         ddi           |                     |d         d            |                     |d         d            d S )
Nr5   c                     dS r  r-   r&  s    r   r  z0Test_fromFunction.test_w_optional.<locals>._func	  r  r   r  rc   r  r  r  r  r5   r'  r  s       r   test_w_optionalz!Test_fromFunction.test_w_optional	  s    	 	 	 	u%%&&((d<011E7;;;d:.//444j)E5>:::i$///h.....r   c                    d
d}|                      |d          }|                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d	         d            d S )Nr5   c                     dS r  r-   r   s    r   r  z5Test_fromFunction.test_w_optional_self.<locals>._func	  r  r   rm  )imlevelr  r  r  r  r  r+  r'  r  s       r   test_w_optional_selfz&Test_fromFunction.test_w_optional_self	  s    	 	 	 	ua00&&((d<0112666d:.//444j)2...i$///h.....r   c                    d }|                      |          }|                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d           |                     |d         d            d S )Nc                      dS r  r-   r  s    r   r  z/Test_fromFunction.test_w_varargs.<locals>._func	  r  r   r  r  r  r  r   r  r'  r  s       r   test_w_varargsz Test_fromFunction.test_w_varargs	  s    	 	 	u%%&&((d<0112666d:.//444j)2...i&111h.....r   c                    d }|                      |          }|                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d         d           d S )Nc                      dS r  r-   )r   s    r   r  z.Test_fromFunction.test_w_kwargs.<locals>._func	  r  r   r  r  r  r  r  r   r'  r  s       r   test_w_kwargszTest_fromFunction.test_w_kwargs	  s    	 	 	u%%&&((d<0112666d:.//444j)2...i$///h.....r   c                    dd}|                      |          }|                                }|                     t          |d                   ddg           |                     t          |d                   dg           |                     |d         ddi           |                     |d         d	           |                     |d
         d           d S )Nr6   c                     dS r  r-   )rc   r5   r   r   s       r   r  z3Test_fromFunction.test_full_spectrum.<locals>._func	  r  r   r  rc   r5   r  r  r  r   r  r   r6   r'  r  s       r   test_full_spectrumz$Test_fromFunction.test_full_spectrum	  s    	 	 	 	u%%&&((d<011E5>BBBd:.//%999j)E5>:::i&111h.....r   N)r   r   r   r  r  r  r#  r(  r,  r0  r3  r6  r:  r-   r   r   r  r  	  s        ) ) )/ / /1 1 1: : :	/ 	/ 	/	/ 	/ 	// / /$	/ 	/ 	/	/ 	/ 	/	/ 	/ 	/ 	/ 	/r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )Test_fromMethodc                     ddl m}  ||i |S )Nr   )
fromMethod)r!   r>  )r$   r   r   r>  s       r   r  zTest_fromMethod._callFUT	  s)    777777z4&2&&&r   c                     G d d          }|                      |j                  }|                     |                                d           |                     |                                d           |                     |j        d            |                     t          |                                          g            |                                }|                     t          |d                   g            |                     t          |d                   g            |                     |d         i            |                     |d         d            |                     |d	         d            d S )
Nc                       e Zd Zd ZdS ))Test_fromMethod.test_no_args.<locals>.Fooc                     dS r  r-   r   s    r   r5   z-Test_fromMethod.test_no_args.<locals>.Foo.bar	  r  r   Nr  r-   r   r   r   rA  	  rJ  r   r   r5   r  r  r  r  r  r  )	r  r5   r"   rP   rR   r   rS   rT   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>.Foor6   c                     dS r  r-   )r$   rc   r5   r   r   s        r   r5   z3Test_fromMethod.test_full_spectrum.<locals>.Foo.bar
  r  r   Nr9  r  r-   r   r   r   rG  
  s(             r   r   r  rc   r5   r  r  r6   r  r   r  r   )r  r5   r  r"   rS   rC  s       r   r:  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   rc   z.Test_fromMethod.test_w_non_method.<locals>.foo
  r  r   rc   r  r  r  r  r  r  r  )r$   rc   r  r   s       r   test_w_non_methodz!Test_fromMethod.test_w_non_method
  sO   	 	 	s##))5111+666)4000f7799::B???&&((d<0112666d:.//444j)2...i$///h.....r   N)r   r   r   r  rD  r:  rK  r-   r   r   r<  r<  	  sP        ' ' '/ / / 
/ 
/ 
// / / / /r   r<  c                       e Zd Zd Zd ZdS )rn  c                     g | _         d S r   )r  r   s    r   r   zDummyDependent.__init__*
  s    r   c                 :    | j                             |           d S r   )r  rR  )r$   originally_changeds     r   r  zDummyDependent.changed-
  s    /00000r   N)r   r   r   r   r  r-   r   r   rn  rn  (
  s2          1 1 1 1 1r   rn  c                     ddl m} t          | dd           }t          | dd           }|.t          |t	          |                    r||k    s |d          d S d S d S )Nr   rc  rc   r5   r  )r  rd  r#   rs  r  )r   rd  rc   r5   s       r   r	  r	  1
  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   rc  rc   r5   r  )r  rd  r#   )r   rd  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>G
  s%    CCC3 4 4CCCr   )r%  
to_restoreitemssetattr)r$   r%  r   rU  r0  s    `   r   r   z_Monkey.__init__E
  s_    CCCCCCC((** 	( 	(JCFC''''	( 	(r   c                     | S r   r-   r   s    r   	__enter__z_Monkey.__enter__K
  s    r   c                 p    | j                                         D ]\  }}t          | j        ||           d S r   )rW  rX  rY  r%  )r$   exc_typeexc_valexc_tbrU  r0  s         r   __exit__z_Monkey.__exit__N
  sD    ///11 	- 	-JCDKe,,,,	- 	-r   N)r   r   r   r   r[  r`  r-   r   r   r   r   C
  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Unionrc  c                       e Zd ZdS )+TestTypeAnnotations.test___or__.<locals>.I1Nr   r-   r   r   r  ri  Z
  r   r   r  c                       e Zd ZdS )+TestTypeAnnotations.test___or__.<locals>.I2Nr   r-   r   r   r^  rk  \
  r   r   r^  c                   2    e Zd ZU  dz  ed<    z  ed<   dS )*TestTypeAnnotations.test___or__.<locals>.BNr   r   r   r   r   r  )r  r^  s   r   rM  rm  _
  s+         $wJJJ"uHHHHHr   rM  r  typingre  rg  r   rd  r"   r  )r$   re  rg  rd  rM  r  r^  s        @@r   test___or__zTestTypeAnnotations.test___or__U
  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   rd  rf  rc  c                       e Zd ZdS ),TestTypeAnnotations.test___ror__.<locals>.I1Nr   r-   r   r   r  rt  k
  r   r   r  c                       e Zd ZdS )+TestTypeAnnotations.test___ror__.<locals>.ANr   r-   r   r   rP  rv  n
  r   r   rP  c                   2    e Zd ZU dz  ed<    z  ed<   dS )+TestTypeAnnotations.test___ror__.<locals>.BNr   r   rn  )rP  r  s   r   rM  rx  q
  s+         BwJJJtGGGGGr   rM  r  ro  )r$   re  rg  rd  rM  rP  r  s        @@r   test___ror__z TestTypeAnnotations.test___ror__f
  s   ######      ,,,,,,	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	Xb\aeEE	G 	G 	G 	G 	Gr   N)r   r   r   rQ   rq  ry  r-   r   r   rb  rb  R
  s@        44H H H"G G G G Gr   rb  )rQ   unittestzope.interface.testsr   r   r   r   r`  TestCaser   r/   rE   r   r   r   r   r  r?  rD  r\  r  r  r  r  r  r<  rn  r	  r  r   rb  r-   r   r   <module>r}     s_     ( ( ( ( ( ( 1 1 1 1 1 1 6 6 6 6 6 6 &((C C C C CX& C C CB!9 !9 !9 !9 !9x( !9 !9 !9HE( E( E( E( E(8$ E( E( E(P9 9 9 9 9H$5 9 9 9<! ! ! ! !:2! ! !+5 +5 +5 +5 +5< +5 +5 +5\f5 f5 f5 f5 f5 f5 f5 f5R*\ *\ *\ *\ *\? *\ *\ *\Z    0.!*  7 7 7 7 72H4E 7 7 7>Z
 Z
 Z
 Z
 Z
* Z
 Z
 Z
z]1 ]1 ]1 ]1 ]1(+ ]1 ]1 ]1@M. M. M. M. M.X& M. M. M.`$- - - - -\ - - -BW0 W0 W0 W0 W0. W0 W0 W0tk/ k/ k/ k/ k/) k/ k/ k/\// // // // //h' // // //b1 1 1 1 1 1 1 1
C 
C 
C+ + +- - - - - - - -$G $G $G $G $G(+ $G $G $G $G $Gr   