From 4275dfdea1d6fa5792d3798bf1e05a011538a301 Mon Sep 17 00:00:00 2001 From: Fernando Karchiloff Date: Mon, 13 Jan 2025 23:56:15 -0300 Subject: [PATCH] Error text improvement and formatting --- constance/utils.py | 7 +++---- tests/test_utils.py | 13 +++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/constance/utils.py b/constance/utils.py index 229d62c..e3ec12c 100644 --- a/constance/utils.py +++ b/constance/utils.py @@ -21,6 +21,7 @@ def get_values(): # Then update the mapping with actually values from the backend return dict(default_initial, **dict(config._backend.mget(settings.CONFIG))) + def get_values_for_keys(keys): """ Retrieve values for specified keys from the backend. @@ -33,14 +34,12 @@ def get_values_for_keys(keys): raise TypeError('keys must be a list, tuple, or set of strings') # Prepare default initial mapping - default_initial = { - name: options[0] for name, options in settings.CONFIG.items() if name in keys - } + default_initial = {name: options[0] for name, options in settings.CONFIG.items() if name in keys} # Check if all keys are present in the default_initial mapping missing_keys = [key for key in keys if key not in default_initial] if missing_keys: - raise AttributeError(f'Key "{missing_keys[0]}" not found in configuration.') + raise AttributeError(f'"{", ".join(missing_keys)}" keys not found in configuration.') # Merge default values and backend values, prioritizing backend values return dict(default_initial, **dict(config._backend.mget(keys))) diff --git a/tests/test_utils.py b/tests/test_utils.py index 0804dda..ef7fb14 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -65,21 +65,26 @@ class UtilsTestCase(TestCase): def test_get_values_for_keys(self): self.assertEqual( - get_values_for_keys(["BOOL_VALUE", "CHOICE_VALUE", "LINEBREAK_VALUE"]), + get_values_for_keys(['BOOL_VALUE', 'CHOICE_VALUE', 'LINEBREAK_VALUE']), { 'BOOL_VALUE': True, 'CHOICE_VALUE': 'yes', 'LINEBREAK_VALUE': 'Spam spam', }, ) - + def test_get_values_for_keys_empty_keys(self): result = get_values_for_keys([]) self.assertEqual(result, {}) def test_get_values_for_keys_throw_error_if_no_key(self): - self.assertRaisesMessage(AttributeError, 'Key "OLD_VALUE" not found in configuration.', get_values_for_keys, ['BOOL_VALUE', 'OLD_VALUE']) + self.assertRaisesMessage( + AttributeError, + '"OLD_VALUE, BOLD_VALUE" keys not found in configuration.', + get_values_for_keys, + ['BOOL_VALUE', 'OLD_VALUE', 'BOLD_VALUE'], + ) def test_get_values_for_keys_invalid_input_type(self): with self.assertRaises(TypeError): - get_values_for_keys("key1") \ No newline at end of file + get_values_for_keys('key1')