From 4ab9f0d89b21eb6969594361c4cddf335d0c507b Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Thu, 31 Mar 2022 15:18:59 +0200 Subject: [PATCH] corrected camel case converter --- .../formatter/formatters/camel_case.py | 17 +++++++++++++---- test/unit_tests/formatter_test.py | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/image_prediction/formatter/formatters/camel_case.py b/image_prediction/formatter/formatters/camel_case.py index 668659d..0c1d660 100644 --- a/image_prediction/formatter/formatters/camel_case.py +++ b/image_prediction/formatter/formatters/camel_case.py @@ -1,16 +1,25 @@ -from funcy import walk_keys, walk - from image_prediction.formatter.formatter import Formatter class Snake2CamelCaseKeyFormatter(Formatter): + @staticmethod - def __format(key: str): + def __format_key(key): + if isinstance(key, str): head, *tail = key.split("_") return head + "".join(map(lambda s: s.title(), tail)) else: return key + def __format(self, data): + + if not isinstance(data, dict): + return data + + keys_formatted = list(map(self.__format_key, data)) + + return dict(zip(keys_formatted, map(self.__format, data.values()))) + def format(self, data): - return walk(self.__format, data) + return self.__format(data) diff --git a/test/unit_tests/formatter_test.py b/test/unit_tests/formatter_test.py index 2e1d0e4..afcd4ab 100644 --- a/test/unit_tests/formatter_test.py +++ b/test/unit_tests/formatter_test.py @@ -18,5 +18,5 @@ def camel_case_data(): return {"aKey": {"key": None, "key2": ["may_not_be_changed"]}, 2: {"yetAnotherKey": None}} -# def test_camel_case_key_formatter(snake_case_data, camel_case_data): -# assert Snake2CamelCaseKeyFormatter()(snake_case_data) == camel_case_data +def test_camel_case_key_formatter(snake_case_data, camel_case_data): + assert Snake2CamelCaseKeyFormatter()(snake_case_data) == camel_case_data