From 16e716e270ed72060862bc020d731833b45da66d Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Mon, 7 Oct 2019 13:01:45 -0700 Subject: [PATCH 1/4] Add helper function itemgetter_with_default --- varken/helpers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/varken/helpers.py b/varken/helpers.py index 65b886b..e80cff9 100644 --- a/varken/helpers.py +++ b/varken/helpers.py @@ -203,3 +203,6 @@ def boolcheck(var): return True else: return False + +def itemgetter_with_default(defaults): + return lambda obj: {k: obj.get(k, v) for k, v in defaults.items()} From fa4b5eec6360238711dcc7eef2b65af067fc7b83 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Mon, 7 Oct 2019 13:02:22 -0700 Subject: [PATCH 2/4] Use itemgetter_with_default helper function for Tautulli sessions --- varken/tautulli.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/varken/tautulli.py b/varken/tautulli.py index af0d979..effbfc7 100644 --- a/varken/tautulli.py +++ b/varken/tautulli.py @@ -1,12 +1,11 @@ from logging import getLogger -from operator import itemgetter from requests import Session, Request from geoip2.errors import AddressNotFoundError from datetime import datetime, timezone, date, timedelta from influxdb.exceptions import InfluxDBClientError from varken.structures import TautulliStream -from varken.helpers import hashit, connection_handler +from varken.helpers import hashit, connection_handler, itemgetter_with_default class TautulliAPI(object): @@ -41,10 +40,10 @@ class TautulliAPI(object): if session.get('_cache_time'): del session['_cache_time'] - fields = itemgetter(*TautulliStream._fields) + fields = itemgetter_with_default(*TautulliStream._field_defaults) try: - sessions = [TautulliStream(*fields(session)) for session in get['sessions']] + sessions = [TautulliStream(**fields(session)) for session in get['sessions']] except TypeError as e: self.logger.error('TypeError has occurred : %s while creating TautulliStream structure', e) return From 93f762887462710fddf18e8c9b7923ff5efb15b6 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Mon, 7 Oct 2019 13:46:38 -0700 Subject: [PATCH 3/4] Make helper.itemgetter_with_default function return a tuple to act more like operator.itemgetter --- varken/helpers.py | 4 ++-- varken/tautulli.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/varken/helpers.py b/varken/helpers.py index e80cff9..0dc43bc 100644 --- a/varken/helpers.py +++ b/varken/helpers.py @@ -204,5 +204,5 @@ def boolcheck(var): else: return False -def itemgetter_with_default(defaults): - return lambda obj: {k: obj.get(k, v) for k, v in defaults.items()} +def itemgetter_with_default(**defaults): + return lambda obj: tuple(obj.get(k, v) for k, v in defaults.items()) diff --git a/varken/tautulli.py b/varken/tautulli.py index effbfc7..292ad55 100644 --- a/varken/tautulli.py +++ b/varken/tautulli.py @@ -40,10 +40,10 @@ class TautulliAPI(object): if session.get('_cache_time'): del session['_cache_time'] - fields = itemgetter_with_default(*TautulliStream._field_defaults) + fields = itemgetter_with_default(**TautulliStream._field_defaults) try: - sessions = [TautulliStream(**fields(session)) for session in get['sessions']] + sessions = [TautulliStream(*fields(session)) for session in get['sessions']] except TypeError as e: self.logger.error('TypeError has occurred : %s while creating TautulliStream structure', e) return From 4f5750ab161d5c6ead173d7f5b8977d619bd5c87 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Mon, 7 Oct 2019 13:51:39 -0700 Subject: [PATCH 4/4] Don't need to remove key from Tautulli sessions dict anymore --- varken/tautulli.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/varken/tautulli.py b/varken/tautulli.py index 292ad55..3eeaada 100644 --- a/varken/tautulli.py +++ b/varken/tautulli.py @@ -34,12 +34,6 @@ class TautulliAPI(object): return get = g['response']['data'] - - # Remove erroneous key from sessions - for session in get['sessions']: - if session.get('_cache_time'): - del session['_cache_time'] - fields = itemgetter_with_default(**TautulliStream._field_defaults) try: