summaryrefslogtreecommitdiff
path: root/cloudinit/mergers/dict.py
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2013-04-17 08:46:58 -0700
committerJoshua Harlow <harlowja@yahoo-inc.com>2013-04-17 08:46:58 -0700
commit87963dd237ff2080be62cc6a8afb4138471e4f20 (patch)
tree615d52483b48ec20d0b8eca7342e62b1602cfaaa /cloudinit/mergers/dict.py
parent7dac7bbd48bb56971c2fddfcf13d439d577740c1 (diff)
downloadvyos-cloud-init-87963dd237ff2080be62cc6a8afb4138471e4f20.tar.gz
vyos-cloud-init-87963dd237ff2080be62cc6a8afb4138471e4f20.zip
Handle namespacing issues.
Move from using the inbuilt type names as module names which is a bad thing to use it appears due to naming conflicts in the __init__ module and reduce the chances of these conflicts by enforcing a m_ prefix for merging modules.
Diffstat (limited to 'cloudinit/mergers/dict.py')
-rw-r--r--cloudinit/mergers/dict.py48
1 files changed, 0 insertions, 48 deletions
diff --git a/cloudinit/mergers/dict.py b/cloudinit/mergers/dict.py
deleted file mode 100644
index 45a7d3a5..00000000
--- a/cloudinit/mergers/dict.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# vi: ts=4 expandtab
-#
-# Copyright (C) 2012 Yahoo! Inc.
-#
-# Author: Joshua Harlow <harlowja@yahoo-inc.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 3, as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-class Merger(object):
- def __init__(self, merger, opts):
- self._merger = merger
- self._overwrite = 'overwrite' in opts
-
- # This merging algorithm will attempt to merge with
- # another dictionary, on encountering any other type of object
- # it will not merge with said object, but will instead return
- # the original value
- #
- # On encountering a dictionary, it will create a new dictionary
- # composed of the original and the one to merge with, if 'overwrite'
- # is enabled then keys that exist in the original will be overwritten
- # by keys in the one to merge with (and associated values). Otherwise
- # if not in overwrite mode the 2 conflicting keys themselves will
- # be merged.
- def _on_dict(self, value, merge_with):
- if not isinstance(merge_with, (dict)):
- return value
- merged = dict(value)
- for (k, v) in merge_with.items():
- if k in merged:
- if not self._overwrite:
- merged[k] = self._merger.merge(merged[k], v)
- else:
- merged[k] = v
- else:
- merged[k] = v
- return merged