o
    Êó·i5x ã                   @   sÌ  d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ e	ƒ Z
ejj d¡ZG dd	„ 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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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+ƒZ d,d-„ Z!d.d/„ Z"G d0d1„ d1ƒZ#G d2d3„ d3ejƒZ$dS )4zTest Interface implementation
é    N)ÚCleanUp)ÚMissingSomeAttrs)ÚOptimizationTestMixin)ÚSubclassableMixinÚHashMec                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚTest_invariantc                    sR   ddl m} ddl m‰ dd„ ‰ G ‡ ‡fdd„dƒ}|  t||d ƒdˆ gi¡ d S )	Nr   ©ÚTAGGED_DATA©Ú	invariantc                  _   ó   t ƒ ‚©N©ÚNotImplementedError©ÚargsÚkw© r   úiC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\zope/interface/tests/test_interface.pyÚ_check3   ó   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   ÚFoo6   ó    r   Ú
invariants©Úzope.interface.interfacer
   r   Ú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||d ƒd
ˆˆ gi¡ d S )Nr   r	   r   c                  _   r   r   r   r   r   r   r   r   @   r   z.Test_invariant.test_w_multiple.<locals>._checkc                  _   r   r   r   r   r   r   r   Ú_another_checkC   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   F   s    r   r   r    r$   r   r(   r   Útest_w_multiple<   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                    sH   ddl m} ddl m‰  G ‡ fdd„dƒ}|  t||d ƒddgi¡ d S )Nr   r	   ©ÚtaggedValuec                       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   T   ó    r   r.   r/   ©r!   r
   r-   r"   r#   r$   r   r,   r   r&   P   s   ÿzTest_taggedValue.test_w_singlec                    sJ   ddl m} ddl m‰  G ‡ fdd„dƒ}|  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    r   r/   r3   ©r.   r2   r1   r$   r   r,   r   r)   Z   s   
ÿz Test_taggedValue.test_w_multiplec                    sH   ddl m} ddl m‰  G ‡ fdd„dƒ}|  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   i   s    
r   r5   r3   r4   r1   r$   r   r,   r   Útest_w_multiple_overwritinge   s   ÿz,Test_taggedValue.test_w_multiple_overwritingN)r   r   r   r&   r)   r6   r   r   r   r   r+   N   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 )ÚElementTestsZ	AnElementc                 C   ó   ddl m} |S )Nr   )ÚElement)r!   r9   )r%   r9   r   r   r   Ú_getTargetClassv   ó   zElementTests._getTargetClassNc                 C   s   |d u r| j }|  ¡ |ƒS r   )ÚDEFAULT_NAMEr:   )r%   Únamer   r   r   Ú_makeOnez   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_defaults   s   zElementTests.test_ctor_defaultsc                 C   s*   |   d¡}|  |jd ¡ |  |jd¡ d S )Nz
An Element)r>   r"   r   rA   rE   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ÚgetTaggedValuerE   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"   rC   ÚgetDirectTaggedValueTagsÚsetTaggedValuerE   r   r   r   Útest_getDirectTaggedValueTags�   s   z*ElementTests.test_getDirectTaggedValueTagsc                 C   ó   |   ¡ }|  | d¡d ¡ d S rJ   ©r>   r"   ÚqueryTaggedValuerE   r   r   r   Útest_queryTaggedValue_miss—   ó   z'ElementTests.test_queryTaggedValue_missc                 C   ó    |   ¡ }|  | dd¡d¡ d S ©NrK   r.   rW   rE   r   r   r   Ú$test_queryTaggedValue_miss_w_default›   ó   z1ElementTests.test_queryTaggedValue_miss_w_defaultc                 C   rI   rJ   )r>   rL   rM   ÚgetDirectTaggedValuerE   r   r   r   Útest_getDirectTaggedValue_missŸ   rP   z+ElementTests.test_getDirectTaggedValue_missc                 C   rV   rJ   ©r>   r"   ÚqueryDirectTaggedValuerE   r   r   r   Ú test_queryDirectTaggedValue_miss£   rZ   z-ElementTests.test_queryDirectTaggedValue_missc                 C   r[   r\   ra   rE   r   r   r   Ú*test_queryDirectTaggedValue_miss_w_default§   s   ÿz7ElementTests.test_queryDirectTaggedValue_miss_w_defaultc                 C   sR   |   ¡ }| dd¡ |  t| ¡ ƒdg¡ |  | d¡d¡ |  | d¡d¡ d S rQ   )r>   rT   r"   rC   rD   rN   rX   rE   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)Zzope.interface.interfacesrf   Úzope.interface.verifyrh   r>   )r%   rf   rh   rF   r   r   r   Útest_verifies´   s   zElementTests.test_verifiesr   )r   r   r   r<   r:   r>   rG   rH   rO   rU   rY   r]   r`   rc   rd   re   rj   r   r   r   r   r7   r   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   r8   )Nr   )ÚSpecificationBasePy)r!   rl   )r%   rl   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   ©Úobjrt   r   r   Ú_providedByÌ   ó   zGGenericSpecificationBaseTests.test_providedBy_miss.<locals>._providedBy©Ú
providedBy)	Úzope.interfacers   Úzope.interface.declarationsru   r>   Ú_MonkeyÚassertFalser|   Úobject)r%   rs   Úsbry   r   rt   r   Útest_providedBy_missÇ   ó   "ÿz2GenericSpecificationBaseTests.test_providedBy_missc                    rq   )Nr   rr   rt   c                    rv   r   r   rw   rt   r   r   Ú_implementedBy×   rz   zMGenericSpecificationBaseTests.test_implementedBy_miss.<locals>._implementedBy©ÚimplementedBy)	r}   rs   r~   ru   r>   r   r€   r‡   r�   )r%   rs   r‚   r…   r   rt   r   Útest_implementedBy_missÒ   r„   z5GenericSpecificationBaseTests.test_implementedBy_missN)r   r   r   rm   r:   r>   rƒ   rˆ   r   r   r   r   rk   ¼   s    rk   c                   @   ó   e Zd Zdd„ ZdS )ÚSpecificationBaseTestsc                 C   r8   )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€   Z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‚   Z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                    óv   ddl m} |  ¡ ‰G ‡fdd„dƒ‰ ‡ fdd„}t||d�� |  ˆ tƒ ¡¡ W d   ƒ d S 1 s4w   Y  d S )Nr   rr   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   rw   ©r¢   r   r   r…   
  r   zGSpecificationBasePyTests.test_implementedBy_hit.<locals>._implementedByr†   )r}   rs   r>   r   r˜   r‡   r�   )r%   rs   r…   r   ©r¢   r‚   r   Útest_implementedBy_hit  ó   "ÿz/SpecificationBasePyTests.test_implementedBy_hitc                    rž   )Nr   rr   c                       rŸ   )z;SpecificationBasePyTests.test_providedBy_hit.<locals>._DeclNr    r   r¡   r   r   r¢     r   r¢   c                    r£   r   r   rw   r¤   r   r   ry     r   zASpecificationBasePyTests.test_providedBy_hit.<locals>._providedByr{   )r}   rs   r>   r   r˜   r|   r�   )r%   rs   ry   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>   ro   r   r   r   Ú_makeOneToCompare   s   z3NameAndModuleComparisonTestsMixin._makeOneToComparec              	      s˜  dd l }|  ¡ }t||ƒ}t|d| ƒ}G ‡ fdd„dƒ‰ G dd„ dˆ ƒ}G dd„ dˆ ƒ}|  |ƒ jd	¡ |  |ƒ jd	¡ |  t¡� t|ƒ d
ƒ W d   ƒ n1 sSw   Y  |  t¡� t|ƒ dƒ W d   ƒ n1 snw   Y  ||fD ]}|  ||ƒ ƒt	¡ qwG dd„ dˆ ƒ}	|  
|||	ƒ ƒ¡ |  ||	ƒ ƒt	¡ G dd„ dƒ}
|  ||
ƒ ƒ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   ƒ �q1 �sCw   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­   2  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 ©NrR   )r   ro   r   r   r   Ú__init__:  rp   ziNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__init__c                 S   ó   t ‚r   )r®   ro   r   r   r   r   =  ó   zkNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnModule.__module__N)r   r   r   rµ   Úpropertyr   r   r   r   ÚRaisesErrorOnModule9  s    r¹   c                   @   r‰   )z^NameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnNamec                 S   r³   r´   ©r   ro   r   r   r   rµ   B  rp   zgNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.RaisesErrorOnName.__init__N©r   r   r   rµ   r   r   r   r   ÚRaisesErrorOnNameA  r   r¼   rR   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__S  rz   zgNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.AllowsAnyComparison.__eq__N©	r   r   r   rÀ   Ú__lt__Ú__le__Ú__gt__Ú__ge__Ú__ne__r   r   r   r   ÚAllowsAnyComparisonR  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   ÚAllowsNoComparison_  s    rÈ   c                   @   ó   e Zd ZdS )zXNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparison.<locals>.MyExceptionNr   r   r   r   r   ÚMyExceptionl  ó    rÊ   )Úoperatorr¬   r#   r"   r   r   rL   r®   ÚassertIsÚNotImplementedr˜   Ú	TypeErrorÚ	Exceptionr¯   )r%   r=   rÌ   ÚibÚopÚmethr¹   r¼   ÚclsrÇ   rÈ   rÊ   r   r±   r   Z!__check_NotImplemented_comparison#  sR   

