
    (ph                        S r SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJ	r	  SS
KJ
r
  SSKJr   " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S5      r\R(                  " S\R*                  0 5      r " S S\5      r " S S\5      r\" \\5         " S S\\5      r\" \\5         " S  S!\R2                  5      rg)"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                       \ rS rSrSrg)I1     N__name__
__module____qualname____firstlineno____static_attributes__r       ]/var/www/html/venv/lib/python3.13/site-packages/zope/interface/tests/test_odd_declarations.pyr   r           r   r   c                       \ rS rSrSrg)I2$   r   Nr   r   r   r   r   r   $   r   r   r   c                       \ rS rSrSrg)I3(   r   Nr   r   r   r   r   r   (   r   r   r   c                       \ rS rSrSrg)I31,   r   Nr   r   r   r   r    r    ,   r   r   r    c                       \ rS rSrSrg)I40   r   Nr   r   r   r   r#   r#   0   r   r   r#   c                       \ rS rSrSrg)I54   r   Nr   r   r   r   r&   r&   4   r   r   r&   c                       \ rS rSrSrg)Odd8   r   Nr   r   r   r   r)   r)   8   r   r   r)   c                       \ rS rSr\rSrg)B?   r   N)r   r   r   r   r   __implemented__r   r   r   r   r,   r,   ?   s    Or   r,   c                       \ rS rSrSrg)AH   r   Nr   r   r   r   r0   r0   H   r   r   r0   c                       \ rS rSrSrg)CO   r   Nr   r   r   r   r3   r3   O   r   r   r3   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestV   c                 V
   [        5       n[        U[        5        U R                  [	        U5       Vs/ s H  o"R                  5       PM     sn/ SQ5        U R                  [	        U5      R                  5        Vs/ s H  o"R                  5       PM     sn/ SQ5        U R                  [        [	        U5      5        U R                  [        [	        U5      5        U R                  [	        U5      R                  [        5      5        U R                  [	        U5      R                  [        5      5        U R                  [	        U5      R                  [        5      5         " S S[         ["        5      n[%        U[        5         " S SU5      n['        U[        5        ['        U[        5        U" 5       n[        U[        5        U R                  [	        U5       Vs/ s H  o"R                  5       PM     sn/ SQ5        U R                  [	        U5      R                  5        Vs/ s H  o"R                  5       PM     sn/ SQ5        U R                  [        [	        U5      5        U R                  [        [	        U5      5        U R                  [	        U5      R                  [        5      5        U R                  [	        U5      R                  [        5      5        U R                  [	        U5      R                  [        5      5        U R                  [	        U5      R                  [        5      5         " S	 S[         ["        5      n " S
 SU5      n['        U[        5        ['        U[        5        U" 5       n[        U[        5        U R                  [	        U5       Vs/ s H  o"R                  5       PM     sn/ SQ5        U R                  [	        U5      R                  5        Vs/ s H  o"R                  5       PM     sn/ SQ5        U R                  [        [	        U5      5        U R                  [        [	        U5      5        U R                  [	        U5      R                  [        5      5        U R                  [	        U5      R                  [        5      5        U R                  [	        U5      R                  [        5      5        U R                  [	        U5      R                  [        5      5        g s  snf s  snf s  snf s  snf s  snf s  snf )N)r#   r    r   r   )r#   r    r   r   r   r   c                       \ rS rSrSrg),Test.test_ObjectSpecification.<locals>.COnlyg   r   Nr   r   r   r   COnlyr:   g       r   r<   c                       \ rS rSrSrg)(Test.test_ObjectSpecification.<locals>.Dk   r   Nr   r   r   r   Dr?   k   r=   r   rA   )r#   r&   r    )r#   r&   r    r   r   c                       \ rS rSr\rSrg)r:   ~   r   N)r   r   r   r   r    r.   r   r   r   r   r<   r:   ~   s    !Or   c                       \ rS rSrSrg)r?      r   Nr   r   r   r   rA   r?      r=   r   )r3   r   r#   assertEqualr
   getName	flattenedassertInr   assertNotInr   
assertTrueextendsr    assertFalser&   r0   r,   r   r   )selfcir<   rA   s        r   test_ObjectSpecificationTest.test_ObjectSpecificationX   s   CBz!}=}!))+}=2	 	z!}/F/F/HI/H!))+/H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/H!))+/H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/H!))+/H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!7T&c                    [        [        5       " S S[        5      5       n[        [        5       " S S[        5      5       n " S SX5      n[	        U[
        [        5        U R                  [        U5       Vs/ s H  oDR                  5       PM     sn/ SQ5        [	        U[        5        U R                  [        U5       Vs/ s H  oDR                  5       PM     sn/ SQ5        g s  snf s  snf )	Nc                       \ rS rSrSrg)$Test.test_classImplements.<locals>.A   r   Nr   r   r   r   r0   rU          r   r0   c                       \ rS rSrSrg)$Test.test_classImplements.<locals>.B   r   Nr   r   r   r   r,   rY      rW   r   r,   c                       \ rS rSrSrg)$Test.test_classImplements.<locals>.C   r   Nr   r   r   r   r3   r\      r=   r   r3   )r   r   r   r#   )r   r   r&   r   r#   )r	   r   r)   r#   r   r   r   rF   r   rG   r&   rN   r0   r,   r3   rP   s        r   test_classImplementsTest.test_classImplements   s    	R	 	 
	 
R	 	 
		 	 	2r"}Q/?@/?!))+/?@1	3 	2}Q/?@/?!))+/?@7	9	 A As   ;C*C/c                 @   [        [        5       " S S[        5      5       n[        [        5       " S S[        5      5       n " S SX5      n[	        U[
        [        5        U R                  [        U5       Vs/ s H  oDR                  PM     snSS/5        g s  snf )	Nc                       \ rS rSrSrg)(Test.test_classImplementsOnly.<locals>.A   r   Nr   r   r   r   r0   rc      rW   r   r0   c                       \ rS rSrSrg)(Test.test_classImplementsOnly.<locals>.B   r   Nr   r   r   r   r,   rf      rW   r   r,   c                       \ rS rSrSrg)(Test.test_classImplementsOnly.<locals>.C   r   Nr   r   r   r   r3   ri      r=   r   r3   r   r   )
r	   r   r)   r#   r   r   r   rF   r   r   r^   s        r   test_classImplementsOnlyTest.test_classImplementsOnly   s    	R	 	 
	 
R	 	 
		 	 	Ar2&mA.>?.>**.>?	'?s   ;Bc                     " S S[         5      n " S S[         5      n " S S[         5      n " S S[         5      n " S	 S
[        5      n[        XQU5         " S S[        5      n[        Xc5         " S SXV5      n[        Xt5        U" 5       n[        U[        [
        5        U R                  [        [        U5      5        U R                  [
        [        U5      5        U R                  U[        U5      5        U R                  U[        U5      5        U R                  U[        U5      5        U R                  U[        U5      5        [        U[        U5      [
        -
  5        U R                  [        [        U5      5        U R                  [
        [        U5      5        U R                  [
        [        U5      5        [        U[        U5      [
        5        U R                  [
        [        U5      5        g )Nc                       \ rS rSrSrg)'Test.test_directlyProvides.<locals>.IA1   r   Nr   r   r   r   IA1ro      r=   r   rq   c                       \ rS rSrSrg)'Test.test_directlyProvides.<locals>.IA2   r   Nr   r   r   r   IA2rs      r=   r   ru   c                       \ rS rSrSrg)&Test.test_directlyProvides.<locals>.IB   r   Nr   r   r   r   IBrw      r=   r   ry   c                       \ rS rSrSrg)&Test.test_directlyProvides.<locals>.IC   r   Nr   r   r   r   ICr{      r=   r   r}   c                       \ rS rSrSrg)%Test.test_directlyProvides.<locals>.A   r   Nr   r   r   r   r0   r      r=   r   r0   c                       \ rS rSrSrg)%Test.test_directlyProvides.<locals>.B   r   Nr   r   r   r   r,   r      r=   r   r,   c                       \ rS rSrSrg)%Test.test_directlyProvides.<locals>.C   r   Nr   r   r   r   r3   r      r=   r   r3   )
r   r)   r   r   r   r   rI   r
   r   rJ   )	rN   rq   ru   ry   r}   r0   r,   r3   obs	            r   test_directlyProvidesTest.test_directlyProvides   sb   	) 		) 		 		 		 	$	 		 	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                     " S S[         5      n " S S[        5      n[        X!5         " S SU5      n[        U[        5        U R	                  [        U5       Vs/ s H  oDR                  5       PM     snSS/5        g s  snf )Nc                       \ rS rSrSrg)#Test.test_implementedBy.<locals>.I2   r   Nr   r   r   r   r   r      r=   r   r   c                       \ rS rSrSrg)#Test.test_implementedBy.<locals>.C1   r   Nr   r   r   r   C1r      r=   r   r   c                       \ rS rSrSrg)#Test.test_implementedBy.<locals>.C2   r   Nr   r   r   r   C2r      r=   r   r   r   )r   r)   r   r   rF   r   rG   )rN   r   r   r   rP   s        r   test_implementedByTest.test_implementedBy   sp    	 		 	 		 	 	B}R/@A/@!))+/@A	'As   Bc                     " S S5      n[         R                  " SUR                  UR                  5      n " S S5      n[         R                  " SUR                  UR                  5      n " S SX5      nU R	                  UR                  X45        U" 5       nU" 5       nU R	                  UR
                  S5        U R	                  UR
                  S5        SUl        U R	                  UR
                  S5        U R	                  UR
                  S5        U" 5       nU R	                  UR
                  S5        U R	                  UR                  S5        SUl        U R	                  UR                  S5        SUl        U R	                  UR                  S5        UR                    U R                  UR                  R                  UR                  5        g )	Nc                       \ rS rSrSrSrg)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.Ai
     r   N)r   r   r   r   ar   r   r   r   r0   r   
      Ar   r0   c                       \ rS rSrSrSrg)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.Bi  r   r   N)r   r   r   r   br   r   r   r   r,   r     r   r   r,   c                       \ rS rSrSrg)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.Ci  r   Nr   r   r   r   r3   r     r=   r   r3   r      )
r   	MetaClass	__bases____dict__rF   r   r   rO   assertIs	__class__)rN   r0   r,   r3   r   aarO   s          r   ,test_odd_metaclass_that_doesnt_subclass_type1Test.test_odd_metaclass_that_doesnt_subclass_type  s_   	 	 MM#q{{AJJ7	 	 MM#q{{AJJ7	 	 	qf-CSa q!a q!Ca a a a 	akk++Q[[9r   r   N)r   r   r   r   rQ   r_   rk   r   r   r   r   r   r   r   r6   r6   V   s"    :3x9*'"(*l'$+:r   r6   )__doc__unittestzope.interfacer   r   r   r   r   r   r	   r
   zope.interface.testsr   r   r   r   r    r#   r&   r)   r   r   r,   r0   r3   TestCaser6   r   r   r   <module>r      s   
  $ * . - + ( & % $	 		 		 		" 		 		 		 	 
mmE3=="- 	 	 2 	1 	 3 W:8 W:r   