o
    $x`Ti ã                   @   s¤  d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ eƒ Z	G dd„ dej
ƒZG d	d
„ d
ej
ƒZG dd„ dej
ƒZG dd„ dej
ƒZG dd„ deeƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deeej
ƒZG dd„ deej
ƒZG dd„ dej
ƒZG dd„ dej
ƒZG dd „ d ej
ƒZG d!d"„ d"eƒZG d#d$„ d$eƒZG d%d&„ d&ej
ƒZG d'd(„ d(ej
ƒZG d)d*„ d*eƒZd+d,„ Zd-d.„ ZG d/d0„ d0eƒZdS )1zTest Interface implementation
é    N)Ú_skip_under_py3k)ÚMissingSomeAttrs)ÚOptimizationTestMixin)ÚCleanUpc                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚTest_invariantc                    sT   ddl m‰ ddl m} dd„ ‰ G ‡ ‡fdd„dtƒ}|  t||d ƒdˆ gi¡ d S )	Nr   ©Ú	invariant©ÚTAGGED_DATAc                  _   ó   t ƒ ‚©N©ÚNotImplementedError©ÚargsÚkw© r   úE/usr/lib/python3/dist-packages/zope/interface/tests/test_interface.pyÚ_check(   ó   z,Test_invariant.test_w_single.<locals>._checkc                       s   e Zd Z”” ƒ dS )z)Test_invariant.test_w_single.<locals>.FooN©Ú__name__Ú
__module__Ú__qualname__r   ©r   r	   r   r   ÚFoo+   ó    r   Ú
invariants©Úzope.interface.interfacer	   r   ÚobjectÚassertEqualÚgetattr©Úselfr   r   r   r   r   Útest_w_single$   s   ÿzTest_invariant.test_w_singlec                    s`   ddl m‰ ddl m} dd„ ‰dd„ ‰ G ‡ ‡‡fdd	„d	tƒ}|  t||d ƒd
ˆˆ gi¡ d S )Nr   r   r
   c                  _   r   r   r   r   r   r   r   r   5   r   z.Test_invariant.test_w_multiple.<locals>._checkc                  _   r   r   r   r   r   r   r   Ú_another_check8   r   z6Test_invariant.test_w_multiple.<locals>._another_checkc                       s   e Zd Z””ƒ ”” ƒ dS )z+Test_invariant.test_w_multiple.<locals>.FooNr   r   ©r'   r   r	   r   r   r   ;   s    r   r   r   r$   r   r(   r   Útest_w_multiple1   s   
ÿzTest_invariant.test_w_multipleN)r   r   r   r&   r)   r   r   r   r   r   "   s    r   c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTest_taggedValuec                    sJ   ddl m‰  ddl m} G ‡ fdd„dtƒ}|  t||d ƒddgi¡ d S )Nr   ©ÚtaggedValuer
   c                       s   e Zd Z” ddgƒ dS )z+Test_taggedValue.test_w_single.<locals>.FooÚbarÚbazNr   r   r,   r   r   r   I   ó    r   r.   r/   ©r    r-   r   r!   r"   r#   r$   r   r,   r   r&   E   s   ÿzTest_taggedValue.test_w_singlec                    sL   ddl m‰  ddl m} G ‡ fdd„dtƒ}|  t||d ƒdgddœ¡ d S )	Nr   r,   r
   c                       s"   e Zd Z” ddgƒ ” ddƒ dS )z-Test_taggedValue.test_w_multiple.<locals>.Foor.   r/   ÚquxÚspamNr   r   r,   r   r   r   S   s    r   r/   r3   ©r.   r2   r1   r$   r   r,   r   r)   O   s   
ÿz Test_taggedValue.test_w_multiplec                    sJ   ddl m‰  ddl m} G ‡ fdd„dtƒ}|  t||d ƒdddœ¡ d S )	Nr   r,   r
   c                       s,   e Zd Z” ddgƒ ” ddƒ ” ddƒ dS )z9Test_taggedValue.test_w_multiple_overwriting.<locals>.Foor.   r/   r2   r3   ÚfrobNr   r   r,   r   r   r   ^   s    