ÿÿ	ÿÿÿÿ$ÿýzCNameAndModuleComparisonTestsMixin.__check_NotImplemented_comparisonc                 C   ó   |   d¡ d S )NÚlt©ÚC_NameAndModuleComparisonTestsMixin__check_NotImplemented_comparisonro   r   r   r   Útest__lt__NotImplemented|  ó   z:NameAndModuleComparisonTestsMixin.test__lt__NotImplementedc                 C   rÕ   )NÚler×   ro   r   r   r   Útest__le__NotImplemented  rÚ   z:NameAndModuleComparisonTestsMixin.test__le__NotImplementedc                 C   rÕ   )NÚgtr×   ro   r   r   r   Útest__gt__NotImplemented‚  rÚ   z:NameAndModuleComparisonTestsMixin.test__gt__NotImplementedc                 C   rÕ   )NÚger×   ro   r   r   r   Útest__ge__NotImplemented…  rÚ   z:NameAndModuleComparisonTestsMixin.test__ge__NotImplementedN)	r   r   r   r¬   rØ   rÙ   rÜ   rÞ   rà   r   r   r   r   r©     s    Y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   ro   r   r   r   r:   Œ  rz   z'InterfaceBaseTestsMixin._getTargetClassc                 C   r8   )Nr   )ÚInterfaceBasePy)r!   râ   )r%   râ   r   r   r   rm   �  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%   Zconformr   r   r   Ú_call_conform—  ó   z:InterfaceBaseTestsMixin._makeOne.<locals>.IB._call_conformc                    rv   r   r   ©r%   rx   ©Úobject_should_provider   r   r|   š  rz   z7InterfaceBaseTestsMixin._makeOne.<locals>.IB.providedByN)r   r   r   rã   r|   r   ræ   r   r   ÚIB–  s    rè   rn   )r%   rç   r=   Úmodulerè   r   ræ   r   r>   ”  s   
z InterfaceBaseTestsMixin._makeOnec                    s8   |   d¡}tƒ ‰ G ‡ fdd„dƒ}|  ||ƒ ƒˆ ¡ d S )NFc                       ó   e Zd Z‡ fdd„ZdS )zUInterfaceBaseTestsMixin.test___call___w___conform___returning_value.<locals>._Adaptedc                    rv   r   r   ©r%   Úiface©Z	conformedr   r   Ú__conform__¤  rz   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Ñ   Z__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>   rL   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î   )Zexpected_missing)r   Ztest_raisesr>   ro   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:   rm   r>   rñ   rô   rø   rù   r   r   r   r   rá   ‰  s    

rá   c                   @   r‰   )ÚInterfaceBaseTestsc                 C   r8   )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   s2   |   d¡}G dd„ dƒ}|ƒ }|  ||ƒ|¡ d S )NTc                   @   r‰   )zSInterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adaptedc                 S   ó   d S r   r   rë   r   r   r   rî   Ò  rz   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   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   rr   Fc                    s   ˆ   | |f¡ d S r   ©Úappend©rì   rx   ©Z_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æ  rz   zPInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_hit©Úadapter_hooks)r}   rs   r>   r�   r   rÍ   rÿ   r"   )r%   rs   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á   rm   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   r8   )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   sf   ddl m} |  ¡ }|  |jd¡ |  t|jƒd¡ |  ||j¡ |  ||j¡ |  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  rL   rM   Úunsubscriber  r   r   r   Útest_unsubscribe_miss  ó   z(SpecificationTests.test_unsubscribe_missc                 C   sZ   |   ¡ }tƒ }| |¡ | |¡ | |¡ |  |j| d¡ | |¡ |  ||j¡ d S r  )r>   r  r  r   r"   r  ÚassertNotInr  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É   )zYSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.IFooNr   r   r   r   r   ÚIFoo%  rË   r%  c                   @   rÉ   )zYSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.IBarNr   r   r   r   r   ÚIBar(  rË   r&  r  )
r!   r  r>   r  r  r  r"   Ú_changedr  Úget)r%   r  r  r  r%  r&  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¡ d S )Nr   r  c                   @   rÉ   )zJSpecificationTests.test_changed_clears_volatiles_and_implied.<locals>.IFooNr   r   r   r   r   r%  5  rË   r%  r   r   )r!   r  r>   Ú_v_attrsr’   ÚchangedÚassertIsNoner#  ©r%   r  r%  r  r   r   r   Ú)test_changed_clears_volatiles_and_implied2  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   r%  B  rË   r%  )r!   r  r>   r"   rC   Ú
interfacesr-  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   r%  K  rË   r%  T©Ústrict)r!   r  r>   r€   Úextendsr-  r   r   r   Útest_extends_strict_wo_selfH  s   
z.SpecificationTests.test_extends_strict_wo_selfc                 C   ó    |   ¡ }|  |j|dd�¡ d S )NTr1  )r>   r€   r3  ©r%   r  r   r   r   Útest_extends_strict_w_selfQ  r^   z-SpecificationTests.test_extends_strict_w_selfc                 C   r5  )NFr1  )r>   r˜   r3  r6  r   r   r   Útest_extends_non_strict_w_selfU  r^   z1SpecificationTests.test_extends_non_strict_w_selfc                 C   s.   |   ¡ }tƒ }d|i|_|  | d¡|¡ d S r´   )r>   r�   r*  rÍ   r(  )r%   r  rR   r   r   r   Útest_get_hit_w__v_attrsY  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¡¡ |  | d	¡| d	¡¡ d S )
Nr   ©Ú	Attributer  c                       ó   e Zd Z” dƒZdS )zCSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IFoorR   N)r   r   r   rR   r   r:  r   r   r%  c  r   r%  c                       r<  )zCSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IBarr.   N©r   r   r   r.   r   r:  r   r   r&  f  r   r&  rR   r.   )r!   r;  r  r>   rÍ   r(  )r%   r  r%  r&  r  r   r:  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ƒ}G d	d
„ d
|ƒ}G dd„ d|ƒ}||ƒG dd„ dƒƒ}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   ÚIDefaultViewNamew  rË   rA  c                   @   rÉ   )zKSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ContextNr   r   r   r   r   ÚContextz  rË   rB  c                   @   rÉ   )zLSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.RDBModelNr   r   r   r   r   ÚRDBModel}  rË   rC  c                   @   rÉ   )zJSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.IOtherNr   r   r   r   r   ÚIOther€  rË   rD  c                   @   rÉ   )zMSpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.OtherBaseNr   r   r   r   r   Ú	OtherBaseƒ  ó    rE  c                   @   rÉ   )zISpecificationTests.test_multiple_inheritance_no_interfaces.<locals>.ModelNr   r   r   r   r   ÚModel‡  rË   rG  )r~   r‡   r@  r!   r  r"   Z__sro__r�   )
r%   r‡   r@  r  rA  rB  rC  rD  rE  rG  r   r   r   Ú'test_multiple_inheritance_no_interfacesm  s(   úþz:SpecificationTests.test_multiple_inheritance_no_interfacesN)r   r   r   r:   r  r>   r  r  r  r!  r$  r)  r.  r0  r4  r7  r8  r9  r>  rH  r   r   r   r   r  î  s"    	
		r  c                   @   s¤  e Zd Zdd„ Z		didd„Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Z	djd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#dGdH„ Z$dIdJ„ Z%dKdL„ Z&dMdN„ Z'dOdP„ Z(dQdR„ Z)dSdT„ Z*dUdV„ Z+dWdX„ Z,dYdZ„ Z-d[d\„ Z.d]d^„ Z/d_d`„ Z0dadb„ Z1dcdd„ Z2dedf„ Z3dgdh„ Z4dS )kÚInterfaceClassTestsc                 C   r8   )Nr   ©ÚInterfaceClass)r!   rK  )r%   rK  r   r   r   r:   ™  r;   z#InterfaceClassTests._getTargetClassÚITestr   Nc                 C   s   |   ¡ |||||ƒS r   rn   )r%   r=   r  ÚattrsrA   r   r   r   r   r>   �  s   zInterfaceClassTests._makeOnec                 C   sN   |   ¡ }|dƒ}|  |jd¡ |  |jd¡ |  |jd¡ |  | ¡ d¡ d S )NÚITestingr?   r   )r:   r"   r   rA   r  ÚgetBases)r%   ÚklassÚinstr   r   r   rG   ¡  s   z&InterfaceClassTests.test_ctor_defaultsc                 C   s    |   ¡ }|  t|dtƒ f¡ d S )NrN  )r:   rL   rÏ   r�   )r%   rP  r   r   r   Útest_ctor_bad_bases©  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   r:  ©ÚfromFunctionc                   S   r½   ©Ú	DOCSTRINGNr   r   r   r   r   Ú_bar±  ó    zBInterfaceClassTests.test_ctor_w_attrs_attrib_methods.<locals>._barr   r?   ©rR   r.   rN  ©rM  r   )
