o
    >h                     @   sR   d Z G dd deZG dd dZedejdd ej D ZG dd dZd	S )
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                   @   s   e Zd Zdd ZdS )MetaMetaClassc                 C   s   |dkr| S t | |S N	__class__)type__getattribute__)clsname r   x/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/zope/interface/tests/odd.pyr   D   s   zMetaMetaClass.__getattribute__N)__name__
__module____qualname__r   r   r   r   r	   r   B   s    r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )	MetaClasszOdd classes
    c                 C   s   || _ || _| j| d S N)r
   	__bases____dict__update)selfr   basesdictr   r   r	   __init__O   s   zMetaClass.__init__c                 C   s   t | S r   )OddInstancer   r   r   r	   __call__T   s   zMetaClass.__call__c                 C   s0   | j D ]}t||| }|| ur|  S qt|r   )r   getattrAttributeError)r   r   bvr   r   r	   __getattr__W   s   
zMetaClass.__getattr__c                 C   s   d| j  dtt|  dS )Nz<odd class z at >)r
   hexidr   r   r   r	   __repr__^   s   zMetaClass.__repr__N)r
   r   r   __doc__r   r   r   r!   r   r   r   r	   r   K   s    r   c                 C   s   i | ]\}}|d vr||qS )r   r   ).0kr   r   r   r	   
<dictcomp>e   s
    r&   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )r   c                 C   s   || j d< d S r   r#   )r   r   r   r   r	   r   n      zOddInstance.__init__c                 C   s>   t | d}|dkr|S ||| }|| ur|S t|d |S )Nr   r   )objectr   getr   )r   r   r   r   r   r   r	   r   q   s   zOddInstance.__getattribute__c                 C   s   || j |< d S r   r#   )r   r   r   r   r   r	   __setattr__z   r'   zOddInstance.__setattr__c                 C   s   t  r   )NotImplementedError)r   r   r   r   r	   __delattr__}   s   zOddInstance.__delattr__c                 C   s   d | jjtt| S )Nz<odd {} instance at {}>)formatr   r
   r   r    r   r   r   r	   r!      s   zOddInstance.__repr__N)r
   r   r   r   r   r*   r,   r!   r   r   r   r	   r   l   s    	r   N)r"   r   r   r   r   r   itemsr   r   r   r   r	   <module>   s   4	
