Esempio n. 1
0
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
Esempio n. 2
0
    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"
Esempio n. 3
0
    "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")