def test_local_set_merge_dict(): settings = Dynaconf() settings.set("DATABASE", {"host": "localhost", "port": 666}) # calling twice does not change anything settings.set("DATABASE", {"host": "localhost", "port": 666}) assert settings.DATABASE == {"host": "localhost", "port": 666} settings.set("DATABASE", { "host": "new", "user": "******", "dynaconf_merge": True }) assert settings.DATABASE == {"host": "new", "port": 666, "user": "******"} assert settings.DATABASE.HOST == "new" assert settings.DATABASE.user == "admin" settings.set("DATABASE.attrs", {"a": ["b", "c"]}) settings.set("DATABASE.attrs", {"dynaconf_merge": {"foo": "bar"}}) assert settings.DATABASE.attrs == {"a": ["b", "c"], "foo": "bar"} settings.set("DATABASE.attrs", {"yeah": "baby", "dynaconf_merge": True}) assert settings.DATABASE.attrs == { "a": ["b", "c"], "foo": "bar", "yeah": "baby", } settings.set( "DATABASE.attrs", { "a": ["d", "e", "dynaconf_merge"], "dynaconf_merge": True }, ) assert settings.DATABASE.attrs == { "a": ["b", "c", "d", "e"], "foo": "bar", "yeah": "baby", } settings.set("DATABASE.attrs.a", ["d", "e", "f", "dynaconf_merge_unique"]) assert settings.DATABASE.attrs.a == ["b", "c", "d", "e", "f"]
from dynaconf import Dynaconf settings = Dynaconf( settings_files=["settings.toml", "settings.yaml"], environments=True ) assert settings.SOME_DICT.value == "formatted: foo", settings.SOME_DICT.value assert settings.INNER1.value == "inner1 str foo" assert settings.INNER1.VALUE_LIST[0] == "list 0 foo" assert settings.INNER1.INNER2.value == "inner2 str inner1 str foo" assert settings.TOP_LEVEL_LIST[0] == "top list foo" assert settings.TOP_LEVEL_LIST[3] == "a jinja formatted FOO" assert settings.get("TOP_LEVEL_LIST")[0] == "top list foo" assert settings.get("TOP_LEVEL_LIST")[3] == "a jinja formatted FOO" settings.set("INITIAL", "@merge [9, 8, 7]") settings.set("DATABASES.default.PARAMS", '@merge ["e", "f", "g"]')
from dynaconf import Dynaconf settings = Dynaconf() settings.set("a.b", 1) settings.set("a.c", 2) settings.set("a.c.k", 22) assert settings.a == {"c": {"k": 22}, "b": 1} settings.set("a.c.b", 3) assert settings.a == {"c": {"b": 3, "k": 22}, "b": 1}
settings.get("FOO") # this is just to fire the loaders os.environ["DYNACONF_SOMETHING"] = "changed to other thing" # then we load it freshly assert settings.get_fresh("SOMETHING") == "changed to other thing" # then we remove it from environment del os.environ["DYNACONF_SOMETHING"] assert "DYNACONF_SOMETHING" not in os.environ # then we read it freshly again assert settings.get_fresh("SOMETHING") is None, settings.get_fresh("SOMETHING") settings.set("wm", "i3") assert settings.WM == "i3" settings.EDITOR = "vim" assert settings.get("editor") == "vim" assert settings.editor == "vim" settings.terminal_emulator = "alacritty" assert settings.get("TERMINAL_emulator") == "alacritty" settings.set("a.b.c.d.e", "f")