diff --git a/.gitignore b/.gitignore index 61e3c9dbf9..e382600a97 100644 --- a/.gitignore +++ b/.gitignore @@ -113,6 +113,7 @@ venv.bak/ work_dirs/ /data/ /data +mmmedit/.mim # Pytorch *.pth diff --git a/MANIFEST.in b/MANIFEST.in index 724ddd86f7..b1059cb4bc 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,6 @@ include requirements/*.txt -include mmedit/VERSION -include mmedit/model-index.yml -recursive-include mmedit/configs *.py *.yml -recursive-include mmedit/tools *.sh *.py +include mmedit/.mim/VERSION +include mmedit/.mim/model-index.yml +recursive-include mmedit/.mim/configs *.py *.yml +recursive-include mmedit/.mim/tools *.sh *.py +recursive-include mmedit/.mim/demo *.py diff --git a/README.md b/README.md index 18d9ff2923..d417d50155 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ MMEditing is an open source project that is contributed by researchers and engin ## Projects in OpenMMLab - [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab foundational library for computer vision. +- [MIM](https://github.com/open-mmlab/mim): MIM Installs OpenMMLab Packages. - [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark. - [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark. - [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection. diff --git a/README_zh-CN.md b/README_zh-CN.md index 7d40f1b607..0531f081f4 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -137,6 +137,7 @@ MMEditing 是一款由不同学校和公司共同贡献的开源项目。我们 ## OpenMMLab 的其他项目 - [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库 +- [MIM](https://github.com/open-mmlab/mim): OpenMMlab 项目、算法、模型的统一入口 - [MMClassification](https://github.com/open-mmlab/mmclassification): 图像分类工具箱与测试基准 - [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 检测工具箱与测试基准 - [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用3D目标检测平台 diff --git a/setup.py b/setup.py index 0ec168d3e0..b3f3285fb9 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,9 @@ import os +import os.path as osp +import shutil import subprocess +import sys +import warnings from setuptools import find_packages, setup @@ -137,7 +141,56 @@ def gen_packages_items(): return packages +def add_mim_extention(): + """Add extra files that are required to support MIM into the package. + + These files will be added by creating a symlink to the originals if the + package is installed in `editable` mode (e.g. pip install -e .), or by + copying from the originals otherwise. + """ + + # parse installment mode + if 'develop' in sys.argv: + # installed by `pip install -e .` + mode = 'symlink' + elif 'sdist' in sys.argv or 'bdist_wheel' in sys.argv: + # installed by `pip install .` + # or create source distribution by `python setup.py sdist` + mode = 'copy' + else: + return + + filenames = ['tools', 'configs', 'demo', 'model-index.yml'] + repo_path = osp.dirname(__file__) + mim_path = osp.join(repo_path, 'mmedit', '.mim') + os.makedirs(mim_path, exist_ok=True) + + for filename in filenames: + if osp.exists(filename): + src_path = osp.join(repo_path, filename) + tar_path = osp.join(mim_path, filename) + + if osp.isfile(tar_path) or osp.islink(tar_path): + os.remove(tar_path) + elif osp.isdir(tar_path): + shutil.rmtree(tar_path) + + if mode == 'symlink': + src_relpath = osp.relpath(src_path, osp.dirname(tar_path)) + os.symlink(src_relpath, tar_path) + elif mode == 'copy': + if osp.isfile(src_path): + shutil.copyfile(src_path, tar_path) + elif osp.isdir(src_path): + shutil.copytree(src_path, tar_path) + else: + warnings.warn(f'Cannot copy file {src_path}.') + else: + raise ValueError(f'Invalid mode {mode}') + + if __name__ == '__main__': + add_mim_extention() setup( name='mmedit', version=get_version(),