U
    ôœhø  ã                   @   s0   d dl mZ G dd„ deƒZG dd„ deƒZdS )é    )ÚModelDescriptorc                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	Úhybrid_methodNc                 C   s   || _ |p|| _d S ©N)ÚfuncÚexpr)Úselfr   r   © r   ú4/tmp/pip-unpacked-wheel-5j60pwdk/playhouse/hybrid.pyÚ__init__   s    zhybrid_method.__init__c                 C   s&   |d kr| j  ||j¡S | j ||¡S r   )r   Ú__get__Ú	__class__r   ©r   ÚinstanceZinstance_typer   r   r	   r      s    zhybrid_method.__get__c                 C   s
   || _ | S r   ©r   ©r   r   r   r   r	   Ú
expression   s    zhybrid_method.expression)N)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r   r   r	   r      s   
r   c                   @   sF   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dS )Úhybrid_propertyNc                 C   s    || _ || _|| _|p|| _d S r   )ÚfgetÚfsetÚfdelr   )r   r   r   r   r   r   r   r	   r
      s    zhybrid_property.__init__c                 C   s   |d kr|   |¡S |  |¡S r   )r   r   r   r   r   r	   r      s    
zhybrid_property.__get__c                 C   s"   | j d krtdƒ‚|   ||¡ d S )NzCannot set attribute.)r   ÚAttributeError)r   r   Úvaluer   r   r	   Ú__set__!   s    
zhybrid_property.__set__c                 C   s    | j d krtdƒ‚|   |¡ d S )NzCannot delete attribute.)r   r   )r   r   r   r   r	   Ú
__delete__&   s    
zhybrid_property.__delete__c                 C   s
   || _ | S r   )r   )r   r   r   r   r	   Úsetter+   s    zhybrid_property.setterc                 C   s
   || _ | S r   )r   )r   r   r   r   r	   Údeleter/   s    zhybrid_property.deleterc                 C   s
   || _ | S r   r   r   r   r   r	   r   3   s    zhybrid_property.expression)NNN)
r   r   r   r
   r   r   r   r   r   r   r   r   r   r	   r      s   
r   N)Zpeeweer   r   r   r   r   r   r	   Ú<module>   s   