From 8c882b871a422a9d0a8c136632749aed4967f1fa Mon Sep 17 00:00:00 2001 From: Keigh Rim Date: Sun, 21 Apr 2024 14:38:53 -0400 Subject: [PATCH] fixed bug in `views[].metadata.parameters` not correctly recording multivalued param values --- clams/app/__init__.py | 7 +++++-- clams/develop/templates/app/app.py.template | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/clams/app/__init__.py b/clams/app/__init__.py index 6c47d1d..7c37f4d 100644 --- a/clams/app/__init__.py +++ b/clams/app/__init__.py @@ -122,7 +122,9 @@ def annotate(self, mmif: Union[str, dict, Mmif], **runtime_params: List[str]) -> if key not in self.annotate_param_spec: issued_warnings.append(UserWarning(f'An undefined parameter "{key}" (value: "{runtime_params[key]}") is passed')) # this will do casting + refinement altogether + self.logger.debug(f"User parameters: {runtime_params}") refined = self._refine_params(**runtime_params) + self.logger.debug(f"Refined parameters: {refined}") pretty = refined.get('pretty', False) with warnings.catch_warnings(record=True) as ws: annotated = self._annotate(mmif, **refined) @@ -202,11 +204,12 @@ def sign_view(self, view: View, runtime_conf: dict) -> None: :param runtime_conf: runtime configuration of the app as k-v pairs """ view.metadata.app = self.metadata.identifier + params_map = {p.name: p for p in self.metadata.parameters} if self._RAW_PARAMS_KEY in runtime_conf: for k, v in runtime_conf.items(): if k == self._RAW_PARAMS_KEY: for orik, oriv in v.items(): - if orik in self.metadata.parameters and self.metadata.parameters[orik].multivalued: + if orik in params_map and params_map[orik].multivalued: view.metadata.add_parameter(orik, str(oriv)) else: view.metadata.add_parameter(orik, oriv[0]) @@ -215,7 +218,7 @@ def sign_view(self, view: View, runtime_conf: dict) -> None: else: # meaning the parameters directly from flask or argparser and values are in lists for k, v in runtime_conf.items(): - if k in self.metadata.parameters and self.metadata.parameters[k].multivalued: + if k in params_map and params_map[k].multivalued: view.metadata.add_parameter(k, str(v)) else: view.metadata.add_parameter(k, v[0]) diff --git a/clams/develop/templates/app/app.py.template b/clams/develop/templates/app/app.py.template index ec58e6a..6fc594f 100644 --- a/clams/develop/templates/app/app.py.template +++ b/clams/develop/templates/app/app.py.template @@ -13,7 +13,6 @@ The app.py script does several things: import argparse import logging -from typing import Union # Imports needed for Clams and MMIF. # Non-NLP Clams applications will require AnnotationTypes