From af77bf3b3e0d906e2fb6711a8539278aa45d8cc0 Mon Sep 17 00:00:00 2001 From: zjq Date: Fri, 14 Nov 2025 10:37:31 +0800 Subject: [PATCH] [Feat] provide a editable installation way for tools like uv --- mmengine/version.py | 2 +- pyproject.toml | 102 ++++++++++++++++++++++++++++++++++++++++++++ setup.py | 13 ++++-- 3 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 pyproject.toml diff --git a/mmengine/version.py b/mmengine/version.py index 6a10718798..01b1adaf8c 100644 --- a/mmengine/version.py +++ b/mmengine/version.py @@ -3,7 +3,7 @@ __version__ = '0.11.0rc0' -def parse_version_info(version_str): +def parse_version_info(version_str: str): """Parse the version information. Args: diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..21fa347a15 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,102 @@ +[build-system] +requires = ["setuptools>=64", "wheel", "importlib-metadata; python_version < '3.8'"] +build-backend = "setuptools.build_meta" + +[project] +name = "mmengine" +version = "0.11.0rc0" +description = "Engine of OpenMMLab projects" +readme = "README.md" +requires-python = ">=3.7" +license-files = ["LICENSE"] +authors = [ + { name = "MMEngine Authors", email = "openmmlab@gmail.com" }, +] +urls = { "Homepage" = "https://github.com/open-mmlab/mmengine" } + +classifiers = [ + "Development Status :: 4 - Beta", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Utilities" +] + +dependencies = [ + "addict", + "matplotlib", + "numpy<2.0", + "pyyaml", + "regex;sys_platform=='win32'", + "rich", + "termcolor" +] + +[project.optional-dependencies] +all = [ + "aim<=3.17.5;sys_platform!='win32'", + "bitsandbytes", + "clearml", + "coverage", + "dadaptation", + "dvclive", + "lion-pytorch", + "lmdb", + "mlflow", + "parameterized", + "pydantic==1.10.9", + "pytest", + "transformers" +] +tests = [ + "pytest" +] + +[tool.setuptools] +include-package-data = true + +[tool.pytest.ini_options] +testpaths = ["tests"] + +[tool.ruff] +line-length = 120 +target-version = "py312" +fix = true + +[tool.setuptools.packages.find] +where = ["mmengine"] +include = ["mmengine*"] + +[tool.ruff.lint] +ignore = ["C408", "C901", "E501", "E741", "F402", "F823", "SIM1", "SIM300", "SIM212", "SIM905", "UP009", "UP015", "UP031", "UP028", "UP004", "UP045", "UP007", "UP035"] +select = ["C", "E", "F", "I", "W", "RUF013", "PERF102", "PLC1802", "PLC0208", "SIM", "UP"] +extend-safe-fixes = ["UP006"] + +[tool.ruff.lint.per-file-ignores] +"__init__.py" = ["E402", "F401", "F403", "F811"] + +[tool.ruff.lint.isort] +lines-after-imports = 2 + +[tool.coverage.run] +source = ["transformers"] +omit = [ + "*/convert_*", + "*/__main__.py" +] + +[tool.coverage.report] +exclude_lines = [ + "pragma: no cover", + "raise", + "except", + "register_parameter" +] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" \ No newline at end of file diff --git a/setup.py b/setup.py index 5b1f7fc803..845a4f9ab6 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,15 @@ import os import re + from setuptools import find_packages, setup # type: ignore -from pkg_resources import DistributionNotFound, get_distribution + +try: + from importlib.metadata import PackageNotFoundError, version +except ImportError: + # for Python <3.8 + from importlib_metadata import PackageNotFoundError, version + def readme(): @@ -19,8 +26,8 @@ def choose_requirement(primary, secondary): return secondary.""" try: name = re.split(r'[!<>=]', primary)[0] - get_distribution(name) - except DistributionNotFound: + version(name) + except PackageNotFoundError: return secondary return str(primary)