a
    ,ò¿Ww  ã                   @   sX   d Z ddlZddlmZmZ G dd„ deƒZdd„ Zdd	„ Zd
d„ Z	G dd„ deƒZ
dS )zAdapter declarations
é    N)ÚCLASS_TYPESÚ_BLANKc                   @   s   e Zd Zdd„ Zdd„ ZdS )Úadapterc                 G   s
   || _ d S ©N©Ú
interfaces©Úselfr   © r
   ú=/usr/lib/python3/dist-packages/zope/component/_declaration.pyÚ__init__   s    zadapter.__init__c                 C   s$   t |tƒrt| jƒ|_n| j|_|S r   )Ú
isinstancer   Ú_adapts_descrr   Ú__component_adapts__)r	   Úobr
   r
   r   Ú__call__   s    
zadapter.__call__N)Ú__name__Ú
__module__Ú__qualname__r   r   r
   r
   r
   r   r      s   r   c                  G   sJ   t  d¡}|j}||ju s"d|vr*tdƒ‚d|v r:tdƒ‚t| ƒ|d< d S )Né   r   z0adapts can be used only from a class definition.r   z3adapts can be used only once in a class definition.)ÚsysÚ	_getframeÚf_localsÚ	f_globalsÚ	TypeErrorr   )r   ÚframeÚlocalsr
   r
   r   Úadapts!   s    
r   c                 C   s   t | dd ƒS ©Nr   )Úgetattr©r   r
   r
   r   Ú	adaptedBy.   s    r!   c                 C   s   t | dtƒS )NZ__component_name__)r   r   r    r
   r
   r   ÚgetName1   s    r"   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r   c                 C   s
   || _ d S r   r   r   r
   r
   r   r   5   s    z_adapts_descr.__init__c                 C   s   |d u r| j S tdƒ‚d S r   )r   ÚAttributeError)r	   ÚinstÚclsr
   r
   r   Ú__get__8   s    z_adapts_descr.__get__N)r   r   r   r   r&   r
   r
   r
   r   r   4   s   r   )Ú__doc__r   Zzope.component._compatr   r   Úobjectr   r   r!   r"   r   r
   r
   r
   r   Ú<module>   s   