
    cI                     (   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e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z ej        dej        i           Z G d de          Z G d de          Z e
ee            G d d ee          Z e
ee            G 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                       e Zd ZdS )I1N__name__
__module____qualname__     Jlib/python3.11/site-packages/zope/interface/tests/test_odd_declarations.pyr   r                 r   r   c                       e Zd ZdS )I2Nr   r   r   r   r   r   !   r   r   r   c                       e Zd ZdS )I3Nr   r   r   r   r   r   "   r   r   r   c                       e Zd ZdS )I31Nr   r   r   r   r   r   #   r   r   r   c                       e Zd ZdS )I4Nr   r   r   r   r   r   $   r   r   r   c                       e Zd ZdS )I5Nr   r   r   r   r    r    %   r   r   r    c                       e Zd ZdS )OddNr   r   r   r   r"   r"   '           Dr   r"   c                       e Zd ZeZdS )BN)r   r   r   r   __implemented__r   r   r   r%   r%   ,   s        ooor   r%   c                       e Zd ZdS )ANr   r   r   r   r(   r(   4   r#   r   r(   c                       e Zd ZdS )CNr   r   r   r   r*   r*   8   r#   r   r*   c                   H    e Zd Zd Zd Zd Zd Zed             Zd Z	d Z
dS )	Testc                    t                      }t          |t                     |                     d t	          |          D             g d           |                     d t	          |                                          D             g d           |                     t          t	          |          v            |                     t          t	          |          v            |                     t	          |          
                    t                               |                     t	          |          
                    t                               |                     t	          |          
                    t                                G d dt          t                    }t          |t                      G d d|          }t!          |t                     t!          |t                      |            }t          |t                     |                     d	 t	          |          D             g d
           |                     d t	          |                                          D             g d           |                     t          t	          |          v            |                     t          t	          |          v            |                     t	          |          
                    t                               |                     t	          |          
                    t                               |                     t	          |          
                    t                               |                     t	          |          
                    t                                G d dt          t                    } G d d|          }t!          |t                     t!          |t                      |            }t          |t                     |                     d t	          |          D             g d
           |                     d t	          |                                          D             g d           |                     t          t	          |          v            |                     t          t	          |          v            |                     t	          |          
                    t                               |                     t	          |          
                    t                               |                     t	          |          
                    t                               |                     t	          |          
                    t                               d S )Nc                 6    g | ]}|                                 S r   getName.0is     r   
<listcomp>z1Test.test_ObjectSpecification.<locals>.<listcomp>B        ===!!))++===r   )r   r   r   r   c                 6    g | ]}|                                 S r   r/   r1   s     r   r4   z1Test.test_ObjectSpecification.<locals>.<listcomp>E        III!!))++IIIr   )r   r   r   r   r   r   c                       e Zd ZdS ,Test.test_ObjectSpecification.<locals>.COnlyNr   r   r   r   COnlyr:   N           Dr   r;   c                       e Zd ZdS (Test.test_ObjectSpecification.<locals>.DNr   r   r   r   Dr?   R   r<   r   r@   c                 6    g | ]}|                                 S r   r/   r1   s     r   r4   z1Test.test_ObjectSpecification.<locals>.<listcomp>Z   r5   r   )r   r    r   c                 6    g | ]}|                                 S r   r/   r1   s     r   r4   z1Test.test_ObjectSpecification.<locals>.<listcomp>\   r7   r   )r   r    r   r   r   c                       e Zd ZeZdS r9   )r   r   r   r   r&   r   r   r   r;   z,Test.test_ObjectSpecification.<locals>.COnlye   s        S???r   c                       e Zd ZdS r>   r   r   r   r   r@   z(Test.test_ObjectSpecification.<locals>.Df   r<   r   c                 6    g | ]}|                                 S r   r/   r1   s     r   r4   z1Test.test_ObjectSpecification.<locals>.<listcomp>m   r5   r   c                 6    g | ]}|                                 S r   r/   r1   s     r   r4   z1Test.test_ObjectSpecification.<locals>.<listcomp>o   r7   r   )r*   r   r   assertEqualr   	flattened
assertTruer   assertFalser   extendsr   r    r(   r%   r
   r	   )selfcr;   r@   s       r   test_ObjectSpecificationzTest.test_ObjectSpecification?   s!   CCB==z!}}===222	 	 	 	IIz!}}/F/F/H/HIIIEEE	 	 	 	jmm+,,,z!}},---
