"""
Commonly used hooks for on_setattr.
"""
from __future__ import absolute_import, division, print_function
from . import _config
from .exceptions import FrozenAttributeError
def pipe(*setters):
"""
Run all *setters* and return the return value of the last one.
.. versionadded:: 20.1.0
"""
def wrapped_pipe(instance, attrib, new_value):
rv = new_value
for setter in setters:
rv = setter(instance, attrib, rv)
return rv
return wrapped_pipe
def frozen(_, __, ___):
"""
Prevent an attribute to be modified.
.. versionadded:: 20.1.0
"""
raise FrozenAttributeError()
def validate(instance, attrib, new_value):
"""
Run *attrib*'s validator on *new_value* if it has one.
.. versionadded:: 20.1.0
"""
if _config._run_validators is False:
return new_value
v = attrib.validator
if not v:
return new_value
v(instance, attrib, new_value)
return new_value
def convert(instance, attrib, new_value):
"""
Run *attrib*'s converter -- if it has one -- on *new_value* and return the
result.
.. versionadded:: 20.1.0
"""
c = attrib.converter
if c:
return c(new_value)
return new_value
NO_OP = object()
"""
Sentinel for disabling class-wide *on_setattr* hooks for certain attributes.
Does not work in `pipe` or within lists.
.. versionadded:: 20.1.0
"""
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| __init__.py | File | 1.58 KB | 0644 |
|
| __init__.pyi | File | 14.49 KB | 0644 |
|
| _cmp.py | File | 4.04 KB | 0644 |
|
| _cmp.pyi | File | 318 B | 0644 |
|
| _compat.py | File | 7.38 KB | 0644 |
|
| _config.py | File | 514 B | 0644 |
|
| _funcs.py | File | 13.08 KB | 0644 |
|
| _make.py | File | 95.45 KB | 0644 |
|
| _next_gen.py | File | 3.98 KB | 0644 |
|
| _version_info.py | File | 2.11 KB | 0644 |
|
| _version_info.pyi | File | 209 B | 0644 |
|
| converters.py | File | 2.97 KB | 0644 |
|
| converters.pyi | File | 382 B | 0644 |
|
| exceptions.py | File | 1.9 KB | 0644 |
|
| exceptions.pyi | File | 540 B | 0644 |
|
| filters.py | File | 1.07 KB | 0644 |
|
| filters.pyi | File | 216 B | 0644 |
|
| py.typed | File | 0 B | 0644 |
|
| setters.py | File | 1.4 KB | 0644 |
|
| setters.pyi | File | 574 B | 0644 |
|
| validators.py | File | 11.23 KB | 0644 |
|
| validators.pyi | File | 1.83 KB | 0644 |
|