diff options
Diffstat (limited to 'cloudinit/mergers/__init__.py')
-rw-r--r-- | cloudinit/mergers/__init__.py | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/cloudinit/mergers/__init__.py b/cloudinit/mergers/__init__.py index 7fa493a6..a7a6a47f 100644 --- a/cloudinit/mergers/__init__.py +++ b/cloudinit/mergers/__init__.py @@ -6,14 +6,13 @@ import re -from cloudinit import importer -from cloudinit import type_utils +from cloudinit import importer, type_utils NAME_MTCH = re.compile(r"(^[a-zA-Z_][A-Za-z0-9_]*)\((.*?)\)$") DEF_MERGE_TYPE = "list()+dict()+str()" -MERGER_PREFIX = 'm_' -MERGER_ATTR = 'Merger' +MERGER_PREFIX = "m_" +MERGER_ATTR = "Merger" class UnknownMerger(object): @@ -53,7 +52,7 @@ class LookupMerger(UnknownMerger): self._lookups = lookups def __str__(self): - return 'LookupMerger: (%s)' % (len(self._lookups)) + return "LookupMerger: (%s)" % (len(self._lookups)) # For items which can not be merged by the parent this object # will lookup in a internally maintained set of objects and @@ -69,25 +68,26 @@ class LookupMerger(UnknownMerger): meth = getattr(merger, meth_wanted) break if not meth: - return UnknownMerger._handle_unknown(self, meth_wanted, - value, merge_with) + return UnknownMerger._handle_unknown( + self, meth_wanted, value, merge_with + ) return meth(value, merge_with) def dict_extract_mergers(config): parsed_mergers = [] - raw_mergers = config.pop('merge_how', None) + raw_mergers = config.pop("merge_how", None) if raw_mergers is None: - raw_mergers = config.pop('merge_type', None) + raw_mergers = config.pop("merge_type", None) if raw_mergers is None: return parsed_mergers if isinstance(raw_mergers, str): return string_extract_mergers(raw_mergers) for m in raw_mergers: if isinstance(m, (dict)): - name = m['name'] + name = m["name"] name = name.replace("-", "_").strip() - opts = m['settings'] + opts = m["settings"] else: name = m[0] if len(m) >= 2: @@ -110,8 +110,9 @@ def string_extract_mergers(merge_how): continue match = NAME_MTCH.match(m_name) if not match: - msg = ("Matcher identifer '%s' is not in the right format" % - (m_name)) + msg = "Matcher identifer '%s' is not in the right format" % ( + m_name + ) raise ValueError(msg) (m_name, m_ops) = match.groups() m_ops = m_ops.strip().split(",") @@ -129,14 +130,15 @@ def construct(parsed_mergers): for (m_name, m_ops) in parsed_mergers: if not m_name.startswith(MERGER_PREFIX): m_name = MERGER_PREFIX + str(m_name) - merger_locs, looked_locs = importer.find_module(m_name, - [__name__], - [MERGER_ATTR]) + merger_locs, looked_locs = importer.find_module( + m_name, [__name__], [MERGER_ATTR] + ) if not merger_locs: - msg = ("Could not find merger module named '%s' " - "with attribute '%s' (searched %s)") % (m_name, - MERGER_ATTR, - looked_locs) + msg = ( + "Could not find merger module named '%s' " + "with attribute '%s' (searched %s)" + % (m_name, MERGER_ATTR, looked_locs) + ) raise ImportError(msg) else: mod = importer.import_module(merger_locs[0]) @@ -149,4 +151,5 @@ def construct(parsed_mergers): mergers.append(attr(root, opts)) return root + # vi: ts=4 expandtab |