diff --git a/envier/env.py b/envier/env.py index eccab8d..e196be1 100644 --- a/envier/env.py +++ b/envier/env.py @@ -413,10 +413,6 @@ def include( or isinstance(v, type) and issubclass(v, Env) } - if not overwrite: - overlap = set(cls.__dict__.keys()) & set(to_include.keys()) - if overlap: - raise ValueError("Configuration clashes detected: {}".format(overlap)) own_prefix = _normalized(getattr(cls, "__prefix__", "")) @@ -434,6 +430,11 @@ def include( return None + if not overwrite: + overlap = set(cls.__dict__.keys()) & set(to_include.keys()) + if overlap: + raise ValueError("Configuration clashes detected: {}".format(overlap)) + other_prefix = getattr(env_spec, "__prefix__", "") for k, v in to_include.items(): if getattr(cls, k, None) is not v: diff --git a/tests/test_env.py b/tests/test_env.py index d16e78a..0a04174 100644 --- a/tests/test_env.py +++ b/tests/test_env.py @@ -250,12 +250,14 @@ class GlobalConfig(Env): __prefix__ = "myapp" debug_mode = Env.var(bool, "debug", default=False) + enable = Env.var(bool, "enable", default=True) class ServiceConfig(Env): __prefix__ = "service" host = Env.var(str, "host", default="localhost") port = Env.var(int, "port", default=3000) + enable = Env.var(bool, "enable", default=False) GlobalConfig.include(ServiceConfig, namespace="service") with pytest.raises(ValueError):