|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import importlib |
|
|
import os |
|
|
import sys |
|
|
import unittest |
|
|
import unittest.mock |
|
|
|
|
|
from tests.common_testing import get_pytorch3d_dir |
|
|
|
|
|
|
|
|
|
|
|
class TestBuild(unittest.TestCase): |
|
|
def test_no_import_cycles(self): |
|
|
|
|
|
|
|
|
|
|
|
with unittest.mock.patch.dict(sys.modules): |
|
|
for module in list(sys.modules): |
|
|
|
|
|
|
|
|
if module.startswith("pytorch3d"): |
|
|
sys.modules.pop(module, None) |
|
|
|
|
|
|
|
|
|
|
|
import torchvision.utils |
|
|
|
|
|
root_dir = get_pytorch3d_dir() / "pytorch3d" |
|
|
|
|
|
|
|
|
ignored_modules = ( |
|
|
"__init__", |
|
|
"plotly_vis", |
|
|
"opengl_utils", |
|
|
"rasterizer_opengl", |
|
|
) |
|
|
if os.environ.get("FB_TEST", False): |
|
|
ignored_modules += ("orm_types", "sql_dataset", "sql_dataset_provider") |
|
|
for module_file in root_dir.glob("**/*.py"): |
|
|
if module_file.stem in ignored_modules: |
|
|
continue |
|
|
relative_module = str(module_file.relative_to(root_dir))[:-3] |
|
|
module = "pytorch3d." + relative_module.replace("/", ".") |
|
|
with self.subTest(name=module): |
|
|
with unittest.mock.patch.dict(sys.modules): |
|
|
importlib.import_module(module) |
|
|
|