r   r5   r3   r4   r1   r$   r   r,   r   Útest_w_multiple_overwritingZ   s   ÿz,Test_taggedValue.test_w_multiple_overwritingN)r   r   r   r&   r)   r6   r   r   r   r   r+   C   s    
r+   c                   @   sz   e Zd ZdZdd„ Zddd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚElementTestsÚ	AnElementc                 C   ó   ddl m} |S )Nr   )ÚElement)r    r:   )r%   r:   r   r   r   Ú_getTargetClassk   ó   zElementTests._getTargetClassNc                 C   s   |d u r| j }|  ¡ |ƒS r   )ÚDEFAULT_NAMEr;   )r%   Únamer   r   r   Ú_makeOneo   s   zElementTests._makeOnec                 C   s`   |   ¡ }|  |j| j¡ |  | ¡ | j¡ |  |jd¡ |  | ¡ d¡ |  t| ¡ ƒg ¡ d S )NÚ )	r?   r"   r   r=   ÚgetNameÚ__doc__ÚgetDocÚlistÚgetTaggedValueTags©r%   Úelementr   r   r   Útest_ctor_defaultst   s   zElementTests.test_ctor_defaultsc                 C   s*   |   d¡}|  |jd ¡ |  |jd¡ d S )Nz
An Element)r?   r"   r   rB   rF   r   r   r   Útest_ctor_no_doc_space_in_name|   s   
z+ElementTests.test_ctor_no_doc_space_in_namec                 C   ó   |   ¡ }|  t|jd¡ d S ©NÚnonesuch)r?   ÚassertRaisesÚKeyErrorÚgetTaggedValuerF   r   r   r   Útest_getTaggedValue_miss�   ó   z%ElementTests.test_getTaggedValue_missc                 C   sB   |   ¡ }|  g t| ¡ ƒ¡ | dd¡ |  dgt| ¡ ƒ¡ d S ©NÚfoor.   )r?   r"   rD   ÚgetDirectTaggedValueTagsÚsetTaggedValuerF   r   r   r   Útest_getDirectTaggedValueTags…   s   z*ElementTests.test_getDirectTaggedValueTagsc                 C   ó   |   ¡ }|  | d¡d ¡ d S rK   ©r?   r"   ÚqueryTaggedValuerF   r   r   r   Útest_queryTaggedValue_missŒ   ó   z'ElementTests.test_queryTaggedValue_missc                 C   ó    |   ¡ }|  | dd¡d¡ d S ©NrL   r.   rX   rF   r   r   r   Ú$test_queryTaggedValue_miss_w_default�   ó   z1ElementTests.test_queryTaggedValue_miss_w_defaultc                 C   rJ   rK   )r?   rM   rN   ÚgetDirectTaggedValuerF   r   r   r   Útest_getDirectTaggedValue_miss”   rQ   z+ElementTests.test_getDirectTaggedValue_missc                 C   rW   rK   ©r?   r"   ÚqueryDirectTaggedValuerF   r   r   r   Ú test_queryDirectTaggedValue_miss˜   r[   z-ElementTests.test_queryDirectTaggedValue_missc                 C   r\   r]   rb   rF   r   r   r   Ú*test_queryDirectTaggedValue_miss_w_defaultœ   r_   z7ElementTests.test_queryDirectTaggedValue_miss_w_defaultc                 C   sR   |   ¡ }| dd¡ |  t| ¡ ƒdg¡ |  | d¡d¡ |  | d¡d¡ d S rR   )r?   rU   r"   rD   rE   rO   rY   rF   r   r   r   Útest_setTaggedValue    s
   z ElementTests.test_setTaggedValuec                 C   s.   ddl m} ddlm} |  ¡ }|||ƒ d S )Nr   )ÚIElement©ÚverifyObject)Úzope.interface.interfacesrg   Úzope.interface.verifyri   r?   )r%   rg   ri   rG   r   r   r   Útest_verifies§   s   zElementTests.test_verifiesr   )r   r   r   r=   r;   r?   rH   rI   rP   rV   rZ   r^   ra   rd   re   rf   rl   r   r   r   r   r7   g   s    
r7   c                   @   s0   e Zd Zdd„ ZeZdd„ Zdd„ Zdd„ Zd	S )
ÚGenericSpecificationBaseTestsc                 C   r9   )Nr   )ÚSpecificationBasePy)r    rn   )r%   rn   r   r   r   Ú_getFallbackClass±   r<   z/GenericSpecificationBaseTests._getFallbackClassc                 C   s
   |   ¡ ƒ S r   ©r;   ©r%   r   r   r   r?   ·   ó   
z&GenericSpecificationBaseTests._makeOnec                    óp   ddl m} ddlm‰  |  ¡ }‡ fdd„}t||d�� |  | tƒ ¡¡ W d   ƒ d S 1 s1w   Y  d S )Nr   ©Ú	interface©Ú_emptyc                    ó   ˆ S r   r   ©Úobjrv   r   r   Ú_providedBy¾   ó   zGGenericSpecificationBaseTests.test_providedBy_miss.<locals>._providedBy©Ú
providedBy)	Úzope.interfaceru   Úzope.interface.declarationsrw   r?   Ú_MonkeyÚassertFalser~   r!   )r%   ru   Úsbr{   r   rv   r   Útest_providedBy_missº   ó   "ÿz2GenericSpecificationBaseTests.test_providedBy_missc                    rs   )Nr   rt   rv   c                    rx   r   r   ry   rv   r   r   Ú_implementedByÇ   r|   zMGenericSpecificationBaseTests.test_implementedBy_miss.<locals>._implementedBy©ÚimplementedBy)	r   ru   r€   rw   r?   r�   r‚   rˆ   r!   )r%   ru   rƒ   r†   r   rv   r   Útest_implementedBy_missÃ   r…   z5GenericSpecificationBaseTests.test_implementedBy_missN)r   r   r   ro   r;   r?   r„   r‰   r   r   r   r   rm   ¯   s    	rm   c                   @   ó   e Zd Zdd„ ZdS )ÚSpecificationBaseTestsc                 C   r9   )Nr   )ÚSpecificationBase)r    rŒ   )r%   rŒ   r   r   r   r;   Ñ   r<   z&SpecificationBaseTests._getTargetClassN©r   r   r   r;   r   r   r   r   r‹   Í   ó    r‹   c                   @   ó<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚSpecificationBasePyTestsc                 C   ó$   |   ¡ }i |_|  | tƒ ¡¡ d S r   ©r?   Ú_impliedr‚   ÚisOrExtendsr!   ©r%   rƒ   r   r   r   Útest___call___missØ   ó   z+SpecificationBasePyTests.test___call___missc                 C   ó*   |   ¡ }tƒ }|i i|_|  ||ƒ¡ d S r   ©r?   r!   r“   Ú
assertTrue©r%   rƒ   Útestingr   r   r   Útest___call___hitÝ   ó   
z*SpecificationBasePyTests.test___call___hitc                 C   r‘   r   r’   r•   r   r   r   Útest_isOrExtends_missã   r—   z.SpecificationBasePyTests.test_isOrExtends_missc                 C   r˜   r   r™   r›   r   r   r   Útest_isOrExtends_hitè   rž   z-SpecificationBasePyTests.test_isOrExtends_hitc                    óx   ddl m} |  ¡ ‰G ‡fdd„dtƒ‰ ‡ fdd„}t||d�� |  ˆ tƒ ¡¡ W d   ƒ d S 1 s5w   Y  d S )Nr   rt   c                       ó   e Zd Z” i iZdS )z>SpecificationBasePyTests.test_implementedBy_hit.<locals>._DeclN©r   r   r   r“   r   ©rƒ   r   r   Ú_Declñ   r   r¥   c                    ó   ˆ ƒ S r   r   ry   ©r¥   r   r   r†   ó   r   zGSpecificationBasePyTests.test_implementedBy_hit.<locals>._implementedByr‡   )r   ru   r?   r!   r�   rš   rˆ   )r%   ru   r†   r   ©r¥   rƒ   r   Útest_implementedBy_hitî   ó   "ÿz/SpecificationBasePyTests.test_implementedBy_hitc                    r¡   )Nr   rt   c                       r¢   )z;SpecificationBasePyTests.test_providedBy_hit.<locals>._DeclNr£   r   r¤   r   r   r¥   û   r   r¥   c                    r¦   r   r   ry   r§   r   r   r{   ý   r   zASpecificationBasePyTests.test_providedBy_hit.<locals>._providedByr}   )r   ru   r?   r!   r�   rš   r~   )r%   ru   r{   r   r¨   r   Útest_providedBy_hitø   rª   z,SpecificationBasePyTests.test_providedBy_hitN)	r   r   r   r–   r�   rŸ   r    r©   r«   r   r   r   r   r�   Õ   s    
r�   c                   @   r�   )Ú!NameAndModuleComparisonTestsMixinc                 C   s   |   dd¡S )NÚaÚb)r?   rq   r   r   r   Ú_makeOneToCompare  s   z3NameAndModuleComparisonTestsMixin._makeOneToComparec              	      sš  dd l }|  ¡ }t||ƒ}t|d| ƒ}G ‡ fdd„dtƒ‰ G dd„ dˆ ƒ}G dd„ dˆ ƒ}|  |ƒ jd	¡ |  |ƒ jd	¡ |  t¡� t|ƒ d
ƒ W d   ƒ n1 sTw   Y  |  t¡� t|ƒ dƒ W d   ƒ n1 sow   Y  ||fD ]}|  	||ƒ ƒt
¡ qxG dd„ dˆ ƒ}	|  |||	ƒ ƒ¡ |  	||	ƒ ƒt
¡ G dd„ dtƒ}
|  	||
ƒ ƒt
¡ |  t¡� |||
ƒ ƒ W d   ƒ n1 sÅw   Y  G dd„ dtƒ}|ˆ _|  |¡� t|ƒ d
ƒ W d   ƒ n1 sëw   Y  |  |¡� t|ƒ dƒ W d   ƒ n	1 �sw   Y  ||fD ]:}|  |¡� |||ƒ ƒ W d   ƒ n	1 �s)w   Y  |  |¡� ||ƒ ƒ W d   ƒ n	1 �sDw   Y  �qd S )Nr   z__%s__c                       s   e Zd ZeZ‡ fdd„ZdS )zaNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissingc                    s,   zt  | |¡W S  ty   ˆ j}||ƒ‚w r   )r!   Ú__getattribute__ÚAttributeErrorÚExc)r%   r>   Úexc©ÚRaisesErrorOnMissingr   r   r°     s   þzrNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnMissing.__getattribute__N)r   r   r   r±   r²   r°   r   r´   r   r   rµ     s    rµ   c                   @   s    e Zd Zdd„ Zedd„ ƒZdS )z`NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModulec                 S   ó
   d| _ d S ©NrS   )r   rq   r   r   r   Ú__init__  rr   ziNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__init__c                 S   ó   t ‚r   )r±   rq   r   r   r   r      ó   zkNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__module__N)r   r   r   r¸   Úpropertyr   r   r   r   ÚRaisesErrorOnModule  s    r¼   c                   @   rŠ   )z^NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnNamec                 S   r¶   r·   ©r   rq   r   r   r   r¸   %  rr   zgNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnName.__init__N©r   r   r   r¸   r   r   r   r   ÚRaisesErrorOnName$  r   r¿   rS   r   r   c                   @   s(   e Zd Zdd„ ZeZeZeZeZeZdS )z`NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparisonc                 S   ó   dS ©NTr   )r%   Úotherr   r   r   Ú__eq__6  r|   zgNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparison.__eq__N©	r   r   r   rÃ   Ú__lt__Ú__le__Ú__gt__Ú__ge__Ú__ne__r   r   r   r   ÚAllowsAnyComparison5  s    rÊ   c                   @   s$   e Zd ZdZeZeZeZeZeZdS )z_NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsNoComparisonNrÄ   r   r   r   r   ÚAllowsNoComparisonB  s    rË   c                   @   ó   e Zd ZdS )zXNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.MyExceptionNr   r   r   r   r   ÚMyExceptionO  ó    rÍ   )Úoperatorr¯   r#   r!   r"   r   r   rM   r±   ÚassertIsÚNotImplementedrš   Ú	TypeErrorÚ	Exceptionr²   )r%   r>   rÏ   ÚibÚopÚmethr¼   r¿   ÚclsrÊ   rË   rÍ   r   r´   r   Ú!__check_NotImplemented_comparison  sT   
	ÿÿ	ÿÿÿÿÿ€ýzCNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparisonc                 C   ó   |   d¡ d S )NÚlt©ÚC_NameAndModuleComparisonTestsMixin__check_NotImplemented_comparisonrq   r   r   r   Útest__lt__NotImplemented_  ó   z:NameAndModuleComparisonTestsMixin.test__lt__NotImplementedc                 C   rÙ   )NÚlerÛ   rq   r   r   r   Útest__le__NotImplementedb  rÞ   z:NameAndModuleComparisonTestsMixin.test__le__NotImplementedc                 C   rÙ   )NÚgtrÛ   rq   r   r   r   Útest__gt__NotImplementede  rÞ   z:NameAndModuleComparisonTestsMixin.test__gt__NotImplementedc                 C   rÙ   )NÚgerÛ   rq   r   r   r   Útest__ge__NotImplementedh  rÞ   z:NameAndModuleComparisonTestsMixin.test__ge__NotImplementedN)	r   r   r   r¯   rÜ   rÝ   rà   râ   rä   r   r   r   r   r¬     s    Wr¬   c                   @   sF   e Zd Zdd„ Zdd„ Zddd„Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dS )ÚInterfaceBaseTestsMixinc                 C   r¹   r   r   rq   r   r   r   r;   o  r|   z'InterfaceBaseTestsMixin._getTargetClassc                 C   r9   )Nr   )ÚInterfaceBasePy)r    ræ   )r%   ræ   r   r   r   ro   r  s   z)InterfaceBaseTestsMixin._getFallbackClassFNc                    s"   G ‡ fdd„d|   ¡ ƒ}|||ƒS )Nc                       s    e Zd Zdd„ Z‡ fdd„ZdS )z,InterfaceBaseTestsMixin._makeOne.<locals>.IBc                 S   s   || ƒS r   r   )r%   Úconformr   r   r   Ú_call_conformy  ó   z:InterfaceBaseTestsMixin._makeOne.<locals>.IB._call_conformc                    rx   r   r   ©r%   rz   ©Úobject_should_provider   r   r~   {  r|   z7InterfaceBaseTestsMixin._makeOne.<locals>.IB.providedByN)r   r   r   rè   r~   r   rë   r   r   ÚIBx  s    rí   rp   )r%   rì   r>   Úmodulerí   r   rë   r   r?   w  s   
z InterfaceBaseTestsMixin._makeOnec                    s:   |   d¡}tƒ ‰ G ‡ fdd„dtƒ}|  ||ƒ ƒˆ ¡ d S )NFc                       ó   e Zd Z‡ fdd„ZdS )zUInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adaptedc                    rx   r   r   ©r%   Úiface©Ú	conformedr   r   Ú__conform__ƒ  r|   zaInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adapted.__conform__N©r   r   r   rô   r   rò   r   r   Ú_Adapted‚  r0   rö   ©r?   r!   rÐ   )r%   rÔ   rö   r   rò   r   Ú+test___call___w___conform___returning_value  s   
zCInterfaceBaseTestsMixin.test___call___w___conform___returning_valuec                 C   s8   |   d¡}||  ¡ f}tƒ }tƒ }|  |||ƒ|¡ d S )NF)r?   r;   r!   rÐ   )r%   rÔ   Ú__traceback_info__ÚadaptedÚ	alternater   r   r   Ú7test___call___wo___conform___ob_no_provides_w_alternate‡  s
   
zOInterfaceBaseTestsMixin.test___call___wo___conform___ob_no_provides_w_alternatec                 C   sT   |   d¡}|  t¡�}|tƒ ƒ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )NFzCould not adapt)r?   rM   rÒ   r!   ÚassertInÚstrÚ	exception)r%   rÔ   r³   r   r   r   Ú7test___call___w___conform___ob_no_provides_wo_alternateŽ  s
   
ÿzOInterfaceBaseTestsMixin.test___call___w___conform___ob_no_provides_wo_alternatec                 C   s   t j| |  ¡ dd� d S )Nrô   )Úexpected_missing)r   Útest_raisesr?   rq   r   r   r   Ú6test___call___w_no_conform_catches_only_AttributeError•  s   zNInterfaceBaseTestsMixin.test___call___w_no_conform_catches_only_AttributeError)FNN)
r   r   r   r;   ro   r?   rø   rü   r   r  r   r   r   r   rå   l  s    
rå   c                   @   rŠ   )ÚInterfaceBaseTestsc                 C   r9   )Nr   )ÚInterfaceBase)r    r  )r%   r  r   r   r   r;   �  r<   z"InterfaceBaseTests._getTargetClassNr�   r   r   r   r   r  ™  rŽ   r  c                   @   s*   e Zd ZejZdd„ Zdd„ Zdd„ ZdS )ÚInterfaceBasePyTestsc                 C   s4   |   d¡}G dd„ dtƒ}|ƒ }|  ||ƒ|¡ d S )NTc                   @   rŠ   )zSInterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adaptedc                 S   ó   d S r   r   rð   r   r   r   rô   ª  r|   z_InterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adapted.__conform__Nrõ   r   r   r   r   rö   ©  r   rö   r÷   )r%   rÔ   rö   rú   r   r   r   Ú,test___call___w___conform___miss_ob_provides§  s   
zAInterfaceBasePyTests.test___call___w___conform___miss_ob_providesc                 C   s&   |   d¡}tƒ }|  | |¡|¡ d S rÁ   )r?   r!   rÐ   Ú	__adapt__)r%   rÔ   rú   r   r   r   Útest___adapt___ob_provides¯  s   
z/InterfaceBasePyTests.test___adapt___ob_providesc                    sŽ   ddl m} |  d¡}tƒ }g ‰ ‡ fdd„}dd„ }t|||gd�� |  | |¡|¡ |  ˆ ||fg¡ W d   ƒ d S 1 s@w   Y  d S )	Nr   rt   Fc                    s   ˆ   | |f¡ d S r   ©Úappend©rñ   rz   ©Ú_missedr   r   Ú
_hook_miss¹  ó   zQInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_missc                 S   ó   |S r   r   r  r   r   r   Ú	_hook_hit»  r|   zPInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_hit©Úadapter_hooks)r   ru   r?   r!   r�   rÐ   r	  r"   )r%   ru   rÔ   rú   r  r  r   r  r   Ú(test___adapt___ob_no_provides_uses_hooks´  s   
"þz=InterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooksN)	r   r   r   rå   ro   r;   r  r
  r  r   r   r   r   r  ¢  s
    r  c                   @   s�   e Zd Zdd„ Zefdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚSpecificationTestsc                 C   r9   )Nr   )ÚSpecification)r    r  )r%   r  r   r   r   r;   Ã  r<   z"SpecificationTests._getTargetClassc                 C   s   |t u r	|  ¡ ƒ S |  ¡ |ƒS r   )Ú_markerr;   )r%   Úbasesr   r   r   r?   Ç  s   
zSpecificationTests._makeOnec                 C   sj   ddl m} |  ¡ }|  |jd¡ |  t|jƒd¡ |  ||jv ¡ |  ||jv ¡ |  t|jƒd¡ d S )Nr   ©Ú	Interfacer   é   )	r    r  r?   r"   Ú	__bases__Úlenr“   rš   Ú
dependents)r%   r  Úspecr   r   r   Ú	test_ctorÌ  s   zSpecificationTests.test_ctorc                 C   s@   |   ¡ }tƒ }| |¡ |  t|jƒd¡ |  |j| d¡ d S ©Né   )r?   ÚDummyDependentÚ	subscriber"   r  r   ©r%   r!  Údepr   r   r   Útest_subscribe_first_timeÕ  s
   
z,SpecificationTests.test_subscribe_first_timec                 C   s8   |   ¡ }tƒ }| |¡ | |¡ |  |j| d¡ d S )Nr  )r?   r%  r&  r"   r   r'  r   r   r   Útest_subscribe_againÜ  s
   

z'SpecificationTests.test_subscribe_againc                 C   s"   |   ¡ }tƒ }|  t|j|¡ d S r   )r?   r%  rM   rN   Úunsubscriber'  r   r   r   Útest_unsubscribe_missã  ó   z(SpecificationTests.test_unsubscribe_missc                 C   s\   |   ¡ }tƒ }| |¡ | |¡ | |¡ |  |j| d¡ | |¡ |  ||jv ¡ d S r#  )r?   r%  r&  r+  r"   r   r‚   r'  r   r   r   Útest_unsubscribeè  s   



z#SpecificationTests.test_unsubscribec                 C   s    ddl m} |  ¡ }tƒ }| |¡ G dd„ d|ƒ}G dd„ d|ƒ}|f|_|  |j|g¡ |  |j| d¡ |f|_|  |j 	|¡d ¡ |  |j| d¡ d S )Nr   r  c                   @   rÌ   )zVSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.INr   r   r   r   r   ÚI÷  rÎ   r/  c                   @   rÌ   )zVSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.JNr   r   r   r   r   ÚJù  rÎ   r0  r$  )
r    r  r?   r%  r&  r  r"   Ú_changedr   Úget)r%   r  r!  r(  r/  r0  r   r   r   Ú8test___setBases_subscribes_bases_and_notifies_dependentsò  s   
zKSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependentsc                 C   s^   ddl m} G dd„ d|ƒ}|  ¡ }d|_d|j|< | |¡ |  |j¡ |  ||jv ¡ d S )Nr   r  c                   @   rÌ   )zGSpecificationTests.test_changed_clears_volatiles_and_implied.<locals>.INr   r   r   r   r   r/    rÎ   r/  r   r   )r    r  r?   Ú_v_attrsr“   ÚchangedÚassertIsNoner‚   )r%   r  r/  r!  r   r   r   Ú)test_changed_clears_volatiles_and_implied  s   

z<SpecificationTests.test_changed_clears_volatiles_and_impliedc                 C   sD   ddl m} G dd„ d|ƒ}|  ||g¡}|  t| ¡ ƒ|g¡ d S )Nr   r  c                   @   rÌ   )zCSpecificationTests.test_interfaces_skips_already_seen.<locals>.IFooNr   r   r   r   r   ÚIFoo  rÎ   r8  )r    r  r?   r"   rD   Ú
interfaces©r%   r  r8  r!  r   r   r   Ú"test_interfaces_skips_already_seen  s   z5SpecificationTests.test_interfaces_skips_already_seenc                 C   s>   ddl m} G dd„ d|ƒ}|  |¡}|  |j|dd�¡ d S )Nr   r  c                   @   rÌ   )z<SpecificationTests.test_extends_strict_wo_self.<locals>.IFooNr   r   r   r   r   r8    rÎ   r8  T©Ústrict)r    r  r?   r‚   Úextendsr:  r   r   r   Útest_extends_strict_wo_self  s   
z.SpecificationTests.test_extends_strict_wo_selfc                 C   ó    |   ¡ }|  |j|dd�¡ d S )NTr<  )r?   r‚   r>  ©r%   r!  r   r   r   Útest_extends_strict_w_self  r_   z-SpecificationTests.test_extends_strict_w_selfc                 C   r@  )NFr<  )r?   rš   r>  rA  r   r   r   Útest_extends_non_strict_w_self  r_   z1SpecificationTests.test_extends_non_strict_w_selfc                 C   s0   |   ¡ }tƒ }d|i|_|  | d¡|u ¡ d S r·   )r?   r!   r4  rš   r2  )r%   r!  rS   r   r   r   Útest_get_hit_w__v_attrs#  s   
z*SpecificationTests.test_get_hit_w__v_attrsc                    s†   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  ||g¡}|  | d¡| d¡u ¡ |  | d	¡| d	¡u ¡ d S )
Nr   ©Ú	Attributer  c                       ó   e Zd Z” dƒZdS )zCSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IFoorS   N)r   r   r   rS   r   rE  r   r   r8  ,  r   r8  c                       rG  )zCSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IBarr.   N©r   r   r   r.   r   rE  r   r   ÚIBar.  r   rI  rS   r.   )r    rF  r  r?   rš   r2  )r%   r  r8  rI  r!  r   rE  r   Ú"test_get_hit_from_base_wo__v_attrs)  s   z5SpecificationTests.test_get_hit_from_base_wo__v_attrsc           
   	   C   sÀ   ddl m} ddlm} ddlm} G dd„ d|ƒ}G dd„ dtƒ}G d	d
„ d
|ƒ}G dd„ d|ƒ}||ƒG dd„ dtƒƒ}G dd„ d||ƒ}	|  ||	ƒj||	ƒ||ƒ|||ƒ|tƒ|f¡ d S )Nr   r  ©Úimplementerr‡   c                   @   rÌ   )zTSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IDefaultViewNameNr   r   r   r   r   ÚIDefaultViewName>  rÎ   rM  c                   @   rÌ   )zKSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ContextNr   r   r   r   r   ÚContextA  rÎ   rN  c                   @   rÌ   )zLSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.RDBModelNr   r   r   r   r   ÚRDBModelD  rÎ   rO  c                   @   rÌ   )zJSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IOtherNr   r   r   r   r   ÚIOtherG  rÎ   rP  c                   @   rÌ   )zMSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.OtherBaseNr   r   r   r   r   Ú	OtherBaseJ  ó    rQ  c                   @   rÌ   )zISpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ModelNr   r   r   r   r   ÚModelN  rÎ   rS  )r    r  r€   rL  rˆ   r!   r"   Ú__sro__)
r%   r  rL  rˆ   rM  rN  rO  rP  rQ  rS  r   r   r   Ú'test_multiple_inheritance_no_interfaces4  s(   úþz:SpecificationTests.test_multiple_inheritance_no_interfacesN)r   r   r   r;   r  r?   r"  r)  r*  r,  r.  r3  r7  r;  r?  rB  rC  rD  rJ  rU  r   r   r   r   r  Á  s"    	
r  c                   @   sš  e Zd Zdd„ Z		dfdd„Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Z d@dA„ Z!dBdC„ Z"dDdE„ Z#dFdG„ Z$dHdI„ Z%dJdK„ Z&dLdM„ Z'dNdO„ Z(dPdQ„ Z)dRdS„ Z*dTdU„ Z+dVdW„ Z,dXdY„ Z-dZd[„ Z.d\d]„ Z/d^d_„ Z0d`da„ Z1dbdc„ Z2ddde„ Z3dS )gÚInterfaceClassTestsc                 C   r9   )Nr   ©ÚInterfaceClass)r    rX  )r%   rX  r   r   r   r;   `  r<   z#InterfaceClassTests._getTargetClassÚITestr   Nc                 C   s   |   ¡ |||||ƒS r   rp   )r%   r>   r  ÚattrsrB   r   r   r   r   r?   d  s   zInterfaceClassTests._makeOnec                 C   sN   |   ¡ }|dƒ}|  |jd¡ |  |jd¡ |  |jd¡ |  | ¡ d¡ d S )NÚITestingr@   r   )r;   r"   r   rB   r  ÚgetBases)r%   ÚklassÚinstr   r   r   rH   h  s   z&InterfaceClassTests.test_ctor_defaultsc                 C   s    |   ¡ }|  t|dtƒ f¡ d S )Nr[  )r;   rM   rÒ   r!   )r%   r]  r   r   r   Útest_ctor_bad_basesp  r_   z'InterfaceClassTests.test_ctor_bad_basesc                 C   sŠ   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}|  ¡ }|d	|d
�}|  |jd	¡ |  |jd¡ |  |jd¡ |  | ¡ | 	¡ ¡ d S )Nr   rE  ©ÚfromFunctionc                   S   rÀ   ©Ú	DOCSTRINGNr   r   r   r   r   Ú_barw  ó    zBInterfaceClassTests.test_ctor_w_attrs_attrib_methods.<locals>._barr   r@   ©rS   r.   r[  ©rZ  r   )
r    rF  ra  r;   r"   r   rB   r  ÚnamesÚkeys)r%   rF  ra  rd  ÚATTRSr]  r^  r   r   r   Ú test_ctor_w_attrs_attrib_methodst  s   ÿz4InterfaceClassTests.test_ctor_w_attrs_attrib_methodsc                 C   ó^   di i}|   ¡ }|d|d�}|  |jd¡ |  |jd¡ |  |jd¡ |  t| ¡ ƒg ¡ d S )NÚ
__locals__r[  rg  r@   r   ©r;   r"   r   rB   r  rD   rh  ©r%   rj  r]  r^  r   r   r   Útest_ctor_attrs_w___locals__ƒ  ó   z0InterfaceClassTests.test_ctor_attrs_w___locals__c                 C   rl  )NÚ__annotations__r[  rg  r@   r   rn  ro  r   r   r   Ú!test_ctor_attrs_w___annotations__Œ  rq  z5InterfaceClassTests.test_ctor_attrs_w___annotations__c                 C   sj   ddl m} d|i}|  ¡ }|d|d�}|  |jd¡ |  |jd¡ |  |jd¡ |  t| ¡ ƒg ¡ d S )Nr   )Ú_decorator_non_returnÚdropmer[  rg  r@   r   )	r    rt  r;   r"   r   rB   r  rD   rh  )r%   rt  rj  r]  r^  r   r   r   Ú'test_ctor_attrs_w__decorator_non_return•  s   z;InterfaceClassTests.test_ctor_attrs_w__decorator_non_returnc                 C   s4   ddl m} dtƒ i}|  ¡ }| j||d|d� d S )Nr   )ÚInvalidInterfaceÚinvalidr[  rg  )Úzope.interface.exceptionsrw  r!   r;   rM   )r%   rw  rj  r]  r   r   r   Ú#test_ctor_attrs_w_invalid_attr_typeŸ  s   
z7InterfaceClassTests.test_ctor_attrs_w_invalid_attr_typec                 C   s0   ddi}|   ¡ }|d|dd�}|  |jd¡ d S )NrB   ÚATTRr[  ÚEXPLICIT)rZ  rB   )r;   r"   rB   ro  r   r   r   Útest_ctor_w_explicit___doc__¥  s   z0InterfaceClassTests.test_ctor_w_explicit___doc__c                 C   s"   |   ¡ }|  t| ¡ ƒ|g¡ d S r   )r?   r"   rD   r9  rð   r   r   r   Útest_interfaces«  s   z#InterfaceClassTests.test_interfacesc                 C   s.   |   ¡ }| j d|fd�}|  | ¡ |f¡ d S ©NÚISub)r  )r?   r"   r\  ©r%   rñ   Úsubr   r   r   Útest_getBases¯  s   z!InterfaceClassTests.test_getBasesc                 C   s   |   ¡ }|  | |¡¡ d S r   )r?   rš   ÚisEqualOrExtendedByrð   r   r   r   Ú!test_isEqualOrExtendedBy_identity´  rQ   z5InterfaceClassTests.test_isEqualOrExtendedBy_identityc                 C   s<   |   ¡ }| j d|fd�}|  | |¡¡ |  | |¡¡ d S r  )r?   rš   r„  r‚   r�  r   r   r   Ú!test_isEqualOrExtendedBy_subiface¸  s   z5InterfaceClassTests.test_isEqualOrExtendedBy_subifacec                 C   s8   |   d¡}|   d¡}|  | |¡¡ |  | |¡¡ d S )NÚOneÚAnother)r?   r‚   r„  )r%   ÚoneÚanotherr   r   r   Ú"test_isEqualOrExtendedBy_unrelated¾  s   

z6InterfaceClassTests.test_isEqualOrExtendedBy_unrelatedc                 C   s€   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}d	|d
dƒi}| jd|d�}| jd|f|d�}|  t|jdd�ƒd	g¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  Ç  re  zFInterfaceClassTests.test_names_w_all_False_ignores_bases.<locals>._barr   r@   rf  r/   ÚBazÚIBaserg  ÚIDerived©r  rZ  F©Úall©r    rF  ra  r?   r"   Úsortedrh  ©r%   rF  ra  rd  Ú
BASE_ATTRSÚDERIVED_ATTRSÚbaseÚderivedr   r   r   Ú$test_names_w_all_False_ignores_basesÄ  s   ÿz8InterfaceClassTests.test_names_w_all_False_ignores_basesc                 C   s`   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  t|jd
d�ƒddg¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  Õ  re  z@InterfaceClassTests.test_names_w_all_True_no_bases.<locals>._barr   r@   rf  rg  Tr�  r.   rS   r’  ©r%   rF  ra  rd  rj  r‰  r   r   r   Útest_names_w_all_True_no_basesÒ  s   ÿ z2InterfaceClassTests.test_names_w_all_True_no_basesc                 C   s‚   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}d	|d
dƒi}| jd|d�}| jd|f|d�}|  t|jdd�ƒg d¢¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  à  re  zFInterfaceClassTests.test_names_w_all_True_w_bases_simple.<locals>._barr   r@   rf  r/   rŒ  r�  rg  rŽ  r�  Tr�  ©r.   r/   rS   r’  r”  r   r   r   Ú$test_names_w_all_True_w_bases_simpleÝ  s   ÿ z8InterfaceClassTests.test_names_w_all_True_w_bases_simplec           	      C   s�   ddl m} ddl m} dd„ }dd„ }|dd	ƒ||ƒd
œ}||ƒ|dd	ƒdœ}| jd|d�}| jd|f|d�}|  t|jdd�ƒg d¢¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  î  re  zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._barc                   S   rÀ   rb  r   r   r   r   r   Ú_fooð  re  zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._foor   r@   rf  rŒ  ©rS   r/   r�  rg  rŽ  r�  Tr�  rœ  r’  ©	r%   rF  ra  rd  rž  r•  r–  r—  r˜  r   r   r   Ú(test_names_w_all_True_bases_w_same_namesë  s   ÿÿ z<InterfaceClassTests.test_names_w_all_True_bases_w_same_namesc           	      C   sˆ   ddl m} ddl m} dd„ }dd„ }|dd	ƒ||ƒd
œ}||ƒ|dd	ƒdœ}| jd|d�}| jd|f|d�}|  t|ƒg d¢¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  ÿ  re  z/InterfaceClassTests.test___iter__.<locals>._barc                   S   rÀ   rb  r   r   r   r   r   rž    re  z/InterfaceClassTests.test___iter__.<locals>._foor   r@   rf  rŒ  rŸ  r�  rg  rŽ  r�  rœ  )r    rF  ra  r?   r"   r“  r   r   r   r   Útest___iter__ü  s   ÿÿz!InterfaceClassTests.test___iter__c                 C   sˆ   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}d	|d
dƒi}| jd|d�}| jd|f|d�}|  t|jdd�ƒd	|d	 fg¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd    re  zUInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases.<locals>._barr   r@   rf  r/   rŒ  r�  rg  rŽ  r�  Fr�  ©r    rF  ra  r?   r"   r“  ÚnamesAndDescriptionsr”  r   r   r   Ú3test_namesAndDescriptions_w_all_False_ignores_bases  s   ÿÿzGInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_basesc                 C   sp   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  t|jd
d�ƒd|d fd|d fg¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd     re  zOInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases.<locals>._barr   r@   rf  rg  Fr�  r.   rS   r£  rš  r   r   r   Ú-test_namesAndDescriptions_w_all_True_no_bases  s   ÿ

ÿÿzAInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_basesc                 C   sœ   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}d	|d
dƒi}| jd|d�}| jd|f|d�}|  t|jdd�ƒd|d fd	|d	 fd|d fg¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  .  re  zMInterfaceClassTests.test_namesAndDescriptions_w_all_True_simple.<locals>._barr   r@   rf  r/   rŒ  r�  rg  rŽ  r�  Tr�  r.   rS   r£  r”  r   r   r   Ú+test_namesAndDescriptions_w_all_True_simple+  s   ÿ


þÿz?InterfaceClassTests.test_namesAndDescriptions_w_all_True_simplec           	      C   sª   ddl m} ddl m} dd„ }dd„ }|dd	ƒ||ƒd
œ}||ƒ|dd	ƒdœ}| jd|d�}| jd|f|d�}|  t|jdd�ƒd|d fd|d fd|d fg¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  @  re  zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._barc                   S   rÀ   rb  r   r   r   r   r   rž  B  re  zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._foor   r@   rf  rŒ  rŸ  r�  rg  rŽ  r�  Tr�  r.   r/   rS   r£  r   r   r   r   Ú7test_namesAndDescriptions_w_all_True_bases_w_same_names=  s$   ÿÿ


þÿzKInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_namesc                 C   rJ   rK   )r?   rM   rN   ÚgetDescriptionFor©r%   r‰  r   r   r   Útest_getDescriptionFor_missR  rQ   z/InterfaceClassTests.test_getDescriptionFor_missc                 C   sp   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  | d
¡|d
 ¡ |  | d¡|d ¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  Y  re  z<InterfaceClassTests.test_getDescriptionFor_hit.<locals>._barr   r@   rf  rg  rS   r.   )r    rF  ra  r?   r"   r©  rš  r   r   r   Útest_getDescriptionFor_hitV  s   ÿz.InterfaceClassTests.test_getDescriptionFor_hitc                    s$   |   ¡ ‰ ‡ fdd„}|  t|¡ d S )Nc                      s   ˆ d S rK   r   r   ©r‰  r   r   Ú_testd  ré   z8InterfaceClassTests.test___getitem___miss.<locals>._test)r?   rM   rN   )r%   r®  r   r­  r   Útest___getitem___missb  s   z)InterfaceClassTests.test___getitem___missc                 C   sl   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  |d
 |d
 ¡ |  |d |d ¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  k  re  z6InterfaceClassTests.test___getitem___hit.<locals>._barr   r@   rf  rg  rS   r.   )r    rF  ra  r?   r"   rš  r   r   r   Útest___getitem___hith  s   ÿz(InterfaceClassTests.test___getitem___hitc                 C   s   |   ¡ }|  d|v ¡ d S rK   )r?   r‚   rª  r   r   r   Útest___contains___misst  s   z*InterfaceClassTests.test___contains___missc                 C   s`   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  d
