def __setitem__(self, key, value): if is_nested_key(key): subkeys = key.split('.') reduce(lambda d, k: d[k], subkeys[:-1], self.data)[subkeys[-1]] = value return self.data[key] = value
def test_is_nested_with_invalid_key_nesting_raises(): with pytest.raises(MalformationError): is_nested_key('.abc.123') with pytest.raises(MalformationError): is_nested_key('abc.123.') with pytest.raises(MalformationError): is_nested_key('abc..123')
def __getitem__(self, key): if is_nested_key(key): subkeys = key.split('.') return reduce(lambda d, k: d[k], subkeys, self.data) return self.data[key]
def test_is_nested_with_nested_key(): assert is_nested_key('abc.123') is True
def test_is_nested_with_non_nested_key(): assert is_nested_key('abc 123') is False