diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index e5471c10e..4704582d2 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 build twine + run: pip install --upgrade setuptools wheel twine - name: Build Python package - run: python -m build + run: python setup.py build sdist bdist_wheel --universal - name: Publish Python package env: diff --git a/Dockerfile b/Dockerfile index c32285214..4a6faeb80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,10 +32,11 @@ 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 pyproject.toml pyproject.toml +COPY setup.py setup.py # Perform build and cleanup artifacts and caches RUN \ diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..50ff2bbc9 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,11 @@ +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 deleted file mode 100644 index 7dae3192b..000000000 --- a/pyproject.toml +++ /dev/null @@ -1,50 +0,0 @@ -[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 new file mode 100644 index 000000000..34d008233 --- /dev/null +++ b/setup.py @@ -0,0 +1,78 @@ +# 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 +)