1--b11222
1--c22333A..r22333	 	 	 	 	Aq 	 	 	E3'''	 	 	 	 	 	 	 	22ACCB==z!}}===,,,	. 	. 	.IIz!}}/F/F/H/HIII???	A 	A 	Az!}},---z!}},---
1--b11222A..r22333
1--c22333
1--b1122200000Aq000	 	 	 	 	 	 	 	22ACCB==z!}}===,,,	. 	. 	.IIz!}}/F/F/H/HIII???	A 	A 	Az!}},---z!}},---
1--b11222A..r22333
1--c22333
1--b1122222r   c                    t          t                     G d dt                                }t          t                     G d dt                                } G d d||          }t	          |t
          t                     |                     d t          |          D             g d           t	          |t                     |                     d	 t          |          D             g d
           d S )Nc                       e Zd ZdS )$Test.test_classImplements.<locals>.ANr   r   r   r   r(   rQ   z           Dr   r(   c                       e Zd ZdS )$Test.test_classImplements.<locals>.BNr   r   r   r   r%   rT   ~   rR   r   r%   c                       e Zd ZdS )$Test.test_classImplements.<locals>.CNr   r   r   r   r*   rV      r<   r   r*   c                 6    g | ]}|                                 S r   r/   r1   s     r   r4   z-Test.test_classImplements.<locals>.<listcomp>        @@@!!))++@@@r   )r   r   r   r   c                 6    g | ]}|                                 S r   r/   r1   s     r   r4   z-Test.test_classImplements.<locals>.<listcomp>   rX   r   )r   r   r    r   r   )
r   r   r"   r   r	   r   r   rG   r   r    rL   r(   r%   r*   s       r   test_classImplementszTest.test_classImplementsx   sD   	R	 	 	 	 	 	 	 
	 
R	 	 	 	 	 	 	 
		 	 	 	 	1 	 	 	2r"""@@}Q/?/?@@@111	3 	3 	32@@}Q/?/?@@@777	9 	9 	9 	9 	9r   c                 l   t          t                     G d dt                                }t          t                     G d dt                                } G d d||          }t	          |t
          t                     |                     d t          |          D             dd	g           d S )
Nc                       e Zd ZdS )(Test.test_classImplementsOnly.<locals>.ANr   r   r   r   r(   r^      rR   r   r(   c                       e Zd ZdS )(Test.test_classImplementsOnly.<locals>.BNr   r   r   r   r%   r`      rR   r   r%   c                       e Zd ZdS )(Test.test_classImplementsOnly.<locals>.CNr   r   r   r   r*   rb      r<   r   r*   c                     g | ]	}|j         
S r   )r   r1   s     r   r4   z1Test.test_classImplementsOnly.<locals>.<listcomp>   s    ???!*???r   r   r   )	r   r   r"   r   r
   r   r   rG   r   rZ   s       r   test_classImplementsOnlyzTest.test_classImplementsOnly   s    	R	 	 	 	 	 	 	 
	 
R	 	 	 	 	 	 	 
		 	 	 	 	1 	 	 	Ar2&&&??mA.>.>???	' 	' 	' 	' 	'r   c                 P    G d dt                     } G d dt                     } G d dt                     } G d dt                     } G d	 d
t                    }t          |||            G d dt                    }t          ||            G d d||          }t          ||            |            }t          |t          t
                     |                     t          t          |          v            |                     t
          t          |          v            |                     |t          |          v            |                     |t          |          v            |                     |t          |          v            |                     |t          |          v            t          |t          |          t
          z
             |                     t          t          |          v            | 	                    t
          t          |          v            | 	                    t
          t          |          v            t          |t          |          t
                     |                     t
          t          |          v            d S )Nc                       e Zd ZdS )'Test.test_directlyProvides.<locals>.IA1Nr   r   r   r   IA1rg      r   r   rh   c                       e Zd ZdS )'Test.test_directlyProvides.<locals>.IA2Nr   r   r   r   IA2rj      r   r   rk   c                       e Zd ZdS )&Test.test_directlyProvides.<locals>.IBNr   r   r   r   IBrm      r   r   rn   c                       e Zd ZdS )&Test.test_directlyProvides.<locals>.ICNr   r   r   r   ICrp      r   r   rq   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.ANr   r   r   r   r(   rs      r<   r   r(   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.BNr   r   r   r   r%   ru      r<   r   r%   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.CNr   r   r   r   r*   rw      r<   r   r*   )
r   r"   r	   r   r   r   rI   r   r   rJ   )	rL   rh   rk   rn   rq   r(   r%   r*   obs	            r   test_directlyProvideszTest.test_directlyProvides   s   """"")"""""""")"""!!!!!!!!!!!!!!!!	 	 	 	 	 	 	 	3$$$	 	 	 	 	 	 	 	2	 	 	 	 	1 	 	 	2 QSSR$$$jnn,---jnn,---z"~~-...z"~~-...jnn,---jnn,---/33B6777jnn,---z"~~-...z"~~-.../33R888jnn,-----r   c                 ^    |                      t          t          t          t                     d S )N)assertRaises	TypeErrorr   r*   r    )rL   s    r   )test_directlyProvides_fails_for_odd_classz.Test.test_directlyProvides_fails_for_odd_class   s#    )%5q"=====r   c                     G d dt                     } G d dt                    }t          ||            G d d|          }t          |t                     |                     d t          |          D             ddg           d S )	Nc                       e Zd ZdS )#Test.test_implementedBy.<locals>.I2Nr   r   r   r   r   r      r   r   r   c                       e Zd ZdS )#Test.test_implementedBy.<locals>.C1Nr   r   r   r   C1r      r<   r   r   c                       e Zd ZdS )#Test.test_implementedBy.<locals>.C2Nr   r   r   r   C2r      r<   r   r   c                 6    g | ]}|                                 S r   r/   r1   s     r   r4   z+Test.test_implementedBy.<locals>.<listcomp>   s     AAA!!))++AAAr   r   )r   r"   r	   r   rG   r   )rL   r   r   r   s       r   test_implementedByzTest.test_implementedBy   s    	 	 	 	 	 	 	 	B	 	 	 	 	 	 	 	BAA}R/@/@AAA	' 	' 	' 	' 	'r   c                     G d dt                     }t          j        d|j        |j                  } G d dt                     }t          j        d|j        |j                  } G d d||          }|                     |j        ||f            |            } |            }|                     |j        d           |                     |j        d           d|_        |                     |j        d           |                     |j        d            |            }|                     |j        d           |                     |j        d           d|_        |                     |j        d           d|_        |                     |j        d           |j         	 d	d
l	m
} t          |t          |f          rJ n# t          $ r Y nw xY w|                     |j        j        |j                   d S )Nc                       e Zd ZdZdS )<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.A   N)r   r   r   ar   r   r   r(   r              AAAr   r(   c                       e Zd ZdZdS )<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.Br   N)r   r   r   br   r   r   r%   r      r   r   r%   c                       e Zd ZdS )<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.CNr   r   r   r   r*   r      r<   r   r*   r      r   )	ClassType)objectr   	MetaClass	__bases____dict__rG   r   r   rM   typesr   
isinstancetypeImportErrorassertIs	__class__)rL   r(   r%   r*   r   aarM   r   s           r   ,test_odd_metaclass_that_doesnt_subclass_typez1Test.test_odd_metaclass_that_doesnt_subclass_type   sK   	 	 	 	 	 	 	 	 M#q{AJ77	 	 	 	 	 	 	 	 M#q{AJ77	 	 	 	 	1 	 	 	 	q!f---ACCQSSa   q!!!a   q!!!ACCa   a   a   a   		8''''''
 "!dI%6777777	  	 	 	D	 	ak+Q[99999s   &G 
GGN)r   r   r   rN   r[   rd   ry   r   r}   r   r   r   r   r   r,   r,   =   s        73 73 73r9 9 9&' ' '  .  .  .D > > >' ' '2: 2: 2: 2: 2:r   r,   )__doc__unittestzope.interface.testsr   zope.interfacer   r   r   r   r   r	   r
   r   zope.interface._compatr   r   r   r   r   r   r    r   r"   r   r   r%   r(   r*   TestCaser,   r   r   r   <module>r      s   
  $ $ $ $ $ $ $ $ $ $ $ $ & & & & & & + + + + + + % % % % % % - - - - - - * * * * * * . . . . . . ( ( ( ( ( ( 3 3 3 3 3 3                             "                   	 	 	 	 	& 	 	 	cmE3="-- # " " " " " " "	 	 	 	 	 	 	 	 2   	 	 	 	 	1 	 	 	 3   O: O: O: O: O:8 O: O: O: O: O:r   