# HG changeset patch # User Franz Glasner # Date 1698596956 -3600 # Node ID 220a9ec9ac7292dd592b73335ce4a4365cf546a9 # Parent e069797f0e36a1bce578e8bb4d049b9fcde2c056 - Docs the the new list merging strategies. Also some more words about merging generally. - One more test about the default of "replacing" lists. diff -r e069797f0e36 -r 220a9ec9ac72 docs/introduction.rst --- a/docs/introduction.rst Sun Oct 29 17:15:41 2023 +0100 +++ b/docs/introduction.rst Sun Oct 29 17:29:16 2023 +0100 @@ -195,6 +195,17 @@ ``.yml`` or ``.yaml`` for YAML configuration files +When loading two or more configuration files the configurations will be +merged: + +* later values overwrite earlier values +* :py:class:`dict`-like objects are merged `recursively` +* :py:class:`list` objects are by default completely replaced by later ones. + When using ``merge_lists="extend"`` then later list extend earlier lists, + when using ``merge_lists="prepend"`` then earlier lists extend later ones. + + This is done `non-recursively`. + .. _getting-values: diff -r e069797f0e36 -r 220a9ec9ac72 tests/test.py --- a/tests/test.py Sun Oct 29 17:15:41 2023 +0100 +++ b/tests/test.py Sun Oct 29 17:29:16 2023 +0100 @@ -1041,6 +1041,12 @@ u"val1", u"val2", u"in the root namespace",], cfg.getvarl_s(u"tree1", u"tree2", u"key8")) + def test59_list_merge_default(self): + cfg = self._load(os.path.join(TESTDATADIR, "conf10.toml"), + os.path.join(TESTDATADIR, "conf10_list_extend.yml")) + self.assertEqual([u"val4", u"val5", u"val6",], + cfg.getvarl_s(u"tree1", u"tree2", u"key8")) + class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):