3
d                 @   s<   d Z ddlmZmZmZmZ ddlmZ G dd deZdS )z< An offer to provide adapters from one protocol to another.     )AnyBool	HasTraitsProperty)import_symbolc               @   s   e Zd ZdZdd ZeeZeeZeeZ	dd Z
eeZeeZdd ZeZedZd	d
 Zdd ZeZedZdd Zdd ZeZedZdd Zdd Zdd ZdS )AdaptationOfferz An offer to provide adapters from one protocol to another.

    An adaptation offer consists of a factory that can create adapters, and the
    protocols that define what the adapters adapt from and to.

    c             C   s    d| j j d| j d| j dS )z/ Return a string representation of the object. <z: 'z' -> 'z'>)	__class____name__from_protocol_nameto_protocol_name)self r   D/tmp/pip-build-7vycvbft/traits/traits/adaptation/adaptation_offer.py__repr__   s    zAdaptationOffer.__repr__c             C   s   | j | jS )N)_get_type_name_from_protocol)r   r   r   r   _get_from_protocol_name8   s    z'AdaptationOffer._get_from_protocol_namec             C   s   | j | jS )N)r   _to_protocol)r   r   r   r   _get_to_protocol_nameD   s    z%AdaptationOffer._get_to_protocol_nameFc             C   s*   | j s$t| jtrt| j| _d| _ | jS )z Trait property getter. T)_factory_loaded
isinstance_factorystrr   )r   r   r   r   _get_factoryM   s
    zAdaptationOffer._get_factoryc             C   s
   || _ dS )z Trait property setter. N)r   )r   factoryr   r   r   _set_factoryX   s    zAdaptationOffer._set_factoryc             C   s*   | j s$t| jtrt| j| _d| _ | jS )z Trait property getter. T)_from_protocol_loadedr   r   r   r   )r   r   r   r   _get_from_protocola   s
    z"AdaptationOffer._get_from_protocolc             C   s
   || _ dS )z Trait property setter. N)r   )r   from_protocolr   r   r   _set_from_protocoll   s    z"AdaptationOffer._set_from_protocolc             C   s*   | j s$t| jtrt| j| _d| _ | jS )z Trait property getter. T)_to_protocol_loadedr   r   r   r   )r   r   r   r   _get_to_protocolu   s
    z AdaptationOffer._get_to_protocolc             C   s
   || _ dS )z Trait property setter. N)r   )r   to_protocolr   r   r   _set_to_protocol   s    z AdaptationOffer._set_to_protocolc             C   s&   t |tr|}ndj|j|jd}|S )a   Returns the full dotted path for a type.

        For example:
        from traits.api import HasTraits
        _get_type_name(HasTraits) == 'traits.has_traits.HasTraits'

        If the type is given as a string (e.g., for lazy loading), it is just
        returned.

        z{module}.{name})modulename)r   r   format
__module__r
   )r   Ztype_or_type_nameZ	type_namer   r   r   r      s    

zAdaptationOffer._get_type_nameN)r
   r(   __qualname____doc__r   r   r   r   r   r   r   r#   r   r   r   r   r   r   r   r   r   r   r    r   r!   r"   r$   r   r   r   r   r   r      s,   	r   N)	r*   Z
traits.apir   r   r   r   Ztraits.util.apir   r   r   r   r   r   <module>   s   