
    (ph              
           S r  " S S\5      r " S S5      r\" S\R                  \R
                  R                  5        V Vs0 s H  u  pU S;  d  M  X_M     snn 5      r " S S5      rgs  snn f )	a  Odd meta class that doesn't subclass type.

This is used for testing support for ExtensionClass in new interfaces.

  >>> class A(object):
  ...     __metaclass__ = MetaClass
  ...     a = 1
  ...
  >>> A.__name__
  'A'
  >>> A.__bases__ == (object,)
  True
  >>> class B(object):
  ...     __metaclass__ = MetaClass
  ...     b = 1
  ...
  >>> class C(A, B): pass
  ...
  >>> C.__name__
  'C'
  >>> int(C.__bases__ == (A, B))
  1
  >>> a = A()
  >>> aa = A()
  >>> a.a
  1
  >>> aa.a
  1
  >>> aa.a = 2
  >>> a.a
  1
  >>> aa.a
  2
  >>> c = C()
  >>> c.a
  1
  >>> c.b
  1
  >>> c.b = 2
  >>> c.b
  2
  >>> C.c = 1
  >>> c.c
  1

  >>> int(C.__class__.__class__ is C.__class__)
  1
c                       \ rS rSrS rSrg)MetaMetaClassB   c                 <    US:X  a  U $ [         R                  X5      $ N	__class__)type__getattribute__)clsnames     K/var/www/html/venv/lib/python3.13/site-packages/zope/interface/tests/odd.pyr	   MetaMetaClass.__getattribute__D   s     ;J$$S//     N)__name__
__module____qualname____firstlineno__r	   __static_attributes__r   r   r   r   r   B   s    0r   r   c                   0    \ rS rSrSrS rS rS rS rSr	g)		MetaClassK   zOdd classes
    c                 R    Xl         X l        U R                  R                  U5        g N)r   	__bases____dict__update)selfr   basesdicts       r   __init__MetaClass.__init__O   s    T"r   c                     [        U 5      $ r   )OddInstancer   s    r   __call__MetaClass.__call__T   s    4  r   c                 f    U R                    H  n[        X!U 5      nX0Ld  M  Us  $    [        U5      er   )r   getattrAttributeError)r   r   bvs       r   __getattr__MetaClass.__getattr__W   s3    A&A}   T""r   c                 L    SU R                    S[        [        U 5      5       S3$ )Nz<odd class z at >)r   hexidr$   s    r   __repr__MetaClass.__repr__^   s#    T]]O4BtHa@@r   )r   r   N)
r   r   r   r   __doc__r    r%   r,   r2   r   r   r   r   r   r   K   s    #
!#Ar   r   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	r#   l   c                      XR                   S'   g r   r5   )r   r
   s     r   r    OddInstance.__init__n   s    %(k"r   c                     [         R                  U S5      nUS:X  a  U$ UR                  X5      nX0La  U$ [        US   U5      $ )Nr   r   )objectr	   getr(   )r   r   r   r+   s       r   r	   OddInstance.__getattribute__q   sK    &&tZ8:KHHT =HtK($//r   c                      X R                   U'   g r   r5   )r   r   r+   s      r   __setattr__OddInstance.__setattr__z   s    dr   c                     [        5       er   )NotImplementedError)r   r   s     r   __delattr__OddInstance.__delattr__}   s    !##r   c                 r    SR                  U R                  R                  [        [	        U 5      5      5      $ )Nz<odd {} instance at {}>)formatr   r   r0   r1   r$   s    r   r2   OddInstance.__repr__   s,    (//NN##SD]4 	4r   r   N)
r   r   r   r   r    r	   r?   rC   r2   r   r   r   r   r#   r#   l   s    )0 $4r   r#   N)r4   r   r   r   r   r   itemsr#   )kr+   s   00r   <module>rJ      s   /h0D 0A A. "++1133M! 	3	4 4s   A,A,