B
    b
,c	                 @   sV   d Z ddlZddlmZmZ ddlmZ edZeee	e
f ZG dd dZdgZdS )	z-Mixin for mapping set/getattr to self.set/get    N)TypeVarUnion   )	constantsTc               @   sr   e Zd ZeeddddZeeeddddZeedd	d
ZedddZ	eedddZ
eeddddZdS )AttributeSetterN)keyvaluereturnc             C   s   || j krt| || dS x>| j D ]0}||j ksF|t|di kr(t| || dS q(W | }ytt|}W n* tk
r   t| jj	 d| Y nX | 
||| dS )zset zmq options by attributeN__annotations__z has no such option: )__dict__object__setattr__	__class__mrogetattrupperr   AttributeError__name___set_attr_opt)selfr   r	   cls	upper_keyopt r   2lib/python3.7/site-packages/zmq/sugar/attrsettr.pyr      s    
zAttributeSetter.__setattr__)namer   r	   r
   c             C   s   |  || dS )z@override if setattr should do something other than call self.setN)set)r   r   r   r	   r   r   r   r   &   s    zAttributeSetter._set_attr_opt)r   r
   c          
   C   s   |  }ytt|}W n, tk
rB   t| jj d| dY nbX ddlm} y| ||S  |k
r } z(|j	t	j
t	jhkrt| dn W dd}~X Y nX dS )zget zmq options by attributez has no such option: Nr   )ZMQErrorz attribute is write-only)r   r   r   r   r   r   Zzmqr   _get_attr_opterrnoZEINVALZEFAULT)r   r   r   r   r   er   r   r   __getattr__*   s    
zAttributeSetter.__getattr__)r
   c             C   s
   |  |S )z@override if getattr should do something other than call self.get)get)r   r   r   r   r   r   r   A   s    zAttributeSetter._get_attr_opt)r   r
   c             C   s   d S )Nr   )r   r   r   r   r   r#   E   s    zAttributeSetter.get)r   valr
   c             C   s   d S )Nr   )r   r   r$   r   r   r   r   H   s    zAttributeSetter.set)r   
__module____qualname__strOptValTr   intr   r"   r   r#   r   r   r   r   r   r      s   r   )__doc__r    typingr   r    r   r   r'   bytesr)   r(   r   __all__r   r   r   r   <module>   s   =