
    Zd+
                     z    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dS )	z-Mixin for mapping set/getattr to self.set/get    N)TypeVarUnion   )	constantsTc                   z    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dS )AttributeSetterkeyvaluereturnNc                    || j         v rt                              | ||           dS | j                                        D ]=}||j         v s|t          |di           v rt                              | ||            dS >|                                }	 t          t          |          }|                     |||           dS # 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         3lib/python3.11/site-packages/zmq/sugar/attrsettr.pyr   zAttributeSetter.__setattr__   s    $-tS%000F>%%'' 	 	Ccl""cWS:KR-P-P&P&P""4e444 'Q IIKK		6)Y//C y#u55555  	 	 	 >*LLLL  	s   C )C+namer   c                 2    |                      ||           dS )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                 h   |                                 }	 t          t          |          }ddlm} 	 |                     ||          S # |$ r7}|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    IIKK		)Y//C %$$$$$	)))S999    7u|U\:::(C)I)I)IJJJ  	 	 	 >*LLLL 	s"   B A B2A??B*B1c                 ,    |                      |          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                      t          d          zOverride in subclasszoverride in subclassNotImplementedError)r   r   s     r   r-   zAttributeSetter.getE       !"8999r"   valc                      t          d          r/   r0   )r   r   r3   s      r   r!   zAttributeSetter.setI   r2   r"   )r   
__module____qualname__strOptValTr   intr   r+   r&   r-   r!    r"   r   r	   r	      s        6s 67 6t 6 6 6 6,# C  D    s w    .'    :s :w : : : ::s : :T : : : : : :r"   r	   )__doc__r'   typingr   r    r   r   r7   bytesr9   r8   r	   __all__r:   r"   r   <module>r@      s    3 3
  ! ! ! ! ! ! ! !      GCLL
UC
 <: <: <: <: <: <: <: <:~ 
r"   