o
    Êó·i  ã                   @   sR  d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lm	Z	 dd
lm
Z
 ddlmZ G dd„ d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ƒZG dd„ deƒZG dd„ dƒZe deji ¡ZG dd„ deƒZG dd„ deƒZeeeƒ G dd„ deeƒZeeeƒ G d d!„ d!ejƒZdS )"zµTest interface declarations against ExtensionClass-like classes.

These tests are to make sure we do something sane in the presence of
classic ExtensionClass classes and instances.
é    N)Ú	Interface)ÚclassImplements)ÚclassImplementsOnly)ÚdirectlyProvidedBy)ÚdirectlyProvides)ÚimplementedBy)Úimplementer)Ú
providedBy)Úoddc                   @   ó   e Zd ZdS )ÚI1N©Ú__name__Ú
__module__Ú__qualname__© r   r   úpC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\zope/interface/tests/test_odd_declarations.pyr       ó    r   c                   @   r   )ÚI2Nr   r   r   r   r   r   $   r   r   c                   @   r   )ÚI3Nr   r   r   r   r   r   (   r   r   c                   @   r   )ÚI31Nr   r   r   r   r   r   ,   r   r   c                   @   r   )ÚI4Nr   r   r   r   r   r   0   r   r   c                   @   r   )ÚI5Nr   r   r   r   r   r   4   r   r   c                   @   r   )ÚOddNr   r   r   r   r   r   8   r   r   c                   @   ó   e Zd ZeZdS )ÚBN)r   r   r   r   Ú__implemented__r   r   r   r   r   ?   ó    r   c                   @   r   )ÚANr   r   r   r   r   r   H   r   r   c                   @   r   )ÚCNr   r   r   r   r   r   O   r   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S )ÚTestc                 C   s¦  t ƒ }t|tƒ |  dd„ t|ƒD ƒg d¢¡ |  dd„ t|ƒ ¡ D ƒg d¢¡ |  tt|ƒ¡ |  t	t|ƒ¡ |  
t|ƒ t	¡¡ |  
t|ƒ t¡¡ |  t|ƒ t¡¡ G dd„ dttƒ}t|tƒ G dd	„ d	|ƒ}t|tƒ t|tƒ |ƒ }t|tƒ |  d
d„ t|ƒD ƒg d¢¡ |  dd„ t|ƒ ¡ D ƒg d¢¡ |  tt|ƒ¡ |  t	t|ƒ¡ |  
t|ƒ t	¡¡ |  t|ƒ t¡¡ |  
t|ƒ t¡¡ |  
t|ƒ t¡¡ G dd„ dttƒ}G dd	„ d	|ƒ}t|tƒ t|tƒ |ƒ }t|tƒ |  dd„ t|ƒD ƒg d¢¡ |  dd„ t|ƒ ¡ D ƒg d¢¡ |  tt|ƒ¡ |  t	t|ƒ¡ |  
t|ƒ t	¡¡ |  t|ƒ t¡¡ |  
t|ƒ t¡¡ |  
t|ƒ t¡¡ d S )Nc                 S   ó   g | ]}|  ¡ ‘qS r   ©ÚgetName©Ú.0Úir   r   r   Ú
<listcomp>[   ó    z1Test.test_ObjectSpecification.<locals>.<listcomp>)r   r   r   r   c                 S   r!   r   r"   r$   r   r   r   r'   ^   r(   )r   r   r   r   r   r   c                   @   r   ©z,Test.test_ObjectSpecification.<locals>.COnlyNr   r   r   r   r   ÚCOnlyg   r   r*   c                   @   r   ©z(Test.test_ObjectSpecification.<locals>.DNr   r   r   r   r   ÚDk   r   r,   c                 S   r!   r   r"   r$   r   r   r   r'   s   r(   )r   r   r   c                 S   r!   r   r"   r$   r   r   r   r'   u   r(   )r   r   r   r   r   c                   @   r   r)   )r   r   r   r   r   r   r   r   r   r*   ~   r   c                   @   r   r+   r   r   r   r   r   r,   �   r   c                 S   r!   r   r"   r$   r   r   r   r'   ‰   r(   c                 S   r!   r   r"   r$   r   r   r   r'   ‹   r(   )r   r   r   ÚassertEqualr	   Z	flattenedÚassertInr   ÚassertNotInr   Ú
assertTrueZextendsr   ZassertFalser   r   r   r   r   )ÚselfÚcr*   r,   r   r   r   Útest_ObjectSpecificationX   sd   
ÿÿ



ÿÿ


