from pathlib import Path from pose_tracking_exp.detection.patch_mmdet import PATCH_SENTINEL, patch_mmdet_init_file, patch_mmdet_init_text UNPATCHED_INIT = """# Copyright (c) OpenMMLab. All rights reserved. import mmcv import mmengine from mmengine.utils import digit_version from .version import __version__, version_info mmcv_minimum_version = '2.0.0rc4' mmcv_maximum_version = '2.2.0' mmcv_version = digit_version(mmcv.__version__) mmengine_minimum_version = '0.7.1' mmengine_maximum_version = '1.0.0' mmengine_version = digit_version(mmengine.__version__) assert (mmcv_version >= digit_version(mmcv_minimum_version) and mmcv_version < digit_version(mmcv_maximum_version)), \\ f'MMCV=={mmcv.__version__} is used but incompatible. ' \\ f'Please install mmcv>={mmcv_minimum_version}, ' \\ f'<{mmcv_maximum_version}.' assert (mmengine_version >= digit_version(mmengine_minimum_version) and mmengine_version < digit_version(mmengine_maximum_version)), \\ f'MMEngine=={mmengine.__version__} is used but incompatible. ' \\ f'Please install mmengine>={mmengine_minimum_version}, ' \\ f'<{mmengine_maximum_version}.' __all__ = ['__version__', 'version_info', 'digit_version'] """ def test_patch_mmdet_init_text_rewrites_mmcv_assert() -> None: patched, changed = patch_mmdet_init_text(UNPATCHED_INIT) assert changed is True assert PATCH_SENTINEL in patched assert "from warnings import warn" in patched assert "assert (mmengine_version >= digit_version(mmengine_minimum_version)" in patched def test_patch_mmdet_init_file_is_idempotent(tmp_path: Path) -> None: init_path = tmp_path / "__init__.py" init_path.write_text(UNPATCHED_INIT, encoding="utf-8") assert patch_mmdet_init_file(init_path) is True once = init_path.read_text(encoding="utf-8") assert PATCH_SENTINEL in once assert patch_mmdet_init_file(init_path) is False twice = init_path.read_text(encoding="utf-8") assert once == twice