comparison configmix/__init__.py @ 275:e2fd8fea1a4c

Docu: more local lookup
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 03 Oct 2020 15:52:30 +0200
parents 90bbade12d8e
children af371f9c016d
comparison
equal deleted inserted replaced
274:90bbade12d8e 275:e2fd8fea1a4c
94 return Configuration(ex) 94 return Configuration(ex)
95 95
96 96
97 def safe_load(*files, **kwargs): 97 def safe_load(*files, **kwargs):
98 """Analogous to :func:`load` but do merging with :func:`safe_merge` 98 """Analogous to :func:`load` but do merging with :func:`safe_merge`
99 instead of :func:`merge` 99 instead of :func:`.merge`
100 100
101 """ 101 """
102 defaults = kwargs.get("defaults") 102 defaults = kwargs.get("defaults")
103 extras = kwargs.get("extras") 103 extras = kwargs.get("extras")
104 if defaults is None: 104 if defaults is None:
437 user[k] = _merge(user[k], v, filter_comments) 437 user[k] = _merge(user[k], v, filter_comments)
438 return user 438 return user
439 439
440 440
441 def _merge(user, default, filter_comments): 441 def _merge(user, default, filter_comments):
442 """Recursion helper for :func:`merge` 442 """Recursion helper for :func:`.merge`
443 443
444 """ 444 """
445 if isinstance(user, dict) and isinstance(default, dict): 445 if isinstance(user, dict) and isinstance(default, dict):
446 for k, v in default.items(): 446 for k, v in default.items():
447 if filter_comments and _is_comment(k): 447 if filter_comments and _is_comment(k):
452 user[k] = _merge(user[k], v, filter_comments) 452 user[k] = _merge(user[k], v, filter_comments)
453 return user 453 return user
454 454
455 455
456 def safe_merge(user, default, filter_comments=True): 456 def safe_merge(user, default, filter_comments=True):
457 """A more safe version of :func:`merge` that makes deep copies of 457 """A more safe version of :func:`.merge` that makes deep copies of
458 the returned container objects. 458 the returned container objects.
459 459
460 Contrary to :func:`merge` no given argument is ever changed 460 Contrary to :func:`.merge` no given argument is ever changed
461 inplace. Every object from `default` is decoupled from the result 461 inplace. Every object from `default` is decoupled from the result
462 -- so changing the `default` configuration later does not propagate 462 -- so changing the `default` configuration later does not propagate
463 into a merged configuration later. 463 into a merged configuration later.
464 464
465 """ 465 """