JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB ^u_@sZdZddlmZmZmZddlmZddlmZddZ dd Z d d Z d d Z e ZdS)z% Commonly used hooks for on_setattr. )absolute_importdivisionprint_function)_config)FrozenAttributeErrorcsfdd}|S)zf Run all *setters* and return the return value of the last one. .. versionadded:: 20.1.0 cs"|}xD]}||||}q W|S)N)instanceattrib new_valuervsetter)settersr=/opt/alt/python37/lib/python3.7/site-packages/attr/setters.py wrapped_pipes zpipe..wrapped_piper)rrr)rrpipe s rcCs tdS)zL Prevent an attribute to be modified. .. versionadded:: 20.1.0 N)r)___Z___rrrfrozensrcCs,tjdkr|S|j}|s|S|||||S)z^ Run *attrib*'s validator on *new_value* if it has one. .. versionadded:: 20.1.0 F)rZ_run_validators validator)r r r vrrrvalidate&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 ) converter)r r r crrrconvert8srN)__doc__ __future__rrrr exceptionsrrrrrobjectZNO_OPrrrrs