import sys import torch import types class _XNNPACKEnabled: def __get__(self, obj, objtype): return torch._C._is_xnnpack_enabled() def __set__(self, obj, val): raise RuntimeError("Assignment not supported") class XNNPACKEngine(types.ModuleType): def __init__(self, m, name): super().__init__(name) self.m = m def __getattr__(self, attr): return self.m.__getattribute__(attr) enabled = _XNNPACKEnabled() # This is the sys.modules replacement trick, see # https://stackoverflow.com/questions/2447353/getattr-on-a-module/7668273#7668273 sys.modules[__name__] = XNNPACKEngine(sys.modules[__name__], __name__)