
    Of                        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__     \/var/www/html/env/lib/python3.11/site-packages/zope/interface/tests/test_odd_declarations.pyr   r               Dr   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   0   r   r   r   c                       e Zd ZdS )I5Nr   r   r   r   r   r   4   r   r   r   c                       e Zd ZdS )OddNr   r   r   r   r!   r!   8   r   r   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&   H   r   r   r&   c                       e Zd ZdS )CNr   r   r   r   r(   r(   O   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>[        ===!!))++===r   )r   r   r   r   c                 6    g | ]}|                                 S r   r-   r/   s     r   r2   z1Test.test_ObjectSpecification.<locals>.<listcomp>^        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   COnlyr8   g           Dr   r9   c                       e Zd ZdS (Test.test_ObjectSpecification.<locals>.DNr   r   r   r   Dr=   k   r:   r   r>   c                 6    g | ]}|                                 S r   r-   r/   s     r   r2   z1Test.test_ObjectSpecification.<locals>.<listcomp>s   r3   r   )r   r   r   c                 6    g | ]}|                                 S r   r-   r/   s     r   r2   z1Test.test_ObjectSpecification.<locals>.<listcomp>u   r5   r   )r   r   r   r   r   c                       e Zd ZeZdS r7   )r   r   r   r   r$   r   r   r   r9   z,Test.test_ObjectSpecification.<locals>.COnly~   s        !OOOr   c                       e Zd ZdS r<   r   r   r   r   r>   z(Test.test_ObjectSpecification.<locals>.D   r:   r   c                 6    g | ]}|                                 S r   r-   r/   s     r   r2   z1Test.test_ObjectSpecification.<locals>.<listcomp>   r3   r   c                 6    g | ]}|                                 S r   r-   r/   s     r   r2   z1Test.test_ObjectSpecification.<locals>.<listcomp>   r5   r   )r(   r   r   assertEqualr
   	flattened
assertTruer   assertFalser   extendsr   r   r&   r#   r   r   )selfcr9   r>   s       r   test_ObjectSpecificationzTest.test_ObjectSpecificationX   s3   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	" 	" 	" 	" 	"Aq 	" 	" 	"	 	 	 	 	 	 	 	 	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&   rO              Dr   r&   c                       e Zd ZdS )$Test.test_classImplements.<locals>.BNr   r   r   r   r#   rR      rP   r   r#   c                       e Zd ZdS )$Test.test_classImplements.<locals>.CNr   r   r   r   r(   rT      r:   r   r(   c                 6    g | ]}|                                 S r   r-   r/   s     r   r2   z-Test.test_classImplements.<locals>.<listcomp>        @@@!!))++@@@r   )r   r   r   r   c                 6    g | ]}|                                 S r   r-   r/   s     r   r2   z-Test.test_classImplements.<locals>.<listcomp>   rV   r   )r   r   r   r   r   )
r	   r   r!   r   r   r   r   rE   r   r   rJ   r&   r#   r(   s       r   test_classImplementszTest.test_classImplements   sH   	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\      rP   r   r&   c                       e Zd ZdS )(Test.test_classImplementsOnly.<locals>.BNr   r   r   r   r#   r^      rP   r   r#   c                       e Zd ZdS )(Test.test_classImplementsOnly.<locals>.CNr   r   r   r   r(   r`      r:   r   r(   c                     g | ]	}|j         
S r   )r   r/   s     r   r2   z1Test.test_classImplementsOnly.<locals>.<listcomp>   s    ???!*???r   r   r   )	r	   r   r!   r   r   r   r   rE   r   rX   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   IA1re      r:   r   rf   c                       e Zd ZdS )'Test.test_directlyProvides.<locals>.IA2Nr   r   r   r   IA2rh      r:   r   ri   c                       e Zd ZdS )&Test.test_directlyProvides.<locals>.IBNr   r   r   r   IBrk      r:   r   rl   c                       e Zd ZdS )&Test.test_directlyProvides.<locals>.ICNr   r   r   r   ICrn      r:   r   ro   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.ANr   r   r   r   r&   rq      r:   r   r&   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.BNr   r   r   r   r#   rs      r:   r   r#   c                       e Zd ZdS )%Test.test_directlyProvides.<locals>.CNr   r   r   r   r(   ru      r:   r   r(   )
r   r!   r   r   r   r   rG   r
   r   rH   )	rJ   rf   ri   rl   ro   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8999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   rz      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-   r/   s     r   r2   z+Test.test_implementedBy.<locals>.<listcomp>   s     AAA!!))++AAAr   r   )r   r!   r   r   rE   r   )rJ   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__rE   r   r   rK   assertIs	__class__)rJ   r&   r#   r(   r   aarK   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   rL   rY   rb   rw   r   r   r   r   r   r*   r*   V   sp        :3 :3 :3x9 9 9*' ' '"(. (. (.l' ' '$+: +: +: +: +: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      s   
  $ $ $ $ $ $ * * * * * * . . . . . . - - - - - - + + + + + + ( ( ( ( ( ( & & & & & & % % % % % % $ $ $ $ $ $	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	" 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 cmE3="--       	 	 	 	 	 	 	 	 2   	 	 	 	 	1 	 	 	 3   W: W: W: W: W:8 W: W: W: W: W:r   