def get_configurations(settings: SettingsDict) -> dict: defaults = settings.get('defaults', {}) # type: object assert isinstance(defaults, dict) configurations = settings.get('configurations', {}) # type: object assert isinstance(configurations, dict) embed_configuration = settings.get('embed_configuration', {}) # type: object assert isinstance(embed_configuration, dict) return { name: merge(defaults, config) for name, config in merge({'~embed': embed_configuration}, configurations).items() }
class TestSettingsDict(TestCase): def setUp(self): self.view = sublime.active_window().new_file() self.settings = self.view.settings() self.fancy = SettingsDict(self.settings) def tearDown(self): if self.view: self.view.set_scratch(True) self.view.window().focus_view(self.view) self.view.window().run_command("close_file") def test_item(self): self.settings.set("example_setting", "Hello, World!") self.assertEqual(self.fancy['example_setting'], "Hello, World!") def test_item_missing_error(self): self.settings.erase("example_setting") self.assertRaises(KeyError, lambda k: self.fancy[k], "example_setting") def test_get(self): self.settings.set("example_setting", "Hello, World!") self.assertEqual(self.fancy.get('example_setting'), "Hello, World!") def test_get_missing_none(self): self.settings.erase("example_setting") self.assertIsNone(self.fancy.get("example_setting")) def test_get_missing_default(self): self.settings.erase("example_setting") self.assertEqual(self.fancy.get("example_setting", "default"), "default") def test_set(self): self.fancy["example_setting"] = "Hello, World!" self.assertEqual(self.settings.get('example_setting'), "Hello, World!") def test_delete(self): self.fancy["example_setting"] = "Hello, World!" del self.fancy["example_setting"] self.assertNotIn("example_setting", self.fancy) def test_delete_missing_error(self): self.fancy["example_setting"] = "Hello, World!" del self.fancy["example_setting"] self.assertRaises(KeyError, self.fancy.__delitem__, "example_setting") def test_contains(self): self.assertNotIn("example_setting", self.fancy) self.fancy["example_setting"] = "Hello, World!" self.assertIn("example_setting", self.fancy) def test_pop(self): self.fancy["example_setting"] = "Hello, World!" result = self.fancy.pop("example_setting") self.assertEqual(result, "Hello, World!") self.assertNotIn("example_setting", self.fancy) default = self.fancy.pop("example_setting", 42) self.assertEqual(default, 42) self.assertRaises(KeyError, self.fancy.pop, "example_setting") def test_setdefault(self): result = self.fancy.setdefault("example_setting", "Hello, World!") self.assertEqual(result, "Hello, World!") self.assertEqual(self.fancy["example_setting"], "Hello, World!") result = self.fancy.setdefault("example_setting", 42) self.assertEqual(result, "Hello, World!") self.assertEqual(self.fancy["example_setting"], "Hello, World!") def test_setdefault_none(self): result = self.fancy.setdefault("example_setting") self.assertEqual(result, None) self.assertEqual(self.fancy["example_setting"], None) def test_update(self): self.fancy["foo"] = "Hello, World!" self.fancy.update({'foo': 1, 'bar': 2}, xyzzy=3) self.fancy.update([('bar', 20), ('baz', 30)], yzzyx=4) self.assertEqual(self.fancy['foo'], 1) self.assertEqual(self.fancy['bar'], 20) self.assertEqual(self.fancy['baz'], 30) self.assertEqual(self.fancy['xyzzy'], 3) self.assertEqual(self.fancy['yzzyx'], 4) def test_not_iterable(self): self.assertRaises(NotImplementedError, iter, self.fancy) def test_get_default(self): defaults = {'example_1': 'Hello, World!'} chained = ChainMap(self.fancy, defaults) self.assertNotIn('example_1', self.fancy) self.assertIn('example_1', chained) self.assertEqual(chained['example_1'], 'Hello, World!') chained['example_1'] = 'Goodbye, World!' self.assertEqual(chained['example_1'], 'Goodbye, World!') self.assertEqual(self.fancy['example_1'], 'Goodbye, World!') self.assertEqual(defaults['example_1'], 'Hello, World!') self.assertRaises(KeyError, chained.__getitem__, 'example_2') self.assertRaises(NotImplementedError, iter, chained)