mirror of
https://github.com/HannesStark/boltzgen.git
synced 2026-06-04 11:54:23 +08:00
80 lines
1.9 KiB
Python
80 lines
1.9 KiB
Python
"""Optional test configuration for mocking heavy dependencies.
|
|
|
|
Enable with:
|
|
pytest --mock-heavy-deps tests/test_residue_constraints.py
|
|
|
|
By default no mocking is performed, so integration tests run against
|
|
real dependencies.
|
|
"""
|
|
import sys
|
|
from unittest.mock import MagicMock
|
|
|
|
|
|
def _install_mock(name: str) -> None:
|
|
"""Install a mock module (and parent packages) into sys.modules."""
|
|
parts = name.split(".")
|
|
for i in range(len(parts)):
|
|
mod_name = ".".join(parts[: i + 1])
|
|
if mod_name not in sys.modules:
|
|
sys.modules[mod_name] = MagicMock()
|
|
|
|
|
|
# Heavy dependencies that schema.py imports transitively but are NOT
|
|
# needed by the three constraint-parsing functions under test.
|
|
_MOCK_MODULES = [
|
|
"torch",
|
|
"torch.nn",
|
|
"torch.nn.functional",
|
|
"torch.utils",
|
|
"torch.utils.data",
|
|
"pytorch_lightning",
|
|
"hydra",
|
|
"hydra.core",
|
|
"hydra.core.config_store",
|
|
"einops",
|
|
"einx",
|
|
"mashumaro",
|
|
"biotite",
|
|
"biotite.structure",
|
|
"biotite.structure.io",
|
|
"biotite.structure.io.pdbx",
|
|
"pydssp",
|
|
"logomaker",
|
|
"hydride",
|
|
"gemmi",
|
|
"pdbeccdutils",
|
|
"pdbeccdutils.core",
|
|
"pdbeccdutils.core.ccd_reader",
|
|
"edit_distance",
|
|
"huggingface_hub",
|
|
"nvidia_ml_py",
|
|
"cuequivariance_ops_cu12",
|
|
"cuequivariance_ops_torch_cu12",
|
|
"cuequivariance_torch",
|
|
"numba",
|
|
"sklearn",
|
|
"sklearn.cluster",
|
|
"sklearn.neighbors",
|
|
"pandas",
|
|
"matplotlib",
|
|
"matplotlib.pyplot",
|
|
"tqdm",
|
|
"Bio",
|
|
"Bio.PDB",
|
|
]
|
|
|
|
|
|
def pytest_addoption(parser) -> None:
|
|
parser.addoption(
|
|
"--mock-heavy-deps",
|
|
action="store_true",
|
|
default=False,
|
|
help="Mock heavy optional dependencies for parser-only unit tests.",
|
|
)
|
|
|
|
|
|
def pytest_configure(config) -> None:
|
|
if config.getoption("--mock-heavy-deps"):
|
|
for mod in _MOCK_MODULES:
|
|
_install_mock(mod)
|