r!   r;  rT  r:   r"   r   rA   r  ÚnamesÚkeys)r%   r;  rT  rW  ÚATTRSrP  rQ  r   r   r   Ú test_ctor_w_attrs_attrib_methods­  s   þz4InterfaceClassTests.test_ctor_w_attrs_attrib_methodsc                 C   ó^   di i}|   ¡ }|d|d�}|  |jd¡ |  |jd¡ |  |jd¡ |  t| ¡ ƒg ¡ d S )NZ
__locals__rN  rZ  r?   r   ©r:   r"   r   rA   r  rC   r[  ©r%   r]  rP  rQ  r   r   r   Útest_ctor_attrs_w___locals__¿  ó   z0InterfaceClassTests.test_ctor_attrs_w___locals__c                 C   r_  )NÚ__annotations__rN  rZ  r?   r   r`  ra  r   r   r   Ú!test_ctor_attrs_w___annotations__È  rc  z5InterfaceClassTests.test_ctor_attrs_w___annotations__Úreturnc                    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
g¡ |ƒ }|||ƒ |||ƒ d S )Nr   r:  r  ©ÚdirectlyProvidesrg   c                       s   e Zd ZU ” dƒZeed< dS )zKInterfaceClassTests.test_ctor_attrs_w___annotate_func__.<locals>.IAnnotatedÚValueÚvalueN©r   r   r   rj  Úintrd  r   r:  r   r   Ú
IAnnotated×  s   
 rm  c                   @   s   e Zd ZU dZeed< dS )zJInterfaceClassTests.test_ctor_attrs_w___annotate_func__.<locals>.Annotatedr   rj  Nrk  r   r   r   r   Ú	AnnotatedÚ  s   
 rn  rj  )	r}   r;  r  rh  ri   rh   r"   rC   r[  )r%   r  rh  rh   rm  rn  Z	annotatedr   r:  r   Ú#test_ctor_attrs_w___annotate_func__Ñ  s   
z7InterfaceClassTests.test_ctor_attrs_w___annotate_func__c                 C   sj   ddl m} d|i}|  ¡ }|d|d�}|  |jd¡ |  |jd¡ |  |jd¡ |  t| ¡ ƒg ¡ d S )Nr   )Ú_decorator_non_returnZdropmerN  rZ  r?   r   )	r!   rp  r:   r"   r   rA   r  rC   r[  )r%   rp  r]  rP  rQ  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ÚinvalidrN  rZ  )Úzope.interface.exceptionsrr  r�   r:   rL   )r%   rr  r]  rP  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 )NrA   ZATTRrN  ZEXPLICIT)rM  rA   )r:   r"   rA   ra  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"   rC   r/  rë   r   r   r   Útest_interfacesø  s   z#InterfaceClassTests.test_interfacesc                 C   s.   |   ¡ }| j d|fd�}|  | ¡ |f¡ d S ©NZISub)r  )r>   r"   rO  ©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  rP   z5InterfaceClassTests.test_isEqualOrExtendedBy_identityc                 C   s<   |   ¡ }| j d|fd�}|  | |¡¡ |  | |¡¡ d S rx  )r>   r˜   r|  r€   ry  r   r   r   Ú!test_isEqualOrExtendedBy_subiface  s   z5InterfaceClassTests.test_isEqualOrExtendedBy_subifacec                 C   s8   |   d¡}|   d¡}|  | |¡¡ |  | |¡¡ d S )NZOneZAnother)r>   r€   r|  )r%   ÚoneZ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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW    rX  zFInterfaceClassTests.test_names_w_all_False_ignores_bases.<locals>._barr   r?   rY  r/   ÚBazÚIBaserZ  ÚIDerived©r  rM  F©Úall©r!   r;  rT  r>   r"   Úsortedr[  ©r%   r;  rT  rW  Ú
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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  '  rX  z@InterfaceClassTests.test_names_w_all_True_no_bases.<locals>._barr   r?   rY  rZ  Tr…  r.   rR   r‡  ©r%   r;  rT  rW  r]  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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  5  rX  zFInterfaceClassTests.test_names_w_all_True_w_bases_simple.<locals>._barr   r?   rY  r/   r�  r‚  rZ  rƒ  r„  Tr…  ©r.   r/   rR   r‡  r‰  r   r   r   Ú$test_names_w_all_True_w_bases_simple1  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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  I  rX  zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._barc                   S   r½   rU  r   r   r   r   r   Ú_fooL  rX  zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._foor   r?   rY  r�  ©rR   r/   r‚  rZ  rƒ  r„  Tr…  r‘  r‡  ©	r%   r;  rT  rW  r“  rŠ  r‹  rŒ  r�  r   r   r   Ú(test_names_w_all_True_bases_w_same_namesE  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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  a  rX  z/InterfaceClassTests.test___iter__.<locals>._barc                   S   r½   rU  r   r   r   r   r   r“  d  rX  z/InterfaceClassTests.test___iter__.<locals>._foor   r?   rY  r�  r”  r‚  rZ  rƒ  r„  r‘  )r!   r;  rT  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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  w  rX  zUInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases.<locals>._barr   r?   rY  r/   r�  r‚  rZ  rƒ  r„  Fr…  ©r!   r;  rT  r>   r"   rˆ  ÚnamesAndDescriptionsr‰  r   r   r   Ú3test_namesAndDescriptions_w_all_False_ignores_basess  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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  �  rX  zOInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases.<locals>._barr   r?   rY  rZ  Fr…  r.   rR   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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW     rX  zMInterfaceClassTests.test_namesAndDescriptions_w_all_True_simple.<locals>._barr   r?   rY  r/   r�  r‚  rZ  rƒ  r„  Tr…  r.   rR   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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  ¸  rX  zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._barc                   S   r½   rU  r   r   r   r   r   r“  »  rX  zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._foor   r?   rY  r�  r”  r‚  rZ  rƒ  r„  Tr…  r.   r/   rR   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   rI   rJ   )r>   rL   rM   ÚgetDescriptionFor©r%   r  r   r   r   Útest_getDescriptionFor_missÐ  rP   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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  Ø  rX  z<InterfaceClassTests.test_getDescriptionFor_hit.<locals>._barr   r?   rY  rZ  rR   r.   )r!   r;  rT  r>   r"   rž  r�  r   r   r   Útest_getDescriptionFor_hitÔ  s   þz.InterfaceClassTests.test_getDescriptionFor_hitc                    s$   |   ¡ ‰ ‡ fdd„}|  t|¡ d S )Nc                      s   ˆ d S rJ   r   r   ©r  r   r   Ú_testæ  rä   z8InterfaceClassTests.test___getitem___miss.<locals>._test)r>   rL   rM   )r%   r£  r   r¢  r   Útest___getitem___missã  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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW  ï  rX  z6InterfaceClassTests.test___getitem___hit.<locals>._barr   r?   rY  rZ  rR   r.   )r!   r;  rT  r>   r"   r�  r   r   r   Útest___getitem___hitë  s   þz(InterfaceClassTests.test___getitem___hitc                 C   s   |   ¡ }|  d|¡ d S rJ   )r>   r#  rŸ  r   r   r   Útest___contains___missú  s   z*InterfaceClassTests.test___contains___missc                 C   s\   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  d
|¡ |  d|¡ d S )Nr   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW    rX  z7InterfaceClassTests.test___contains___hit.<locals>._barr   r?   rY  rZ  rR   r.   )r!   r;  rT  r>   rõ   r�  r   r   r   Útest___contains___hitþ  s   þz)InterfaceClassTests.test___contains___hitc                 C   rV   rJ   )r>   r"   ÚdirectrŸ  r   r   r   Útest_direct_miss  rZ   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   r:  rS  c                   S   r½   rU  r   r   r   r   r   rW    rX  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._barc                   S   r½   rU  r   r   r   r   r   r“    rX  zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._foor   r?   rY  r�  r”  r‚  rZ  rƒ  r„  rR   r/   r.   )r!   r;  rT  r>   r"   r¨  r•  r   r   r   Ú test_direct_hit_local_miss_bases  s   þþz4InterfaceClassTests.test_direct_hit_local_miss_basesc                 C   rV   rJ   )r>   r"   ÚqueryDescriptionForrë   r   r   r   Útest_queryDescriptionFor_miss)  rZ   z1InterfaceClassTests.test_queryDescriptionFor_missc                 C   s@   ddl m} d|ddƒi}| j|d�}|  | d¡|d ¡ d S )Nr   r:  ÚattrZTitleÚDescriptionrZ  )r}   r;  r>   r"   r«  )r%   r;  r]  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   ©Z_called_withr   r   Ú	_passable6  ó   zCInterfaceClassTests.test_validateInvariants_pass.<locals>._passabler   )r>   r�   rT   r"   ÚvalidateInvariants)r%   r²  rì   rx   r   r±  r   Útest_validateInvariants_pass3  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²  D  r³  zTInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._passablec                     ó   ˆ  | |f¡ ˆ ‚r   r  r   ©r·  Ú_fail_called_withr   r   Ú_failJ  r³  zPInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._failr   ©rt  r·  r>   r�   rT   rL   r´  r"   )r%   r²  r½  rì   rx   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¡ |  	|d ˆ ¡ d S )Nr   r¶  c                     rº  r   r  r   r»  r   r   r½  Z  r³  zOInterfaceClassTests.test_validateInvariants_fail_w_errors_passed.<locals>._failr   r  ©
rt  r·  r>   r�   rT   rL   r´  r"   r  ÚassertIsInstance)r%   Ú_errorsr½  rì   rx   r   r»  r   Ú,test_validateInvariants_fail_w_errors_passedU  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²  j  r³  z\InterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._passablec                     rº  r   r  r   r»  r   r   r½  p  r³  zXInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._failr‚  rƒ  r   r¾  )r%   r²  r½  rŒ  r�  rx   r   r¿  r   Ú5test_validateInvariants_fail_in_base_wo_errors_passedf  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
¡ |  	|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�  rx   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>   rT   r´  r"   r  )r%   r²  rx   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 )NZPickleMe)r>   r"   Ú
__reduce__rë   r   r   r   Útest___reduce__¥  s   
z#InterfaceClassTests.test___reduce__c                 C   s$   ddl m} |  t|ƒtdƒ¡ d S )Nr   )r   )r   z#zope.interface.tests.test_interface)Z#zope.interface.tests.test_interfacer   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   ro   r   r   r   rµ   ³  rz   zRInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derived.__init__Nr»   r   r   r   r   ÚDerived²  r   rÌ  )r:   rL   r®   rÊ  )r%   rÌ  r�  r   r   r   Ú$test___hash___missing_required_attrs°  s
   
