config: Add optional support to Boolean type
This commit is contained in:
parent
e79b38802d
commit
dda06dd8de
@ -31,6 +31,10 @@ Feature release.
|
||||
release, like Mopidy 0.18, or migrate the configuration to the new format by
|
||||
hand.
|
||||
|
||||
**Configuration**
|
||||
|
||||
- Add ``optional=True`` support to :class:`mopidy.config.Boolean`.
|
||||
|
||||
**Logging**
|
||||
|
||||
- Fix proper decoding of exception messages that depends on the user's locale.
|
||||
|
||||
@ -151,7 +151,13 @@ class Boolean(ConfigValue):
|
||||
true_values = ('1', 'yes', 'true', 'on')
|
||||
false_values = ('0', 'no', 'false', 'off')
|
||||
|
||||
def __init__(self, optional=False):
|
||||
self._required = not optional
|
||||
|
||||
def deserialize(self, value):
|
||||
validators.validate_required(value, self._required)
|
||||
if not value:
|
||||
return None
|
||||
if value.lower() in self.true_values:
|
||||
return True
|
||||
elif value.lower() in self.false_values:
|
||||
|
||||
@ -214,6 +214,10 @@ class BooleanTest(unittest.TestCase):
|
||||
self.assertEqual(b'false', result)
|
||||
self.assertIsInstance(result, bytes)
|
||||
|
||||
def test_deserialize_respects_optional(self):
|
||||
value = types.Boolean(optional=True)
|
||||
self.assertEqual(None, value.deserialize(''))
|
||||
|
||||
# TODO: test None or other invalid values into serialize?
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user