
    Vh                        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j2                        Zy)"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y)I1N__name__
__module____qualname__     Z/home/dcms/DCMS/lib/python3.12/site-packages/zope/interface/tests/test_odd_declarations.pyr   r           r   r   c                       e Zd Zy)I2Nr   r   r   r   r   r   $   r   r   r   c                       e Zd Zy)I3Nr   r   r   r   r   r   (   r   r   r   c                       e Zd Zy)I31Nr   r   r   r   r   r   ,   r   r   r   c                       e Zd Zy)I4Nr   r   r   r   r   r   0   r   r   r   c                       e Zd Zy)I5Nr   r   r   r   r   r   4   r   r   r   c                       e Zd Zy)OddNr   r   r   r   r!   r!   8   r   r   r!   c                       e Zd ZeZy)BN)r   r   r   r   __implemented__r   r   r   r#   r#   ?   s    Or   r#   c                       e Zd Zy)ANr   r   r   r   r&   r&   H   r   r   r&   c                       e Zd Zy)CNr   r   r   r   r(   r(   O   r   r   r(   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Testc                 >
   t               }t        |t               | j                  t	        |      D cg c]  }|j                          c}g d       | j                  t	        |      j                         D cg c]  }|j                          c}g d       | j                  t        t	        |             | j                  t        t	        |             | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                      G d dt         t"              }t%        |t                G d d|      }t'        |t               t'        |t                |       }t        |t               | j                  t	        |      D cg c]  }|j                          c}g d       | j                  t	        |      j                         D cg c]  }|j                          c}g d       | j                  t        t	        |             | j                  t        t	        |             | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                      G d	 dt         t"              } G d
 d|      }t'        |t               t'        |t                |       }t        |t               | j                  t	        |      D cg c]  }|j                          c}g d       | j                  t	        |      j                         D cg c]  }|j                          c}g d       | j                  t        t	        |             | j                  t        t	        |             | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     y c c}w c c}w c c}w c c}w c c}w c c}w )N)r   r   r   r   )r   r   r   r   r   r   c                       e Zd Zy,Test.test_ObjectSpecification.<locals>.COnlyNr   r   r   r   COnlyr.   g       r   r/   c                       e Zd Zy(Test.test_ObjectSpecification.<locals>.DNr   r   r   r   Dr3   k   r0   r   r4   )r   r   r   )r   r   r   r   r   c                       e Zd ZeZyr-   )r   r   r   r   r$   r   r   r   r/   z,Test.test_ObjectSpecification.<locals>.COnly~   s    !Or   c                       e Zd Zyr2   r   r   r   r   r4   z(Test.test_ObjectSpecification.<locals>.D   r0   r   )r(   r   r   assertEqualr
   getName	flattenedassertInr   assertNotInr   
assertTrueextendsr   assertFalser   r&   r#   r   r   )selfcir/   r4   s        r   test_ObjectSpecificationzTest.test_ObjectSpecificationX   so   CBz!}=!!))+=2	 	z!}/F/F/HI!!))+IE	 	b*Q-(Z]+
1--b12
1--c23A..r23	Aq 	E3'	 	22CBz!}=!!))+=,	.z!}/F/F/HI!!))+I?	AZ]+Z]+
1--b12A..r23
1--c23
1--b12	"Aq 	"	 	 	22CBz!}=!!))+=,	.z!}/F/F/HI!!))+I?	AZ]+Z]+
1--b12A..r23
1--c23
1--b12o > J* >I( >Is#   T:TT%T&T-Tc                    t        t               G d dt                     }t        t               G d dt                     } G d d||      }t	        |t
        t               | j                  t        |      D cg c]  }|j                          c}g d       t	        |t               | j                  t        |      D cg c]  }|j                          c}g d       y c c}w c c}w )	Nc                       e Zd Zy)$Test.test_classImplements.<locals>.ANr   r   r   r   r&   rE          r   r&   c                       e Zd Zy)$Test.test_classImplements.<locals>.BNr   r   r   r   r#   rH      rF   r   r#   c                       e Zd Zy)$Test.test_classImplements.<locals>.CNr   r   r   r   r(   rJ      r0   r   r(   )r   r   r   r   )r   r   r   r   r   )r	   r   r!   r   r   r   r   r7   r   r8   r   r?   r&   r#   r(   rA   s        r   test_classImplementszTest.test_classImplements   s    	R	 	 
	 
