view roundup/cgi/PageTemplates/MultiMapping.py @ 5920:ff7e089fd4ef

support python 3.4 testing python 3.4 is not supported by any 1.4 release of mysqlclient. Pip is installing the 1.4.4 version even when run from python 3.4. Check version and install 1.3.14 on python 3.4 but newest one on all other versions.
author John Rouillard <rouilj@ieee.org>
date Sun, 13 Oct 2019 14:17:33 -0400
parents 23b8e6067f7c
children
line wrap: on
line source

import operator

class MultiMapping:
    def __init__(self, *stores):
        self.stores = list(stores)
    def __getitem__(self, key):
        for store in self.stores:
            if key in store:
                return store[key]
        raise KeyError(key)
    _marker = []
    def get(self, key, default=_marker):
        for store in self.stores:
            if key in store:
                return store[key]
        if default is self._marker:
            raise KeyError(key)
        return default
    def __len__(self):
        return sum([len(x) for x in self.stores])
    def push(self, store):
        self.stores.append(store)
    def pop(self):
        return self.stores.pop()
    def items(self):
        l = []
        for store in self.stores:
            l = l + list(store.items())
        return l

Roundup Issue Tracker: http://roundup-tracker.org/