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 )    N_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   N/var/www/html/olx_land/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   

r0   )contextvarsr!   
ContextVarr   r   r$   r0   r   r   r   r   <module>   s   