"ÿz8InterfaceClassTests.test___hash___missing_required_attrsc                 C   s¤   |   ¡ }|  |d ¡ |  |d ¡ |  |d ¡ |  |d ¡ |  |d k¡ |  |d k¡ |  d |k ¡ |  d |k¡ |  d |¡ |  d |¡ |  d |¡ |  d |¡ d S r   )r>   Ú
assertLessÚassertLessEqualÚassertNotEqualr€   ÚassertGreaterEqualÚassertGreaterrë   r   r   r   Útest_comparison_with_Noneº  s   z-InterfaceClassTests.test_comparison_with_Nonec                 C   sX   |   ¡ }|  ||k ¡ |  ||¡ |  ||¡ |  ||¡ |  ||¡ |  ||k¡ d S r   )r>   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¡ |  ||¡ d S )NÚINamezzope.interface.tests.onerº   zzope.interface.tests.other)r>   rÎ  r€   rÏ  rÐ  rÑ  rÒ  )r%   r  r¿   r   r   r   Ú8test_comparison_with_same_named_instance_in_other_moduleÖ  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Ê   ê  rË   rÊ   c                       rê   )zIInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClassc                    s   ˆ |ƒ‚r   r   )r%   Útarget©rÊ   r   r   Ú__call__î  rä   zRInterfaceClassTests.test_assignment_to__class__.<locals>.MyInterfaceClass.__call__N©r   r   r   rÙ  r   rØ  r   r   ÚMyInterfaceClassí  r0   rÛ  rÕ  r  )	rÐ   r:   r>   rÂ  rÍ   ÚtyperL   rÏ   Ú	__class__)r%   rÛ  r%  r   rØ  r   Útest_assignment_to__class__è  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Ù    rz   zSInterfaceClassTests.test_assignment_to__class__2.<locals>.MyInterfaceClass.__call__NrÚ  r   r   r   r   rÛ    r   rÛ  r%  r  )r  c                   @   rÉ   )z>InterfaceClassTests.test_assignment_to__class__2.<locals>.IBarNr   r   r   r   r   r&    rË   r&  c                   @   rÉ   )z?InterfaceClassTests.test_assignment_to__class__2.<locals>.ISpamNr   r   r   r   r   ÚISpam  rË   rß  )r}   r  r:   r"   rL   rÏ   rÝ  )r%   r  rÛ  r%  r&  rß  r   r   r   Útest_assignment_to__class__2ÿ  s   ÿz0InterfaceClassTests.test_assignment_to__class__2c                 C   s>   |   ¡ }|  t¡� d|_W d   ƒ d S 1 sw   Y  d S )Nzdifferent.module)r>   rL   r®   r   )r%   rQ  r   r   r   Útest__module__is_readonly  s   "ÿz-InterfaceClassTests.test__module__is_readonly)rL  r   NNN)rf  N)5r   r   r   r:   r>   rG   rR  r^  rb  re  ro  rq  ru  rv  rw  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   rI  —  sj    
ÿ	
	

rI  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%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgdh„ Z6diS )jÚInterfaceTestsc                    sB   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  |d j|¡ d S )Nr   r:  r  c                       r<  )z<InterfaceTests.test_attributes_link_to_interface.<locals>.I1úMy attrN)r   r   r   r­  r   r:  r   r   ÚI1&  r   rä  r­  )r}   r;  r  rÍ   rs   ©r%   r  rä  r   r:  r   Ú!test_attributes_link_to_interface"  s   z0InterfaceTests.test_attributes_link_to_interfacec                 C   s2   ddl m} G dd„ d|ƒ}|  |d j|¡ d S )Nr   r  c                   @   r‰   )z9InterfaceTests.test_methods_link_to_interface.<locals>.I1c                 S   r½   ©zA methodNr   )rR   r.   Zbingor   r   r   Úmethod/  rX  z@InterfaceTests.test_methods_link_to_interface.<locals>.I1.methodN©r   r   r   rè  r   r   r   r   rä  .  r   rä  rè  )r}   r  rÍ   rs   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
ƒ}|ƒ }|  ˆ  |¡¡ |  | |¡¡ |  ˆ ˆ ¡ |  ˆ ||ƒ¡ |  |||ƒ¡ |  ˆ ||ƒ¡ |  |||ƒ¡ d S )Nr   r  r†   r{   c                   @   r   )z<InterfaceTests.test_classImplements_simple.<locals>.ICurrentc                 S   r½   ©Ú	docstringNr   ©rª   r«   r   r   r   Úmethod1:  rX  zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method1c                 S   r½   rë  r   rí  r   r   r   Úmethod2=  rX  zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method2N)r   r   r   rî  rï  r   r   r   r   ÚICurrent9  s    rð  c                   @   rÉ   )z:InterfaceTests.test_classImplements_simple.<locals>.IOtherNr   r   r   r   r   rD  @  rË   rD  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î  F  r   zCInterfaceTests.test_classImplements_simple.<locals>.Current.method1c                 S   r   r   r   rñ  r   r   r   rï  I  r   zCInterfaceTests.test_classImplements_simple.<locals>.Current.method2N)r   r   r   Ú__implemented__rî  rï  r   ©rð  r   r   ÚCurrentC  s    rô  )	r}   r  r‡   r|   r˜   r€   r"   rõ   r#  )r%   r  r‡   r|   rD  rô  Úcurrentr   ró  r   Útest_classImplements_simple4  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
ƒ}|ƒ }|  ˆ  |¡¡ |  | |¡¡ |  ˆ ||ƒ¡ |  |||ƒ¡ |  ˆ ||ƒ¡ |  |||ƒ¡ 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è  \  rX  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   ro   r   r   r   rè  e  r   zLInterfaceTests.test_classImplements_base_not_derived.<locals>.Current.methodN©r   r   r   rò  rè  r   ©r‚  r   r   rô  b  ó    rô  ©r}   r  r‡   r|   r˜   r€   rõ   r#  )r%   r  r‡   r|   rƒ  rô  rõ  r   rù  r   Ú%test_classImplements_base_not_derivedV  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
ƒ}|ƒ }|  | |¡¡ |  ˆ  |¡¡ |  |||ƒ¡ |  |||ƒ ¡ ¡ |  ˆ ||ƒ¡ |  |||ƒ¡ |  |||ƒ ¡ ¡ |  ˆ ||ƒ¡ 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è  w  rX  zJInterfaceTests.test_classImplements_base_and_derived.<locals>.IBase.methodNré  r   r   r   r   r‚  v  r   r‚  c                   @   rÉ   )zFInterfaceTests.test_classImplements_base_and_derived.<locals>.IDerivedNr   r   r   r   r   rƒ  z  rË   rƒ  c                       r÷  )zEInterfaceTests.test_classImplements_base_and_derived.<locals>.Currentc                 S   r   r   r   ro   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õ   Z	flattened)r%   r  r‡   r|   r‚  rô  rõ  r   rý  r   Ú%test_classImplements_base_and_derivedq  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
ƒ}G ‡fdd„dƒ}G dd„ d||ƒ}|ƒ }|  ˆ  |¡¡ |  ˆ |¡¡ |  ˆ ||ƒ¡ |  ˆ||ƒ¡ |  ˆ ||ƒ¡ |  ˆ||ƒ¡ d S )Nr   r  r†   r{   c                   @   r‰   )z;InterfaceTests.test_classImplements_multiple.<locals>.ILeftc                   S   r½   rë  r   r   r   r   r   rè  ”  rX  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   ro   r   r   r   rè  �  r   zAInterfaceTests.test_classImplements_multiple.<locals>.Left.methodNrø  r   ©rÿ  r   r   ÚLeftš  rú  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  Zambir   )rÿ  r   r   Útest_classImplements_multipleŽ  s   z,InterfaceTests.test_classImplements_multiplec                    s<  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ƒ}G ‡fdd„dƒ‰G ‡‡fdd„dˆ|ƒ}|ƒ }|  ˆ  |¡¡ |  ˆ |¡¡ |  ˆ |¡¡ |  ˆ ||ƒ¡ |  ˆ||ƒ¡ |  ˆ||ƒ¡ |  ˆ ||ƒ¡ |  ˆ||ƒ¡ |  ˆ||ƒ¡ 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è  ¶  rX  zWInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeft.methodNré  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   rD  ¼  rË   rD  c                       r÷  )zOInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Leftc                 S   r   r   r   ro   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   )rD  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  Úmixedr   )rÿ  rD  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˜   r3  r€   )r%   r  Únewr  r  r  r  r   r   r   ÚtestInterfaceExtendsInterfaceÚ  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ƒ}|  |ˆ|ƒ¡ d S )	Nr   r:  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è  ó  rX  z8InterfaceTests.test_verifyClass.<locals>.ICheckMe.methodN©r   r   r   r­  rè  r   r:  r   r   ÚICheckMeð  ó    r  c                       ó   e Zd Z” ZdZdd„ ZdS )z0InterfaceTests.test_verifyClass.<locals>.CheckMerj  c                 S   r   r   r   ro   r   r   r   rè  ú  r   z7InterfaceTests.test_verifyClass.<locals>.CheckMe.methodN©r   r   r   rò  r­  rè  r   ©r  r   r   ÚCheckMeö  ó    r  )r}   r;  r  ri   r  r˜   )r%   r  r  r  r   ©r;  r  r   Útest_verifyClassë  s   zInterfaceTests.test_verifyClassc                    sd   ddl m‰  ddl m} ddlm} G ‡ fdd„d|ƒ‰G ‡fdd„dƒ}|ƒ }|  |ˆ|ƒ¡ d S )	Nr   r:  r  rg   c                       r  )z2InterfaceTests.test_verifyObject.<locals>.ICheckMerã  c                   S   r½   rç  r   r   r   r   r   rè    rX  z9InterfaceTests.test_verifyObject.<locals>.ICheckMe.methodNr  r   r:  r   r   r    r  r  c                       r  )z1InterfaceTests.test_verifyObject.<locals>.CheckMerj  c                 S   r   r   r   ro   r   r   r   rè    r   z8InterfaceTests.test_verifyObject.<locals>.CheckMe.methodNr  r   r  r   r   r  
  r  r  )r}   r;  r  ri   rh   r˜   )r%   r  rh   r  Zcheck_mer   r  r   Útest_verifyObjectÿ  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   ÚAnInterface  rË   r"  )r}   r  r˜   r|   )r%   r  r"  r   r   r   Ú(test_interface_object_provides_Interface  ó   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   r:  r  c                       r  )z1InterfaceTests.test_names_simple.<locals>.ISimplerã  c                   S   r½   rë  r   r   r   r   r   rè  $  rX  z8InterfaceTests.test_names_simple.<locals>.ISimple.methodNr  r   r:  r   r   ÚISimple!  r  r%  r­  rè  ©r}   r;  r  r"   rˆ  r[  ©r%   r  r%  r   r:  r   Útest_names_simple  ó   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   r:  r  c                       r  )z0InterfaceTests.test_names_derived.<locals>.IBaserã  c                   S   r½   rë  r   r   r   r   r   rè  0  rX  z7InterfaceTests.test_names_derived.<locals>.IBase.methodNr  r   r:  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è  6  rX  z:InterfaceTests.test_names_derived.<locals>.IDerived.methodc                   S   r½   rë  r   r   r   r   r   rï  9  rX  z;InterfaceTests.test_names_derived.<locals>.IDerived.method2N©r   r   r   Úattr2rè  rï  r   r:  r   r   rƒ  3  ó    rƒ  )r-  rè  rï  Tr…  ©r­  r-  rè  rï  r&  ©r%   r  r‚  rƒ  r   r:  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¡ |  	|d d	 ˆ ¡ |  |d d	 j
