Python collections.Mapping() Examples
The following are 30
code examples of collections.Mapping().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
collections
, or try the search function
.
Example #1
Source File: config.py From esmlab with Apache License 2.0 | 7 votes |
def normalize_nested_keys(config): """ Replaces underscores with hyphens for keys for a nested Mapping Examples -------- >>> a = {'x': 1, 'y_1': {'a_2': 2}} >>> normalize_nested_keys(a) {'x': 1, 'y-1': {'a-2': 2}} """ config_norm = {} for key, value in config.items(): if isinstance(value, Mapping): value = normalize_nested_keys(value) key_norm = normalize_key(key) config_norm[key_norm] = value return config_norm
Example #2
Source File: foundation.py From django-accounting with MIT License | 7 votes |
def update(d, u, depth=-1): """ Recursively merge or update dict-like objects. >>> update({'k1': {'k2': 2}}, {'k1': {'k2': {'k3': 3}}, 'k4': 4}) {'k1': {'k2': {'k3': 3}}, 'k4': 4} """ for k, v in u.iteritems(): if isinstance(v, Mapping) and not depth == 0: r = update(d.get(k, {}), v, depth=max(depth - 1, -1)) d[k] = r elif isinstance(d, Mapping): d[k] = u[k] else: d = {k: u[k]} return d
Example #3
Source File: misc.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def execfile(filename, myglobals=None, mylocals=None): """ Read and execute a Python script from a file in the given namespaces. The globals and locals are dictionaries, defaulting to the current globals and locals. If only globals is given, locals defaults to it. """ if myglobals is None: # There seems to be no alternative to frame hacking here. caller_frame = inspect.stack()[1] myglobals = caller_frame[0].f_globals mylocals = caller_frame[0].f_locals elif mylocals is None: # Only if myglobals is given do we set mylocals to it. mylocals = myglobals if not isinstance(myglobals, Mapping): raise TypeError('globals must be a mapping') if not isinstance(mylocals, Mapping): raise TypeError('locals must be a mapping') with open(filename, "rbU") as fin: source = fin.read() code = compile(source, filename, "exec") exec_(code, myglobals, mylocals)
Example #4
Source File: _collections.py From jawfish with MIT License | 6 votes |
def extend(self, *args, **kwargs): """Generic import function for any type of header-like object. Adapted version of MutableMapping.update in order to insert items with self.add instead of self.__setitem__ """ if len(args) > 1: raise TypeError("extend() takes at most 1 positional " "arguments ({} given)".format(len(args))) other = args[0] if len(args) >= 1 else () if isinstance(other, HTTPHeaderDict): for key, val in other.iteritems(): self.add(key, val) elif isinstance(other, Mapping): for key in other: self.add(key, other[key]) elif hasattr(other, "keys"): for key in other.keys(): self.add(key, other[key]) else: for key, value in other: self.add(key, value) for key, value in kwargs.items(): self.add(key, value)
Example #5
Source File: geocoder.py From python-opencage-geocoder with MIT License | 6 votes |
def floatify_latlng(input_value): """ Work around a JSON dict with string, not float, lat/lngs. Given anything (list/dict/etc) it will return that thing again, *but* any dict (at any level) that has only 2 elements lat & lng, will be replaced with the lat & lng turned into floats. If the API returns the lat/lng as strings, and not numbers, then this function will 'clean them up' to be floats. """ if isinstance(input_value, collections.Mapping): if len(input_value) == 2 and sorted(input_value.keys()) == ['lat', 'lng']: # This dict has only 2 keys 'lat' & 'lon' return {'lat': float_if_float(input_value["lat"]), 'lng': float_if_float(input_value["lng"])} else: return dict((key, floatify_latlng(value)) for key, value in input_value.items()) elif isinstance(input_value, collections.MutableSequence): return [floatify_latlng(x) for x in input_value] else: return input_value
Example #6
Source File: _collections.py From plugin.video.emby with GNU General Public License v3.0 | 6 votes |
def extend(self, *args, **kwargs): """Generic import function for any type of header-like object. Adapted version of MutableMapping.update in order to insert items with self.add instead of self.__setitem__ """ if len(args) > 1: raise TypeError("extend() takes at most 1 positional " "arguments ({0} given)".format(len(args))) other = args[0] if len(args) >= 1 else () if isinstance(other, HTTPHeaderDict): for key, val in other.iteritems(): self.add(key, val) elif isinstance(other, Mapping): for key in other: self.add(key, other[key]) elif hasattr(other, "keys"): for key in other.keys(): self.add(key, other[key]) else: for key, value in other: self.add(key, value) for key, value in kwargs.items(): self.add(key, value)
Example #7
Source File: _utils.py From python-zhmcclient with Apache License 2.0 | 6 votes |
def repr_dict(_dict, indent): """Return a debug representation of a dict or OrderedDict.""" # pprint represents OrderedDict objects using the tuple init syntax, # which is not very readable. Therefore, dictionaries are iterated over. if _dict is None: return 'None' if not isinstance(_dict, Mapping): raise TypeError("Object must be a mapping, but is a %s" % type(_dict)) if isinstance(_dict, OrderedDict): kind = 'ordered' ret = '%s {\n' % kind # non standard syntax for the kind indicator for key in six.iterkeys(_dict): value = _dict[key] ret += _indent('%r: %r,\n' % (key, value), 2) else: # dict kind = 'sorted' ret = '%s {\n' % kind # non standard syntax for the kind indicator for key in sorted(six.iterkeys(_dict)): value = _dict[key] ret += _indent('%r: %r,\n' % (key, value), 2) ret += '}' ret = repr_text(ret, indent=indent) return ret.lstrip(' ')
Example #8
Source File: _collections.py From ServerlessCrawler-VancouverRealState with MIT License | 6 votes |
def extend(self, *args, **kwargs): """Generic import function for any type of header-like object. Adapted version of MutableMapping.update in order to insert items with self.add instead of self.__setitem__ """ if len(args) > 1: raise TypeError("extend() takes at most 1 positional " "arguments ({0} given)".format(len(args))) other = args[0] if len(args) >= 1 else () if isinstance(other, HTTPHeaderDict): for key, val in other.iteritems(): self.add(key, val) elif isinstance(other, Mapping): for key in other: self.add(key, other[key]) elif hasattr(other, "keys"): for key in other.keys(): self.add(key, other[key]) else: for key, value in other: self.add(key, value) for key, value in kwargs.items(): self.add(key, value)
Example #9
Source File: _collections.py From gist-alfred with MIT License | 6 votes |
def extend(self, *args, **kwargs): """Generic import function for any type of header-like object. Adapted version of MutableMapping.update in order to insert items with self.add instead of self.__setitem__ """ if len(args) > 1: raise TypeError("extend() takes at most 1 positional " "arguments ({0} given)".format(len(args))) other = args[0] if len(args) >= 1 else () if isinstance(other, HTTPHeaderDict): for key, val in other.iteritems(): self.add(key, val) elif isinstance(other, Mapping): for key in other: self.add(key, other[key]) elif hasattr(other, "keys"): for key in other.keys(): self.add(key, other[key]) else: for key, value in other: self.add(key, value) for key, value in kwargs.items(): self.add(key, value)
Example #10
Source File: api_jwt.py From gist-alfred with MIT License | 6 votes |
def encode(self, payload, key, algorithm='HS256', headers=None, json_encoder=None): # Check that we get a mapping if not isinstance(payload, Mapping): raise TypeError('Expecting a mapping object, as JWT only supports ' 'JSON objects as payloads.') # Payload for time_claim in ['exp', 'iat', 'nbf']: # Convert datetime to a intDate value in known time-format claims if isinstance(payload.get(time_claim), datetime): payload[time_claim] = timegm(payload[time_claim].utctimetuple()) json_payload = json.dumps( payload, separators=(',', ':'), cls=json_encoder ).encode('utf-8') return super(PyJWT, self).encode( json_payload, key, algorithm, headers, json_encoder )
Example #11
Source File: _collections.py From ServerlessCrawler-VancouverRealState with MIT License | 6 votes |
def extend(self, *args, **kwargs): """Generic import function for any type of header-like object. Adapted version of MutableMapping.update in order to insert items with self.add instead of self.__setitem__ """ if len(args) > 1: raise TypeError("extend() takes at most 1 positional " "arguments ({0} given)".format(len(args))) other = args[0] if len(args) >= 1 else () if isinstance(other, HTTPHeaderDict): for key, val in other.iteritems(): self.add(key, val) elif isinstance(other, Mapping): for key in other: self.add(key, other[key]) elif hasattr(other, "keys"): for key in other.keys(): self.add(key, other[key]) else: for key, value in other: self.add(key, value) for key, value in kwargs.items(): self.add(key, value)
Example #12
Source File: _collections.py From core with MIT License | 6 votes |
def extend(self, *args, **kwargs): """Generic import function for any type of header-like object. Adapted version of MutableMapping.update in order to insert items with self.add instead of self.__setitem__ """ if len(args) > 1: raise TypeError("extend() takes at most 1 positional " "arguments ({0} given)".format(len(args))) other = args[0] if len(args) >= 1 else () if isinstance(other, HTTPHeaderDict): for key, val in other.iteritems(): self.add(key, val) elif isinstance(other, Mapping): for key in other: self.add(key, other[key]) elif hasattr(other, "keys"): for key in other.keys(): self.add(key, other[key]) else: for key, value in other: self.add(key, value) for key, value in kwargs.items(): self.add(key, value)
Example #13
Source File: random_model.py From respy with MIT License | 6 votes |
def _update_nested_dictionary(dict_, other): """Update a nested dictionary with another dictionary. The basic ``.update()`` method of dictionaries adds non-existing keys or replaces existing keys which works fine for unnested dictionaries. For nested dictionaries, levels under the current level are not updated but overwritten. This function recursively loops over keys and values and inserts the value if it is not a dictionary. If it is a dictionary, it applies the same process again. """ for key, value in other.items(): if isinstance(value, collections.Mapping): dict_[key] = _update_nested_dictionary(dict_.get(key, {}), value) else: dict_[key] = value return dict_
Example #14
Source File: tools.py From hierarchical_loc with BSD 3-Clause "New" or "Revised" License | 6 votes |
def dict_update(d, u): """Improved update for nested dictionaries. Arguments: d: The dictionary to be updated. u: The update dictionary. Returns: The updated dictionary. """ d = d.copy() for k, v in u.items(): if isinstance(v, collections.Mapping): d[k] = dict_update(d.get(k, {}), v) else: d[k] = v return d
Example #15
Source File: misc.py From misp42splunk with GNU Lesser General Public License v3.0 | 6 votes |
def execfile(filename, myglobals=None, mylocals=None): """ Read and execute a Python script from a file in the given namespaces. The globals and locals are dictionaries, defaulting to the current globals and locals. If only globals is given, locals defaults to it. """ if myglobals is None: # There seems to be no alternative to frame hacking here. caller_frame = inspect.stack()[1] myglobals = caller_frame[0].f_globals mylocals = caller_frame[0].f_locals elif mylocals is None: # Only if myglobals is given do we set mylocals to it. mylocals = myglobals if not isinstance(myglobals, Mapping): raise TypeError('globals must be a mapping') if not isinstance(mylocals, Mapping): raise TypeError('locals must be a mapping') with open(filename, "rbU") as fin: source = fin.read() code = compile(source, filename, "exec") exec_(code, myglobals, mylocals)
Example #16
Source File: types.py From recipes-py with Apache License 2.0 | 6 votes |
def thaw(obj): """Takes a a frozen object, and returns a mutable version of it. Conversions: * collections.Mapping -> dict * tuple -> list * frozenset -> set Close to the opposite of freeze(). Does not convert dict keys. """ if isinstance(obj, (dict, collections.OrderedDict, FrozenDict)): return {k: thaw(v) for k, v in obj.iteritems()} elif isinstance(obj, (list, tuple)): return [thaw(i) for i in obj] elif isinstance(obj, (set, frozenset)): return {thaw(i) for i in obj} else: return obj
Example #17
Source File: media.py From olympe with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _make_resource(resource): """ :param media: a resource object dictionary :return: a tuple of resource_id (int) and a :py:class:`~olympe.ResourceInfo` object :rtype: tuple(int, :py:class:`~olympe.ResourceInfo`) """ if isinstance(resource, Mapping): resource = ResourceInfo(**resource) if not resource.resource_id: return None, resource return resource.resource_id, resource
Example #18
Source File: media.py From olympe with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _make_media(media): """ :param media: a media object dictionary :return: a tuple of media_id (int) and a :py:class:`~olympe.MediaInfo` object :rtype: tuple(int, :py:class:`~olympe.MediaInfo`) """ if isinstance(media, Mapping): media = MediaInfo(**media) if not media.media_id: return None, media resources = media.resources media = _replace_namedtuple(media, resources=OrderedDict()) for resource in resources: resource_id, resource = _make_resource(resource) if not resource_id: getLogger("olympe.media").error("Missing resource_id in webserver response") continue media.resources[resource_id] = resource if media.type in MediaType._value2member_map_: media = _replace_namedtuple(media, type=MediaType(media.type)) if isinstance(media.gps, Mapping): media = _replace_namedtuple(media, gps=GPS(**media.gps)) if media.photo_mode in PhotoMode._value2member_map_: media = _replace_namedtuple(media, photo_mode=PhotoMode(media.photo_mode)) if media.panorama_type in PanoramaType._value2member_map_: media = _replace_namedtuple( media, panorama_type=PanoramaType(media.panorama_type) ) return media.media_id, media
Example #19
Source File: module_loader.py From olympe with BSD 3-Clause "New" or "Revised" License | 5 votes |
def get_source(self, modname): if modname in sys.modules: module = sys.modules[modname] else: module = self.load_module(modname) feature_name = module.__arsdkng_feature_name__ type_ = module.__arsdkng_type_name__ source = "" if type_ == "messages" and feature_name is not None: for name, obj in self.messages.by_feature[feature_name].items(): if isinstance(obj, ArsdkMessage.__class__): source += "\n\n" + obj.get_source() elif isinstance(obj, Mapping): source += "\n\nclass {}:".format(name) for message in obj.values(): source += indent("\n", " ") source += indent("@staticmethod", " ") source += indent(message.get_source(), " ") source += "\n\n" elif type_ == "enums" and feature_name is not None: for name, obj in self.enums._by_feature[feature_name].items(): if isinstance(obj, ArsdkEnum.__class__): source += "\n\n" + obj._source_ elif isinstance(obj, Mapping): for enum in obj.values(): source += "\n\n" + enum._source_ source += "\n\n" else: source = "" return source
Example #20
Source File: sessions.py From ServerlessCrawler-VancouverRealState with MIT License | 5 votes |
def merge_setting(request_setting, session_setting, dict_class=OrderedDict): """Determines appropriate setting for a given request, taking into account the explicit setting on that request, and the setting in the session. If a setting is a dictionary, they will be merged together using `dict_class` """ if session_setting is None: return request_setting if request_setting is None: return session_setting # Bypass if not a dictionary (e.g. verify) if not ( isinstance(session_setting, Mapping) and isinstance(request_setting, Mapping) ): return request_setting merged_setting = dict_class(to_key_val_list(session_setting)) merged_setting.update(to_key_val_list(request_setting)) # Remove keys that are set to None. Extract keys first to avoid altering # the dictionary during iteration. none_keys = [k for (k, v) in merged_setting.items() if v is None] for key in none_keys: del merged_setting[key] return merged_setting
Example #21
Source File: _collections.py From ServerlessCrawler-VancouverRealState with MIT License | 5 votes |
def __eq__(self, other): if not isinstance(other, Mapping) and not hasattr(other, 'keys'): return False if not isinstance(other, type(self)): other = type(self)(other) return (dict((k.lower(), v) for k, v in self.itermerged()) == dict((k.lower(), v) for k, v in other.itermerged()))
Example #22
Source File: stream.py From recipes-py with Apache License 2.0 | 5 votes |
def validate(self): """Raises (ValueError): if the parameters are not valid.""" streamname.validate_stream_name(self.name) if self.type not in (self.TEXT, self.BINARY, self.DATAGRAM): raise ValueError('Invalid type (%s)' % (self.type,)) if self.tags is not None: if not isinstance(self.tags, collections.Mapping): raise ValueError('Invalid tags type (%s)' % (self.tags,)) for k, v in self.tags.items(): streamname.validate_tag(k, v)
Example #23
Source File: config.py From recipes-py with Apache License 2.0 | 5 votes |
def set_val(self, val): if isinstance(val, ConfigBase): val = val.as_jsonish(include_hidden=True) typeAssert(val, collections.Mapping) val = dict(val) # because we pop later. for name, config_obj in self._type_map.iteritems(): if name in val: try: config_obj.set_val(val.pop(name)) except Exception as e: raise type(e)('While assigning key %r: %s' % (name, e)) if val: raise TypeError("Got extra keys while setting ConfigGroup: %s" % val)
Example #24
Source File: utils.py From ServerlessCrawler-VancouverRealState with MIT License | 5 votes |
def to_key_val_list(value): """Take an object and test to see if it can be represented as a dictionary. If it can be, return a list of tuples, e.g., :: >>> to_key_val_list([('key', 'val')]) [('key', 'val')] >>> to_key_val_list({'key': 'val'}) [('key', 'val')] >>> to_key_val_list('string') ValueError: cannot encode objects that are not 2-tuples. :rtype: list """ if value is None: return None if isinstance(value, (str, bytes, bool, int)): raise ValueError('cannot encode objects that are not 2-tuples') if isinstance(value, collections.Mapping): value = value.items() return list(value) # From mitsuhiko/werkzeug (used with permission).
Example #25
Source File: types.py From recipes-py with Apache License 2.0 | 5 votes |
def __eq__(self, other): if not isinstance(other, collections.Mapping): return NotImplemented if self is other: return True if len(self) != len(other): return False for k, v in self.iteritems(): if k not in other or other[k] != v: return False return True
Example #26
Source File: _collections.py From plugin.video.emby with GNU General Public License v3.0 | 5 votes |
def __eq__(self, other): if not isinstance(other, Mapping) and not hasattr(other, 'keys'): return False if not isinstance(other, type(self)): other = type(self)(other) return (dict((k.lower(), v) for k, v in self.itermerged()) == dict((k.lower(), v) for k, v in other.itermerged()))
Example #27
Source File: runner.py From recipes-py with Apache License 2.0 | 5 votes |
def _re_encode(obj): """Ensure consistent encoding for common python data structures.""" if isinstance(obj, (unicode, str)): if isinstance(obj, str): obj = obj.decode('utf-8', 'replace') return obj.encode('utf-8', 'replace') elif isinstance(obj, collections.Mapping): return {_re_encode(k): _re_encode(v) for k, v in obj.iteritems()} elif isinstance(obj, collections.Iterable): return [_re_encode(i) for i in obj] else: return obj
Example #28
Source File: runner.py From recipes-py with Apache License 2.0 | 5 votes |
def _merge_presentation_updates(steps_ran, presentation_steps): """Merges the steps ran (from the SimulationStepRunner) with the steps presented (from the SimulationAnnotatorStreamEngine). Args: * steps_ran (Dict[str, dict]) - Mapping of step name to its run details as an expectation dict (e.g. 'cmd', 'env', etc.) * presentation_steps (OrderedDict[str, dict]) - Mapping of step name (in the order that they were presented) to a dict containing the collected annotations for that step. Returns OrderedDict[str, expectation: dict]. This will have the order of steps in the order that they were presented. """ ret = collections.OrderedDict() for step_name, step_presented in presentation_steps.iteritems(): # root annotations if step_name is None: continue ret[step_name] = steps_ran.get(step_name, { 'name': step_name, # TODO(iannucci): Drop 'cmd' field for presentation-only steps. 'cmd': [], 'cost': None, }) debug_logs = step_presented.get('logs', {}).get('$debug', None) # wowo hacks! # We only want to see $debug if it's got a crash in it. if debug_logs and 'Unhandled exception:' not in debug_logs.splitlines(): step_presented['logs'].pop('$debug') ret[step_name].update(step_presented) return ret
Example #29
Source File: misc.py From misp42splunk with GNU Lesser General Public License v3.0 | 5 votes |
def update(*args, **kwds): '''Like dict.update() but add counts instead of replacing them. Source can be an iterable, a dictionary, or another Counter instance. >>> c = Counter('which') >>> c.update('witch') # add elements from another iterable >>> d = Counter('watch') >>> c.update(d) # add elements from another counter >>> c['h'] # four 'h' in which, witch, and watch 4 ''' # The regular dict.update() operation makes no sense here because the # replace behavior results in the some of original untouched counts # being mixed-in with all of the other counts for a mismash that # doesn't have a straight-forward interpretation in most counting # contexts. Instead, we implement straight-addition. Both the inputs # and outputs are allowed to contain zero and negative counts. if not args: raise TypeError("descriptor 'update' of 'Counter' object " "needs an argument") self = args[0] args = args[1:] if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) iterable = args[0] if args else None if iterable is not None: if isinstance(iterable, Mapping): if self: self_get = self.get for elem, count in iterable.items(): self[elem] = count + self_get(elem, 0) else: super(Counter, self).update(iterable) # fast path when counter is empty else: _count_elements(self, iterable) if kwds: self.update(kwds)
Example #30
Source File: data.py From Tacotron-pytorch with Apache License 2.0 | 5 votes |
def collate_fn(batch): # Puts each data field into a tensor with outer dimension batch size if isinstance(batch[0], collections.Mapping): keys = list() text = [d['text'] for d in batch] wav = [d['wav'] for d in batch] # PAD sequences with largest length of the batch text = _prepare_data(text).astype(np.int32) wav = _prepare_data(wav) magnitude = np.array([spectrogram(w) for w in wav]) mel = np.array([melspectrogram(w) for w in wav]) timesteps = mel.shape[-1] # PAD with zeros that can be divided by outputs per step if timesteps % hp.outputs_per_step != 0: magnitude = _pad_per_step(magnitude) mel = _pad_per_step(mel) return text, magnitude, mel raise TypeError(("batch must contain tensors, numbers, dicts or lists; found {}" .format(type(batch[0])))) # These pre-processing functions are referred from https://github.com/keithito/tacotron