From 131a8dd1bbbd90cbe52b9a5185ca7fd75966e5f9 Mon Sep 17 00:00:00 2001 From: To Huynh <37560480+tohuynh@users.noreply.github.com> Date: Fri, 20 Aug 2021 10:51:17 -0700 Subject: [PATCH] Allow standard-institution to have sub_category field (#38) --- .../google_sheets_institution_extracter.py | 17 +++++++++-------- siglatools/institution_extracters/utils.py | 18 ++++++++++++++++++ .../tests/institution_extracters/test_utils.py | 17 +++++++++++++++++ 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/siglatools/institution_extracters/google_sheets_institution_extracter.py b/siglatools/institution_extracters/google_sheets_institution_extracter.py index d551545..11a05ba 100644 --- a/siglatools/institution_extracters/google_sheets_institution_extracter.py +++ b/siglatools/institution_extracters/google_sheets_institution_extracter.py @@ -16,8 +16,9 @@ VariableType, ) from . import exceptions -from .constants import GoogleSheetsFormat as gs_format, MetaDataField -from .utils import FormattedSheetData, SheetData +from .constants import GoogleSheetsFormat as gs_format +from .constants import MetaDataField +from .utils import FormattedSheetData, SheetData, create_institution_sub_category ############################################################################### @@ -94,12 +95,9 @@ def _get_multilple_sigla_answer_variable( InstitutionField.category: sheet_data.meta_data.get( InstitutionField.category ), - InstitutionField.sub_category: [ - " ".join(sub_cat.strip().split()) - for sub_cat in sheet_data.meta_data.get(InstitutionField.sub_category) - .strip() - .split(";") - ], + InstitutionField.sub_category: create_institution_sub_category( + sheet_data.meta_data.get(InstitutionField.sub_category) + ), "childs": [ { VariableField.heading: variable_row[0], @@ -149,6 +147,9 @@ def _get_standard_institution( InstitutionField.category: sheet_data.meta_data.get( InstitutionField.category ), + InstitutionField.sub_category: create_institution_sub_category( + sheet_data.meta_data.get(InstitutionField.sub_category) + ), "childs": [ { VariableField.heading: variable_row[0], diff --git a/siglatools/institution_extracters/utils.py b/siglatools/institution_extracters/utils.py index b4bb7a6..1328159 100644 --- a/siglatools/institution_extracters/utils.py +++ b/siglatools/institution_extracters/utils.py @@ -118,3 +118,21 @@ def convert_col_to_name(col: int) -> str: col_num = int((col_num - 1) / 26) return col_str + + +def create_institution_sub_category(sub_categories: str) -> List[str]: + """ + Create a list of institution sub categories. + + Parameters + ---------- + sub_categories: str + The list of sub categories, separated by ;. + Returns + ------- + sub_categories_list: List[str] + The list of sub categories. + """ + if not sub_categories: + return [] + return [" ".join(sub_cat.strip().split()) for sub_cat in sub_categories.split(";")] diff --git a/siglatools/tests/institution_extracters/test_utils.py b/siglatools/tests/institution_extracters/test_utils.py index cd3fe1e..6fc48a4 100644 --- a/siglatools/tests/institution_extracters/test_utils.py +++ b/siglatools/tests/institution_extracters/test_utils.py @@ -7,6 +7,7 @@ from siglatools.institution_extracters.utils import ( convert_col_to_name, convert_rowcol_to_A1_name, + create_institution_sub_category, ) @@ -54,3 +55,19 @@ def test_convert_col_to_name(col, expected): ) def test_convert_rowcol_to_A1_name(row, col, expected): assert convert_rowcol_to_A1_name(row, col) == expected + + +@pytest.mark.parametrize( + "sub_categories, expected", + [ + (None, []), + ("", []), + ("a", ["a"]), + ("a;b", ["a", "b"]), + (" a ; b ", ["a", "b"]), + ("a; b c", ["a", "b c"]), + ("a; b c;d", ["a", "b c", "d"]), + ], +) +def test_create_institution_sub_category(sub_categories, expected): + assert create_institution_sub_category(sub_categories) == expected