def test_conflicting_keys(self): # top level before = {"foo": "ERW", "BAR": 123, "Bar": {'a': 1}} with raises(ValueError) as e: to_lowercase_keys(before) # nested before = {"foo": "ERW", "BAR": 123, "Bdfd": {'a': 1, 'A': 23}} with raises(ValueError) as e: to_lowercase_keys(before)
def _config_getter(self, config): config = to_lowercase_keys(config) def getter(*keys, **kwargs): keys = [k.lower() for k in keys] return afconfig.get_config_value( config, *keys, fail_on_missing_key=not kwargs.get('allow_missing')) return getter
def test(self): before = { "foo": "ERW", "BAR": 123, "BaZ": { 'a': [ "SDF", { "C": 123, "d": [{ "asd": True, "SDFSDF": 1 }], "blueskykml_config": { "CaseShouldBePreserved": { "FooBar": 234 } } } ] } } before_copy = copy.deepcopy(before) # to make sure not done in place expected_after = { "foo": "ERW", "bar": 123, "baz": { 'a': [ "SDF", # not a key, so should remain uppercase { "c": 123, "d": [{ "asd": True, "sdfsdf": 1 }], "blueskykml_config": { "CaseShouldBePreserved": { "FooBar": 234 } } } ] } } assert expected_after == to_lowercase_keys(before_copy) assert before == before_copy