ó
6j/Qc           @   sd   d  Z  d d l Z d d l m Z d e f d „  ƒ  YZ d „  Z d „  Z d e f d	 „  ƒ  YZ d S(
   s   Adapter declarations
iÿÿÿÿN(   t   CLASS_TYPESt   adapterc           B   s   e  Z d  „  Z d „  Z RS(   c         G   s   | |  _  d  S(   N(   t
   interfaces(   t   selfR   (    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyt   __init__   s    c         C   s4   t  | t ƒ r$ t |  j ƒ | _ n |  j | _ | S(   N(   t
   isinstanceR    t   _adapts_descrR   t   __component_adapts__(   R   t   ob(    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyt   __call__   s    (   t   __name__t
   __module__R   R	   (    (    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyR      s   	c          G   sq   t  j d ƒ } | j } | | j k s3 d | k rB t d ƒ ‚ n  d | k r] t d ƒ ‚ n  t |  ƒ | d <d  S(   Ni   R   s0   adapts can be used only from a class definition.R   s3   adapts can be used only once in a class definition.(   t   syst	   _getframet   f_localst	   f_globalst	   TypeErrorR   (   R   t   framet   locals(    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyt   adapts!   s    	c         C   s   t  |  d d  ƒ S(   NR   (   t   getattrt   None(   R   (    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyt	   adaptedBy.   s    R   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyR   2   s    c         C   s#   | d  k r |  j St d ƒ ‚ d  S(   NR   (   R   R   t   AttributeError(   R   t   instt   cls(    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyt   __get__5   s    (   R
   R   R   R   (    (    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyR   1   s   	(	   t   __doc__R   t   zope.component._compatR    t   objectR   R   R   R   (    (    (    s?   /usr/lib/python2.7/site-packages/zope/component/_declaration.pyt   <module>   s   		