|v ¡ |  d|v ¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  {  re  z7InterfaceClassTests.test___contains___hit.<locals>._barr   r@   rf  rg  rS   r.   )r    rF  ra  r?   rš   rš  r   r   r   Útest___contains___hitx  s   ÿz)InterfaceClassTests.test___contains___hitc                 C   rW   rK   )r?   r"   Údirectrª  r   r   r   Útest_direct_miss„  r[   z$InterfaceClassTests.test_direct_missc           	      C   s²   ddl m} ddl m} dd„ }dd„ }|dd	ƒ||ƒd
œ}||ƒ|dd	ƒdœ}| jd|d�}| jd|f|d�}|  | d¡|d ¡ |  | d¡|d ¡ |  | d¡d ¡ d S )Nr   rE  r`  c                   S   rÀ   rb  r   r   r   r   r   rd  ‹  re  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._barc                   S   rÀ   rb  r   r   r   r   r   rž  �  re  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._foor   r@   rf  rŒ  rŸ  r�  rg  rŽ  r�  rS   r/   r.   )r    rF  ra  r?   r"   r³  r   r   r   r   Ú test_direct_hit_local_miss_basesˆ  s   ÿÿz4InterfaceClassTests.test_direct_hit_local_miss_basesc                 C   rW   rK   )r?   r"   ÚqueryDescriptionForrð   r   r   r   Útest_queryDescriptionFor_miss›  r[   z1InterfaceClassTests.test_queryDescriptionFor_missc                 C   s@   ddl m} d|ddƒi}| j|d�}|  | d¡|d ¡ d S )Nr   rE  ÚattrÚTitleÚDescriptionrg  )r   rF  r?   r"   r¶  )r%   rF  rj  rñ   r   r   r   Útest_queryDescriptionFor_hitŸ  s   z0InterfaceClassTests.test_queryDescriptionFor_hitc                    sV   g ‰ ‡ fdd„}|   ¡ }tƒ }| d|g¡ |  | |¡d ¡ |  ˆ |fi fg¡ d S )Nc                     ó   ˆ   | |f¡ dS rÁ   r  r   ©Ú_called_withr   r   Ú	_passable§  ó   zCInterfaceClassTests.test_validateInvariants_pass.<locals>._passabler   )r?   r!   rU   r"   ÚvalidateInvariants)r%   r¿  rñ   rz   r   r½  r   Útest_validateInvariants_pass¥  s   z0InterfaceClassTests.test_validateInvariants_passc                    sˆ   ddl m‰  g ‰‡fdd„}g ‰‡ ‡fdd„}|  ¡ }tƒ }| d||g¡ |  ˆ |j|¡ |  ˆ|fi fg¡ |  ˆ|fi fg¡ d S )Nr   ©ÚInvalidc                     r¼  rÁ   r  r   ©Ú_passable_called_withr   r   r¿  ³  rÀ  zTInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._passablec                     ó   ˆ  | |f¡ ˆ ‚r   r  r   ©rÄ  Ú_fail_called_withr   r   Ú_fail·  rÀ  zPInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._failr   ©ry  rÄ  r?   r!   rU   rM   rÁ  r"   )r%   r¿  rÊ  rñ   rz   r   ©rÄ  rÉ  rÆ  r   Ú-test_validateInvariants_fail_wo_errors_passed°  s   zAInterfaceClassTests.test_validateInvariants_fail_wo_errors_passedc                    sŒ   ddl m‰  g }g ‰‡ ‡fdd„}|  ¡ }tƒ }| d|g¡ |  ˆ |j||¡ |  ˆ|fi fg¡ |  t|ƒd¡ |  	t
|d ˆ ƒ¡ d S )Nr   rÃ  c                     rÇ  r   r  r   rÈ  r   r   rÊ  Å  rÀ  zOInterfaceClassTests.test_validateInvariants_fail_w_errors_passed.<locals>._failr   r$  ©ry  rÄ  r?   r!   rU   rM   rÁ  r"   r  rš   Ú
isinstance)r%   Ú_errorsrÊ  rñ   rz   r   rÈ  r   Ú,test_validateInvariants_fail_w_errors_passedÁ  s   z@InterfaceClassTests.test_validateInvariants_fail_w_errors_passedc                    s¤   ddl m‰  g ‰‡fdd„}g ‰‡ ‡fdd„}|  d¡}|  d|f¡}tƒ }| d	|g¡ | d	|g¡ |  ˆ |j|¡ |  ˆ|fi fg¡ |  ˆ|fi fg¡ d S )
Nr   rÃ  c                     r¼  rÁ   r  r   rÅ  r   r   r¿  Ó  rÀ  z\InterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._passablec                     rÇ  r   r  r   rÈ  r   r   rÊ  ×  rÀ  zXInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._failr�  rŽ  r   rË  )r%   r¿  rÊ  r—  r˜  rz   r   rÌ  r   Ú5test_validateInvariants_fail_in_base_wo_errors_passedÐ  s   
zIInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passedc                    sÎ   ddl m‰  g }g ‰‡fdd„}g ‰‡ ‡fd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   rÃ  c                     r¼  rÁ   r  r   rÅ  r   r   r¿  ç  rÀ  z[InterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._passablec                     rÇ  r   r  r   rÈ  r   r   rÊ  ë  rÀ  zWInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._failr�  rŽ  r   r$  rÎ  )r%   rÐ  r¿  rÊ  r—  r˜  rz   r   rÌ  r   Ú4test_validateInvariants_fail_in_base_w_errors_passedã  s    
zHInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passedc                    sZ   g ‰ ‡ fdd„}t ƒ }|  d¡}| d|g¡ |  d|f¡}| |¡ |  dtˆ ƒ¡ d S )Nc                     r¼  rÁ   r  r   rÅ  r   r   r¿  ü  rÀ  zbInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_times.<locals>._passabler�  r   rŽ  r$  )r!   r?   rU   rÁ  r"   r  )r%   r¿  rz   r—  r˜  r   rÅ  r   Ú;test_validateInvariants_inherited_not_called_multiple_timesù  s   

zOInterfaceClassTests.test_validateInvariants_inherited_not_called_multiple_timesc                 C   s   |   d¡}|  | ¡ d¡ d S )NÚPickleMe)r?   r"   Ú
__reduce__rð   r   r   r   Útest___reduce__  s   
z#InterfaceClassTests.test___reduce__c                 C   s"   |   d¡}|  t|ƒtdƒ¡ d S )NÚHashMe)rØ  z#zope.interface.tests.test_interface)r?   r"   Úhashrð   r   r   r   Útest___hash___normal  s   

ÿz(InterfaceClassTests.test___hash___normalc                 C   sR   G dd„ d|   ¡ ƒ}|ƒ }|  t¡� t|ƒ W d   ƒ d S 1 s"w   Y  d S )Nc                   @   rŠ   )zIInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derivedc                 S   r  r   r   rq   r   r   r   r¸     r|   zRInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derived.__init__Nr¾   r   r   r   r   ÚDerived  r   rÛ  )r;   rM   r±   rÙ  )r%   rÛ  r˜  r   r   r   Ú$test___hash___missing_required_attrs  s
   
"ÿz8InterfaceClassTests.test___hash___missing_required_attrsc                 C   s´   |   ¡ }|  |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   ©r?   rš   r‚   rð   r   r   r   Útest_comparison_with_None  s   z-InterfaceClassTests.test_comparison_with_Nonec                 C   s`   |   ¡ }|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ d S r   )r?   r‚   rš   rð   r   r   r   Ú"test_comparison_with_same_instance*  s   z6InterfaceClassTests.test_comparison_with_same_instancec                 C   sÈ   | j ddd�}| j 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Â   r   r   r   Ú8test_comparison_with_same_named_instance_in_other_module5  s   zLInterfaceClassTests.test_comparison_with_same_named_instance_in_other_modulec                    sâ   G dd„ dt ƒ‰ G ‡ fdd„d|  ¡ ƒ}|  d¡}|  ||  ¡ ¡ |  t|ƒ|  ¡ ¡ |  t¡� |dƒ W d   ƒ n1 s?w   Y  ||_|  ||¡ |  t|ƒ|¡ |  ˆ ¡� |dƒ W d   ƒ d S 1 sjw   Y  d S )Nc                   @   rÌ   )zDInterfaceClassTests.test_assignment_to__class__.<locals>.MyExceptionNr   r   r   r   r   rÍ   I  rÎ   rÍ   c                       rï   )zIInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClassc                    s   ˆ |ƒ‚r   r   )r%   Útarget©rÍ   r   r   Ú__call__M  ré   zRInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClass.__call__N©r   r   r   rä  r   rã  r   r   ÚMyInterfaceClassL  r0   ræ  rà  r$  )	rÓ   r;   r?   ÚassertIsInstancerÐ   ÚtyperM   rÒ   Ú	__class__)r%   ræ  r8  r   rã  r   Útest_assignment_to__class__G  s   

