
    ai                         d dl  ddgZdZ G d de      Z G d de      Z eej                  de	f      d	 e
       
      Zedd       Zed        Zed        Z ede	fej                               ZeZ[y)   )*NamedConstantConstantNc                   ,     e Zd ZdZ fdZ fdZ xZS )NamedConstantDictzTrack constant order and ensure names are not reused.

    NamedConstantMeta will use the names found in self._names as the
    Constant names.
    c                 8    t         t        |           g | _        y N)superr   __init___names)self	__class__s    b/home/ccuser/rateright-growth/voice-assistant/venv/lib/python3.12/site-packages/aenum/_constant.pyr   zNamedConstantDict.__init__   s    /1    c                 L   t        |      rt        d|d      t        |      rni|| j                  v rt	        d|      t        |t              st        |      s2|| v rt	        |d| |         | j                  j                  |       t        t        | /  ||       y)zChanges anything not dundered or not a constant descriptor.

        If an constant name is used twice, an error is raised; duplicate
        values are not checked for.

        Single underscore (sunder) names are reserved.
        z_sunder_ names, such as z+, are reserved for future NamedConstant usezattempt to reuse name: z already defined as: N)	is_sunder
ValueError	is_dunderr   	TypeError
isinstanceconstantis_descriptorappendr
   r   __setitem__)r   keyvaluer   s      r   r   zNamedConstantDict.__setitem__   s     S>  s^DKK3ABBx(e0Dd{sDI NOOKKs#23>r   )__name__
__module____qualname____doc__r   r   __classcell__r   s   @r   r   r      s    
? ?r   r   c                   b     e Zd ZdZed        Z fdZd Z fdZd Z	d Z
d ZeZ fd	Z xZS )
NamedConstantMetaz>
    Block attempts to reassign NamedConstant attributes.
    c                     t               S r	   )r   )metaclsclsbaseskwdss       r   __prepare__zNamedConstantMeta.__prepare__4   s     ""r   c                    t        |      t        u r)|}t               }|j                         D ]
  \  }}|||<    i }i }|j                         D ]:  \  }	}
|	|j                  v r|
||	<   t        |
t              r|
j                  }
|
||	<   < t        t        | +  | |||      }i |_        i |_        |j                         D ]'  \  }	}
|j                  ||	|
      }||j                  |	<   ) |S r	   )typedictr   itemsr   r   	nonmemberr   r
   r$   __new___named_constant_cache_	_members_)r&   r'   r(   clsdictoriginal_dictkvnewdict	constantsnameobjnewclsnew_kr   s                r   r0   zNamedConstantMeta.__new__8   s   =D #M')G%++- 1
	  	 ID#w~~%"%	$C+iiGDM	  (':7CPWX(*%"* 	+ID#NN645E%*FT"	+ r   c                      y)NT r'   s    r   __bool__zNamedConstantMeta.__bool__O   s    r   c                     | j                   j                  |      }t        @t        |t              r0t	        d|j
                  j                  d|j                  d      t        t        | +  |       y )Nzcannot delete constant <.>)__dict__getr   r   AttributeErrorr   r   _name_r
   r$   __delattr__)r'   attrcur_objr   s      r   rH   zNamedConstantMeta.__delattr__R   sY    ,,""4($G])K WEVEVE_E_ahaoao!pqq1$7r   c                 D    d | j                   j                         D        S )Nc              3       K   | ]  }|  y wr	   r>   .0r5   s     r   	<genexpr>z-NamedConstantMeta.__iter__.<locals>.<genexpr>Y   s     2a2   )r2   valuesr?   s    r   __iter__zNamedConstantMeta.__iter__X   s    23==//122r   c                 V    d t        | j                  j                               D        S )Nc              3       K   | ]  }|  y wr	   r>   rM   s     r   rO   z1NamedConstantMeta.__reversed__.<locals>.<genexpr>\   s     <a<rP   )reversedr2   rQ   r?   s    r   __reversed__zNamedConstantMeta.__reversed__[   s    <8CMM$8$8$:;<<r   c                 ,    t        | j                        S r	   )lenr2   r?   s    r   __len__zNamedConstantMeta.__len__^   s    3==!!r   c                     | j                   j                  |      }t        @t        |t              r0t	        d|j
                  j                  d|j                  d      t        t        | +  ||       y)z3Block attempts to reassign NamedConstants.
        Ncannot rebind constant <rB   rC   )rD   rE   r   r   rF   r   r   rG   r
   r$   __setattr__)r'   r9   r   rJ   r   s       r   r\   zNamedConstantMeta.__setattr__c   s]     ,,""4($G])K WEVEVE_E_ahaoao!pqq1$>r   )r   r   r   r    classmethodr*   r0   r@   rH   rR   rV   rY   __nonzero__r\   r!   r"   s   @r   r$   r$   /   sK     # #.83=" K? ?r   r$   zPNamedConstants protection.

    Derive from this class to lock NamedConstants.

)r-   docnsc                 z   |^|}| j                   j                         D ]%  \  }}t        ||       s|j                  |k(  s#|c S  t	        |d| j
                        | j                   j                  |      }t        |t              r0t        d|j                  j
                  d|j                  d      t        |t              r|xs |j                  }|j                  }| j                  }t        |t              r|j                  }t        |      }| j                  j                  |      }|:t        | j
                  | t        |      fi       }|| j                  t        |      <   |j!                  ||      }||_
        ||_        ||_        || j"                  |<   |j%                  | ||       |S )Nz does not exist in r[   rB   rC   )rD   r.   r   _value_r   r   rE   r   rF   r   rG   r   r    r   r,   r1   r0   r2   r\   )	r'   r9   r   r_   r:   rJ   r&   actual_type
value_types	            r   r0   r0   q   s|   }++- 	PID##s#u(<
	P %NOOllt$G'=)ARARA[A[]d]k]klmm	E8	$"U]]mmG%'u+K++//<J#,,d5k(:B?
2<""4;/


j%
0CCJCKCKCMM$T3'Jr   c                 j    d| j                   j                  d| j                  d| j                  dS )N<rB   z: rC   )r   r   rG   rb   )r   s    r   __repr__rg      s)     NN##T[[$,,@ @r   c                 >    t         | j                  | j                  ffS r	   )getattrr   rG   )r   protos     r   __reduce_ex__rk      s    T^^T[[111r   )NN)_common__all__r   r-   r   r,   r$   	_Addendumr*   objectglobalsconstant_dictr0   rg   rk   resolver   r>   r   r   <module>rs      s     	
 !? !?H:? :?x **?VJGb9
  @ @ @ 2 2 "/F:}?T?T?VWr   