+
    -i              
           R t  ! R R]4      t ! R R4      t]! R]P                  ]P
                  P                  4        U Uu/ uF  w  rV R9  g   K  WbK  	  upp 4      t ! R R4      tR# u upp i )	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                   &   a  ] tR t^Bt o R tRtV tR# )MetaMetaClassc                >    VR 8X  d   V # \         P                  W4      # )	__class__)type__getattribute__)clsnames   &&:/usr/lib/python3/dist-packages/zope/interface/tests/odd.pyr   MetaMetaClass.__getattribute__D   s     ;J$$S//     N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r
   r   r   B   s     0 0r   r   c                   <   a  ] tR t^Kt o RtR tR tR tR tRt	V t
R# )	MetaClasszOdd classes
    c                T    Wn         W n        V P                  P                  V4       R # N)r   	__bases____dict__update)selfr	   basesdicts   &&&&r
   __init__MetaClass.__init__O   s    T"r   c                    \        V 4      # r   )OddInstancer   s   &r
   __call__MetaClass.__call__T   s    4  r   c                h    V P                    F  p\        W!V 4      pW0Jg   K  Vu # 	  \        V4      hr   )r   getattrAttributeError)r   r	   bvs   &&  r
   __getattr__MetaClass.__getattr__W   s3    A&A}   T""r   c                L    R V P                    R\        \        V 4      4       R2# )z<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   s   @r
   r   r   K   s%     #
!#A Ar   r   c                   >   a  ] tR t^lt o R tR tR tR tR tRt	V t
R# )r#   c                "    WP                   R &   R# )r   Nr   )r   r   s   &&r
   r    OddInstance.__init__n   s    %(k"r   c                    \         P                  V R 4      pVR 8X  d   V# VP                  W4      pW0Jd   V# \        VR,          V4      # )r   r   )objectr   getr(   )r   r	   r   r+   s   &&  r
   r   OddInstance.__getattribute__q   sK    &&tZ8:KHHT =HtK($//r   c                "    W P                   V&   R # r   r7   )r   r	   r+   s   &&&r
   __setattr__OddInstance.__setattr__z   s    dr   c                    \        4       hr   )NotImplementedError)r   r	   s   &&r
   __delattr__OddInstance.__delattr__}   s    !##r   c                r    R P                  V P                  P                  \        \	        V 4      4      4      # )z<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>   rB   r2   r   r   r   s   @r
   r#   r#   l   s#     )0 $4 4r   r#   Nr7   )r4   r   r   r   r   r   itemsr#   )kr+   s   00r
   <module>rI      s   /h0D 0A A. "++1133M! 	3	4 4s   A-A-