From 29171baaa311972892b3bd75add86c0cf4502074 Mon Sep 17 00:00:00 2001 From: Labrys of Knossos Date: Sat, 5 Jan 2019 22:34:12 -0500 Subject: [PATCH 1/3] Add extra logging for fork detection. --- core/forks.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/core/forks.py b/core/forks.py index 8f8fcb26..2e07bd74 100644 --- a/core/forks.py +++ b/core/forks.py @@ -81,9 +81,23 @@ def auto_fork(section, input_category): if apikey: optional_parameters = [] try: - optional_parameters = r.json()['data']['optionalParameters'].keys() - except Exception: - optional_parameters = r.json()['data']['data']['optionalParameters'].keys() + json_data = r.json() + except ValueError: + logger.error('Failed to get JSON data from response') + logger.debug('Response received') + raise + + try: + json_data = json_data['data'] + except KeyError: + logger.error('Failed to get data from JSON') + logger.debug('Response received: {}'.format(json_data)) + raise + else: + json_data = json_data.get('data', json_data) + + optional_parameters = json_data['optionalParameters'].keys() + for param in params: if param not in optional_parameters: rem_params.append(param) From f514eecf6c7462237d9fb0afc66aff220924b12e Mon Sep 17 00:00:00 2001 From: Labrys of Knossos Date: Sat, 5 Jan 2019 22:37:05 -0500 Subject: [PATCH 2/3] Fix excess parameter detection --- core/forks.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/forks.py b/core/forks.py index 2e07bd74..9aff79e5 100644 --- a/core/forks.py +++ b/core/forks.py @@ -97,14 +97,16 @@ def auto_fork(section, input_category): json_data = json_data.get('data', json_data) optional_parameters = json_data['optionalParameters'].keys() - - for param in params: - if param not in optional_parameters: - rem_params.append(param) + # Find excess parameters + excess_parameters = set(params).difference(optional_parameters) + logger.debug('Removing excess parameters: {}'.format(sorted(excess_parameters))) + rem_params.extend(excess_parameters) else: - for param in params: - if 'name="{param}"'.format(param=param) not in r.text: - rem_params.append(param) + rem_params.extend( + param + for param in params + if 'name="{param}"'.format(param=param) not in r.text + ) for param in rem_params: params.pop(param) for fork in sorted(iteritems(core.FORKS), reverse=False): From 656957f1fc85ce9a1351d40844161408bceaeb9c Mon Sep 17 00:00:00 2001 From: Labrys of Knossos Date: Sat, 5 Jan 2019 22:42:49 -0500 Subject: [PATCH 3/3] Fix excess parameter detection --- core/forks.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/forks.py b/core/forks.py index 9aff79e5..8ff389fe 100644 --- a/core/forks.py +++ b/core/forks.py @@ -102,17 +102,22 @@ def auto_fork(section, input_category): logger.debug('Removing excess parameters: {}'.format(sorted(excess_parameters))) rem_params.extend(excess_parameters) else: + # Find excess parameters rem_params.extend( param for param in params if 'name="{param}"'.format(param=param) not in r.text ) + + # Remove excess params for param in rem_params: params.pop(param) + for fork in sorted(iteritems(core.FORKS), reverse=False): if params == fork[1]: detected = True break + if detected: logger.info('{section}:{category} fork auto-detection successful ...'.format (section=section, category=input_category))