U
    [eI                     @   s`  d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ 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e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 )#zTest 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)odd)	Interface)implementer)directlyProvides)
providedBy)directlyProvidedBy)classImplements)classImplementsOnly)implementedBy)_skip_under_py3kc                   @   s   e Zd ZdS )I1N__name__
__module____qualname__ r   r   l/var/www/html/services/stratfitenv/lib/python3.8/site-packages/zope/interface/tests/test_odd_declarations.pyr       s    r   c                   @   s   e Zd ZdS )I2Nr   r   r   r   r   r   !   s    r   c                   @   s   e Zd ZdS )I3Nr   r   r   r   r   r   "   s    r   c                   @   s   e Zd ZdS )I31Nr   r   r   r   r   r   #   s    r   c                   @   s   e Zd ZdS )I4Nr   r   r   r   r   r   $   s    r   c                   @   s   e Zd ZdS )I5Nr   r   r   r   r   r   %   s    r   c                   @   s   e Zd ZdS )OddNr   r   r   r   r   r   '   s   r   c                   @   s   e Zd ZeZdS )BN)r   r   r   r   __implemented__r   r   r   r   r   ,   s    r   c                   @   s   e Zd ZdS )ANr   r   r   r   r   r   4   s   r   c                   @   s   e Zd ZdS )CNr   r   r   r   r   r   8   s   r   c                   @   sH   e Zd Zdd Zdd Zdd Zdd Zed	d
 Zdd Z	dd Z
dS )Testc              	   C   s  t  }t|t | dd t|D ddddg | dd t| D dddddd	g | tt|k | t	t|k | 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 dddg | dd t| D ddddd	g | tt|k | t	t|k | 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 dddg | dd t| D ddddd	g | tt|k | t	t|k | t|
t	 | t|
t | t|
t | t|
t d S )Nc                 S   s   g | ]}|  qS r   getName.0ir   r   r   
<listcomp>B   s     z1Test.test_ObjectSpecification.<locals>.<listcomp>r   r   r   r   c                 S   s   g | ]}|  qS r   r   r    r   r   r   r#   E   s     r   r   c                   @   s   e Zd ZdS z,Test.test_ObjectSpecification.<locals>.COnlyNr   r   r   r   r   COnlyN   s   r%   c                   @   s   e Zd ZdS z(Test.test_ObjectSpecification.<locals>.DNr   r   r   r   r   DR   s   r'   c                 S   s   g | ]}|  qS r   r   r    r   r   r   r#   Z   s     r   c                 S   s   g | ]}|  qS r   r   r    r   r   r   r#   \   s     c                   @   s   e Zd ZeZdS r$   )r   r   r   r   r   r   r   r   r   r%   e   s    c                   @   s   e Zd ZdS r&   r   r   r   r   r   r'   f   s   c                 S   s   g | ]}|  qS r   r   r    r   r   r   r#   m   s     c                 S   s   g | ]}|  qS r   r   r    r   r   r   r#   o   s     )r   r   r   assertEqualr   Z	flattened
assertTruer   assertFalser   Zextendsr   r   r   r   r	   r   )selfcr%   r'   r   r   r   test_ObjectSpecification?   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 d	d
ddg t|t	 | dd t|D d	d
dddg d S )Nc                   @   s   e Zd ZdS )z$Test.test_classImplements.<locals>.ANr   r   r   r   r   r   z   s   r   c                   @   s   e Zd ZdS )z$Test.test_classImplements.<locals>.BNr   r   r   r   r   r   ~   s   r   c                   @   s   e Zd ZdS )z$Test.test_classImplements.<locals>.CNr   r   r   r   r   r      s   r   c                 S   s   g | ]}|  qS r   r   r    r   r   r   r#      s     z-Test.test_classImplements.<locals>.<listcomp>r   r   r   r   c                 S   s   g | ]}|  qS r   r   r    r   r   r   r#      s     r   )
r   r   r   r   r   r   r   r(   r
   r   r+   r   r   r   r   r   r   test_classImplementsx   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                   @   s   e Zd ZdS )z(Test.test_classImplementsOnly.<locals>.ANr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )z(Test.test_classImplementsOnly.<locals>.BNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )z(Test.test_classImplementsOnly.<locals>.CNr   r   r   r   r   r      s   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
   r.   r   r   r   test_classImplementsOnly   s    zTest.test_classImplementsOnlyc           	      C   s~  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|k | tt|k | |t|k | |t|k | |t|k | |t|k t|t|t  | tt|k | 	tt|k | 	tt|k t|t|t | tt|k d S )Nc                   @   s   e Zd ZdS )z'Test.test_directlyProvides.<locals>.IA1Nr   r   r   r   r   IA1   s    r1   c                   @   s   e Zd ZdS )z'Test.test_directlyProvides.<locals>.IA2Nr   r   r   r   r   IA2   s    r2   c                   @   s   e Zd ZdS )z&Test.test_directlyProvides.<locals>.IBNr   r   r   r   r   IB   s    r3   c                   @   s   e Zd ZdS )z&Test.test_directlyProvides.<locals>.ICNr   r   r   r   r   IC   s    r4   c                   @   s   e Zd ZdS )z%Test.test_directlyProvides.<locals>.ANr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )z%Test.test_directlyProvides.<locals>.BNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )z%Test.test_directlyProvides.<locals>.CNr   r   r   r   r   r      s   r   )
r   r   r   r   r   r   r)   r   r   r*   )	r+   r1   r2   r3   r4   r   r   r   obr   r   r   test_directlyProvides   s0    

zTest.test_directlyProvidesc                 C   s   |  tttt d S )N)assertRaises	TypeErrorr   r   r   )r+   r   r   r   )test_directlyProvides_fails_for_odd_class   s    z.Test.test_directlyProvides_fails_for_odd_classc                 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                   @   s   e Zd ZdS )z#Test.test_implementedBy.<locals>.I2Nr   r   r   r   r   r      s    r   c                   @   s   e Zd ZdS )z#Test.test_implementedBy.<locals>.C1Nr   r   r   r   r   C1   s   r:   c                   @   s   e Zd ZdS )z#Test.test_implementedBy.<locals>.C2Nr   r   r   r   r   C2   s   r;   c                 S   s   g | ]}|  qS r   r   r    r   r   r   r#      s     z+Test.test_implementedBy.<locals>.<listcomp>r   )r   r   r   r   r(   r
   )r+   r   r:   r;   r   r   r   test_implementedBy   s    

zTest.test_implementedByc                 C   sT  G dd dt }td|j|j}G dd dt }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 zd	d
l	m
} W n tk
r(   Y nX t|t|fr>t| |jj|j d S )Nc                   @   s   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      s   r   c                   @   s   e Zd ZdZdS )z<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.Br=   N)r   r   r   br   r   r   r   r      s   r   c                   @   s   e Zd ZdS )z<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.CNr   r   r   r   r   r      s   r   r=      r   )	ClassType)objectr   	MetaClass	__bases____dict__r(   r>   r?   r,   typesrA   ImportError
isinstancetypeAssertionErrorZassertIs	__class__)r+   r   r   r   r>   Zaar,   rA   r   r   r   ,test_odd_metaclass_that_doesnt_subclass_type   s6    z1Test.test_odd_metaclass_that_doesnt_subclass_typeN)r   r   r   r-   r/   r0   r6   r   r9   r<   rL   r   r   r   r   r   =   s   9"
r   )__doc__ZunittestZzope.interface.testsr   Zzope.interfacer   r   r   r   r   r   r	   r
   Zzope.interface._compatr   r   r   r   r   r   r   rB   r   rC   rD   r   r   r   ZTestCaser   r   r   r   r   <module>   s2   