ÿÿzTest.test_ObjectSpecificationc                 C   s˜   t tƒG dd„ dtƒƒ}t tƒG dd„ dtƒƒ}G dd„ d||ƒ}t|ttƒ |  dd„ t|ƒD ƒg d	¢¡ t|t	ƒ |  d
d„ t|ƒD ƒg d¢¡ d S )Nc                   @   r   )z$Test.test_classImplements.<locals>.ANr   r   r   r   r   r   –   ó    r   c                   @   r   )z$Test.test_classImplements.<locals>.BNr   r   r   r   r   r   š   r4   r   c                   @   r   )z$Test.test_classImplements.<locals>.CNr   r   r   r   r   r   ž   r   r   c                 S   r!   r   r"   r$   r   r   r   r'   ¢   r(   z-Test.test_classImplements.<locals>.<listcomp>)r   r   r   r   c                 S   r!   r   r"   r$   r   r   r   r'   ¦   r(   )r   r   r   r   r   )
r   r   r   r   r   r   r   r-   r   r   ©r1   r   r   r   r   r   r   Útest_classImplements”   s   ÿ
ÿzTest.test_classImplementsc                 C   sp   t tƒG dd„ dtƒƒ}t tƒG dd„ dtƒƒ}G dd„ d||ƒ}t|ttƒ |  dd„ t|ƒD ƒd	d
g¡ d S )Nc                   @   r   )z(Test.test_classImplementsOnly.<locals>.ANr   r   r   r   r   r   «   r4   r   c                   @   r   )z(Test.test_classImplementsOnly.<locals>.BNr   r   r   r   r   r   ¯   r4   r   c                   @   r   )z(Test.test_classImplementsOnly.<locals>.CNr   r   r   r   r   r   ³   r   r   c                 S   s   g | ]}|j ‘qS r   )r   r$   r   r   r   r'   ·   s    z1Test.test_classImplementsOnly.<locals>.<listcomp>r   r   )	r   r   r   r   r   r   r   r-   r   r5   r   r   r   Útest_classImplementsOnly©   s   ÿzTest.test_classImplementsOnlyc           	      C   sj  G dd„ dt ƒ}G dd„ dt ƒ}G dd„ dt ƒ}G dd„ dt ƒ}G d	d
„ d
tƒ}t|||ƒ G dd„ dtƒ}t||ƒ G dd„ d||ƒ}t||ƒ |ƒ }t|ttƒ |  tt|ƒ¡ |  tt|ƒ¡ |  |t|ƒ¡ |  |t|ƒ¡ |  |t|ƒ¡ |  |t|ƒ¡ t|t|ƒt ƒ |  tt|ƒ¡ |  	tt|ƒ¡ |  	tt|ƒ¡ t|t|ƒtƒ |  tt|ƒ¡ d S )Nc                   @   r   )z'Test.test_directlyProvides.<locals>.IA1Nr   r   r   r   r   ÚIA1¼   r   r8   c                   @   r   )z'Test.test_directlyProvides.<locals>.IA2Nr   r   r   r   r   ÚIA2¿   r   r9   c                   @   r   )z&Test.test_directlyProvides.<locals>.IBNr   r   r   r   r   ÚIBÂ   r   r:   c                   @   r   )z&Test.test_directlyProvides.<locals>.ICNr   r   r   r   r   ÚICÅ   r   r;   c                   @   r   )z%Test.test_directlyProvides.<locals>.ANr   r   r   r   r   r   È   r   r   c                   @   r   )z%Test.test_directlyProvides.<locals>.BNr   r   r   r   r   r   Ì   r   r   c                   @   r   )z%Test.test_directlyProvides.<locals>.CNr   r   r   r   r   r   Ð   r   r   )
r   r   r   r   r   r   r.   r	   r   r/   )	r1   r8   r9   r:   r;   r   r   r   Úobr   r   r   Útest_directlyProvidesº   s0   

zTest.test_directlyProvidesc                 C   sf   G dd„ dt ƒ}G dd„ dtƒ}t||ƒ G dd„ d|ƒ}t|tƒ |  dd„ t|ƒD ƒd	dg¡ d S )
Nc                   @   r   )z#Test.test_implementedBy.<locals>.I2Nr   r   r   r   r   r   ò   r   r   c                   @   r   )z#Test.test_implementedBy.<locals>.C1Nr   r   r   r   r   ÚC1õ   r   r>   c                   @   r   )z#Test.test_implementedBy.<locals>.C2Nr   r   r   r   r   ÚC2ú   r   r?   c                 S   r!   r   r"   r$   r   r   r   r'   ÿ   r(   z+Test.test_implementedBy.<locals>.<listcomp>r   )r   r   r   r   r-   r   )r1   r   r>   r?   r   r   r   Útest_implementedByð   s   

ÿzTest.test_implementedByc                 C   s  G dd„ dƒ}t  d|j|j¡}G dd„ dƒ}t  d|j|j¡}G dd„ d||ƒ}|  |j||f¡ |ƒ }|ƒ }|  |jd¡ |  |jd¡ d|_|  |jd¡ |  |jd¡ |ƒ }|  |jd¡ |  |jd¡ d|_|  |jd¡ d|_|  |jd¡ |j |  |j	j	|j	¡ d S )	Nc                   @   ó   e Zd ZdZdS )z<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.Aé   N)r   r   r   Úar   r   r   r   r   
  r   r   c                   @   rA   )z<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.BrB   N)r   r   r   Úbr   r   r   r   r     r   r   c                   @   r   )z<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.CNr   r   r   r   r   r     r   r   rB   é   )
r
   Ú	MetaClassÚ	__bases__Ú__dict__r-   rC   rD   r2   ZassertIsÚ	__class__)r1   r   r   r   rC   Zaar2   r   r   r   Ú,test_odd_metaclass_that_doesnt_subclass_type  s,   z1Test.test_odd_metaclass_that_doesnt_subclass_typeN)	r   r   r   r3   r6   r7   r=   r@   rJ   r   r   r   r   r    V   s    <6r    )Ú__doc__ZunittestZzope.interfacer   r   r   r   r   r   r   r	   Zzope.interface.testsr
   r   r   r   r   r   r   r   rF   rG   r   r   r   ZTestCaser    r   r   r   r   Ú<module>   s2   	

