def test_filter_keyval(): labels = ["aa", "cc"] events = [ Event(data={"label": "aa"}), Event(data={"label": "bb"}), Event(data={"label": "cc"}), ] included_events = filter_keyvals(events, "label", labels) excluded_events = filter_keyvals(events, "label", labels, exclude=True) assert len(included_events) == 2 assert len(excluded_events) == 1
def test_filter_keyval(): labels = ["aa", "cc"] events = [ Event(data={"label": "aa"}), Event(data={"label": "bb"}), Event(data={"label": "cc"}), ] included_events = filter_keyvals(events, "label", labels) excluded_events = filter_keyvals(events, "label", labels, exclude=True) assert len(included_events) == 2 assert len(excluded_events) == 1
def _query_complete(): # noqa from aw_transform import (query_bucket, find_bucket, filter_keyvals, exclude_keyvals, period_union, concat) hostname = "" # set in preprocessing browsernames_chrome = ["Chromium"] # TODO: Include more browsers browsernames_ff = ["Firefox"] # TODO: Include more browsers events = flood(query_bucket(find_bucket("aw-watcher-window", hostname))) events_afk = query_bucket( find_bucket("aw-watcher-afk", hostname) ) # TODO: Readd flooding for afk-events once a release has been made that includes the flooding-fix events_web_chrome = flood( query_bucket(find_bucket("aw-watcher-web-chrome"))) events_web_ff = flood(query_bucket(find_bucket("aw-watcher-web-firefox"))) # Combine window events with web events events_browser_chrome = filter_keyvals(events, "app", browsernames_chrome) events_web_chrome = filter_period_intersect(events_web_chrome, events_browser_chrome) events_browser_ff = filter_keyvals(events, "app", browsernames_ff) events_web_ff = filter_period_intersect(events_web_ff, events_browser_ff) events_web = concat(events_web_chrome, events_web_ff) # TODO: Browser events should only be excluded when there's a web-event replacing it events = exclude_keyvals(events, "app", browsernames_chrome) events = exclude_keyvals(events, "app", browsernames_ff) events = concat(events, events_web) # Filter away all inactive (afk and non-audible) time events_notafk = filter_keyvals(events_afk, "status", ["not-afk"]) events_audible = filter_keyvals(events_web, "audible", [True]) events_active = period_union(events_notafk, events_audible) events = filter_period_intersect(events, events_active) return events
def q2_exclude_keyvals(events: list, key: str, vals: list) -> List[Event]: return filter_keyvals(events, key, vals, True)
def q2_filter_keyvals(events: list, key: str, vals: list) -> List[Event]: return filter_keyvals(events, key, vals, False)
def q2_exclude_keyvals(events: list, key: str, vals: list) -> List[Event]: _verify_variable_is_type(events, list) _verify_variable_is_type(key, str) _verify_variable_is_type(vals, list) return filter_keyvals(events, key, vals, True)
def q2_exclude_keyvals(events: list, key: str, vals: list) -> List[Event]: _verify_variable_is_type(events, list) _verify_variable_is_type(key, str) _verify_variable_is_type(vals, list) return filter_keyvals(events, key, vals, True)
def q2_exclude_keyvals(datastore: Datastore, namespace: dict, events: list, key: str, *vals): return filter_keyvals(events, key, list(vals), True)
def q2_exclude_keyvals(datastore: Datastore, namespace: dict, events: list, key: str, *vals): _verify_variable_is_type(events, list) _verify_variable_is_type(key, str) return filter_keyvals(events, key, list(vals), True)