a PÍ£_šã@sZdZddlmZmZmZddlmZddlmZdd„Z dd „Z d d „Z d d „Z e ƒZdS)z% Commonly used hooks for on_setattr. é)Úabsolute_importÚdivisionÚprint_functioné)Ú_config©ÚFrozenAttributeErrorcs‡fdd„}|S)zf Run all *setters* and return the return value of the last one. .. versionadded:: 20.1.0 cs|}ˆD]}||||ƒ}q|S)N©)ÚinstanceÚattribÚ new_valueÚrvÚsetter©Úsettersr ú0/usr/lib/python3.9/site-packages/attr/setters.pyÚ wrapped_pipeszpipe..wrapped_piper )rrr rrÚpipe s rcCs tƒ‚dS)zL Prevent an attribute to be modified. .. versionadded:: 20.1.0 Nr)Ú_Ú__Z___r r rÚfrozensrcCs,tjdur|S|j}|s|S||||ƒ|S)z^ Run *attrib*'s validator on *new_value* if it has one. .. versionadded:: 20.1.0 F)rZ_run_validatorsZ validator)r r r Úvr r rÚvalidate&s  rcCs|j}|r||ƒS|S)z Run *attrib*'s converter -- if it has one -- on *new_value* and return the result. .. versionadded:: 20.1.0 )Z converter)r r r Úcr r rÚconvert8srN)Ú__doc__Z __future__rrrÚrÚ exceptionsrrrrrÚobjectZNO_OPr r r rÚs