d¡ |  |d d	 jd
¡ |  |d	 d d¡ |  	|d	 d	 |¡ |  |d	 d	 j
d¡ |  |d	 d	 jd¡ d S )Nr   r:  r  ©ÚMethodc                       r  )z@InterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimplerã  c                   S   r½   ©ú	My methodNr   r   r   r   r   rè  I  rX  zGInterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimple.methodNr  r   r:  r   r   r%  F  r  r%  r  r­  r  rã  rè  r5  ©r}   r;  r  r!   r3  rˆ  r™  r"   r  rÂ  r   rA   )r%   r  r3  r%  Úname_valuesr   r:  r   Ú test_namesAndDescriptions_simpleA  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
¡ |  	|d d ˆ ¡ |  |d d j
d
¡ |  |d d jd¡ |  |d d d¡ |  	|d d |¡ |  |d d j
d¡ |  |d d jd¡ |  |d d d¡ |  	|d d |¡ |  |d d j
d¡ |  |d d jd¡ t|jdd�ƒ}|  t|ƒd¡ |  |d d d¡ |  	|d d ˆ ¡ |  |d d j
d¡ |  |d d jd¡ |  |d d d
¡ |  	|d d ˆ ¡ |  |d d j
d
¡ |  |d d jd¡ |  |d d d¡ |  	|d d |¡ |  |d d j
d¡ |  |d d jd¡ |  |d	 d d¡ |  	|d	 d |¡ |  |d	 d j
d¡ |  |d	 d jd¡ d S )Nr   r:  r  r2  c                       r  )z?InterfaceTests.test_namesAndDescriptions_derived.<locals>.IBaserã  c                   S   r½   r4  r   r   r   r   r   rè  `  rX  zFInterfaceTests.test_namesAndDescriptions_derived.<locals>.IBase.methodNr  r   r:  r   r   r‚  ]  r  r‚  c                       r*  )zBInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerivedr+  c                   S   r½   ©úMy method, overriddenNr   r   r   r   r   rè  f  rX  zIInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.methodc                   S   r½   ©ú
My method2Nr   r   r   r   r   rï  i  rX  zJInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method2Nr,  r   r:  r   r   rƒ  c  r.  rƒ  é   r-  r  r+  rè  r:  r  rï  r<  Tr…  é   r­  rã  r6  )r%   r  r3  r‚  rƒ  r7  r   r:  r   Ú!test_namesAndDescriptions_derivedX  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Ë   rA  rK   )r}   r  rL   rM   rž  ©r%   r  rA  r   r   r   Ú*test_getDescriptionFor_nonesuch_no_default�  r$  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¡}|  |ˆ ¡ |  |jd¡ |  |j	d¡ | d	¡}|  ||¡ |  |jd	¡ |  |j	d
¡ d S )Nr   r:  r  r2  c                       r  )z=InterfaceTests.test_getDescriptionFor_simple.<locals>.ISimplerã  c                   S   r½   r4  r   r   r   r   r   rè     rX  zDInterfaceTests.test_getDescriptionFor_simple.<locals>.ISimple.methodNr  r   r:  r   r   r%  �  r  r%  r­  rã  rè  r5  ©
r}   r;  r  r!   r3  rž  rÂ  r"   r   rA   ©r%   r  r3  r%  Úa_descÚm_descr   r:  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	¡}|  |ˆ ¡ |  |jd	¡ |  |j	d
¡ | d¡}|  ||¡ |  |jd¡ |  |j	d¡ | d¡}|  |ˆ ¡ |  |jd¡ |  |j	d¡ | d¡}|  ||¡ |  |jd¡ |  |j	d¡ d S )Nr   r:  r  r2  c                       r  )z<InterfaceTests.test_getDescriptionFor_derived.<locals>.IBaserã  c                   S   r½   r4  r   r   r   r   r   rè  µ  rX  zCInterfaceTests.test_getDescriptionFor_derived.<locals>.IBase.methodNr  r   r:  r   r   r‚  ²  r  r‚  c                       r*  )z?InterfaceTests.test_getDescriptionFor_derived.<locals>.IDerivedr+  c                   S   r½   r9  r   r   r   r   r   rè  »  rX  zFInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.methodc                   S   r½   r;  r   r   r   r   r   rï  ¾  rX  zGInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method2Nr,  r   r:  r   r   rƒ  ¸  r.  rƒ  r­  rã  rè  r:  r-  r+  rï  r<  rD  ©	r%   r  r3  r‚  rƒ  rF  rG  Za2_descZm2_descr   r:  r   Útest_getDescriptionFor_derived­  s*   
	


z-InterfaceTests.test_getDescriptionFor_derivedc                 C   r@  )Nr   r  c                   @   rÉ   )z7InterfaceTests.test___getitem__nonesuch.<locals>.IEmptyNr   r   r   r   r   rA  Ø  rË   rA  rK   )r}   r  rL   rM   Ú__getitem__rB  r   r   r   Útest___getitem__nonesuchÕ  r$  z'InterfaceTests.test___getitem__nonesuchc                    sœ   ddl m‰  ddl m} ddlm} G ‡ fdd„d|ƒ}|d }|  |ˆ ¡ |  |jd¡ |  |jd¡ |d	 }|  ||¡ |  |jd	¡ |  |jd
¡ d S )Nr   r:  r  r2  c                       r  )z6InterfaceTests.test___getitem__simple.<locals>.ISimplerã  c                   S   r½   r4  r   r   r   r   r   rè  å  rX  z=InterfaceTests.test___getitem__simple.<locals>.ISimple.methodNr  r   r:  r   r   r%  â  r  r%  r­  rã  rè  r5  ©	r}   r;  r  r!   r3  rÂ  r"   r   rA   rE  r   r:  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	 }|  |ˆ ¡ |  |jd	¡ |  |jd
¡ |d }|  ||¡ |  |jd¡ |  |jd¡ |d }|  |ˆ ¡ |  |jd¡ |  |jd¡ |d }|  ||¡ |  |jd¡ |  |jd¡ d S )Nr   r:  r  r2  c                       r  )z6InterfaceTests.test___getitem___derived.<locals>.IBaserã  c                   S   r½   r4  r   r   r   r   r   rè  ú  rX  z=InterfaceTests.test___getitem___derived.<locals>.IBase.methodNr  r   r:  r   r   r‚  ÷  r  r‚  c                       r*  )z9InterfaceTests.test___getitem___derived.<locals>.IDerivedr+  c                   S   r½   r9  r   r   r   r   r   rè     rX  z@InterfaceTests.test___getitem___derived.<locals>.IDerived.methodc                   S   r½   r;  r   r   r   r   r   rï    rX  zAInterfaceTests.test___getitem___derived.<locals>.IDerived.method2Nr,  r   r:  r   r   rƒ  ý  r.  rƒ  r­  rã  rè  r:  r-  r+  rï  r<  rM  rI  r   r:  r   Útest___getitem___derivedò  s*   	z'InterfaceTests.test___getitem___derivedc                 C   s,   ddl m} G dd„ d|ƒ}|  d|¡ d S )Nr   r  c                   @   rÉ   )z8InterfaceTests.test___contains__nonesuch.<locals>.IEmptyNr   r   r   r   r   rA    rË   rA  rK   )r}   r  r#  rB  r   r   r   Útest___contains__nonesuch  s   z(InterfaceTests.test___contains__nonesuchc                    sH   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  d|¡ |  d|¡ d S )Nr   r:  r  c                       r  )z7InterfaceTests.test___contains__simple.<locals>.ISimplerã  c                   S   r½   r4  r   r   r   r   r   rè  )  rX  z>InterfaceTests.test___contains__simple.<locals>.ISimple.methodNr  r   r:  r   r   r%  &  r  r%  r­  rè  ©r}   r;  r  rõ   r'  r   r:  r   Útest___contains__simple"  s
   z&InterfaceTests.test___contains__simplec                    st   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  d|¡ |  d	|¡ |  d
|¡ |  d|¡ d S )Nr   r:  r  c                       r  )z6InterfaceTests.test___contains__derived.<locals>.IBaserã  c                   S   r½   r4  r   r   r   r   r   rè  6  rX  z=InterfaceTests.test___contains__derived.<locals>.IBase.methodNr  r   r:  r   r   r‚  3  r  r‚  c                       r*  )z9InterfaceTests.test___contains__derived.<locals>.IDerivedr+  c                   S   r½   r9  r   r   r   r   r   rè  <  rX  z@InterfaceTests.test___contains__derived.<locals>.IDerived.methodc                   S   r½   r;  r   r   r   r   r   rï  ?  rX  zAInterfaceTests.test___contains__derived.<locals>.IDerived.method2Nr,  r   r:  r   r   rƒ  9  r.  rƒ  r­  rè  r-  rï  rQ  r0  r   r:  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   rA  J  rË   rA  )r}   r  r"   rC   rB  r   r   r   Útest___iter__emptyG  r$  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   r:  r  c                       r  )z3InterfaceTests.test___iter__simple.<locals>.ISimplerã  c                   S   r½   r4  r   r   r   r   r   rè  V  rX  z:InterfaceTests.test___iter__simple.<locals>.ISimple.methodNr  r   r:  r   r   r%  S  r  r%  r­  rè  ©r}   r;  r  r"   rˆ  rC   r'  r   r:  r   Útest___iter__simpleO  r)  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   r:  r  c                       r  )z2InterfaceTests.test___iter__derived.<locals>.IBaserã  c                   S   r½   r4  r   r   r   r   r   rè  b  rX  z9InterfaceTests.test___iter__derived.<locals>.IBase.methodNr  r   r:  r   r   r‚  _  r  r‚  c                       r*  )z5InterfaceTests.test___iter__derived.<locals>.IDerivedr+  c                   S   r½   r9  r   r   r   r   r   rè  h  rX  z<InterfaceTests.test___iter__derived.<locals>.IDerived.methodc                   S   r½   r;  r   r   r   r   r   rï  k  rX  z=InterfaceTests.test___iter__derived.<locals>.IDerived.method2Nr,  r   r:  r   r   rƒ  e  r.  rƒ  r/  rU  r0  r   r:  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è  u  rX  zSInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMe.methodr  N)r   r   r   rè  Úoptionalr   r   r   r   ÚITagMet  s    
rY  rè  rX  r  )r}   r  r"   rN   )r%   r  rY  rè  r   r   r   Ú-test_function_attributes_become_tagged_valuesq  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   rA   r   r   r   r   ÚIHaveADocString  r  r^  r\  )r}   r  r"   rA   rC   ©r%   r  r^  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   r:  r  c                       ó   e Zd ZdZ” dƒZdS )z?InterfaceTests.test___doc___as_element.<locals>.IHaveADocStringr\  úthe docNr]  r   r:  r   r   r^  ‰  s    r^  r?   rA   ©r}   r;  r  r"   rA   rC   r_  r   r:  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>)
rt  r·  rL   r´  Úfailr"   r   r  ÚsortÚpop)
r%   Úhas_invariantZ	error_lenÚ
error_msgsrì   r·  Úerg  Z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	ƒ}|ƒ }|||ƒ |  | d
¡tg¡ |  | |¡d ¡ d|_	|  | |¡d ¡ d|_
|  | |¡d ¡ |`	|  |ddg|¡ d S )Nr   r:  r  rg  r   c                       ó$   e Zd Z” dƒZ” dƒZ”eƒ dS )z8InterfaceTests.test_invariant_simple.<locals>.IInvariantrR   ú*bar; must eval to Boolean True if foo doesN©r   r   r   rR   r.   Ú_ifFooThenBarr   ©r;  r   r   r   Ú
IInvariant¦  ó    rv  c                   @   rÉ   )z:InterfaceTests.test_invariant_simple.<locals>.HasInvariantNr   r   r   r   r   ÚHasInvariant«  rË   rx  r   é   é*   r  úIf Foo, then Bar!)r}   r;  r  rh  r   r"   rN   rt  r´  r.   rR   rp  )r%   r  rh  rv  rx  rl  r   ru  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ƒ}|  | d¡tg¡ |ƒ }|||ƒ d|_|  	|ddg|¡ d|_d|_
|  	|ddg|¡ d|_d|_
|  	|dddg|¡ d|_d|_
|  | |¡d ¡ d S )Nr   r:  r  rg  r   c                       rq  )z8InterfaceTests.test_invariant_nested.<locals>.IInvariantrR   rr  Nrs  r   ru  r   r   rv  Ä  rw  rv  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   rx  Ì  rË   rx  r   rz  r  r{  r  ú%Please, Boo MUST be greater than Foo!)r}   r;  r  rh  r   r"   rN   r}  rR   rp  r.   r´  )r%   r  rh  rv  r~  rx  rl  r   ru  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	ƒ}|ƒ }|||ƒ d
|_| d¡}|d d … }| t¡ | 	d|¡ |  
|ddg|¡ d|_d|_|  
|ddg|¡ d|_d|_|  
|dddg|¡ d|_d|_|  | |¡d ¡ | 	d|¡ d S )Nr   r:  r  rg  r   c                       rq  )z:InterfaceTests.test_invariant_mutandis.<locals>.IInvariantrR   rr  Nrs  r   ru  r   r   rv  ó  rw  rv  c                   @   rÉ   )z<InterfaceTests.test_invariant_mutandis.<locals>.HasInvariantNr   r   r   r   r   rx  ø  rË   rx  rz  r   r  r{  r  r  )r}   r;  r  rh  r   rR   rN   r  r}  rT   rp  r.   r"   r´  )r%   r  rh  rv  rx  rl  Zold_invariantsr   r   ru  r   Útest_invariant_mutandisí  sH   


