o
    ZhN
                     @  sb   d Z ddlm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    )annotationsN)TypeVarUnion   )	constantsTc                   @  sH   e Zd ZdddZdddZdddZdddZdddZdddZdS )AttributeSetterkeystrvalueOptValTreturnNonec                 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   J/var/www/html/lang_env/lib/python3.10/site-packages/zmq/sugar/attrsettr.pyr      s"   
zAttributeSetter.__setattr__namer   intc                 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   Zzmqr$   _get_attr_opterrnoEINVALZ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%   B   s   
zAttributeSetter._get_attr_optc                 C     t dzOverride in subclasszoverride in subclassNotImplementedError)r   r   r   r   r    r*   F      zAttributeSetter.getvalc                 C  r+   r,   r-   )r   r   r0   r   r   r    r#   J   r/   zAttributeSetter.setN)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"   r0   r   r   r   )	r   
__module____qualname__r   r   r)   r%   r*   r#   r   r   r   r    r      s    




r   )__doc__
__future__r   r&   typingr   r    r   r   r
   bytesr"   r   r   __all__r   r   r   r    <module>   s    
?