##// END OF EJS Templates
phases: apply similar early filtering to advanceboundary...
phases: apply similar early filtering to advanceboundary advanceboundary is called the push's unbundle (but not the other unbundle) so advanceboundary did not show up the profile I looked at so far. We start with simple pre-filtering to avoid doing any work if we don't needs too.

File last commit:

r50538:e1c586b9 default
r52315:709525b2 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_