Please ignore this series and see the next one I sent, the [N/4] one
Quoting Dylan Baker (2018-05-08 14:21:49) > This class works like a list, but with an extra method that allows it to > "reset" a filter. This will allow class based filters that need to be > reset to have deterministic behavior to do so. > --- > framework/profile.py | 42 +++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 39 insertions(+), 3 deletions(-) > > diff --git a/framework/profile.py b/framework/profile.py > index 44681592a..b0233866b 100644 > --- a/framework/profile.py > +++ b/framework/profile.py > @@ -265,6 +265,42 @@ class TestDict(collections.MutableMapping): > self.__allow_reassignment -= 1 > > > +class Filters(collections.MutableSequence): > + > + def __init__(self, iterable=None): > + if iterable: > + self.__container = list(iterable) > + else: > + self.__container = [] > + > + def __getitem__(self, index): > + return self.__container[index] > + > + def __setitem__(self, index, value): > + self.__container[index] = value > + > + def __delitem__(self, index): > + del self.__container[index] > + > + def __len__(self): > + return len(self.__container) > + > + def __add__(self, other): > + return type(self)(itertools.chain(iter(self), iter(other))) > + > + def insert(self, index, value): > + self.__container.insert(index, value) > + > + def run(self, iterable): > + for f in self.__container: > + if hasattr(f, 'reset'): > + f.reset() > + > + for k, v in iterable: > + if all(f(k, v) for f in self.__container): > + yield k, v > + > + > def make_test(element): > """Rebuild a test instance from xml.""" > def process(elem, opt): > @@ -309,7 +345,7 @@ class XMLProfile(object): > def __init__(self, filename): > self.filename = filename > self.forced_test_list = [] > - self.filters = [] > + self.filters = Filters() > self.options = { > 'dmesg': get_dmesg(False), > 'monitor': Monitoring(False), > @@ -369,7 +405,7 @@ class MetaProfile(object): > > def __init__(self, filename): > self.forced_test_list = [] > - self.filters = [] > + self.filters = Filters() > self.options = { > 'dmesg': get_dmesg(False), > 'monitor': Monitoring(False), > @@ -436,7 +472,7 @@ class TestProfile(object): > def __init__(self): > self.test_list = TestDict() > self.forced_test_list = [] > - self.filters = [] > + self.filters = Filters() > self.options = { > 'dmesg': get_dmesg(False), > 'monitor': Monitoring(False), > -- > 2.17.0 > > _______________________________________________ > Piglit mailing list > Piglit@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/piglit
signature.asc
Description: signature
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit