
    /Jf                        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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          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)	Interface)classImplements)classImplementsOnly)directlyProvidedBy)directlyProvides)implementedBy)implementer)
providedBy)oddc                       e Zd ZdS )I1N__name__
__module____qualname__     m/home/alex/cs2snipeproduction/venv/lib/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                   2    e Zd Zd Zd Zd Z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.   r0   s     r   r3   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   COnlyr9   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.   r0   s     r   r3   z1Test.test_ObjectSpecification.<locals>.<listcomp>Z   r4   r   )r   r   r   c                 6    g | ]}|                                 S r   r.   r0   s     r   r3   z1Test.test_ObjectSpecification.<locals>.<listcomp>\   r6   r   )r   r   r   r   r   c                       e Zd ZeZdS r8   )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.   r0   s     r   r3   z1Test.test_ObjectSpecification.<locals>.<listcomp>m   r4   r   c                 6    g | ]}|                                 S r   r.   r0   s     r   r3   z1Test.test_ObjectSpecification.<locals>.<listcomp>o   r6   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'   rP   z           Dr   r'   c                       e Zd ZdS )$Test.test_classImplements.<locals>.BNr   r   r   r   r$   rS   ~   rQ   r   r$   c                       e Zd ZdS )$Test.test_classImplements.<locals>.CNr   r   r   r   r)   rU      r;   r   r)   c                 6    g | ]}|                                 S r   r.   r0   s     r   r3   z-Test.test_classImplements.<locals>.<listcomp>        @@@!!))++@@@r   )r   r   r   r   c                 6    g | ]}|                                 S r   r.   r0   s     r   r3   z-Test.test_classImplements.<locals>.<listcomp>   rW   r   )r   r   r   r   r   )
r	   r   r!   r   r   r   r   rF   r   r   rK   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]      rQ   r   r'   c                       e Zd ZdS )(Test.test_classImplementsOnly.<locals>.BNr   r   r   r   r$   r_      rQ   r   r$   c                       e Zd ZdS )(Test.test_classImplementsOnly.<locals>.CNr   r   r   r   r)   ra      r;   r   r)   c                     g | ]	}|j         
S r   )r   r0   s     r   r3   z1Test.test_classImplementsOnly.<locals>.<listcomp>   s    ???!*???r   r   r   )	r	   r   r!   r   r   r   r   rF   r   rY   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   IA1rf      r   r   rg   c                       e Zd ZdS )'Test.test_directlyProvides.<locals>.IA2Nr   r   r   r   IA2ri      r   r   rj   c                       e Zd ZdS )&Test.test_directlyProvides.<locals>.IBNr   r   r   r   IBrl      r   r   rm   c                       e Zd ZdS )&Test.test_directlyProvides.<locals>.ICNr   r   r   r   ICro      r   r   rp   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.ANr   r   r   r   r'   rr      r;   r   r'   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.BNr   r   r   r   r$   rt      r;   r   r$   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.CNr   r   r   r   r)   rv      r;   r   r)   )
r   r!   r   r   r   r   rH   r
   r   rI   )	rK   rg   rj   rm   rp   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                     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.   r0   s     r   r3   z+Test.test_implementedBy.<locals>.<listcomp>   s     AAA!!))++AAAr   r   )r   r!   r   r   rF   r   )rK   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          j        d|j        |j                  } G d d          }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         |                     |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   	MetaClass	__bases____dict__rF   r   r   rL   assertIs	__class__)rK   r'   r$   r)   r   aarL   s          r   ,test_odd_metaclass_that_doesnt_subclass_typez1Test.test_odd_metaclass_that_doesnt_subclass_type   s   	 	 	 	 	 	 	 	 M#q{AJ77	 	 	 	 	 	 	 	 M#q{AJ77	 	 	 	 	1 	 	 	 	q!f---ACCQSSa   q!!!a   q!!!ACCa   a   a   a   	ak+Q[99999r   N)	r   r   r   rM   rZ   rc   rx   r   r   r   r   r   r+   r+   =   sp        73 73 73r9 9 9&' ' '  .  .  .Z' ' '*: *: *: *: *:r   r+   )__doc__unittestzope.interfacer   r   r   r   r   r   r	   r
   zope.interface.testsr   r   r   r   r   r   r   r!   r   r   r$   r'   r)   TestCaser+   r   r   r   <module>r      sp   
  $ $ $ $ $ $ * * * * * * . . . . . . - - - - - - + + + + + + ( ( ( ( ( ( & & & & & & % % % % % % $ $ $ $ $ $                             "                   	 	 	 	 	 	 	 	cmE3="-- # " " " " " " "	 	 	 	 	 	 	 	 2   	 	 	 	 	1 	 	 	 3   C: C: C: C: C:8 C: C: C: C: C:r   