o
    i+
                     @   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                   @   s   e Zd ZdededdfddZdedededdfd	d
ZdedefddZdefddZ	dedefddZ
dededdfddZdS )AttributeSetterkeyvaluereturnNc                 C   s   || j v rt| || dS | j D ]}||j v s"|t|di v r,t| ||  dS q| }ztt|}W n tyJ   t| jj	 d| w | 
||| dS )zset zmq options by attributeN__annotations__ has no such option: )__dict__object__setattr__	__class__mrogetattrupperr   AttributeError__name___set_attr_opt)selfr   r	   cls	upper_keyopt r   N/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/zmq/sugar/attrsettr.pyr      s"   
zAttributeSetter.__setattr__namer   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_optc              
   C   s   |  }ztt|}W n ty   t| jj d| dw ddlm} z| ||W S  |yI } z|j	t	j
t	jhv rDt| d d}~ww )zget zmq options by attributer   Nr   )ZMQErrorz attribute is write-only)r   r   r   r   r   r   zmqr   _get_attr_opterrnoEINVALEFAULT)r   r   r   r   r   er   r   r   __getattr__*   s&   zAttributeSetter.__getattr__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_optc                 C      t dzOverride in subclasszoverride in subclassNotImplementedError)r   r   r   r   r   r'   E      zAttributeSetter.getvalc                 C   r(   r)   r*   )r   r   r-   r   r   r   r   I   r,   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   r0   bytesr2   r1   r   __all__r   r   r   r   <module>   s    
?