mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
Several improvements for skipfiles: * Add ```FUNC_INLINELIST``` to support function level skip/inline check. * Use ```fn.__code__``` to match function since we can't get the function object sometimes. * Use python module string name for ```FILE_INLINELIST``` and ```SUBMODULE_INLINELIST```. * Use filename to match file and python module, which can fundamentally resolved the circular import issues introduced by skipfiles. * Use ```TYPE_CHECKING``` to ensure the python module string name is correct. * Add unit tests. Pull Request resolved: https://github.com/pytorch/pytorch/pull/110835 Approved by: https://github.com/ezyang
51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
# Owner(s): ["module: dynamo"]
|
|
import importlib
|
|
import os
|
|
import sys
|
|
import types
|
|
|
|
import torch
|
|
import torch._dynamo
|
|
|
|
g_tensor_export = torch.ones(10)
|
|
|
|
|
|
tensor_for_import_testing = torch.ones(10, 10)
|
|
|
|
|
|
def inner_func():
|
|
return torch.is_grad_enabled()
|
|
|
|
|
|
def outer_func(func):
|
|
def wrapped(*args):
|
|
a = func(*args)
|
|
torch._dynamo.graph_break()
|
|
return torch.sin(a + 1), inner_func()
|
|
|
|
return wrapped
|
|
|
|
|
|
# Create a dummy python module and function to test skipfiles rules.
|
|
module_code = """
|
|
def add(x):
|
|
return x + 1
|
|
"""
|
|
|
|
|
|
def add(x):
|
|
return x + 1
|
|
|
|
|
|
def create_dummy_module_and_function():
|
|
module = types.ModuleType("dummy_module")
|
|
module.__spec__ = importlib.machinery.ModuleSpec(
|
|
"dummy_module", None, origin=os.path.abspath(__file__)
|
|
)
|
|
exec(module_code, module.__dict__)
|
|
sys.modules["dummy_module"] = module
|
|
# Need to override the original function since its __code__.co_filename is not a regular python file name,
|
|
# and the skipfiles rules use filename when checking SKIP_DIRS.
|
|
module.add = add
|
|
return module, module.add
|