
    NgI                        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j0                  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j8                        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)odd)	Interface)implementer)directlyProvides)
providedBy)directlyProvidedBy)classImplements)classImplementsOnly)implementedBy)_skip_under_py3kc                       e Zd Zy)I1N__name__
__module____qualname__     e/var/www/djangounited/venv/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   $   r   r   r   c                       e Zd Zy)I5Nr   r   r   r   r    r    %   r   r   r    c                       e Zd Zy)OddNr   r   r   r   r"   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(   4   r#   r   r(   c                       e Zd Zy)CNr   r   r   r   r*   r*   8   r#   r   r*   c                   @    e Zd Zd Zd Zd Zd Zed        Zd Z	d Z
y)	Testc                 J
   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	        |      v        | j                  t        t	        |      v        | 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	        |      v        | j                  t        t	        |      v        | 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	        |      v        | j                  t        t	        |      v        | 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   COnlyr0   N       r   r1   c                       e Zd Zy(Test.test_ObjectSpecification.<locals>.DNr   r   r   r   Dr5   R   r2   r   r6   )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   r1   z,Test.test_ObjectSpecification.<locals>.COnlye   s    S?r   c                       e Zd Zyr4   r   r   r   r   r6   z(Test.test_ObjectSpecification.<locals>.Df   r2   r   )r*   r   r   assertEqualr   getName	flattened
assertTruer   assertFalser   extendsr   r    r(   r%   r
   r	   )selfcir1   r6   s        r   test_ObjectSpecificationzTest.test_ObjectSpecification?   s{   CBz!}=!!))+=2	 	z!}/F/F/HI!!))+IE	 	jm+,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0Aq0	 	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2i > J* >I" >Is#   T:T T'T*T1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   z       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      r2   r   r*   )r   r   r   r   )r   r   r    r   r   )r   r   r"   r   r	   r   r   r9   r   r:   r    r?   r(   r%   r*   rA   s        r   test_classImplementszTest.test_classImplementsx   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      r2   r   r*   r   r   )
r   r   r"   r   r
   r   r   r9   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        |      v        | j                  t
        t        |      v        | j                  |t        |      v        | j                  |t        |      v        | j                  |t        |      v        | j                  |t        |      v        t        |t        |      t
        z
         | j                  t        t        |      v        | j                  t
        t        |      v        | j                  t
        t        |      v        t        |t        |      t
               | j                  t
        t        |      v        y )Nc                       e Zd Zy)'Test.test_directlyProvides.<locals>.IA1Nr   r   r   r   IA1rW      r   r   rX   c                       e Zd Zy)'Test.test_directlyProvides.<locals>.IA2Nr   r   r   r   IA2rZ      r   r   r[   c                       e Zd Zy)&Test.test_directlyProvides.<locals>.IBNr   r   r   r   IBr]      r   r   r^   c                       e Zd Zy)&Test.test_directlyProvides.<locals>.ICNr   r   r   r   ICr`      r   r   ra   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.ANr   r   r   r   r(   rc      r2   r   r(   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.BNr   r   r   r   r%   re      r2   r   r%   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.CNr   r   r   r   r*   rg      r2   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   sz   ")"")"!!!!	 	3$	 	2	1 	2 SR$jn,-jn,-z"~-.z"~-.jn,-jn,-/3B67jn,-z"~-.z"~-./3R8jn,-r   c                 L    | j                  t        t        t        t               y )N)assertRaises	TypeErrorr   r*   r    )r?   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               | 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   rp      r   r   r   c                       e Zd Zy)#Test.test_implementedBy.<locals>.C1Nr   r   r   r   C1rr      r2   r   rs   c                       e Zd Zy)#Test.test_implementedBy.<locals>.C2Nr   r   r   r   C2ru      r2   r   rv   r   )r   r"   r	   r   r9   r   r:   )r?   r   rs   rv   rA   s        r   test_implementedByzTest.test_implementedBy   sf    	 	B	 	B}R/@A!!))+A	'As   B c                      G d dt               }t        j                  d|j                  |j                        } G d dt               }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                   	 d	d
l	m
} t        |t        |f      rJ | j                  |j                  j                  |j                         y # t        $ r Y <w xY w)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(   rz          Ar   r(   c                       e Zd ZdZy)<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y)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.CNr   r   r   r   r*   r      r2   r   r*   r{      r   )	ClassType)objectr   	MetaClass	__bases____dict__r9   r|   r   r@   typesr   
isinstancetypeImportErrorassertIs	__class__)r?   r(   r%   r*   r|   aar@   r   s           r   ,test_odd_metaclass_that_doesnt_subclass_typez1Test.test_odd_metaclass_that_doesnt_subclass_type   s   	 	 MM#q{{AJJ7	 	 MM#q{{AJJ7	1 	 	q!f-CSa q!a q!Ca a a a 		8'
 "!dI%6777akk++Q[[9  		s   6H 	HHN)r   r   r   rB   rL   rT   ri   r   rm   rw   r   r   r   r   r,   r,   =   s6    73r9&'  .D > >'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       "     	& 	cmmE3=="- # "	 	 2 	1 	 3 O:8 O:r   