Skip to content

Commit b982cea

Browse files
authored
fix: regression in include with namespace no overwrite (#39)
We fix a regression with the include method when using a namespace for sub-configuration with like-named items.
1 parent 397c93f commit b982cea

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

envier/env.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -413,10 +413,6 @@ def include(
413413
or isinstance(v, type)
414414
and issubclass(v, Env)
415415
}
416-
if not overwrite:
417-
overlap = set(cls.__dict__.keys()) & set(to_include.keys())
418-
if overlap:
419-
raise ValueError("Configuration clashes detected: {}".format(overlap))
420416

421417
own_prefix = _normalized(getattr(cls, "__prefix__", ""))
422418

@@ -434,6 +430,11 @@ def include(
434430

435431
return None
436432

433+
if not overwrite:
434+
overlap = set(cls.__dict__.keys()) & set(to_include.keys())
435+
if overlap:
436+
raise ValueError("Configuration clashes detected: {}".format(overlap))
437+
437438
other_prefix = getattr(env_spec, "__prefix__", "")
438439
for k, v in to_include.items():
439440
if getattr(cls, k, None) is not v:

tests/test_env.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,12 +250,14 @@ class GlobalConfig(Env):
250250
__prefix__ = "myapp"
251251

252252
debug_mode = Env.var(bool, "debug", default=False)
253+
enable = Env.var(bool, "enable", default=True)
253254

254255
class ServiceConfig(Env):
255256
__prefix__ = "service"
256257

257258
host = Env.var(str, "host", default="localhost")
258259
port = Env.var(int, "port", default=3000)
260+
enable = Env.var(bool, "enable", default=False)
259261

260262
GlobalConfig.include(ServiceConfig, namespace="service")
261263
with pytest.raises(ValueError):

0 commit comments

Comments
 (0)