def filter(self, projects=None, tags=None, ignore_projects=None, ignore_tags=None, span=None, include_partial_frames=False):
    for frame in self._rows:
        if ((projects is not None) and (frame.project not in projects)):
            continue
        if ((ignore_projects is not None) and (frame.project in ignore_projects)):
            continue
        if ((tags is not None) and (not any(((tag in frame.tags) for tag in tags)))):
            continue
        if ((ignore_tags is not None) and any(((tag in frame.tags) for tag in ignore_tags))):
            continue
        if (span is None):
            (yield frame)
        elif (frame in span):
            (yield frame)
        elif (include_partial_frames and span.overlaps(frame)):
            start = (span.start if (frame.start < span.start) else frame.start)
            stop = (span.stop if (frame.stop > span.stop) else frame.stop)
            (yield frame._replace(start=start, stop=stop))
def filter(self, projects=None, tags=None, ignore_projects=None, ignore_tags=None, span=None, include_partial_frames=False):
    for frame in self._rows:
        if ((projects is not None) and (frame.project not in projects)):
            continue
        if ((ignore_projects is not None) and (frame.project in ignore_projects)):
            continue
        if ((tags is not None) and (not any(((tag in frame.tags) for tag in tags)))):
            continue
        if ((ignore_tags is not None) and any(((tag in frame.tags) for tag in ignore_tags))):
            continue
        if (span is None):
            (yield frame)
        elif (frame in span):
            (yield frame)
        elif (include_partial_frames and span.overlaps(frame)):
            start = (span.start if (frame.start < span.start) else frame.start)
            stop = (span.stop if (frame.stop > span.stop) else frame.stop)
            (yield frame._replace(start=start, stop=stop))