pytorch
1# mypy: allow-untyped-defs
2import sys3import types4
5import torch6
7
8class _XNNPACKEnabled:9def __get__(self, obj, objtype):10return torch._C._is_xnnpack_enabled()11
12def __set__(self, obj, val):13raise RuntimeError("Assignment not supported")14
15
16class XNNPACKEngine(types.ModuleType):17def __init__(self, m, name):18super().__init__(name)19self.m = m20
21def __getattr__(self, attr):22return self.m.__getattribute__(attr)23
24enabled = _XNNPACKEnabled()25
26
27# This is the sys.modules replacement trick, see
28# https://stackoverflow.com/questions/2447353/getattr-on-a-module/7668273#7668273
29sys.modules[__name__] = XNNPACKEngine(sys.modules[__name__], __name__)30