ÿüÿý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:  r  c                   @   r[  )z7InterfaceTests.test___doc___element.<locals>.IDocstringr\  Nr]  r   r   r   r   Ú
IDocstring*  r  r‚  r\  c                       ra  )zCInterfaceTests.test___doc___element.<locals>.IDocstringAndAttributer\  rb  Nr]  r   r:  r   r   ÚIDocstringAndAttribute0  rú  rƒ  r?   rA   rc  )r%   r  r‚  rƒ  r   r:  r   Útest___doc___element&  s   z#InterfaceTests.test___doc___elementc              
      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
ƒƒ}| |ddƒ¡ | |ddƒ¡ z| |ddƒ¡ W d S  ˆyk } z|  t	|ƒd¡ W Y d }~d S d }~ww )Nr   r:  r  r?  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_invariantC  s   ÿzJInterfaceTests.test_invariant_as_decorator.<locals>.IRange.range_invariantN)r   r   r   r‡  r†  r‰  r   ©r;  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µ   K  r  zBInterfaceTests.test_invariant_as_decorator.<locals>.Range.__init__Nr»   r   r   r   r   ÚRangeH  s    rŒ  r  r  r…  )
r}   r;  r  r@  r   rt  r·  r´  r"   rö   )r%   r  r@  r‹  rŒ  rn  r   rŠ  r   Útest_invariant_as_decorator8  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
| 	¡ ƒddh¡ d S )Nr   r:  r  r,   c                       s&   e Zd Z” dƒZ” dƒZ”ddƒ dS )z0InterfaceTests.test_taggedValue.<locals>.ITaggedrR   rr  r2   ÚSpamN)r   r   r   rR   r.   r   ©r;  r-   r   r   ÚITaggedZ  s    r�  c                       s    e Zd Z” ddƒ ” ddƒ dS )z1InterfaceTests.test_taggedValue.<locals>.IDerivedr2   ú	Spam SpamrR   r.   Nr   r   r,   r   r   rƒ  _  s    
rƒ  c                   @   rÉ   )z2InterfaceTests.test_taggedValue.<locals>.IDerived2Nr   r   r   r   r   Ú	IDerived2c  rË   r’  r2   rŽ  rR   r‘  r.   )r}   r;  r  r-   r"   rN   rL   rM   rC   rD   Úset)r%   r  r�  rƒ  r’  r   r�  r   Útest_taggedValueU  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:  r,   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  ó    
r—  c                       r•  )z0InterfaceTests._make_taggedValue_tree.<locals>.Er–  ÚENr˜  r   r�  r   r   rš  v  r™  rš  c                       r•  )z0InterfaceTests._make_taggedValue_tree.<locals>.Dr–  ÚDNr˜  r   r�  r   r   r›  z  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;  r-   )r%   rŒ  r—  rš  r›  rœ  r�  rž  r   r�  r   Ú_make_taggedValue_treen  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   rN   rX   r  rT   )r%   r  Zclass_AZ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Ÿ  r,  rb   r"   rC   rS   rL   rM   r_   rT   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
¡¡ |f|_|  | d
¡¡ d S )Nr   r:  r  c                       r<  )z<InterfaceTests.test_description_cache_management.<locals>.I1rª   N)r   r   r   rª   r   r:  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;  r  rÍ   r(  r  r,  )r%   r  rä  r¢  r£  r   r:  r   Ú!test_description_cache_managementµ  s   z0InterfaceTests.test_description_cache_managementc                 C   sT   ddl m} ddl m} G dd„ d|ƒ}||ƒG dd„ dƒƒ}|  ||ƒ ƒd¡ d S )Nr   r  r?  c                   @   rÉ   )zAInterfaceTests.test___call___defers_to___conform___.<locals>.IFooNr   r   r   r   r   r%  Î  rË   r%  c                   @   r‰   )z>InterfaceTests.test___call___defers_to___conform___.<locals>.Cc                 S   r½   )Nr   r   )r%   Úprotor   r   r   rî   Ó  rz   zJInterfaceTests.test___call___defers_to___conform___.<locals>.C.__conform__Nrï   r   r   r   r   rœ  Ñ  r
  rœ  )r}   r  r@  r"   )r%   r  r@  r%  rœ  r   r   r   Ú$test___call___defers_to___conform___Ê  s   z3InterfaceTests.test___call___defers_to___conform___c                 C   sX   ddl m} ddl m} G dd„ d|ƒ}||ƒG dd„ dƒƒ}|ƒ }|  ||ƒ|¡ d S )Nr   r  r?  c                   @   rÉ   )z<InterfaceTests.test___call___object_implements.<locals>.IFooNr   r   r   r   r   r%  Ü  rË   r%  c                   @   rÉ   )z9InterfaceTests.test___call___object_implements.<locals>.CNr   r   r   r   r   rœ  ß  rF  rœ  )r}   r  r@  rÍ   )r%   r  r@  r%  rœ  Úcr   r   r   Útest___call___object_implementsØ  s   z.InterfaceTests.test___call___object_implementsc                 C   sB   ddl m} G dd„ d|ƒ}G dd„ dƒ}|ƒ }|  t||¡ d S )Nr   r  c                   @   rÉ   )z<InterfaceTests.test___call___miss_wo_alternate.<locals>.IFooNr   r   r   r   r   r%  é  rË   r%  c                   @   rÉ   )z9InterfaceTests.test___call___miss_wo_alternate.<locals>.CNr   r   r   r   r   rœ  ì  rË   rœ  )r}   r  rL   rÏ   ©r%   r  r%  rœ  r§  r   r   r   Útest___call___miss_wo_alternateæ  s
   z.InterfaceTests.test___call___miss_wo_alternatec                 C   sF   ddl m} G dd„ d|ƒ}G dd„ dƒ}|ƒ }|  ||| ƒ| ¡ d S )Nr   r  c                   @   rÉ   )z;InterfaceTests.test___call___miss_w_alternate.<locals>.IFooNr   r   r   r   r   r%  õ  rË   r%  c                   @   rÉ   )z8InterfaceTests.test___call___miss_w_alternate.<locals>.CNr   r   r   r   r   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ƒ}|ƒ }|d d … }||g|d d …< zˆ  ||ƒˆ ¡ W ||d d …< d S ||d d …< w )Nr   r  r	  c                 S   rý   r   r   r  r   r   r   Ú_miss	  rz   z:InterfaceTests.test___call___w_adapter_hook.<locals>._missc                    rv   r   r   r  ro   r   r   Ú_hit	  rz   z9InterfaceTests.test___call___w_adapter_hook.<locals>._hitc                   @   rÉ   )z9InterfaceTests.test___call___w_adapter_hook.<locals>.IFooNr   r   r   r   r   r%  	  rË   r%  c                   @   rÉ   )z6InterfaceTests.test___call___w_adapter_hook.<locals>.CNr   r   r   r   r   rœ  	  rË   rœ  )r}   r  r!   r
  rÍ   )	r%   r  r
  r¬  r­  r%  rœ  r§  Zold_adapter_hooksr   ro   r   Útest___call___w_adapter_hookþ  s   z+InterfaceTests.test___call___w_adapter_hookc                    sv   ddl m} ddl m} ddl m‰  G ‡ fdd„d|ƒ}||ƒG dd„ dƒƒ}|  d	|tƒ ƒ¡ |  d	||ƒ ƒ¡ d S )
