o
    h	                     @   s@   d dl Z d dlZe jdddZG dd dZdd Zd	d
 ZdS )    NZ_immutable_in__init__F)defaultc                       s0   e Zd ZdZdZ fddZ fddZ  ZS )
_ImmutablezImmutable mixin class c                    s&   t  | ur
tdt || d S Nz+object doesn't support attribute assignment)_in__init__get	TypeErrorsuper__setattr__)selfnamevalue	__class__r   E/var/www/html/venv/lib/python3.10/site-packages/dns/_immutable_ctx.pyr
      s   z_Immutable.__setattr__c                    s$   t  | ur
tdt | d S r   )r   r   r   r	   __delattr__)r   r   r   r   r   r      s   z_Immutable.__delattr__)__name__
__module____qualname____doc__	__slots__r
   r   __classcell__r   r   r   r   r      s
    r   c                    s    fdd}t  |_|S )Nc               	      s:   t | d }z | i | W t | d S t | w )Nr   )r   setreset)argskwargspreviousfr   r   nf$   s   z_immutable_init.<locals>.nf)inspect	signature__signature__)r   r   r   r   r   _immutable_init#   s   r#   c                    sf   t  jv rt j _t drt j _ }|S G  fdddt  } j|_ j|_ j|_|S )N__setstate__c                       sF   e Zd ZdZe fddZedre fddZ  ZS   ZS )zimmutable.<locals>.nclsr   c                       t  j|i | d S N)r	   __init__r   r   r   r   r   r   r'   >      z immutable.<locals>.ncls.__init__r$   c                    r%   r&   )r	   r$   r(   r   r   r   r$   D   r)   z$immutable.<locals>.ncls.__setstate__)	r   r   r   r   r#   r'   hasattrr$   r   r   clsr   r   ncls:   s    
r-   )	r   __mro__r#   r'   r*   r$   r   r   r   )r,   r-   r   r+   r   	immutable0   s   

r/   )Zcontextvarsr    Z
ContextVarr   r   r#   r/   r   r   r   r   <module>   s   