chore: Use dunder to delete item instead of del keyword to handle immutable settings

This commit is contained in:
Laerte Pereira 2023-06-23 00:14:31 -03:00
parent 080b9bd0b8
commit 876feaf339
2 changed files with 17 additions and 1 deletions

View File

@ -456,7 +456,7 @@ class BaseSettings(MutableMapping):
return SettingsAttribute(default, get_settings_priority("project"))
else:
del self.attributes[name]
self.__delitem__(name)
return value

View File

@ -464,6 +464,22 @@ class SettingsTest(unittest.TestCase):
)
self.assertEqual(dummy_config.value, "dummy_value")
def test_pop_item_with_frozen_settings(self):
settings = Settings(
{"DUMMY_CONFIG": "dummy_value", "OTHER_DUMMY_CONFIG": "other_dummy_value"}
)
self.assertEqual(settings.pop("DUMMY_CONFIG").value, "dummy_value")
settings.freeze()
with self.assertRaises(TypeError) as error:
settings.pop("OTHER_DUMMY_CONFIG")
self.assertEqual(
str(error.exception), "Trying to modify an immutable Settings object"
)
if __name__ == "__main__":
unittest.main()