1
0
mirror of https://github.com/deadc0de6/dotdrop.git synced 2026-02-04 17:24:46 +00:00

Adding some comments in config.py

This commit is contained in:
Davide Laezza
2019-04-26 10:43:53 +02:00
parent 3a0a4358ed
commit 057aae4f05

View File

@@ -497,6 +497,29 @@ class Cfg:
def _merge_dict(self, ext_config, warning_prefix, self_member,
ext_member=None, traceback=False):
"""Merge into self a dictionary instance members from an external Cfg.
This method merges instance members of another Cfg instance into self.
It issues a warning for any key shared between self and the other Cfg.
It can adds an own=False porperty to any dictionary in the external
instance member before merging.
:param ext_config: The other Cfg to merge from.
:type ext_config: Cfg
:param warnign_prefix: The prefix to th warning messages.
:type warning_prefix: str
:param self_member: The member of self which will be augmented by the
external member. Or the self_member name as a string.
:type self_member: dict or str
:param ext_member: The member of ext_config which wil be merged in
self_member. When not given, self_member is assumed to be a string,
and self_member and ext_member are supposed to have the same name.
:type ext_member: dict or None
:param traceback: Whether to add own=False to ext_member dict values
before merging in.
:type traceback: bool
"""
if ext_member is None:
member_name = self_member
self_member = getattr(self, member_name)
@@ -506,7 +529,7 @@ class Cfg:
key
for key in (set(self_member.keys())
.intersection(set(ext_member.keys())))
if not key.startswith('_')
if not key.startswith('_') # filtering out internal variables
)
warning_msg = ('%s {} defined both in %s and %s: {} in %s used'
% (warning_prefix, self.cfgpath, ext_config.cfgpath,
@@ -515,6 +538,8 @@ class Cfg:
self.log.warn(warning_msg.format(key, key))
if traceback:
# Assumes v to be a dict. So far it's only used for profiles,
# that are in fact dicts
merged = {
k: dict(v, own=False)
for k, v in ext_member.items()
@@ -527,6 +552,7 @@ class Cfg:
return self_member
def _merge_cfg(self, config_path):
"""Merge an external config.yaml file into self."""
# Parsing external config file
try:
ext_config = Cfg(config_path)
@@ -840,6 +866,9 @@ class Cfg:
@classmethod
def _filter_not_own(cls, content):
"""Filters out from a dict its dict values with own=False."""
# This way it recursively explores only dicts. Since own=False is used
# only in profiles, which are in fact dicts, this is fine for now.
return {
k: cls._filter_not_own(v) if isinstance(v, dict) else v
for k, v in content.items()