ÿ
"ÿz/InterfaceClassTests.test_assignment_to__class__c                 C   s¶   ddl m} G dd„ d|  ¡ ƒ}|d|fƒ}|  |dƒd¡ G dd	„ d	|ƒ}|  |dƒd¡ G d
d„ d|ƒ}|  t¡� |ƒ  W d   ƒ n1 sIw   Y  ||_|  |dƒd¡ d S )Nr   r  c                   @   rŠ   )zJInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClassc                 W   r  r   r   )r%   r   r   r   r   rä  d  r|   zSInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClass.__call__Nrå  r   r   r   r   ræ  c  r   ræ  r8  r$  )r$  c                   @   rÌ   )z>InterfaceClassTests.test_assignment_to__class__2.<locals>.IBarNr   r   r   r   r   rI  j  rÎ   rI  c                   @   rÌ   )z?InterfaceClassTests.test_assignment_to__class__2.<locals>.ISpamNr   r   r   r   r   ÚISpamo  rÎ   rë  )r   r  r;   r"   rM   rÒ   ré  )r%   r  ræ  r8  rI  rë  r   r   r   Útest_assignment_to__class__2^  s   ÿz0InterfaceClassTests.test_assignment_to__class__2c                 C   sB   |   ¡ }|  ttf¡� d|_W d   ƒ d S 1 sw   Y  d S )Nzdifferent.module)r?   rM   r±   rÒ   r   )r%   r^  r   r   r   Útest__module__is_readonlyx  s   "ýz-InterfaceClassTests.test__module__is_readonly)rY  r   NNN)4r   r   r   r;   r?   rH   r_  rk  rp  rs  rv  rz  r}  r~  rƒ  r…  r†  r‹  r™  r›  r�  r¡  r¢  r¥  r¦  r§  r¨  r«  r¬  r¯  r°  r±  r²  r´  rµ  r·  r»  rÂ  rÍ  rÑ  rÒ  rÓ  rÔ  r×  rÚ  rÜ  rÞ  rß  rá  rê  rì  rí  r   r   r   r   rV  ^  sh    
ÿ		
rV  c                   @   s¸  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%e&dGdH„ ƒZ'dIdJ„ Z(dKdL„ Z)dMdN„ Z*dOdP„ Z+dQdR„ Z,dSdT„ Z-dUdV„ Z.dWdX„ Z/dYdZ„ Z0d[d\„ Z1d]d^„ Z2d_d`„ Z3dadb„ Z4dcdd„ Z5dedf„ Z6dgdh„ Z7didj„ Z8dkS )lÚInterfaceTestsc                    sD   ddl m} ddl m‰  G ‡ fdd„d|ƒ}|  |d j|u ¡ d S )Nr   r  rE  c                       rG  )z<InterfaceTests.test_attributes_link_to_interface.<locals>.I1úMy attrN)r   r   r   r¸  r   rE  r   r   ÚI1†  r   rð  r¸  )r   r  rF  rš   ru   ©r%   r  rð  r   rE  r   Ú!test_attributes_link_to_interface‚  s   z0InterfaceTests.test_attributes_link_to_interfacec                 C   s4   ddl m} G dd„ d|ƒ}|  |d j|u ¡ d S )Nr   r  c                   @   rŠ   )z9InterfaceTests.test_methods_link_to_interface.<locals>.I1c                 S   rÀ   ©zA methodNr   )rS   r.   Úbingor   r   r   Úmethod�  re  z@InterfaceTests.test_methods_link_to_interface.<locals>.I1.methodN©r   r   r   rõ  r   r   r   r   rð  Ž  ó    rð  rõ  )r   r  rš   ru   rñ  r   r   r   Útest_methods_link_to_interface‹  s   z-InterfaceTests.test_methods_link_to_interfacec                    sÖ   ddl m} ddl m} ddl m} G dd„ d|ƒ‰ G dd„ d|ƒ}G ‡ fd	d
„d
tƒ}|ƒ }|  ˆ  |¡¡ |  | |¡¡ |  ˆ ˆ ¡ |  ˆ ||ƒv ¡ |  |||ƒv ¡ |  ˆ ||ƒv ¡ |  |||ƒv ¡ d S )Nr   r  r‡   r}   c                   @   r   )z<InterfaceTests.test_classImplements_simple.<locals>.ICurrentc                 S   r  r   r   ©r­   r®   r   r   r   Úmethod1›  r|   zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method1c                 S   r  r   r   rù  r   r   r   Úmethod2�  r|   zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method2N)r   r   r   rú  rû  r   r   r   r   ÚICurrentš  ó    rü  c                   @   rÌ   )z:InterfaceTests.test_classImplements_simple.<locals>.IOtherNr   r   r   r   r   rP     rÎ   rP  c                       s    e Zd Z” Zdd„ Zdd„ ZdS )z;InterfaceTests.test_classImplements_simple.<locals>.Currentc                 S   r   r   r   ©r%   r­   r®   r   r   r   rú  ¥  r   zCInterfaceTests.test_classImplements_simple.<locals>.Current.method1c                 S   r   r   r   rþ  r   r   r   rû  §  r   zCInterfaceTests.test_classImplements_simple.<locals>.Current.method2N)r   r   r   Ú__implemented__rú  rû  r   ©rü  r   r   ÚCurrent£  s    r  )r   r  rˆ   r~   r!   rš   r‚   r"   )r%   r  rˆ   r~   rP  r  Úcurrentr   r   r   Útest_classImplements_simple•  s   z*InterfaceTests.test_classImplements_simplec                    sÈ   ddl m} ddl m} ddl m} G dd„ d|ƒ‰ G dd„ dˆ ƒ}G ‡ fd	d
„d
ƒ}|ƒ }|  ˆ  |¡¡ |  | |¡¡ |  ˆ ||ƒv ¡ |  |||ƒv ¡ |  ˆ ||ƒv ¡ |  |||ƒv ¡ d S )Nr   r  r‡   r}   c                   @   rŠ   )zCInterfaceTests.test_classImplements_base_not_derived.<locals>.IBasec                   S   r  r   r   r   r   r   r   rõ  ¹  r|   zJInterfaceTests.test_classImplements_base_not_derived.<locals>.IBase.methodNrö  r   r   r   r   r�  ¸  r   r�  c                   @   rÌ   )zFInterfaceTests.test_classImplements_base_not_derived.<locals>.IDerivedNr   r   r   r   r   rŽ  »  rÎ   rŽ  c                       ó   e Zd Z” Zdd„ ZdS )zEInterfaceTests.test_classImplements_base_not_derived.<locals>.Currentc                 S   r   r   r   rq   r   r   r   rõ  ¿  r   zLInterfaceTests.test_classImplements_base_not_derived.<locals>.Current.methodN©r   r   r   rÿ  rõ  r   ©r�  r   r   r  ½  ó    r  )r   r  rˆ   r~   rš   r‚   )r%   r  rˆ   r~   rŽ  r  r  r   r  r   Ú%test_classImplements_base_not_derived´  s   z4InterfaceTests.test_classImplements_base_not_derivedc                    sö   ddl m} ddl m} ddl m} G dd„ d|ƒ}G dd„ d|ƒ‰ G ‡ fd	d
„d
tƒ}|ƒ }|  | |¡¡ |  ˆ  |¡¡ |  |||ƒv ¡ |  |||ƒ ¡ v ¡ |  ˆ ||ƒv ¡ |  |||ƒv ¡ |  |||ƒ ¡ v ¡ |  ˆ ||ƒv ¡ d S )Nr   r  r‡   r}   c                   @   rŠ   )zCInterfaceTests.test_classImplements_base_and_derived.<locals>.IBasec                   S   r  r   r   r   r   r   r   rõ  Ð  r|   zJInterfaceTests.test_classImplements_base_and_derived.<locals>.IBase.methodNrö  r   r   r   r   r�  Ï  r   r�  c                   @   rÌ   )zFInterfaceTests.test_classImplements_base_and_derived.<locals>.IDerivedNr   r   r   r   r   rŽ  Ó  rÎ   rŽ  c                       r  )zEInterfaceTests.test_classImplements_base_and_derived.<locals>.Currentc                 S   r   r   r   rq   r   r   r   rõ  Ø  r   zLInterfaceTests.test_classImplements_base_and_derived.<locals>.Current.methodNr  r   ©rŽ  r   r   r  Ö  r  r  )r   r  rˆ   r~   r!   rš   r‚   Ú	flattened)r%   r  rˆ   r~   r�  r  r  r   r	  r   Ú%test_classImplements_base_and_derivedÊ  s   z4InterfaceTests.test_classImplements_base_and_derivedc                    sð   ddl m} ddl m} ddl m} G dd„ d|ƒ‰ G dd„ dˆ ƒ‰G ‡ fd	d
„d
tƒ}G ‡fdd„dtƒ}G dd„ d||ƒ}|ƒ }|  ˆ  |¡¡ |  ˆ |¡¡ |  ˆ ||ƒv ¡ |  ˆ||ƒv ¡ |  ˆ ||ƒv ¡ |  ˆ||ƒv ¡ d S )Nr   r  r‡   r}   c                   @   rŠ   )z;InterfaceTests.test_classImplements_multiple.<locals>.ILeftc                   S   r  r   r   r   r   r   r   rõ  ì  r|   zBInterfaceTests.test_classImplements_multiple.<locals>.ILeft.methodNrö  r   r   r   r   ÚILeftë  r   r  c                   @   rÌ   )z<InterfaceTests.test_classImplements_multiple.<locals>.IRightNr   r   r   r   r   ÚIRightï  rÎ   r  c                       r  )z:InterfaceTests.test_classImplements_multiple.<locals>.Leftc                 S   r   r   r   rq   r   r   r   rõ  õ  r   zAInterfaceTests.test_classImplements_multiple.<locals>.Left.methodNr  r   ©r  r   r   ÚLeftò  ó    r  c                       ó   e Zd Z” ZdS )z;InterfaceTests.test_classImplements_multiple.<locals>.RightN©r   r   r   rÿ  r   ©r  r   r   ÚRightø  ó    r  c                   @   rÌ   )z:InterfaceTests.test_classImplements_multiple.<locals>.AmbiNr   r   r   r   r   ÚAmbiû  rÎ   r  )r   r  rˆ   r~   r!   rš   )r%   r  rˆ   r~   r  r  r  Úambir   )r  r  r   Útest_classImplements_multipleæ  s   z,InterfaceTests.test_classImplements_multiplec                    sL  ddl m} ddl m} ddl m} G dd„ d|ƒ‰ G dd„ dˆ ƒ‰G d	d
„ d
|ƒ‰G ‡ fdd„dƒ‰G ‡fdd„dtƒ}G ‡fdd„dtƒ‰G ‡‡fdd„dˆ|ƒ}|ƒ }|  ˆ  |¡¡ |  ˆ |¡¡ |  ˆ |¡¡ |  ˆ ||ƒv ¡ |  ˆ||ƒv ¡ |  ˆ||ƒv ¡ |  ˆ ||ƒv ¡ |  ˆ||ƒv ¡ |  ˆ||ƒv ¡ d S )Nr   r  r‡   r}   c                   @   rŠ   )zPInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeftc                   S   r  r   r   r   r   r   r   rõ    r|   zWInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeft.methodNrö  r   r   r   r   r    r÷  r  c                   @   rÌ   )zQInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IRightNr   r   r   r   r   r    rÎ   r  c                   @   rÌ   )zQInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IOtherNr   r   r   r   r   rP    rÎ   rP  c                       r  )zOInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Leftc                 S   r   r   r   rq   r   r   r   rõ    r   zVInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Left.methodNr  r   r  r   r   r    r  r  c                       r  )zPInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.RightNr  r   r  r   r   r    r  r  c                       r  )zPInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.OtherNr  r   )rP  r   r   ÚOther   r  r  c                       s   e Zd Z” j”jfZdS )zPInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.MixedNr  r   )r  r  r   r   ÚMixed#  r0   r  )r   r  rˆ   r~   r!   rš   r‚   )r%   r  rˆ   r~   r  r  Úmixedr   )r  rP  r  r  r  r   Ú2test_classImplements_multiple_w_explict_implements  s(   zAInterfaceTests.test_classImplements_multiple_w_explict_implementsc                 C   s°   ddl m} |j}|dƒ}|d|fƒ}|dƒ}|d||fƒ}|  | |¡¡ |  | |¡¡ |  | |¡¡ |  | |¡¡ |  | |¡¡ |  | |¡¡ |  | |¡¡ d S )Nr   r  ÚFunInterfaceÚBarInterfaceÚBobInterfaceÚBazInterface)r   r  ré  rš   r>  r‚   )r%   r  Únewr  r  r  r   r   r   r   ÚtestInterfaceExtendsInterface2  s   z,InterfaceTests.testInterfaceExtendsInterfacec                    s`   ddl m‰  ddl m} ddlm} G ‡ fdd„d|ƒ‰G ‡fdd„dtƒ}|  |ˆ|ƒ¡ d S )	Nr   rE  r  )ÚverifyClassc                       ó   e Zd Z” dƒZdd„ ZdS )z1InterfaceTests.test_verifyClass.<locals>.ICheckMerï  c                   S   rÀ   ró  r   r   r   r   r   rõ  L  re  z8InterfaceTests.test_verifyClass.<locals>.ICheckMe.methodN©r   r   r   r¸  rõ  r   rE  r   r   ÚICheckMeI  rý  r&  c                       ó   e Zd Z” ZdZdd„ ZdS )z0InterfaceTests.test_verifyClass.<locals>.CheckMeÚvaluec                 S   r   r   r   rq   r   r   r   rõ  S  r   z7InterfaceTests.test_verifyClass.<locals>.CheckMe.methodN©r   r   r   rÿ  r¸  rõ  r   ©r&  r   r   ÚCheckMeO  ó    r+  )r   rF  r  rk   r#  r!   rš   )r%   r  r#  r+  r   ©rF  r&  r   Útest_verifyClassC  s   zInterfaceTests.test_verifyClassc                    sf   ddl m‰  ddl m} ddlm} G ‡ fdd„d|ƒ‰G ‡fdd„dtƒ}|ƒ }|  |ˆ|ƒ¡ d S )	Nr   rE  r  rh   c                       r$  )z2InterfaceTests.test_verifyObject.<locals>.ICheckMerï  c                   S   rÀ   ró  r   r   r   r   r   rõ  a  re  z9InterfaceTests.test_verifyObject.<locals>.ICheckMe.methodNr%  r   rE  r   r   r&  ^  rý  r&  c                       r'  )z1InterfaceTests.test_verifyObject.<locals>.CheckMer(  c                 S   r   r   r   rq   r   r   r   rõ  h  r   z8InterfaceTests.test_verifyObject.<locals>.CheckMe.methodNr)  r   r*  r   r   r+  d  r,  r+  )r   rF  r  rk   ri   r!   rš   )r%   r  ri   r+  Úcheck_mer   r-  r   Útest_verifyObjectX  s   z InterfaceTests.test_verifyObjectc                 C   s0   ddl m} G dd„ d|ƒ}|  | |¡¡ d S )Nr   r  c                   @   rÌ   )zLInterfaceTests.test_interface_object_provides_Interface.<locals>.AnInterfaceNr   r   r   r   r   ÚAnInterfacer  rÎ   r1  )r   r  rš   r~   )r%   r  r1  r   r   r   Ú(test_interface_object_provides_Interfaceo  ó   z7InterfaceTests.test_interface_object_provides_Interfacec                    sH   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  t| ¡ ƒddg¡ d S )Nr   rE  r  c                       r$  )z1InterfaceTests.test_names_simple.<locals>.ISimplerï  c                   S   r  r   r   r   r   r   r   rõ    r|   z8InterfaceTests.test_names_simple.<locals>.ISimple.methodNr%  r   rE  r   r   ÚISimple|  rý  r4  r¸  rõ  ©r   rF  r  r"   r“  rh  ©r%   r  r4  r   rE  r   Útest_names_simplew  ó   z InterfaceTests.test_names_simplec                    sx   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  t| ¡ ƒg d¢¡ |  t|jd	d
�ƒg d¢¡ d S )Nr   rE  r  c                       r$  )z0InterfaceTests.test_names_derived.<locals>.IBaserï  c                   S   r  r   r   r   r   r   r   rõ  Œ  r|   z7InterfaceTests.test_names_derived.<locals>.IBase.methodNr%  r   rE  r   r   r�  ‰  rý  r�  c                       ó$   e Zd Z” dƒZdd„ Zdd„ ZdS )z3InterfaceTests.test_names_derived.<locals>.IDerivedúMy attr2c                   S   r  r   r   r   r   r   r   rõ  ’  r|   z:InterfaceTests.test_names_derived.<locals>.IDerived.methodc                   S   r  r   r   r   r   r   r   rû  •  r|   z;InterfaceTests.test_names_derived.<locals>.IDerived.method2N©r   r   r   Úattr2rõ  rû  r   rE  r   r   rŽ  �  ó    rŽ  )r<  rõ  rû  Tr�  ©r¸  r<  rõ  rû  r5  ©r%   r  r�  rŽ  r   rE  r   Útest_names_derived„  s   	ÿÿz!InterfaceTests.test_names_derivedc                    s  ddl m‰  ddlm} ddl m} G ‡ fd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   rE  ©ÚMethodr  c                       r$  )z@InterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimplerï  c                   S   rÀ   ©ú	My methodNr   r   r   r   r   rõ  ¦  re  zGInterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimple.methodNr%  r   rE  r   r   r4  £  rý  r4  r  r¸  r$  rï  rõ  rD  )r   rF  r    rB  r  r“  r¤  r"   r  rš   rÏ  r   rB   )r%   rB  r  r4  Úname_valuesr   rE  r   Ú test_namesAndDescriptions_simple�  s   z/InterfaceTests.test_namesAndDescriptions_simplec                    sô  ddl m‰  ddl m} ddlm} G ‡ fdd„d|ƒ}G ‡ fd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|jd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   rE  r  rA  c                       r$  )z?InterfaceTests.test_namesAndDescriptions_derived.<locals>.IBaserï  c                   S   rÀ   rC  r   r   r   r   r   rõ  ¾  re  zFInterfaceTests.test_namesAndDescriptions_derived.<locals>.IBase.methodNr%  r   rE  r   r   r�  »  rý  r�  c                       r9  )zBInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerivedr:  c                   S   rÀ   ©úMy method, overriddenNr   r   r   r   r   rõ  Ä  re  zIInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.methodc                   S   rÀ   ©ú
My method2Nr   r   r   r   r   rû  Ç  re  zJInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method2Nr;  r   rE  r   r   rŽ  Á  r=  rŽ  é   r<  r$  r:  rõ  rH  r  rû  rJ  Tr�  é   r¸  rï  )r   rF  r  r    rB  r“  r¤  r"   r  rš   rÏ  r   rB   )r%   r  rB  r�  rŽ  rE  r   rE  r   Ú!test_namesAndDescriptions_derivedµ  sJ   	z0InterfaceTests.test_namesAndDescriptions_derivedc                 C   ó0   ddl m} G dd„ d|ƒ}|  t|jd¡ d S )Nr   r  c                   @   rÌ   )zIInterfaceTests.test_getDescriptionFor_nonesuch_no_default.<locals>.IEmptyNr   r   r   r   r   ÚIEmptyñ  rÎ   rO  rL   )r   r  rM   rN   r©  ©r%   r  rO  r   r   r   Ú*test_getDescriptionFor_nonesuch_no_defaultî  r3  z9InterfaceTests.test_getDescriptionFor_nonesuch_no_defaultc                    s¨   ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}| d¡}|  t|ˆ ƒ¡ |  |j	d¡ |  |j
d¡ | d	¡}|  t||ƒ¡ |  |j	d	¡ |  |j
d
¡ d S )Nr   rE  rA  r  c                       r$  )z=InterfaceTests.test_getDescriptionFor_simple.<locals>.ISimplerï  c                   S   rÀ   rC  r   r   r   r   r   rõ  ÿ  re  zDInterfaceTests.test_getDescriptionFor_simple.<locals>.ISimple.methodNr%  r   rE  r   r   r4  ü  rý  r4  r¸  rï  rõ  rD  ©r   rF  r    rB  r  r©  rš   rÏ  r"   r   rB   ©r%   rB  r  r4  Úa_descÚm_descr   rE  r   Útest_getDescriptionFor_simpleö  s   

z,InterfaceTests.test_getDescriptionFor_simplec           	         s(  ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}G ‡ fd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   rE  rA  r  c                       r$  )z<InterfaceTests.test_getDescriptionFor_derived.<locals>.IBaserï  c                   S   rÀ   rC  r   r   r   r   r   rõ    re  zCInterfaceTests.test_getDescriptionFor_derived.<locals>.IBase.methodNr%  r   rE  r   r   r�    rý  r�  c                       r9  )z?InterfaceTests.test_getDescriptionFor_derived.<locals>.IDerivedr:  c                   S   rÀ   rG  r   r   r   r   r   rõ    re  zFInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.methodc                   S   rÀ   rI  r   r   r   r   r   rû    re  zGInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method2Nr;  r   rE  r   r   rŽ    r=  rŽ  r¸  rï  rõ  rH  r<  r:  rû  rJ  rR  ©	r%   rB  r  r�  rŽ  rT  rU  Úa2_descÚm2_descr   rE  r   Útest_getDescriptionFor_derived  s*   
	


z-InterfaceTests.test_getDescriptionFor_derivedc                 C   rN  )Nr   r  c                   @   rÌ   )z7InterfaceTests.test___getitem__nonesuch.<locals>.IEmptyNr   r   r   r   r   rO  8  rÎ   rO  rL   )r   r  rM   rN   Ú__getitem__rP  r   r   r   Útest___getitem__nonesuch5  r3  z'InterfaceTests.test___getitem__nonesuchc                    s¤   ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}|d }|  t|ˆ ƒ¡ |  |jd¡ |  |j	d¡ |d	 }|  t||ƒ¡ |  |jd	¡ |  |j	d
¡ d S )Nr   rE  rA  r  c                       r$  )z6InterfaceTests.test___getitem__simple.<locals>.ISimplerï  c                   S   rÀ   rC  r   r   r   r   r   rõ  F  re  z=InterfaceTests.test___getitem__simple.<locals>.ISimple.methodNr%  r   rE  r   r   r4  C  rý  r4  r¸  rï  rõ  rD  ©
r   rF  r    rB  r  rš   rÏ  r"   r   rB   rS  r   rE  r   Útest___getitem__simple=  s   z%InterfaceTests.test___getitem__simplec           	         s   ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}G ‡ fd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   rE  rA  r  c                       r$  )z6InterfaceTests.test___getitem___derived.<locals>.IBaserï  c                   S   rÀ   rC  r   r   r   r   r   rõ  \  re  z=InterfaceTests.test___getitem___derived.<locals>.IBase.methodNr%  r   rE  r   r   r�  Y  rý  r�  c                       r9  )z9InterfaceTests.test___getitem___derived.<locals>.IDerivedr:  c                   S   rÀ   rG  r   r   r   r   r   rõ  b  re  z@InterfaceTests.test___getitem___derived.<locals>.IDerived.methodc                   S   rÀ   rI  r   r   r   r   r   rû  e  re  zAInterfaceTests.test___getitem___derived.<locals>.IDerived.method2Nr;  r   rE  r   r   rŽ  _  r=  rŽ  r¸  rï  rõ  rH  r<  r:  rû  rJ  r]  rW  r   rE  r   Útest___getitem___derivedS  s*   	z'InterfaceTests.test___getitem___derivedc                 C   s.   ddl m} G dd„ d|ƒ}|  d|v ¡ d S )Nr   r  c                   @   rÌ   )z8InterfaceTests.test___contains__nonesuch.<locals>.IEmptyNr   r   r   r   r   rO    rÎ   rO  rL   )r   r  r‚   rP  r   r   r   Útest___contains__nonesuch|  s   z(InterfaceTests.test___contains__nonesuchc                    sL   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  d|v ¡ |  d|v ¡ d S )Nr   rE  r  c                       r$  )z7InterfaceTests.test___contains__simple.<locals>.ISimplerï  c                   S   rÀ   rC  r   r   r   r   r   rõ  Œ  re  z>InterfaceTests.test___contains__simple.<locals>.ISimple.methodNr%  r   rE  r   r   r4  ‰  rý  r4  r¸  rõ  ©r   rF  r  rš   r6  r   rE  r   Útest___contains__simple„  s
   z&InterfaceTests.test___contains__simplec                    s|   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  d|v ¡ |  d	|v ¡ |  d
