def test_list_entries_from_yaml_should_not_duplicate_when_merged(tmpdir): data = { "default": { "SOME_KEY": "value", "SOME_LIST": ["item_1", "item_2", "item_3"], }, "other": { "SOME_KEY": "new_value", "SOME_LIST": ["item_4", "item_5"] }, } yaml_loader.write(str(tmpdir.join("test_settings.yaml")), data) settings = Dynaconf( settings_files="test_settings.yaml", environments=True, merge_enabled=True, ) expected_default_value = BoxList(["item_1", "item_2", "item_3"]) expected_other_value = BoxList( ["item_1", "item_2", "item_3", "item_4", "item_5"]) assert settings.from_env("default").SOME_LIST == expected_default_value assert settings.from_env("other").SOME_LIST == expected_other_value
settings_file="settings.toml", environments=True, validators=[ Validator( "FOO", env="production", default=lambda st, va: "FOO is computed in prod", ), Validator("BAR", env="production", default="@format {this.foo}/BAR"), Validator("ZAZ", env="production", default="@jinja {{this.get('foo')}}/ZAZ"), Validator("FOO", env="development", required=True, eq="dev foo"), ], ) assert settings2.FOO == "dev foo" assert settings2.get("FOO") == "dev foo" assert settings2["FOO"] == "dev foo" assert settings2.foo == "dev foo" assert settings2("foo") == "dev foo" assert settings2.from_env("production").FOO == "FOO is computed in prod" assert settings2.from_env("production").foo == "FOO is computed in prod" assert settings2.from_env("production")["FOO"] == "FOO is computed in prod" assert settings2.from_env("production")("FOO") == "FOO is computed in prod" assert settings2.from_env("production").get("FOO") == "FOO is computed in prod" assert settings2.from_env("production").BAR == "FOO is computed in prod/BAR" assert settings2.from_env("production").ZAZ == "FOO is computed in prod/ZAZ"
"HOST": "prod_server.com from toml", "PORT": 5000, "USERNAME": "******", "PASSWORD": "******", "LEVELS": ["debug", "info", "warning"], "MONEY": 500.5, "AGE": 42, "ENABLED": True, "WORKS": "toml_example in prod env", "CUSTOM": "this is custom from [production]", "TEST_LOADERS": { "dev": "test_dev", "prod": "test_prod" }, } for key, value in assertions.items(): found = settings.from_env("production").get(key) assert found == getattr(settings.from_env("production"), key) assert found == value, f"expected: {key}: [{value}] found: [{found}]" settings_with_prefix = Dynaconf( settings_files=["settings.toml"], filter_strategy=PrefixFilter("prefix"), environments=True, ) with settings_with_prefix.using_env("default"): assert settings_with_prefix.CUSTOM == "this is custom when we set a prefix" assert (settings_with_prefix.from_env("production").CUSTOM == "this is custom when we set a prefix")