B
    4‹dx  ã               @   sF   d Z ddlmZ ddlmZ dd„ Zdd„ Zdd	„ Zd
d„ Ze	ƒ Z
dS )z%
Commonly used hooks for on_setattr.
é   )Ú_config)ÚFrozenAttributeErrorc                 s   ‡ fdd„}|S )zf
    Run all *setters* and return the return value of the last one.

    .. versionadded:: 20.1.0
    c                s"   |}xˆ D ]}|| ||ƒ}q
W |S )N© )ÚinstanceÚattribÚ	new_valueÚrvÚsetter)Úsettersr   úY/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/attr/setters.pyÚwrapped_pipe   s    
zpipe.<locals>.wrapped_piper   )r
   r   r   )r
   r   Úpipe   s    r   c             C   s
   t ƒ ‚dS )zL
    Prevent an attribute to be modified.

    .. versionadded:: 20.1.0
    N)r   )Ú_Ú__Z___r   r   r   Úfrozen   s    r   c             C   s,   t jdkr|S |j}|s|S || ||ƒ |S )z^
    Run *attrib*'s validator on *new_value* if it has one.

    .. versionadded:: 20.1.0
    F)r   Z_run_validatorsÚ	validator)r   r   r   Úvr   r   r   Úvalidate'   s    
r   c             C   s   |j }|r||ƒS |S )z
    Run *attrib*'s converter -- if it has one --  on *new_value* and return the
    result.

    .. versionadded:: 20.1.0
    )Ú	converter)r   r   r   Úcr   r   r   Úconvert9   s    r   N)Ú__doc__Ú r   Ú
exceptionsr   r   r   r   r   ÚobjectZNO_OPr   r   r   r   Ú<module>   s   	