|v ¡ |  d|v ¡ d S )Nr   rE  r  c                       r$  )z6InterfaceTests.test___contains__derived.<locals>.IBaserï  c                   S   rÀ   rC  r   r   r   r   r   rõ  š  re  z=InterfaceTests.test___contains__derived.<locals>.IBase.methodNr%  r   rE  r   r   r�  —  rý  r�  c                       r9  )z9InterfaceTests.test___contains__derived.<locals>.IDerivedr:  c                   S   rÀ   rG  r   r   r   r   r   rõ     re  z@InterfaceTests.test___contains__derived.<locals>.IDerived.methodc                   S   rÀ   rI  r   r   r   r   r   rû  £  re  zAInterfaceTests.test___contains__derived.<locals>.IDerived.method2Nr;  r   rE  r   r   rŽ  �  r=  rŽ  r¸  rõ  r<  rû  ra  r?  r   rE  r   Útest___contains__derived’  s   	z'InterfaceTests.test___contains__derivedc                 C   s0   ddl m} G dd„ d|ƒ}|  t|ƒg ¡ d S )Nr   r  c                   @   rÌ   )z1InterfaceTests.test___iter__empty.<locals>.IEmptyNr   r   r   r   r   rO  ®  rÎ   rO  )r   r  r"   rD   rP  r   r   r   Útest___iter__empty«  r3  z!InterfaceTests.test___iter__emptyc                    sH   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  tt|ƒƒddg¡ d S )Nr   rE  r  c                       r$  )z3InterfaceTests.test___iter__simple.<locals>.ISimplerï  c                   S   rÀ   rC  r   r   r   r   r   rõ  »  re  z:InterfaceTests.test___iter__simple.<locals>.ISimple.methodNr%  r   rE  r   r   r4  ¸  rý  r4  r¸  rõ  ©r   rF  r  r"   r“  rD   r6  r   rE  r   Útest___iter__simple³  r8  z"InterfaceTests.test___iter__simplec                    s\   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  tt|ƒƒg d¢¡ d S )	Nr   rE  r  c                       r$  )z2InterfaceTests.test___iter__derived.<locals>.IBaserï  c                   S   rÀ   rC  r   r   r   r   r   rõ  È  re  z9InterfaceTests.test___iter__derived.<locals>.IBase.methodNr%  r   rE  r   r   r�  Å  rý  r�  c                       r9  )z5InterfaceTests.test___iter__derived.<locals>.IDerivedr:  c                   S   rÀ   rG  r   r   r   r   r   rõ  Î  re  z<InterfaceTests.test___iter__derived.<locals>.IDerived.methodc                   S   rÀ   rI  r   r   r   r   r   rû  Ñ  re  z=InterfaceTests.test___iter__derived.<locals>.IDerived.method2Nr;  r   rE  r   r   rŽ  Ë  r=  rŽ  r>  re  r?  r   rE  r   Útest___iter__derivedÀ  s   	ÿz#InterfaceTests.test___iter__derivedc                 C   s:   ddl m} G dd„ d|ƒ}|d }|  | d¡d¡ d S )Nr   r  c                   @   s   e Zd Zdd„ Zde_dS )zLInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMec                   S   r  r   r   r   r   r   r   rõ  Û  r|   zSInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMe.methodr$  N)r   r   r   rõ  Úoptionalr   r   r   r   ÚITagMeÚ  s    
ri  rõ  rh  r$  )r   r  r"   rO   )r%   r  ri  rõ  r   r   r   Ú-test_function_attributes_become_tagged_values×  s   z<InterfaceTests.test_function_attributes_become_tagged_valuesc                 C   s>   ddl m} G dd„ d|ƒ}|  |jd¡ |  t|ƒg ¡ d S )Nr   r  c                   @   ó   e Zd ZdZdS )z@InterfaceTests.test___doc___non_element.<locals>.IHaveADocStringÚxxxN©r   r   r   rB   r   r   r   r   ÚIHaveADocStringå  r  rn  rl  )r   r  r"   rB   rD   ©r%   r  rn  r   r   r   Útest___doc___non_elementâ  s   z'InterfaceTests.test___doc___non_elementc                    sP   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  |jd¡ |  t|ƒdg¡ d S )Nr   rE  r  c                       ó   e Zd ZdZ” dƒZdS )z?InterfaceTests.test___doc___as_element.<locals>.IHaveADocStringrl  úthe docNrm  r   rE  r   r   rn  ï  r  rn  r@   rB   )r   rF  r  r"   rB   rD   ro  r   rE  r   Útest___doc___as_elementë  s
   z&InterfaceTests.test___doc___as_elementc           
   
   C   s¸   ddl m} |  ||j|¡ g }z| ||¡ |  d¡ W n |y8 } z|  |jd |¡ W Y d }~nd }~ww |  t|ƒ|¡ dd„ |D ƒ}| ¡  |D ]}	|  |	| 	d¡¡ qNd S )Nr   rÃ  z&validateInvariants should always raisec                 S   s   g | ]}|j d  ‘qS )r   ©r   )Ú.0Úerrorr   r   r   Ú
