From 9457641c4131c0ae3222bdbc1f19d2928bf6e003 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 2 Sep 2024 15:32:14 +0200 Subject: [PATCH 1/5] Switch to pyproject.toml --- MANIFEST.in | 1 - pyproject.toml | 52 ++++++++++++++++++++ setup.py | 126 ------------------------------------------------- 3 files changed, 52 insertions(+), 127 deletions(-) delete mode 100644 MANIFEST.in delete mode 100644 setup.py diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index b2cc4f50..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -include README.md LICENSE requirements.txt diff --git a/pyproject.toml b/pyproject.toml index e69de29b..19189250 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -0,0 +1,52 @@ +[build-system] +requires = ['setuptools>=61'] +build-backend = 'setuptools.build_meta' + +[project] +name = 'segmentation_models_pytorch' +description = 'Image segmentation models with pre-trained backbones. PyTorch.' +readme = 'README.md' +requires-python = '>=3.9' +license = {file = 'LICENSE'} +authors = [{name = 'Pavel Iakubovskii', email = 'qubvel@gmail.com'}] +classifiers = [ + 'License :: OSI Approved :: MIT License', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: Implementation :: CPython', + 'Programming Language :: Python :: Implementation :: PyPy', +] +dependencies = [ + 'efficientnet-pytorch==0.7.1', + 'huggingface-hub>=0.24.6', + 'pillow', + 'pretrainedmodels==0.7.4', + 'six', + 'timm==0.9.7', + 'torchvision>=0.5', + 'tqdm', +] +dynamic = ['version'] + +[project.optional-dependencies] +docs = [ + 'autodocsumm', + 'huggingface-hub', + 'six==1.15.0', + 'sphinx<7', + 'sphinx-book-theme==1.1.2', +] +tests = [ + 'mock', + 'pytest', + 'ruff==0.5.2', +] + +[project.urls] +Homepage = 'https://github.com/qubvel-org/segmentation_models.pytorch' + +[tool.setuptools.dynamic] +version = {attr = 'segmentation_models_pytorch.__version'} + +[tool.setuptools.packages.find] +include = ['segmentation_models_pytorch*'] diff --git a/setup.py b/setup.py deleted file mode 100644 index 301b9b83..00000000 --- a/setup.py +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# Note: To use the 'upload' functionality of this file, you must: -# $ pip install twine - -import io -import os -import sys -from shutil import rmtree - -from setuptools import find_packages, setup, Command - -# Package meta-data. -NAME = "segmentation_models_pytorch" -DESCRIPTION = "Image segmentation models with pre-trained backbones. PyTorch." -URL = "https://github.com/qubvel/segmentation_models.pytorch" -EMAIL = "qubvel@gmail.com" -AUTHOR = "Pavel Iakubovskii" -REQUIRES_PYTHON = ">=3.9.0" -VERSION = None - -# The rest you shouldn't have to touch too much :) -# ------------------------------------------------ -# Except, perhaps the License and Trove Classifiers! -# If you do change the License, remember to change the Trove Classifier for that! - -here = os.path.abspath(os.path.dirname(__file__)) - -# What packages are required for this module to be executed? -try: - with open(os.path.join(here, "requirements.txt"), encoding="utf-8") as f: - REQUIRED = f.read().split("\n") -except Exception: - REQUIRED = [] - -# What packages are optional? -EXTRAS = {"test": ["pytest", "mock", "ruff==0.5.2"]} - -# Import the README and use it as the long-description. -# Note: this will only work if 'README.md' is present in your MANIFEST.in file! -try: - with io.open(os.path.join(here, "README.md"), encoding="utf-8") as f: - long_description = "\n" + f.read() -except FileNotFoundError: - long_description = DESCRIPTION - -# Load the package's __version__.py module as a dictionary. -about = {} -if not VERSION: - with open(os.path.join(here, NAME, "__version__.py")) as f: - exec(f.read(), about) -else: - about["__version__"] = VERSION - - -class UploadCommand(Command): - """Support setup.py upload.""" - - description = "Build and publish the package." - user_options = [] - - @staticmethod - def status(s): - """Prints things in bold.""" - print(s) - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - try: - self.status("Removing previous builds...") - rmtree(os.path.join(here, "dist")) - except OSError: - pass - - self.status("Building Source and Wheel (universal) distribution...") - os.system("{0} setup.py sdist bdist_wheel --universal".format(sys.executable)) - - self.status("Uploading the package to PyPI via Twine...") - os.system("twine upload dist/*") - - self.status("Pushing git tags...") - os.system("git tag v{0}".format(about["__version__"])) - os.system("git push --tags") - - sys.exit() - - -# Where the magic happens: -setup( - name=NAME, - version=about["__version__"], - description=DESCRIPTION, - long_description=long_description, - long_description_content_type="text/markdown", - author=AUTHOR, - author_email=EMAIL, - python_requires=REQUIRES_PYTHON, - url=URL, - packages=find_packages(exclude=("tests", "docs", "images")), - # If your package is a single module, use this instead of 'packages': - # py_modules=['mypackage'], - # entry_points={ - # 'console_scripts': ['mycli=mymodule:cli'], - # }, - install_requires=REQUIRED, - extras_require=EXTRAS, - include_package_data=True, - license="MIT", - classifiers=[ - # Trove classifiers - # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers - "License :: OSI Approved :: MIT License", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - ], - # $ setup.py publish support. - cmdclass={"upload": UploadCommand}, -) From 465fd47a9f5917c2409ee328a08687b8f3fcf970 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 2 Sep 2024 15:38:13 +0200 Subject: [PATCH 2/5] Fix version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 19189250..99a58496 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ tests = [ Homepage = 'https://github.com/qubvel-org/segmentation_models.pytorch' [tool.setuptools.dynamic] -version = {attr = 'segmentation_models_pytorch.__version'} +version = {attr = 'segmentation_models_pytorch.__version__'} [tool.setuptools.packages.find] include = ['segmentation_models_pytorch*'] From f0965705084e53c5cc993be1f38aff5543851959 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 2 Sep 2024 15:45:18 +0200 Subject: [PATCH 3/5] Add missing deps --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 99a58496..371682bb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,10 +19,12 @@ classifiers = [ dependencies = [ 'efficientnet-pytorch==0.7.1', 'huggingface-hub>=0.24.6', + 'numpy', 'pillow', 'pretrainedmodels==0.7.4', 'six', 'timm==0.9.7', + 'torch', 'torchvision>=0.5', 'tqdm', ] From 5bfb1c92e4bc41a26524842ec29404e321236335 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 2 Sep 2024 15:48:41 +0200 Subject: [PATCH 4/5] See if we can avoid import --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 371682bb..396e1bda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ tests = [ Homepage = 'https://github.com/qubvel-org/segmentation_models.pytorch' [tool.setuptools.dynamic] -version = {attr = 'segmentation_models_pytorch.__version__'} +version = {attr = 'segmentation_models_pytorch.__version__.__version__'} [tool.setuptools.packages.find] include = ['segmentation_models_pytorch*'] From 080700d0dc108769d018860c62053b67e15d77b1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 2 Sep 2024 15:52:23 +0200 Subject: [PATCH 5/5] Fix extra name --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 396e1bda..06624560 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ docs = [ 'sphinx<7', 'sphinx-book-theme==1.1.2', ] -tests = [ +test = [ 'mock', 'pytest', 'ruff==0.5.2',