'Returns a list containing all the keys available as subviews
of the current views. This enumerates all the keys in *all*
dictionaries matching the current view, in contrast to
``view.get(dict).keys()``, which gets all the keys for the
*first* dict matching the view. If the object for this view in
any source is not a dict, then a ConfigTypeError is raised. The
keys are ordered according to how they appear in each source.'

def keys(self):

    keys = []
    for (dic, _) in self.resolve():
        try:
            cur_keys = dic.keys()
        except AttributeError:
            raise ConfigTypeError(u'{0}    must    be    a    dict,    not    {1}'.format(self.name, type(dic).__name__))
        for key in cur_keys:
            if (key not in keys):
                keys.append(key)
    return keys