<listcomp>  s    z/InterfaceTests._errorsEqual.<locals>.<listcomp>)
ry  rÄ  rM   rÁ  Úfailr"   r   r  ÚsortÚpop)
r%   Úhas_invariantÚ	error_lenÚ
error_msgsrñ   rÄ  Úerv  ÚmsgsÚmsgr   r   r   Ú_errorsEqualö  s    €ÿÿzInterfaceTests._errorsEqualc                    sÖ   ddl m‰  ddl m} ddl m} ddl m‰ G ‡ ‡fdd„d|ƒ}G dd	„ d	tƒ}|ƒ }|||ƒ |  | d
¡tg¡ |  | 	|¡d ¡ d|_
|  | 	|¡d ¡ d|_|  | 	|¡d ¡ |`
|  |ddg|¡ d S )Nr   rE  r  ©ÚdirectlyProvidesr   c                       ó$   e Zd Z” dƒZ” dƒZ”eƒ dS )z8InterfaceTests.test_invariant_simple.<locals>.IInvariantrS   ú*bar; must eval to Boolean True if foo doesN©r   r   r   rS   r.   Ú_ifFooThenBarr   ©rF  r	   r   r   Ú
IInvariant  ó    r‰  c                   @   rÌ   )z:InterfaceTests.test_invariant_simple.<locals>.HasInvariantNr   r   r   r   r   ÚHasInvariant  rÎ   r‹  r   é   é*   r$  úIf Foo, then Bar!)r   rF  r  rƒ  r	   r!   r"   rO   r‡  rÁ  r.   rS   r�  )r%   r  rƒ  r‰  r‹  r{  r   rˆ  r   Útest_invariant_simple  s(   
ÿÿz$InterfaceTests.test_invariant_simplec                    s  ddl m‰  ddl m} ddl m} ddl m‰ G ‡ ‡fdd„d|ƒ}G ‡fdd	„d	|ƒ}G d
d„ dtƒ}|  | d¡tg¡ |ƒ }|||ƒ d|_	|  
|ddg|¡ d|_	d|_|  
|ddg|¡ d|_	d|_|  
|dddg|¡ d|_	d|_|  | |¡d ¡ d S )Nr   rE  r  r‚  r   c                       r„  )z8InterfaceTests.test_invariant_nested.<locals>.IInvariantrS   r…  Nr†  r   rˆ  r   r   r‰  *  rŠ  r‰  c                       s   e Zd Z” eƒ dS )z;InterfaceTests.test_invariant_nested.<locals>.ISubInvariantN)r   r   r   Ú_barGreaterThanFoor   r   r   r   ÚISubInvariant/  r   r‘  c                   @   rÌ   )z:InterfaceTests.test_invariant_nested.<locals>.HasInvariantNr   r   r   r   r   r‹  2  rÎ   r‹  r   r�  r$  rŽ  r  ú%Please, Boo MUST be greater than Foo!)r   rF  r  rƒ  r	   r!   r"   rO   r�  rS   r�  r.   rÁ  )r%   r  rƒ  r‰  r‘  r‹  r{  r   rˆ  r   Útest_invariant_nested$  sB   ÿ
ÿþÿýz$InterfaceTests.test_invariant_nestedc                    s  ddl m‰  ddl m} ddl m} ddl m‰ G ‡ ‡fdd„d|ƒ}G dd	„ d	tƒ}|ƒ }|||ƒ d
|_| d¡}|d d … }| t	¡ | 
d|¡ |  |ddg|¡ d|_d|_|  |ddg|¡ d|_d|_|  |dddg|¡ d|_d|_|  | |¡d ¡ | 
d|¡ d S )Nr   rE  r  r‚  r   c                       r„  )z:InterfaceTests.test_invariant_mutandis.<locals>.IInvariantrS   r…  Nr†  r   rˆ  r   r   r‰  Y  rŠ  r‰  c                   @   rÌ   )z<InterfaceTests.test_invariant_mutandis.<locals>.HasInvariantNr   r   r   r   r   r‹  ^  rÎ   r‹  r�  r   r$  rŽ  r  r’  )r   rF  r  rƒ  r	   r!   rS   rO   r  r�  rU   r�  r.   r"   rÁ  )r%   r  rƒ  r‰  r‹  r{  Úold_invariantsr   r   rˆ  r   Útest_invariant_mutandisS  sB   


ÿÿÿýz&InterfaceTests.test_invariant_mutandisc                    s~   ddl m} ddl m‰  G dd„ d|ƒ}|  |jd¡ |  t|ƒg ¡ G ‡ fdd„d|ƒ}|  |jd	¡ |  t|ƒd
g¡ d S )Nr   r  rE  c                   @   rk  )z7InterfaceTests.test___doc___element.<locals>.IDocstringrl  Nrm  r   r   r   r   Ú
IDocstring‹  r  r–  rl  c                       rq  )zCInterfaceTests.test___doc___element.<locals>.IDocstringAndAttributerl  rr  Nrm  r   rE  r   r   ÚIDocstringAndAttribute‘  r  r—  r@   rB   )r   r  rF  r"   rB   rD   )r%   r  r–  r—  r   rE  r   Útest___doc___elementˆ  s   z#InterfaceTests.test___doc___elementc                 C   s>   ddl m} G dd„ d|ƒ}G dd„ dƒ}|  t|j|¡ d S )Nr   r  c                   @   rk  )z&InterfaceTests.testIssue228.<locals>.Irl  Nrm  r   r   r   r   r/     r  r/  c                   @   s   e Zd ZdZdS )z-InterfaceTests.testIssue228.<locals>.OldStyleN)r   r   r   Ú__providedBy__r   r   r   r   ÚOldStyle£  r  rš  )r   r  rM   r±   r~   )r%   r  r/  rš  r   r   r   ÚtestIssue228™  s   zInterfaceTests.testIssue228c              
      sÚ   ddl m} ddl m‰  ddl m} ddl m‰ ddlm‰ G ‡ ‡‡fdd„d|ƒ}||ƒG d	d
„ d
tƒƒ}| |ddƒ¡ | |ddƒ¡ z| |ddƒ¡ W d S  ˆyl } z|  	t
|ƒd¡ W Y d }~d S d }~ww )Nr   r  rE  rK  r   rÃ  c                       s,   e Zd Z” dƒZ” dƒZ”‡fdd„ƒZdS )z:InterfaceTests.test_invariant_as_decorator.<locals>.IRangezLower boundzUpper boundc                    s   | j | jk r
ˆ dƒ‚d S )Nú	max < min)ÚmaxÚmin)ÚobrÃ  r   r   Úrange_invariant³  s   ÿzJInterfaceTests.test_invariant_as_decorator.<locals>.IRange.range_invariantN)r   r   r   rž  r�  r   r   ©rF  rÄ  r	   r   r   ÚIRange¯  s
    r¢  c                   @   rŠ   )z9InterfaceTests.test_invariant_as_decorator.<locals>.Rangec                 S   s   ||| _ | _d S r   )rž  r�  )r%   rž  r�  r   r   r   r¸   »  r  zBInterfaceTests.test_invariant_as_decorator.<locals>.Range.__init__Nr¾   r   r   r   r   ÚRange¸  s    r£  r$  r  rœ  )r   r  rF  rL  r	   ry  rÄ  r!   rÁ  r"   rþ   )r%   r  rL  r¢  r£  r~  r   r¡  r   Útest_invariant_as_decorator¨  s    	€ÿz*InterfaceTests.test_invariant_as_decoratorc                    sÚ   ddl m‰  ddl m} ddl m‰ G ‡ ‡fdd„d|ƒ}G ‡fdd„d|ƒ}G d	d
„ d
|ƒ}|  | d¡d¡ |  t|jd¡ |  t| 	¡ ƒdg¡ |  | d¡d¡ |  | d¡d¡ |  t
| 	¡ ƒt
ddgƒ¡ d S )Nr   rE  r  r,   c                       s&   e Zd Z” dƒZ” dƒZ”ddƒ dS )z0InterfaceTests.test_taggedValue.<locals>.ITaggedrS   r…  r2   ÚSpamN)r   r   r   rS   r.   r   ©rF  r-   r   r   ÚITaggedÊ  s    r§  c                       s    e Zd Z” ddƒ ” ddƒ dS )z1InterfaceTests.test_taggedValue.<locals>.IDerivedr2   ú	Spam SpamrS   r.   Nr   r   r,   r   r   rŽ  Ï  s    
rŽ  c                   @   rÌ   )z2InterfaceTests.test_taggedValue.<locals>.IDerived2Nr   r   r   r   r   Ú	IDerived2Ó  rÎ   r©  r2   r¥  rS   r¨  r.   )r   rF  r  r-   r"   rO   rM   rN   rD   rE   Úset)r%   r  r§  rŽ  r©  r   r¦  r   Útest_taggedValueÅ  s    zInterfaceTests.test_taggedValuec           	         sž   ddl m‰ ddl m‰  |}G ‡ ‡fdd„d|ƒ}G ‡ ‡fdd„d|ƒ}G ‡ ‡fdd	„d	|ƒ}G ‡ ‡fd
d„d||ƒ}G dd„ d||ƒ}G dd„ d||ƒ}|S )Nr   r,   rE  c                       ó   e Zd Z”ddƒ ” dƒZdS )z0InterfaceTests._make_taggedValue_tree.<locals>.FÚtagÚFN©r   r   r   r­  r   r¦  r   r   r®  â  ó    
r®  c                       r¬  )z0InterfaceTests._make_taggedValue_tree.<locals>.Er­  ÚENr¯  r   r¦  r   r   r±  å  r°  r±  c                       r¬  )z0InterfaceTests._make_taggedValue_tree.<locals>.Dr­  ÚDNr¯  r   r¦  r   r   r²  è  r°  r²  c                       r¬  )z0InterfaceTests._make_taggedValue_tree.<locals>.Cr­  ÚCNr¯  r   r¦  r   r   r³  ë  r°  r³  c                   @   rÌ   )z0InterfaceTests._make_taggedValue_tree.<locals>.BNr   r   r   r   r   ÚBî  rÎ   r´  c                   @   rÌ   )z0InterfaceTests._make_taggedValue_tree.<locals>.ANr   r   r   r   r   ÚAð  rÎ   rµ  )r   r-   rF  )	r%   r—  ÚOr®  r±  r²  r³  r´  rµ  r   r¦  r   Ú_make_taggedValue_treeÞ  s   z%InterfaceTests._make_taggedValue_treec                 C   s¢   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   r  r³  r­  r´  )r   r  r·  r!   r"   r­  r   rO   rY   r  rU   )r%   r  Úclass_AÚiface_Ar   r   r   Ú"test_getTaggedValue_follows__iro__õ  s   

z1InterfaceTests.test_getTaggedValue_follows__iro__c                 C   s  ddl m} |  |¡}|  | d¡¡ |  g t| ¡ ƒ¡ |  t	¡� | 
d¡ W d   ƒ n1 s2w   Y  | dd¡ |  | d¡d¡ |  | 
d¡d¡ |  dgt| ¡ ƒ¡ |jd jdksdJ ‚|jd }|  | d¡d¡ |  | 
d¡d¡ |  dgt| ¡ ƒ¡ d S )Nr   r  r­  rµ  r$  r³  )r   r  r·  r6  rc   r"   rD   rT   rM   rN   r`   rU   r  r   )r%   r  rµ  r³  r   r   r   Ú(test_getDirectTaggedValue_ignores__iro__
  s    
ÿ
z7InterfaceTests.test_getDirectTaggedValue_ignores__iro__c                    s†   ddl m} ddl m‰  G ‡ fdd„d|ƒ}G dd„ d|ƒ}G dd	„ d	|ƒ}|  | d
¡| d
¡u ¡ |f|_|  | d
¡d u ¡ d S )Nr   r  rE  c                       rG  )z<InterfaceTests.test_description_cache_management.<locals>.I1r­   N)r   r   r   r­   r   rE  r   r   rð  '  r   rð  c                   @   rÌ   )z<InterfaceTests.test_description_cache_management.<locals>.I2Nr   r   r   r   r   ÚI2*  rÎ   r¼  c                   @   rÌ   )z<InterfaceTests.test_description_cache_management.<locals>.I3Nr   r   r   r   r   ÚI3-  rÎ   r½  r­   )r   r  rF  rš   r2  r  )r%   r  rð  r¼  r½  r   rE  r   Ú!test_description_cache_management   s   z0InterfaceTests.test_description_cache_managementc                 C   sV   ddl m} ddl m} G dd„ d|ƒ}||ƒG dd„ dtƒƒ}|  ||ƒ ƒd¡ d S )Nr   r  rK  c                   @   rÌ   )z>InterfaceTests.test___call___defers_to___conform___.<locals>.INr   r   r   r   r   r/  9  rÎ   r/  c                   @   rŠ   )z>InterfaceTests.test___call___defers_to___conform___.<locals>.Cc                 S   rÀ   )Nr   r   )r%   Úprotor   r   r   rô   >  r|   zJInterfaceTests.test___call___defers_to___conform___.<locals>.C.__conform__Nrõ   r   r   r   r   r³  <  r÷  r³  )r   r  rL  r!   r"   )r%   r  rL  r/  r³  r   r   r   Ú$test___call___defers_to___conform___5  s   z3InterfaceTests.test___call___defers_to___conform___c                 C   s\   ddl m} ddl m} G dd„ d|ƒ}||ƒG dd„ dtƒƒ}|ƒ }|  ||ƒ|u ¡ d S )Nr   r  rK  c                   @   rÌ   )z9InterfaceTests.test___call___object_implements.<locals>.INr   r   r   r   r   r/  G  rÎ   r/  c                   @   rÌ   )z9InterfaceTests.test___call___object_implements.<locals>.CNr   r   r   r   r   r³  J  rR  r³  )r   r  rL  r!   rš   )r%   r  rL  r/  r³  Úcr   r   r   Útest___call___object_implementsC  s   z.InterfaceTests.test___call___object_implementsc                 C   sD   ddl m} G dd„ d|ƒ}G dd„ dtƒ}|ƒ }|  t||¡ d S )Nr   r  c                   @   rÌ   )z9InterfaceTests.test___call___miss_wo_alternate.<locals>.INr   r   r   r   r   r/  T  rÎ   r/  c                   @   rÌ   )z9InterfaceTests.test___call___miss_wo_alternate.<locals>.CNr   r   r   r   r   r³  W  rÎ   r³  )r   r  r!   rM   rÒ   ©r%   r  r/  r³  rÁ  r   r   r   Útest___call___miss_wo_alternateQ  s
   z.InterfaceTests.test___call___miss_wo_alternatec                 C   sJ   ddl m} G dd„ d|ƒ}G dd„ dtƒ}|ƒ }|  ||| ƒ| u ¡ d S )Nr   r  c                   @   rÌ   )z8InterfaceTests.test___call___miss_w_alternate.<locals>.INr   r   r   r   r   r/  `  rÎ   r/  c                   @   rÌ   )z8InterfaceTests.test___call___miss_w_alternate.<locals>.CNr   r   r   r   r   r³  c  rÎ   r³  )r   r  r!   rš   rÃ  r   r   r   Útest___call___miss_w_alternate]  s
   z-InterfaceTests.test___call___miss_w_alternatec           	   
      s¢   ddl m} ddlm} dd„ }‡ fdd„}G dd	„ d	|ƒ}G d
d„ dtƒ}|ƒ }|d d … }||g|d d …< zˆ  ||ƒˆ u ¡ W ||d d …< d S ||d d …< w )Nr   r  r  c                 S   r  r   r   r  r   r   r   Ú_missm  r|   z:InterfaceTests.test___call___w_adapter_hook.<locals>._missc                    rx   r   r   r  rq   r   r   Ú_hitp  r|   z9InterfaceTests.test___call___w_adapter_hook.<locals>._hitc                   @   rÌ   )z6InterfaceTests.test___call___w_adapter_hook.<locals>.INr   r   r   r   r   r/  s  rÎ   r/  c                   @   rÌ   )z6InterfaceTests.test___call___w_adapter_hook.<locals>.CNr   r   r   r   r   r³  v  rÎ   r³  )r   r  r    r  r!   rš   )	r%   r  r  rÆ  rÇ  r/  r³  rÁ  Úold_adapter_hooksr   rq   r   Útest___call___w_adapter_hooki  s   z+InterfaceTests.test___call___w_adapter_hookc                    sx   ddl m} ddl m‰  ddl m} G ‡ fdd„d|ƒ}||ƒG dd„ dtƒƒ}|  d	|tƒ ƒ¡ |  d	||ƒ ƒ¡ d S )
Nr   r  ©ÚinterfacemethodrK  c                       ó   e Zd Z” dd„ ƒZdS )z:InterfaceTests.test___call___w_overridden_adapt.<locals>.Ic                 S   rÀ   ©Nr�  r   rê   r   r   r   r	  ‰  rº   zDInterfaceTests.test___call___w_overridden_adapt.<locals>.I.__adapt__N©r   r   r   r	  r   rÊ  r   r   r/  ‡  s    r/  c                   @   rÌ   )z:InterfaceTests.test___call___w_overridden_adapt.<locals>.ONr   r   r   r   r   r¶  �  rR  r¶  r�  )r   r  rË  rL  r!   r"   )r%   r  rL  r/  r¶  r   rÊ  r   Ú test___call___w_overridden_adapt‚  s   z/InterfaceTests.test___call___w_overridden_adaptc                    sø   ddl m} ddl m‰  ddl m} G ‡ fdd„d|ƒ}G dd„ d|ƒ}||ƒG d	d
„ d
tƒƒ}||ƒG dd„ dtƒƒ}|  d|tƒ ƒ¡ |  d||ƒ ƒ¡ |  d||ƒ ƒ¡ |  t¡� ||ƒ ƒ W d   ƒ n1 slw   Y  |  d||ƒ ƒ¡ d S )Nr   r  rÊ  rK  c                       rÌ  )zKInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdaptc                 S   rÀ   rÍ  r   rê   r   r   r   r	  ž  rº   zUInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdapt.__adapt__NrÎ  r   rÊ  r   r   ÚIAdapt�  ó    rÐ  c                   @   rk  )zLInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ISimplezNothing special.Nrm  r   r   r   r   r4  ¢  r  r4  c                   @   rŠ   )zNInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24c                 S   rÀ   ©Né   r   rð   r   r   r   rô   §  r|   zZInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24.__conform__Nrõ   r   r   r   r   Ú	Conform24¥  r÷  rÔ  c                   @   rŠ   )zPInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ConformNonec                 S   r  r   r   rð   r   r   r   rô   ¬  r|   z\InterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ConformNone.__conform__Nrõ   r   r   r   r   ÚConformNoneª  r÷  rÕ  r�  rÓ  )r   r  rË  rL  r!   r"   rM   rÒ   )r%   r  rL  rÐ  r4  rÔ  rÕ  r   rÊ  r   Ú,test___call___w_overridden_adapt_and_conform–  s    ÿz;InterfaceTests.test___call___w_overridden_adapt_and_conformc                    sˆ   dd l ‰ddlm} ddlm‰ ddlm} G ‡ ‡‡fdd„d|ƒ‰ |ˆ ƒG dd„ dtƒƒ}|  d	ˆ tƒ ƒ¡ |ƒ }|  |ˆ |ƒ¡ d S )
Nr   r  rÊ  rK  c                       s$   e Zd Z”‡‡ ‡fdd„ƒZ‡  ZS )zEInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.Ic                    s@   |   |¡sdS ˆjd d… dkrtƒ  |¡S ttˆ ƒ| ƒ |¡S )Nr�  r  )rK  é   )r~   Úversion_infoÚsuperr	  rè  rê   )r/  ré  Úsysr   r   r	  Â  s
   
zOInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.I.__adapt__)r   r   r   r	  Ú__classcell__r   ©r/  rË  rÚ  )ré  r   r/  À  s    r/  c                   @   rÌ   )zEInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.ONr   r   r   r   r   r¶  Ì  rR  r¶  r�  )rÚ  r   r  rË  rL  r!   r"   rÐ   )r%   r  rL  r¶  Úor   rÜ  r   Ú+test___call___w_overridden_adapt_call_superº  s   z:InterfaceTests.test___call___w_overridden_adapt_call_superc                    sV   ddl m} ddl m‰  G ‡ fdd„d|ƒ}|  d|tƒ ƒ¡ |  |d  ¡ d¡ d S )	Nr   r  rÊ  c                       s    e Zd Z” dd„ ƒZdd„ ZdS )zEInterfaceTests.test___adapt___as_method_and_implementation.<locals>.Ic                 S   rÀ   rÍ  r   rê   r   r   r   r	  Ù  rº   zOInterfaceTests.test___adapt___as_method_and_implementation.<locals>.I.__adapt__c                 S   rÀ   )zThis is a protocolNr   )Úto_adaptr   r   r   r	  Ý  re  NrÎ  r   rÊ  r   r   r/  Ø  s    
r/  r�  r	  z
(to_adapt))r   r  rË  r"   r!   ÚgetSignatureString©r%   r  r/  r   rÊ  r   Ú+test___adapt___as_method_and_implementationÔ  s
   z:InterfaceTests.test___adapt___as_method_and_implementationc           	         sN  ddl m} ddl m‰  G dd„ d|ƒ}G ‡ fdd„d|ƒ}G dd	„ d	|ƒ}G d
d„ d|ƒ}G dd„ d|||ƒ}G ‡ fdd„d|ƒ}|  d|tƒ ƒ¡ |||||fD ]	}|  t|j¡ qR|||fD ]}|  t|ƒt|ƒ¡ qa|  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  	|t|ƒ¡ |  d|tƒ ƒ¡ |  t|ƒt|ƒ¡ |  	|t|ƒ¡ d S )Nr   r  rÊ  c                   @   rk  )z@InterfaceTests.test___adapt__inheritance_and_type.<locals>.IRootÚRootNrm  r   r   r   r   ÚIRootç  r  rä  c                       rÌ  )zEInterfaceTests.test___adapt__inheritance_and_type.<locals>.IWithAdaptc                 S   rÀ   rÍ  r   rê   r   r   r   r	  ë  rº   zOInterfaceTests.test___adapt__inheritance_and_type.<locals>.IWithAdapt.__adapt__NrÎ  r   rÊ  r   r   Ú
IWithAdaptê  rÑ  rå  c                   @   rk  )zAInterfaceTests.test___adapt__inheritance_and_type.<locals>.IOtherzSecond branchNrm  r   r   r   r   rP  ï  r  rP  c                   @   rk  )zEInterfaceTests.test___adapt__inheritance_and_type.<locals>.IUnrelatedÚ	UnrelatedNrm  r   r   r   r   Ú
IUnrelatedò  r  rç  c                   @   rk  )zHInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerivedAdaptzInherits an adaptNrm  r   r   r   r   ÚIDerivedAdaptõ  r  rè  c                       s   e Zd ZdZ” dd„ ƒZdS )zIInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerived2Adaptz$Overrides an inherited custom adapt.c                 S   rÀ   rÒ  r   rê   r   r   r   r	  û  rº   zSInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerived2Adapt.__adapt__N)r   r   r   rB   r	  r   rÊ  r   r   ÚIDerived2Adaptù  s    ré  r�  rÓ  )
r   r  rË  r"   r!   r   r   rè  ÚassertNotEqualrç  )	r%   r  rä  rå  rP  rç  rè  ré  rñ   r   rÊ  r   Ú"test___adapt__inheritance_and_typeã  s&   z1InterfaceTests.test___adapt__inheritance_and_typec                    sP   ddl m} ddl m‰  G ‡ fdd„d|ƒ}|  || ƒd¡ |  | ¡ d¡ d S )Nr   r  rÊ  c                       s$   e Zd Z” dd„ ƒZ” dd„ ƒZdS )z9InterfaceTests.test_interfacemethod_is_general.<locals>.Ic                 S   rÀ   )zReplace an existing methodr�  r   rê   r   r   r   rä  	  s   zBInterfaceTests.test_interfacemethod_is_general.<locals>.I.__call__c                 S   rÀ   rÍ  r   rq   r   r   r   Úthis_is_new	  rº   zEInterfaceTests.test_interfacemethod_is_general.<locals>.I.this_is_newN)r   r   r   rä  rì  r   rÊ  r   r   r/  	  s
    
r/  r�  )r   r  rË  r"   rì  rá  r   rÊ  r   Útest_interfacemethod_is_general	  s
   z.InterfaceTests.test_interfacemethod_is_generalN)9r   r   r   rò  rø  r  r  r  r  r  r"  r.  r0  r2  r7  r@  rF  rM  rQ  rV  rZ  r\  r^  r_  r`  rb  rc  rd  rf  rg  rj  rp  rs  r�  r�  r“  r•  r˜  r   r›  r¤  r«  r·  rº  r»  r¾  rÀ  rÂ  rÄ  rÅ  rÉ  rÏ  rÖ  rÞ  râ  rë  rí  r   r   r   r   rî  €  sn    	
