def __getattribute__(self, key):
        try:
            return super(AttrDictWrapper, self).__getattribute__(key)
        except AttributeError:
            try:
                return self.__dict__["_mapping"].__getattribute__( key)
            except AttributeError:
                try:
                    obj = self.__dict__["_mapping"].__getitem__(key)
                    if hasattr(obj, "keys"):
                        return self.__class__(obj) # wrap the returned mapping object also
                    else:
                        return obj
                except KeyError as err:
                    raise AttributeError("no attribute or key '%s' found (%s)." % (key, err))
dataset/ETHPy150Open kdart/pycopia/aid/pycopia/dictlib.py/AttrDictWrapper.__getattribute__/original