Refactor: move default.copy() logic to the BaseConfigOption class

This commit is contained in:
Oleh Prypin
2022-08-22 21:28:51 +02:00
parent ee844242d1
commit 5472cfdb53
2 changed files with 14 additions and 6 deletions

View File

@@ -17,6 +17,18 @@ class BaseConfigOption:
self.warnings = []
self.default = None
@property
def default(self):
try:
# ensure no mutable values are assigned
return self._default.copy()
except AttributeError:
return self._default
@default.setter
def default(self, value):
self._default = value
def validate(self, value):
return self.run_validation(value)

View File

@@ -69,13 +69,9 @@ class OptionallyRequired(BaseConfigOption):
if value is None:
if self.default is not None:
if hasattr(self.default, 'copy'):
# ensure no mutable values are assigned
value = self.default.copy()
else:
value = self.default
value = self.default
elif not self.required:
return
return None
elif self.required:
raise ValidationError("Required configuration not provided.")