
    Ef	                     f    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      ZdgZy)	z-Mixin for mapping set/getattr to self.set/get    N)TypeVarUnion   )	constantsTc                   x    e Zd ZdededdfdZdedededdfdZdedefd	Zdefd
Z	dedefdZ
dededdfdZy)AttributeSetterkeyvaluereturnNc                    || j                   v rt        j                  | ||       y| j                  j	                         D ]8  }||j                   v s|t        |di       v s!t        j                  | ||        y |j                         }	 t        t        |      }| j                  |||       y# t        $ r% t        | j                  j                   d|       w xY w)zset zmq options by attributeN__annotations__ has no such option: )__dict__object__setattr__	__class__mrogetattrupperr   _set_attr_optAttributeError__name__)selfr
   r   cls	upper_keyopts         5/usr/lib/python3/dist-packages/zmq/sugar/attrsettr.pyr   zAttributeSetter.__setattr__   s     $--tS%0>>%%' 	Ccll"cWS:KR-P&P""4e4	
 IIK		6)Y/C y#u5  	 >>**++@L 	s   B1 1.Cnamer   c                 (    | j                  ||       y)z@override if setattr should do something other than call self.setN)set)r   r   r   r   s       r   r   zAttributeSetter._set_attr_opt&   s    e    c                 j   |j                         }	 t        t        |      }ddlm} 	 | j                  ||      S # |$ r@}|j                  t        j                  t        j                  hv rt        | d       d}~ww xY w# t        $ r& t        | j                  j                   d|       dw xY w)zget zmq options by attributer   )ZMQErrorz attribute is write-onlyNr   )r   r   r   zmqr$   _get_attr_opterrnoEINVALEFAULTr   r   r   )r   r
   r   r   r$   es         r   __getattr__zAttributeSetter.__getattr__*   s    IIK		)Y/C %	)))S99  77u||U\\::(C50H)IJJ  	 >>**++@L	s    B ; B  ;A;;B /B2c                 $    | j                  |      S )z@override if getattr should do something other than call self.get)get)r   r   r   s      r   r&   zAttributeSetter._get_attr_optA   s    xx}r"   c                      y N )r   r   s     r   r-   zAttributeSetter.getE       r"   valc                      y r/   r0   )r   r   r2   s      r   r!   zAttributeSetter.setH   r1   r"   )r   
__module____qualname__strOptValTr   intr   r+   r&   r-   r!   r0   r"   r   r	   r	      s    6s 67 6t 6,# C  D s w .' s w s  T r"   r	   )__doc__r'   typingr   r    r   r   r6   bytesr8   r7   r	   __all__r0   r"   r   <module>r>      sA    3
  ! CL
UC
 : :z 
r"   