##// END OF EJS Templates
safehasattr: pass attribute name as string instead of bytes...
safehasattr: pass attribute name as string instead of bytes This is a step toward replacing `util.safehasattr` usage with plain `hasattr`. The builtin function behave poorly in Python2 but this was fixed in Python3. These change are done one by one as they tend to have a small odd to trigger puzzling breackage.

File last commit:

r50538:e1c586b9 default
r51502:90945014 default
Show More
filters.py
51 lines | 1.0 KiB | text/x-python | PythonLexer
Matt Harbison
attr: vendor 22.1.0...
r50538 # SPDX-License-Identifier: MIT
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 """
Matt Harbison
attr: vendor 22.1.0...
r50538 Commonly useful filters for `attr.asdict`.
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 """
from ._make import Attribute
def _split_what(what):
"""
Returns a tuple of `frozenset`s of classes and attributes.
"""
return (
Matt Harbison
attr: vendor 22.1.0...
r50538 frozenset(cls for cls in what if isinstance(cls, type)),
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 frozenset(cls for cls in what if isinstance(cls, Attribute)),
)
def include(*what):
Matt Harbison
attr: vendor 22.1.0...
r50538 """
Include *what*.
Siddharth Agarwal
thirdparty: vendor attrs...
r34398
Matt Harbison
attr: vendor 22.1.0...
r50538 :param what: What to include.
:type what: `list` of `type` or `attrs.Attribute`\\ s
Siddharth Agarwal
thirdparty: vendor attrs...
r34398
Matt Harbison
attr: vendor 22.1.0...
r50538 :rtype: `callable`
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 """
cls, attrs = _split_what(what)
def include_(attribute, value):
return value.__class__ in cls or attribute in attrs
return include_
def exclude(*what):
Matt Harbison
attr: vendor 22.1.0...
r50538 """
Exclude *what*.
Siddharth Agarwal
thirdparty: vendor attrs...
r34398
Matt Harbison
attr: vendor 22.1.0...
r50538 :param what: What to exclude.
:type what: `list` of classes or `attrs.Attribute`\\ s.
Siddharth Agarwal
thirdparty: vendor attrs...
r34398
Matt Harbison
attr: vendor 22.1.0...
r50538 :rtype: `callable`
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 """
cls, attrs = _split_what(what)
def exclude_(attribute, value):
return value.__class__ not in cls and attribute not in attrs
return exclude_