
    MhQ                     N    d Z ddlmZ ddlmZ d Zd Zd Zd Z e	            Z
dS )	z%
Commonly used hooks for on_setattr.
   )_configFrozenAttributeErrorc                        fd}|S )zf
    Run all *setters* and return the return value of the last one.

    .. versionadded:: 20.1.0
    c                 0    |}D ]} || ||          }|S )N )instanceattrib	new_valuervsettersetterss        L/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/attr/setters.pywrapped_pipezpipe.<locals>.wrapped_pipe   s1     	. 	.F&"--BB	    r   )r   r   s   ` r   piper      s$         r   c                     t           )zL
    Prevent an attribute to be modified.

    .. versionadded:: 20.1.0
    r   )______s      r   frozenr      s
     r   c                 V    t           j        du r|S |j        }|s|S  || ||           |S )z^
    Run *attrib*'s validator on *new_value* if it has one.

    .. versionadded:: 20.1.0
    F)r   _run_validators	validator)r	   r
   r   vs       r   validater   &   sH     %''A Ah	"""r   c                 t    |j         }|r.ddlm} t          ||          s ||          S  ||| |          S |S )z~
    Run *attrib*'s converter -- if it has one -- on *new_value* and return the
    result.

    .. versionadded:: 20.1.0
    r   )	Converter)	converter_maker   
isinstance)r	   r
   r   cr   s        r   convertr#   8   s`     	A .$$$$$$!Y'' 	 1Y<<qHf---r   N)__doc__ r   
exceptionsr   r   r   r   r#   objectNO_OPr   r   r   <module>r)      s           , , , , , ,  $    $  . 	r   