R	 	 
		1 	 	2r"}Q/?@!!))+@1	3 	2}Q/?@!!))+@7	9	 A As   <C'C,c                 >   t        t               G d dt                     }t        t               G d dt                     } G d d||      }t	        |t
        t               | j                  t        |      D cg c]  }|j                   c}ddg       y c c}w )	Nc                       e Zd Zy)(Test.test_classImplementsOnly.<locals>.ANr   r   r   r   r&   rO      rF   r   r&   c                       e Zd Zy)(Test.test_classImplementsOnly.<locals>.BNr   r   r   r   r#   rQ      rF   r   r#   c                       e Zd Zy)(Test.test_classImplementsOnly.<locals>.CNr   r   r   r   r(   rS      r0   r   r(   r   r   )
r	   r   r!   r   r   r   r   r7   r   r   rK   s        r   test_classImplementsOnlyzTest.test_classImplementsOnly   s    	R	 	 
	 
R	 	 
		1 	 	Ar2&mA.>?!**?	'?s   <Bc                 
    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
               | j                  t        t        |             | j                  t
        t        |             | j                  |t        |             | j                  |t        |             | j                  |t        |             | j                  |t        |             t        |t        |      t
        z
         | j                  t        t        |             | j                  t
        t        |             | j                  t
        t        |             t        |t        |      t
               | j                  t
        t        |             y )Nc                       e Zd Zy)'Test.test_directlyProvides.<locals>.IA1Nr   r   r   r   IA1rW      r0   r   rX   c                       e Zd Zy)'Test.test_directlyProvides.<locals>.IA2Nr   r   r   r   IA2rZ      r0   r   r[   c                       e Zd Zy)&Test.test_directlyProvides.<locals>.IBNr   r   r   r   IBr]      r0   r   r^   c                       e Zd Zy)&Test.test_directlyProvides.<locals>.ICNr   r   r   r   ICr`      r0   r   ra   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.ANr   r   r   r   r&   rc      r0   r   r&   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.BNr   r   r   r   r#   re      r0   r   r#   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.CNr   r   r   r   r(   rg      r0   r   r(   )
r   r!   r   r   r   r   r:   r
   r   r;   )	r?   rX   r[   r^   ra   r&   r#   r(   obs	            r   test_directlyProvideszTest.test_directlyProvides   sj   	) 		) 		 		 		 	3$	 	2	1 	2SR$b*R.)b*R.)c:b>*c:b>*b*R.)b*R.)/3b89b*R.)Z^,Z^,/3R8b*R.)r   c                 
    G d dt               } G d dt              }t        ||        G d d|      }t        |t               | j	                  t        |      D cg c]  }|j                          c}ddg       y c c}w )Nc                       e Zd Zy)#Test.test_implementedBy.<locals>.I2Nr   r   r   r   r   rl      r0   r   r   c                       e Zd Zy)#Test.test_implementedBy.<locals>.C1Nr   r   r   r   C1rn      r0   r   ro   c                       e Zd Zy)#Test.test_implementedBy.<locals>.C2Nr   r   r   r   C2rq      r0   r   rr   r   )r   r!   r   r   r7   r   r8   )r?   r   ro   rr   rA   s        r   test_implementedByzTest.test_implementedBy   sn    	 		 	 	B	 	 	B}R/@A!!))+A	'As   B c                     G d d      }t        j                  d|j                  |j                        } G d d      }t        j                  d|j                  |j                        } G d d||      }| j	                  |j                  ||f        |       } |       }| j	                  |j
                  d       | j	                  |j
                  d       d|_        | j	                  |j
                  d       | j	                  |j
                  d        |       }| j	                  |j
                  d       | j	                  |j                  d       d|_        | j	                  |j                  d       d|_        | j	                  |j                  d       |j                   | j                  |j                  j                  |j                         y )	Nc                       e Zd ZdZy)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.A   N)r   r   r   ar   r   r   r&   rv   
      Ar   r&   c                       e Zd ZdZy)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.Brw   N)r   r   r   br   r   r   r#   r{     ry   r   r#   c                       e Zd Zy)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.CNr   r   r   r   r(   r~     r0   r   r(   rw      )
r   	MetaClass	__bases____dict__r7   rx   r|   r@   assertIs	__class__)r?   r&   r#   r(   rx   aar@   s          r   ,test_odd_metaclass_that_doesnt_subclass_typez1Test.test_odd_metaclass_that_doesnt_subclass_type  sc   	 	 MM#q{{AJJ7	 	 MM#q{{AJJ7	1 	 	q!f-CSa q!a q!Ca a a a 	akk++Q[[9r   N)	r   r   r   rB   rL   rT   ri   rs   r   r   r   r   r*   r*   V   s"    :3x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   
  $ * . - + ( & % $	 		 		 		" 		 		 		 	 cmmE3=="- 	 	 2 	1 	 3 W:8 W:r   