def __getattr__(self, key):
        if key in self.__pushed_up:
            owner = self.__pushed_up[key]
            value = getattr(getattr(self, owner), key)
            setattr(self, key, value)
            return value
        elif key in self.__all__:
            module = __import__(
                self.__name__ + '.' + key, None, None, [self.__name__])
            setattr(self, key, module)
            return module
        else:
            try:
                return ModuleType.__getattribute__(self, key)
            except __HOLE__:
                raise AttributeError(
                    'module %r has no attribute %r' % (self.__name__, key))
dataset/ETHPy150Open jek/flatland/flatland/util/deferred.py/deferred_module.__getattr__