Nr   r  r?  ©Úinterfacemethodc                       ó   e Zd Z” dd„ ƒZdS )z=InterfaceTests.test___call___w_overridden_adapt.<locals>.IFooc                 S   r½   ©Nrz  r   rå   r   r   r   rÿ   	  r·   zGInterfaceTests.test___call___w_overridden_adapt.<locals>.IFoo.__adapt__N©r   r   r   rÿ   r   r¯  r   r   r%  	  s    r%  c                   @   rÉ   )z<InterfaceTests.test___call___w_overridden_adapt.<locals>.ObjNr   r   r   r   r   ÚObj"	  rF  r´  rz  )r}   r  r@  r°  r"   r�   )r%   r  r@  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
ƒƒ}||ƒG dd„ dƒƒ}|  d|tƒ ƒ¡ |  d||ƒ ƒ¡ |  d||ƒ ƒ¡ |  t¡� ||ƒ ƒ W d   ƒ n1 sjw   Y  |  d||ƒ ƒ¡ d S )Nr   r  r?  r¯  c                       r±  )zKInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdaptc                 S   r½   r²  r   rå   r   r   r   rÿ   3	  r·   zUInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.IAdapt.__adapt__Nr³  r   r¯  r   r   ÚIAdapt2	  ó    r¶  c                   @   r[  )zLInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ISimplezNothing special.Nr]  r   r   r   r   r%  7	  r  r%  c                   @   r‰   )zNInterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.Conform24c                 S   r½   ©Né   r   rë   r   r   r   rî   <	  rz   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î   A	  rz   z\InterfaceTests.test___call___w_overridden_adapt_and_conform.<locals>.ConformNone.__conform__Nrï   r   r   r   r   ÚConformNone?	  r
  r»  rz  r¹  )r}   r  r@  r°  r"   r�   rL   rÏ   )r%   r  r@  r¶  r%  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ƒƒ}|  d	|tƒ ƒ¡ |ƒ }|  |||ƒ¡ d S )
Nr   r  r?  r¯  c                       s    e Zd Z”‡ fdd„ƒZ‡  ZS )zHInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.IFooc                    s   |   |¡sdS tƒ  |¡S r²  )r|   Úsuperrÿ   rå   ©rÝ  r   r   rÿ   W	  s   
zRInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.IFoo.__adapt__)r   r   r   rÿ   Ú__classcell__r   r¯  r¾  r   r%  U	  s    r%  c                   @   rÉ   )zGInterfaceTests.test___call___w_overridden_adapt_call_super.<locals>.ObjNr   r   r   r   r   r´  ]	  rF  r´  rz  )Úsysr}   r  r@  r°  r"   r�   rÍ   )r%   rÀ  r  r@  r%  r´  rx   r   r¯  r   Ú+test___call___w_overridden_adapt_call_superN	  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 )zHInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFooc                 S   r½   r²  r   rå   r   r   r   rÿ   j	  r·   zRInterfaceTests.test___adapt___as_method_and_implementation.<locals>.IFoo.__adapt__c                 S   r½   )zThis is a protocolNr   )Zto_adaptr   r   r   rÿ   n	  rX  Nr³  r   r¯  r   r   r%  i	  s    
r%  rz  rÿ   z
(to_adapt))r}   r  r°  r"   r�   ÚgetSignatureString©r%   r  r%  r   r¯  r   Ú+test___adapt___as_method_and_implementatione	  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                   @   r[  )z@InterfaceTests.test___adapt__inheritance_and_type.<locals>.IRootZRootNr]  r   r   r   r   ÚIRootx	  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                   @   r[  )zAInterfaceTests.test___adapt__inheritance_and_type.<locals>.IOtherzSecond branchNr]  r   r   r   r   rD  €	  r  rD  c                   @   r[  )zEInterfaceTests.test___adapt__inheritance_and_type.<locals>.IUnrelatedZ	UnrelatedNr]  r   r   r   r   Ú
IUnrelatedƒ	  r  rÇ  c                   @   r[  )zHInterfaceTests.test___adapt__inheritance_and_type.<locals>.IDerivedAdaptzInherits an adaptNr]  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   rA   rÿ   r   r¯  r   r   ÚIDerived2AdaptŠ	  s    rÉ  rz  r¹  )
r}   r  r°  r"   r�   r   r   rÜ  rÐ  rÂ  )	r%   r  rÅ  rÆ  rD  rÇ  rÈ  rÉ  rì   r   r¯  r   Ú"test___adapt__inheritance_and_typet	  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 )z<InterfaceTests.test_interfacemethod_is_general.<locals>.IFooc                 S   r½   )zReplace an existing methodrz  Nr   rå   r   r   r   rÙ  ¦	  s   zEInterfaceTests.test_interfacemethod_is_general.<locals>.IFoo.__call__c                 S   r½   r²  r   ro   r   r   r   Úthis_is_new«	  r·   zHInterfaceTests.test_interfacemethod_is_general.<locals>.IFoo.this_is_newN)r   r   r   rÙ  rË  r   r¯  r   r   r%  ¤	  s
    