!+9))	/5
$,rî  c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚAttributeTestsÚTestAttributec                 C   r9   )Nr   rE  )r    rF  )r%   rF  r   r   r   r;   &	  r<   zAttributeTests._getTargetClassc                 C   sJ   |   ¡ }t| ƒ|_t|ƒ}|  | d¡|¡ |  | dt d ¡|¡ d S )Nú-<zope.interface.interface.Attribute object atú z.AttributeTests.TestAttribute>)r?   rè  ru   Úreprrš   Ú
startswithÚendswithr   ©r%   rõ  Úrr   r   r   Útest__repr__w_interface*	  s
   
z&AttributeTests.test__repr__w_interfacec                 C   s8   |   ¡ }t|ƒ}|  | d¡|¡ |  | d¡|¡ d S )Nrð  z TestAttribute>)r?   rò  rš   ró  rô  rõ  r   r   r   Útest__repr__wo_interface1	  s   z'AttributeTests.test__repr__wo_interfacec                 C   s.   |   ¡ }t| ƒ|_t|ƒ}|  |td ¡ d S )Nz.AttributeTests.TestAttribute)r?   rè  ru   rþ   r"   r   rõ  r   r   r   Útest__str__w_interface7	  s   
z%AttributeTests.test__str__w_interfacec                 C   s    |   ¡ }t|ƒ}|  |d¡ d S )Nrï  )r?   rþ   r"   rõ  r   r   r   Útest__str__wo_interface=	  s   z&AttributeTests.test__str__wo_interfaceN)	r   r   r   r=   r;   r÷  rø  rù  rú  r   r   r   r   rî  "	  s    rî  c                   @   sx   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚMethodTestsÚ
TestMethodc                 C   r9   )Nr   rA  )r    rB  )r%   rB  r   r   r   r;   G	  r<   zMethodTests._getTargetClassc                 C   sH   |   ¡ }|  |ji ¡ ddi|_|  |jddi¡ |`|  |ji ¡ d S rR   )r?   r"   rh  ©r%   rõ  r   r   r   Útest_optional_as_propertyK	  s   
z%MethodTests.test_optional_as_propertyc              
   C   sr   ddl m} |  ¡ }z|ƒ  W n" |y1 } z|  |jd ¡ |  |j| j¡ W Y d }~d S d }~ww |  d¡ d S )Nr   )ÚBrokenImplementationz*__call__ should raise BrokenImplementation)ry  rÿ  r?   r"   ru   r>   r=   rx  )r%   rÿ  rõ  r~  r   r   r   Ú)test___call___raises_BrokenImplementationS	  s   
€þz5MethodTests.test___call___raises_BrokenImplementationc                 C   sl   |   ¡ }| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d d ¡ d S )NÚ
positionalÚrequiredrh  ÚvarargsÚkwargs)r?   ÚgetSignatureInfor"   rD   )r%   rõ  Úinfor   r   r   Útest_getSignatureInfo_bare^	  s   z&MethodTests.test_getSignatureInfo_barec                 C   s   |   ¡ }|  | ¡ d¡ d S )Nz())r?   r"   rà  rý  r   r   r   Útest_getSignatureString_bareg	  rQ   z(MethodTests.test_getSignatureString_barec                 C   s*   |   ¡ }dg |_|_|  | ¡ d¡ d S )NrS   z(foo))r?   r  r  r"   rà  rý  r   r   r   Ú'test_getSignatureString_w_only_requiredk	  s   z3MethodTests.test_getSignatureString_w_only_requiredc                 C   s4   |   ¡ }dg |_|_ddi|_|  | ¡ d¡ d S )NrS   r.   z(foo='bar'))r?   r  r  rh  r"   rà  rý  r   r   r   Ú"test_getSignatureString_w_optionalp	  s   
z.MethodTests.test_getSignatureString_w_optionalc                 C   ó"   |   ¡ }d|_|  | ¡ d¡ d S )Nr   z(*args))r?   r  r"   rà  rý  r   r   r   Ú!test_getSignatureString_w_varargsv	  r-  z-MethodTests.test_getSignatureString_w_varargsc                 C   r  )Nr   z(**kw))r?   r  r"   rà  rý  r   r   r   Ú test_getSignatureString_w_kwargs{	  r-  z,MethodTests.test_getSignatureString_w_kwargsc                 C   sP   |   ¡ }d|_t| ƒ|_t|ƒ}|  | d¡|¡ |  | dt d ¡|¡ d S )Nr   ú*<zope.interface.interface.Method object atrñ  z.MethodTests.TestMethod(**kw)>)	r?   r  rè  ru   rò  rš   ró  rô  r   rõ  r   r   r   r÷  €	  s   
z#MethodTests.test__repr__w_interfacec                 C   s>   |   ¡ }d|_t|ƒ}|  | d¡|¡ |  | d¡|¡ d S )Nr   r  z TestMethod(**kw)>)r?   r  rò  rš   ró  rô  rõ  r   r   r   rø  ˆ	  s
   z$MethodTests.test__repr__wo_interfacec                 C   s4   |   ¡ }d|_t| ƒ|_t|ƒ}|  |td ¡ d S )Nr   z.MethodTests.TestMethod(**kw))r?   r  rè  ru   rþ   r"   r   rõ  r   r   r   rù  �	  s
   
z"MethodTests.test__str__w_interfacec                 C   s&   |   ¡ }d|_t|ƒ}|  |d¡ d S )Nr   zTestMethod(**kw))r?   r  rþ   r"   rõ  r   r   r   rú  –	  s   z#MethodTests.test__str__wo_interfaceN)r   r   r   r=   r;   rþ  r   r  r  r	  r
  r  r  r÷  rø  rù  rú  r   r   r   r   rû  C	  s    	rû  c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTest_fromFunctionc                 O   ó   ddl m} ||i |¤ŽS )Nr   r`  )r    ra  )r%   r   r   ra  r   r   r   Ú_callFUTŸ	  ó   zTest_fromFunction._callFUTc                 C   ó¸   dd„ }|   |¡}|  | ¡ d¡ |  | ¡ d¡ |  |jd ¡ |  t| ¡ ƒg ¡ | ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d	 d ¡ d S )
Nc                   S   rÀ   rb  r   r   r   r   r   Ú_func¤	  re  z*Test_fromFunction.test_bare.<locals>._funcr  rc  r  r  rh  r  r  ©r  r"   rA   rC   ru   rD   rE   r  ©r%   r  rõ  r  r   r   r   Ú	test_bare£	  ó   
zTest_fromFunction.test_barec                 C   sD   ddl m} G dd„ d|ƒ}dd„ }| j||d�}|  |j|¡ d S )Nr   rW  c                   @   rÌ   )z0Test_fromFunction.test_w_interface.<locals>.IFooNr   r   r   r   r   r8  ´	  rÎ   r8  c                   S   rÀ   rb  r   r   r   r   r   r  ¶	  re  z1Test_fromFunction.test_w_interface.<locals>._funcrt   )r    rX  r  r"   ru   )r%   rX  r8  r  rõ  r   r   r   Útest_w_interface²	  s
   z"Test_fromFunction.test_w_interfacec                 C   s*   dd„ }| j |dd�}|  | ¡ d¡ d S )Nc                   S   rÀ   rb  r   r   r   r   r   r  ¼	  re  z,Test_fromFunction.test_w_name.<locals>._funcÚanotherName)r>   )r  r"   rA   )r%   r  rõ  r   r   r   Útest_w_name»	  s   zTest_fromFunction.test_w_namec                 C   sz   dd„ }|   |¡}| ¡ }|  t|d ƒdg¡ |  t|d ƒdg¡ |  |d i ¡ |  |d d ¡ |  |d d ¡ d S )	Nc                 S   rÀ   rb  r   ©rS   r   r   r   r  Â	  re  z5Test_fromFunction.test_w_only_required.<locals>._funcr  rS   r  rh  r  r  ©r  r  r"   rD   r  r   r   r   Útest_w_only_requiredÁ	  s   
z&Test_fromFunction.test_w_only_requiredc                 C   s~   d
dd„}|   |¡}| ¡ }|  t|d ƒdg¡ |  t|d ƒg ¡ |  |d ddi¡ |  |d d ¡ |  |d	 d ¡ d S )Nr.   c                 S   rÀ   rb  r   r  r   r   r   r  Í	  re  z0Test_fromFunction.test_w_optional.<locals>._funcr  rS   r  rh  r  r  ©r.   r  r  r   r   r   Útest_w_optionalÌ	  s   

z!Test_fromFunction.test_w_optionalc                 C   s|   ddd„}| j |dd�}| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d	 d ¡ |  |d
 d ¡ d S )Nr.   c                 S   rÀ   rb  r   rq   r   r   r   r  ß	  re  z5Test_fromFunction.test_w_optional_self.<locals>._funcr$  )Úimlevelr  r  rh  r  r  r  r  r  r   r   r   Útest_w_optional_self×	  s   
z&Test_fromFunction.test_w_optional_selfc                 C   sv   dd„ }|   |¡}| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d¡ |  |d d ¡ d S )	Nc                  W   rÀ   rb  r   rt  r   r   r   r  ê	  re  z/Test_fromFunction.test_w_varargs.<locals>._funcr  r  rh  r  r   r  r  r  r   r   r   Útest_w_varargsé	  ó   
z Test_fromFunction.test_w_varargsc                 C   sv   dd„ }|   |¡}| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d d¡ d S )	Nc                  [   rÀ   rb  r   )r   r   r   r   r  õ	  re  z.Test_fromFunction.test_w_kwargs.<locals>._funcr  r  rh  r  r  r   r  r  r   r   r   Útest_w_kwargsô	  r$  zTest_fromFunction.test_w_kwargsc                 C   s‚   ddd„}|   |¡}| ¡ }|  t|d ƒddg¡ |  t|d ƒdg¡ |  |d ddi¡ |  |d	 d
¡ |  |d d¡ d S )Nr/   c                 _   rÀ   rb  r   )rS   r.   r   r   r   r   r   r   
  re  z3Test_fromFunction.test_full_spectrum.<locals>._funcr  rS   r.   r  rh  r  r   r  r   ©r/   r  r  r   r   r   Útest_full_spectrumÿ	  s   

z$Test_fromFunction.test_full_spectrumN)r   r   r   r  r  r  r  r  r   r"  r#  r%  r'  r   r   r   r   r  �	  s    	r  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTest_fromMethodc                 O   r  )Nr   )Ú
fromMethod)r    r)  )r%   r   r   r)  r   r   r   r  
  r  zTest_fromMethod._callFUTc                 C   sÂ   G dd„ dt ƒ}|  |j¡}|  | ¡ d¡ |  | ¡ d¡ |  |jd ¡ |  t| ¡ ƒg ¡ | 	¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d	 d ¡ d S )
Nc                   @   rŠ   )z)Test_fromMethod.test_no_args.<locals>.Fooc                 S   rÀ   rb  r   rq   r   r   r   r.   
  re  z-Test_fromMethod.test_no_args.<locals>.Foo.barNrH  r   r   r   r   r   
  r   r   r.   rc  r  r  rh  r  r  )
r!   r  r.   r"   rA   rC   ru   rD   rE   r  ©r%   r   rõ  r  r   r   r   Útest_no_args
  s   zTest_fromMethod.test_no_argsc                 C   sŠ   G dd„ dt ƒ}|  |j¡}| ¡ }|  t|d ƒddg¡ |  t|d ƒdg¡ |  |d ddi¡ |  |d	 d
¡ |  |d d¡ d S )Nc                   @   s   e Zd Zddd„ZdS )z/Test_fromMethod.test_full_spectrum.<locals>.Foor/   c                 _   rÀ   rb  r   )r%   rS   r.   r   r   r   r   r   r.   #
  re  z3Test_fromMethod.test_full_spectrum.<locals>.Foo.barNr&  rH  r   r   r   r   r   "
  s    r   r  rS   r.   r  rh  r/   r  r   r  r   )r!   r  r.   r  r"   rD   r*  r   r   r   r'  !
  s   z"Test_fromMethod.test_full_spectrumc                 C   r  )
Nc                   S   rÀ   rb  r   r   r   r   r   rS   .
  re  z.Test_fromMethod.test_w_non_method.<locals>.foorS   rc  r  r  rh  r  r  r  )r%   rS   rõ  r  r   r   r   Útest_w_non_method-
  r  z!Test_fromMethod.test_w_non_methodN)r   r   r   r  r+  r'  r,  r   r   r   r   r(  
  s
    r(  c                   @   r   )r%  c                 C   s
   g | _ d S r   )r1  rq   r   r   r   r¸   >
  rr   zDummyDependent.__init__c                 C   s   | j  |¡ d S r   )r1  r  )r%   Úoriginally_changedr   r   r   r5  A
  s   zDummyDependent.changedN)r   r   r   r¸   r5  r   r   r   r   r%  <
  s    r%  c                 C   sV   ddl m} t| dd ƒ}t| dd ƒ}|d ur%t|t|ƒƒr'||ks)|dƒ‚d S d S d S )Nr   rÃ  rS   r.   r’  )ry  rÄ  r#   rÏ  rè  )rz   rÄ  rS   r.   r   r   r   r�  E
  s   úr�  c                 C   s4   ddl m} t| dd ƒrt| dd ƒs|dƒ‚d S d S )Nr   rÃ  rS   r.   rŽ  )ry  rÄ  r#   )rz   rÄ  r   r   r   r‡  Q
  s   ÿr‡  c                   @   r*   )r�   c                    s<   ˆ | _ ‡ fdd„|D ƒ| _| ¡ D ]
\}}tˆ ||ƒ qd S )Nc                    s   i | ]}|t ˆ |ƒ“qS r   )r#   )ru  Úkey©rî   r   r   Ú
<dictcomp>[
  s    z$_Monkey.__init__.<locals>.<dictcomp>)rî   Ú
to_restoreÚitemsÚsetattr)r%   rî   r   r.  r(  r   r/  r   r¸   Y
  s
   ÿz_Monkey.__init__c                 C   s   | S r   r   rq   r   r   r   Ú	__enter___
  r|   z_Monkey.__enter__c                 C   s&   | j  ¡ D ]\}}t| j||ƒ qd S r   )r1  r2  r3  rî   )r%   Úexc_typeÚexc_valÚexc_tbr.  r(  r   r   r   Ú__exit__b
  s   ÿz_Monkey.__exit__N)r   r   r   r¸   r4  r8  r   r   r   r   r�   W
  s    r�   ) rB   ÚunittestÚzope.interface._compatr   Úzope.interface.testsr   r   r   r!   r  ÚTestCaser   r+   r7   rm   r‹   r�   r¬   rå   r  r  r  rV  rî  rî  rû  r  r(  r%  r�  r‡  r�   r   r   r   r   Ú<module>   s^   
!$Hÿ.i-þ	     &         +!Zn1	