fix: Return value instead of `SettingsAttribute` object when using `pop` method (#5963)

This commit is contained in:
Laerte Pereira 2023-06-28 03:28:49 -03:00 committed by GitHub
parent 510574216d
commit b6196309cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 9 deletions

View File

@ -449,12 +449,12 @@ class BaseSettings(MutableMapping):
def pop(self, name, default=__default):
try:
value = self.attributes[name]
value = self.attributes[name].value
except KeyError:
if default is self.__default:
raise
return SettingsAttribute(default, get_settings_priority("project"))
return default
else:
self.__delitem__(name)
return value

View File

@ -457,19 +457,15 @@ class SettingsTest(unittest.TestCase):
with self.assertRaises(KeyError):
settings.pop("DUMMY_CONFIG")
dummy_config = settings.pop("DUMMY_CONFIG", "dummy_value")
self.assertEqual(
repr(dummy_config), "<SettingsAttribute value='dummy_value' priority=20>"
)
self.assertEqual(dummy_config.value, "dummy_value")
dummy_config_value = settings.pop("DUMMY_CONFIG", "dummy_value")
self.assertEqual(dummy_config_value, "dummy_value")
def test_pop_item_with_immutable_settings(self):
settings = Settings(
{"DUMMY_CONFIG": "dummy_value", "OTHER_DUMMY_CONFIG": "other_dummy_value"}
)
self.assertEqual(settings.pop("DUMMY_CONFIG").value, "dummy_value")
self.assertEqual(settings.pop("DUMMY_CONFIG"), "dummy_value")
settings.freeze()