r%  rz  )r}   r  r°  r"   rË  rÃ  r   r¯  r   Útest_interfacemethod_is_general 	  s
   z.InterfaceTests.test_interfacemethod_is_generalN)7r   r   r   ræ  rê  rö  rü  rþ  r	  r  r  r   r!  r#  r(  r1  r8  r?  rC  rH  rJ  rL  rN  rO  rP  rR  rS  rT  rV  rW  rZ  r`  rd  rp  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â     sj    		"!+8((	/9#,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   r8   )Nr   r:  )r!   r;  )r%   r;  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Ü  rs   Ú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_interfaceÆ	  s   
ÿz'AttributeTests.test__repr__wo_interfacec                 C   s.   |   ¡ }t| ƒ|_t|ƒ}|  |td ¡ d S )Nz.AttributeTests.TestAttribute)r>   rÜ  rs   rö   r"   r   rÔ  r   r   r   Útest__str__w_interfaceÎ	  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 )ÚMethodTestsZ
TestMethodc                 C   r8   )Nr   r2  )r!   r3  )r%   r3  r   r   r   r:   Þ	  r;   zMethodTests._getTargetClassc                 C   sH   |   ¡ }|  |ji ¡ ddi|_|  |jddi¡ |`|  |ji ¡ d S rQ   )r>   r"   rX  ©r%   rè  r   r   r   Útest_optional_as_propertyâ	  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)rt  rÝ  r>   r"   rs   r=   r<   ri  )r%   rÝ  rè  rn  r   r   r   Ú)test___call___raises_BrokenImplementationê	  s   
€þz5MethodTests.test___call___raises_BrokenImplementationc                 C   sl   |   ¡ }| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d d ¡ d S )NÚ
positionalÚrequiredrX  ÚvarargsÚkwargs)r>   ÚgetSignatureInfor"   rC   )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_bareþ	  rP   z(MethodTests.test_getSignatureString_barec                 C   s*   |   ¡ }dg |_|_|  | ¡ d¡ d S )NrR   z(foo))r>   rß  rà  r"   rÂ  rÛ  r   r   r   Ú'test_getSignatureString_w_only_required
  s   z3MethodTests.test_getSignatureString_w_only_requiredc                 C   s4   |   ¡ }dg |_|_ddi|_|  | ¡ d¡ d S )NrR   r.   z(foo='bar'))r>   rß  rà  rX  r"   rÂ  rÛ  r   r   r   Ú"test_getSignatureString_w_optional
  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_varargs
  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Ü  rs   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Ü  rs   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Ù  3
  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Ú  Ú	  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   rS  )r!   rT  )r%   r   r   rT  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½   rU  r   r   r   r   r   Ú_funcB
  rX  z*Test_fromFunction.test_bare.<locals>._funcrò  rV  rß  rà  rX  rá  râ  ©rï  r"   r@   rB   rs   rC   rD   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   rJ  c                   @   rÉ   )z0Test_fromFunction.test_w_interface.<locals>.IFooNr   r   r   r   r   r%  T
  rË   r%  c                   S   r½   rU  r   r   r   r   r   rò  W
  rX  z1Test_fromFunction.test_w_interface.<locals>._funcrr   )r!   rK  rï  r"   rs   )r%   rK  r%  rò  rè  r   r   r   Útest_w_interfaceQ
  s
   z"Test_fromFunction.test_w_interfacec                 C   s*   dd„ }| j |dd�}|  | ¡ d¡ d S )Nc                   S   r½   rU  r   r   r   r   r   rò  _
  rX  z,Test_fromFunction.test_w_name.<locals>._funcZanotherName)r=   )rï  r"   r@   )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½   rU  r   ©rR   r   r   r   rò  g
  rX  z5Test_fromFunction.test_w_only_required.<locals>._funcrß  rR   rà  rX  rá  râ  ©rï  rã  r"   rC   rô  r   r   r   Útest_w_only_requirede
  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½   rU  r   rù  r   r   r   rò  t
  rX  z0Test_fromFunction.test_w_optional.<locals>._funcrß  rR   rà  rX  rá  râ  ©r.   rú  rô  r   r   r   Útest_w_optionalr
  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½   rU  r   ro   r   r   r   rò  ˆ
  rX  z5Test_fromFunction.test_w_optional_self.<locals>._funcr  )Zimlevelrß  rà  rX  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½   rU  r   re  r   r   r   rò  •
  rX  z/Test_fromFunction.test_w_varargs.<locals>._funcrß  rà  rX  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½   rU  r   )r   r   r   r   rò  ¢
  rX  z.Test_fromFunction.test_w_kwargs.<locals>._funcrß  rà  rX  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½   rU  r   )rR   r.   r   r   r   r   r   rò  ¯
  rX  z3Test_fromFunction.test_full_spectrum.<locals>._funcrß  rR   r.   rà  rX  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ƒ}|   |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½   rU  r   ro   r   r   r   r.   Æ
  rX  z-Test_fromMethod.test_no_args.<locals>.Foo.barNr=  r   r   r   r   r   Å
  r   r   r.   rV  rß  rà  rX  rá  râ  )	rï  r.   r"   r@   rB   rs   rC   rD   rã  ©r%   r   rè  rä  r   r   r   Útest_no_argsÃ
  s   zTest_fromMethod.test_no_argsc                 C   sˆ   G dd„ dƒ}|   |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½   rU  r   )r%   rR   r.   r   r   r   r   r   r.   Ø
  rX  z3Test_fromMethod.test_full_spectrum.<locals>.Foo.barNr  r=  r   r   r   r   r   ×
  s    ÿr   rß  rR   r.   rà  rX  r/   rá  r   râ  r   )rï  r.   rã  r"   rC   r  r   r   r   r  Õ
  s   z"Test_fromMethod.test_full_spectrumc                 C   rñ  )
Nc                   S   r½   rU  r   r   r   r   r   rR   ç
  rX  z.Test_fromMethod.test_w_non_method.<locals>.foorR   rV  rß  rà  rX  rá  râ  ró  )r%   rR   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   )r'  ro   r   r   r   rµ   ù
  rp   zDummyDependent.__init__c                 C   s   | j  |¡ d S r   )r'  r  )r%   Zoriginally_changedr   r   r   r+  ü
  s   zDummyDependent.changedN)r   r   r   rµ   r+  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¶  rR   r.   r  )rt  r·  r#   Ú
isinstancerÜ  )rx   r·  rR   r.   r   r   r   r}     s   úr}  c                 C   s4   ddl m} t| dd ƒrt| dd ƒs|dƒ‚d S d S )Nr   r¶  rR   r.   r{  )rt  r·  r#   )rx   r·  r   r   r   rt    s   ÿrt  c                   @   r*   )r   c                    s<   ˆ | _ ‡ fdd„|D ƒ| _| ¡ D ]
\}}tˆ ||ƒ qd S )Nc                    s   i | ]}|t ˆ |ƒ“qS r   )r#   )rf  Úkey©ré   r   r   Ú
<dictcomp>  s    z$_Monkey.__init__.<locals>.<dictcomp>)ré   Ú
to_restoreÚitemsÚsetattr)r%   ré   r   r
  rj  r   r  r   rµ     s
   ÿz_Monkey.__init__c                 C   s   | S r   r   ro   r   r   r   Ú	__enter__  rz   z_Monkey.__enter__c                 C   s&   | j  ¡ D ]\}}t| j||ƒ qd S r   )r  r  r  ré   )r%   Úexc_typeÚexc_valÚexc_tbr
  rj  r   r   r   Ú__exit__  s   ÿz_Monkey.__exit__N)r   r   r   rµ   r  r  r   r   r   r   r     s    r   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestTypeAnnotationsz*Test using Interfaces in type annotations.c                    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
ƒ}|  |j|ˆ  |ˆ ˆf dœ¡ d S )Nr   ©ÚOptional©ÚUnionr  c                   @   rÉ   )z+TestTypeAnnotations.test___or__.<locals>.I1Nr   r   r   r   r   rä  ,  rË   rä  c                   @   rÉ   )z+TestTypeAnnotations.test___or__.<locals>.I2Nr   r   r   r   r   r¢  /  rË   r¢  c                       s&   e Zd ZU ” dB ed< ” ”B ed< dS )z*TestTypeAnnotations.test___or__.<locals>.BNrª   r«   ©r   r   r   rd  r   ©rä  r¢  r   r   r�  2  ó   
 r�  rí  ©Útypingr  r  r}   r  r"   rd  ©r%   r  r  r  r�  r   r  r   Útest___or__&  s   ÿzTestTypeAnnotations.test___or__c                    sz   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
ƒ}|  |j|ˆ |ˆ ˆf dœ¡ d S )Nr   r  r  r  c                   @   rÉ   )z,TestTypeAnnotations.test___ror__.<locals>.I1Nr   r   r   r   r   rä  ?  rË   rä  c                   @   rÉ   )z+TestTypeAnnotations.test___ror__.<locals>.ANr   r   r   r   r   rž  B  rË   rž  c                       s&   e Zd ZU d”B ed< ” ”B ed< dS )z+TestTypeAnnotations.test___ror__.<locals>.BNrª   r«   r  r   ©rž  rä  r   r   r�  E  r  r�  rí  r  r  r   r!  r   Útest___ror__9  s   ÿz TestTypeAnnotations.test___ror__N)r   r   r   rA   r   r"  r   r   r   r   r  #  s    r  )%rA   Zunittestr!   ZzopeZzope.interface.testsr   r   r   r   r�   r  rs   rK  r   ZTestCaser   r+   r7   rk   rŠ   r�   r©   rá   rú   rü   r  rI  râ  rÍ  rÚ  rí  r  r  r}  rt  r   r  r   r   r   r   Ú<module>   sp   !$J
"ý4k
4ü% *              '` :	