From 9603c71adafe5959e57584a4982ee03d340a7be3 Mon Sep 17 00:00:00 2001 From: Ofek Lev Date: Sat, 10 Sep 2022 10:48:11 -0400 Subject: [PATCH] Switched to new build and publish workflow (#4337) --- .github/workflows/publish.yml | 4 +- Dockerfile | 3 +- MANIFEST.in | 11 ----- pyproject.toml | 50 ++++++++++++++++++++++ setup.py | 78 ----------------------------------- 5 files changed, 53 insertions(+), 93 deletions(-) delete mode 100644 MANIFEST.in create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4704582d2..e5471c10e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -46,10 +46,10 @@ jobs: python-version: ${{ env.PYTHON_VERSION }} - name: Set up Python dependencies - run: pip install --upgrade setuptools wheel twine + run: pip install --upgrade build twine - name: Build Python package - run: python setup.py build sdist bdist_wheel --universal + run: python -m build - name: Publish Python package env: diff --git a/Dockerfile b/Dockerfile index 4a6faeb80..c32285214 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,11 +32,10 @@ WORKDIR /tmp # Copy files necessary for build COPY material material -COPY MANIFEST.in MANIFEST.in COPY package.json package.json COPY README.md README.md COPY requirements.txt requirements.txt -COPY setup.py setup.py +COPY pyproject.toml pyproject.toml # Perform build and cleanup artifacts and caches RUN \ diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 50ff2bbc9..000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,11 +0,0 @@ -recursive-include material *.js *.css *.map *.html *.svg *.png *.yml -recursive-include material *.ttf *.woff *.woff2 LICENSE* -recursive-exclude material/overrides * -recursive-exclude site * -recursive-exclude src * -recursive-exclude * __pycache__ -recursive-exclude * *.py[co] -include LICENSE -include package.json -include README.md -include requirements.txt diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..7dae3192b --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,50 @@ +[build-system] +requires = ["hatchling", "hatch-requirements-txt", "hatch-nodejs-version"] +build-backend = "hatchling.build" + +[project] +name = "mkdocs-material" +dynamic = [ + "version", + "dependencies", + "license", + "description", + "authors", + "keywords", + "urls", +] +readme = "README.md" +requires-python = ">=3.7" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "License :: OSI Approved :: MIT License", + "Programming Language :: JavaScript", + "Programming Language :: Python", + "Topic :: Documentation", + "Topic :: Software Development :: Documentation", + "Topic :: Text Processing :: Markup :: HTML", +] + +[project.entry-points."mkdocs.plugins"] +search = "material.plugins.search.plugin:SearchPlugin" +tags = "material.plugins.tags.plugin:TagsPlugin" + +[project.entry-points."mkdocs.themes"] +material = "material" + +[tool.hatch.version] +source = "nodejs" + +[tool.hatch.metadata.hooks.nodejs] +fields = ["license", "description", "authors", "keywords", "urls"] + +[tool.hatch.metadata.hooks.requirements_txt] +filename = "requirements.txt" + +[tool.hatch.build.targets.wheel] +include = ["/material"] + +[tool.hatch.build.targets.sdist] +include = ["/material", "/package.json", "/requirements.txt"] +exclude = ["/material/overrides"] diff --git a/setup.py b/setup.py deleted file mode 100644 index 34d008233..000000000 --- a/setup.py +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright (c) 2016-2022 Martin Donath - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -import json -from setuptools import setup, find_packages - -# Load package.json contents -with open("package.json") as f: - package = json.load(f) - -# Load list of dependencies -with open("requirements.txt") as f: - install_requires = [ - line for line in f.read().split("\n") - if line and not line.startswith("#") - ] - -# Load README contents -with open("README.md", encoding = "utf-8") as f: - long_description = f.read() - -# Package description -setup( - name = "mkdocs-material", - version = package["version"], - url = package["homepage"], - project_urls = { - "Source": "https://github.com/squidfunk/mkdocs-material", - }, - license = package["license"], - description = package["description"], - long_description = long_description, - long_description_content_type = "text/markdown", - author = package["author"]["name"], - author_email = package["author"]["email"], - keywords = package["keywords"], - classifiers = [ - "Development Status :: 5 - Production/Stable", - "Environment :: Web Environment", - "License :: OSI Approved :: MIT License", - "Programming Language :: JavaScript", - "Programming Language :: Python", - "Topic :: Documentation", - "Topic :: Software Development :: Documentation", - "Topic :: Text Processing :: Markup :: HTML" - ], - packages = find_packages(exclude = ["src", "src.*"]), - include_package_data = True, - install_requires = install_requires, - python_requires='>=3.7', - entry_points = { - "mkdocs.themes": [ - "material = material" - ], - "mkdocs.plugins": [ - "search = material.plugins.search.plugin:SearchPlugin", - "tags = material.plugins.tags.plugin:TagsPlugin" - ] - }, - zip_safe = False -)