Migrate setup.py and setup.cfg to pyproject.toml

Move the custom sdist command from wagtail/utils/setup.py directly to
setup.py, because we cannot import the wagtail package itself during
the build process without installing it in the build environment.
pull/12993/head
Sage Abdullah 2025-03-25 23:02:03 +07:00
rodzic 4b990df86a
commit d9a09a7442
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: EB1A33CC51CC0217
4 zmienionych plików z 127 dodań i 148 usunięć

114
pyproject.toml 100644
Wyświetl plik

@ -0,0 +1,114 @@
[build-system]
requires = ["setuptools>=78.0"]
build-backend = "setuptools.build_meta"
[project]
name = "wagtail"
dynamic = ["version"]
description = "A Django content management system."
readme = "README.md"
license = "BSD-3-Clause"
authors = [
{ name = "Wagtail core team + contributors", email = "hello@wagtail.org" },
]
requires-python = ">=3.9"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Framework :: Django",
"Framework :: Django :: 4.2",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"Framework :: Wagtail",
"Topic :: Internet :: WWW/HTTP :: Site Management",
]
dependencies = [
"Django>=4.2",
"django-modelcluster>=6.2.1,<7.0",
"django-permissionedforms>=0.1,<1.0",
"django-taggit>=5.0,<7",
"django-treebeard>=4.5.1,<5.0",
"djangorestframework>=3.15.1,<4.0",
"django-filter>=23.3",
"draftjs_exporter>=2.1.5,<6.0",
"Pillow>=9.1.0,<12.0.0",
"beautifulsoup4>=4.8,<5",
"Willow[heif]>=1.8.0,<2",
"requests>=2.11.1,<3.0",
"openpyxl>=3.0.10,<4.0",
"anyascii>=0.1.5",
"telepath>=0.3.1,<1",
"laces>=0.1,<0.2",
"django-tasks>=0.6.1,<0.7",
]
[project.urls]
Homepage = "https://wagtail.org/"
Documentation = "https://docs.wagtail.org"
Repository = "https://github.com/wagtail/wagtail"
Changelog = "https://github.com/wagtail/wagtail/blob/main/CHANGELOG.txt"
"Issue Tracker" = "https://github.com/wagtail/wagtail/issues"
[project.optional-dependencies]
testing = [
# Required for running the tests
"python-dateutil>=2.7",
"Jinja2>=3.0,<3.2",
"boto3>=1.28,<2",
"freezegun>=0.3.8",
"azure-mgmt-cdn>=12.0,<13.0",
"azure-mgmt-frontdoor>=1.0,<1.1",
"django-pattern-library>=0.7",
# For coverage and PEP8 linting
"coverage>=3.7.0",
"doc8==0.8.1",
"ruff==0.9.6",
# For enforcing string formatting mechanism in source files
"semgrep==1.40.0",
# For templates linting
"curlylint==0.13.1",
# For template indenting
"djhtml==3.0.6",
# For validating string formats in .po translation files
"polib>=1.1,<2.0",
# For wagtail.test.utils.wagtail_factories (used for streamfield migration toolkit)
"factory-boy>=3.2",
# For running tests in parallel
"tblib>=2.0,<3.0",
]
docs = [
"pyenchant>=3.1.1,<4",
"sphinxcontrib-spelling>=7,<8",
"Sphinx>=7.3",
"sphinx-autobuild>=0.6.0",
"sphinx-wagtail-theme==6.5.0",
"myst_parser==2.0.0",
]
[project.scripts]
wagtail = "wagtail.bin.wagtail:main"
[tool.doc8]
ignore = ["D001"]
ignore_path = ["_build", "docs/_build"]
[tool.pytest.ini_options]
django_find_project = false
python_files = ["test_*.py"]
testpaths = ["wagtail"]
[tool.setuptools.packages.find]
include = ["wagtail*"]
[tool.setuptools.dynamic]
version = { attr = "wagtail.__version__" }

Wyświetl plik

@ -1,11 +0,0 @@
[bdist_wheel]
python_tag = py3
[doc8]
ignore = D001
ignore_path = _build,docs/_build
[tool:pytest]
django_find_project = false
python_files=test_*.py
testpaths=wagtail

134
setup.py 100755 → 100644
Wyświetl plik

@ -1,131 +1,23 @@
#!/usr/bin/env python
import subprocess
from wagtail import __version__
from wagtail.utils.setup import sdist
try:
from setuptools import find_packages, setup
except ImportError:
from distutils.core import setup
from setuptools import setup
from setuptools.command.sdist import sdist as base_sdist
# Hack to prevent "TypeError: 'NoneType' object is not callable" error
# in multiprocessing/util.py _exit_function when setup.py exits
# (see http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)
try:
import multiprocessing # noqa: F401
except ImportError:
pass
class sdist(base_sdist):
def compile_assets(self):
try:
subprocess.check_call(["npm", "run", "build"])
except (OSError, subprocess.CalledProcessError) as e:
print("Error compiling assets: " + str(e)) # noqa: T201
raise SystemExit(1)
def run(self):
self.compile_assets()
base_sdist.run(self)
install_requires = [
"Django>=4.2",
"django-modelcluster>=6.2.1,<7.0",
"django-permissionedforms>=0.1,<1.0",
"django-taggit>=5.0,<7",
"django-treebeard>=4.5.1,<5.0",
"djangorestframework>=3.15.1,<4.0",
"django-filter>=23.3",
"draftjs_exporter>=2.1.5,<6.0",
"Pillow>=9.1.0,<12.0.0",
"beautifulsoup4>=4.8,<5",
"Willow[heif]>=1.8.0,<2",
"requests>=2.11.1,<3.0",
"openpyxl>=3.0.10,<4.0",
"anyascii>=0.1.5",
"telepath>=0.3.1,<1",
"laces>=0.1,<0.2",
"django-tasks>=0.6.1,<0.7",
]
# Testing dependencies
testing_extras = [
# Required for running the tests
"python-dateutil>=2.7",
"Jinja2>=3.0,<3.2",
"boto3>=1.28,<2",
"freezegun>=0.3.8",
"azure-mgmt-cdn>=12.0,<13.0",
"azure-mgmt-frontdoor>=1.0,<1.1",
"django-pattern-library>=0.7",
# For coverage and PEP8 linting
"coverage>=3.7.0",
"doc8==0.8.1",
"ruff==0.9.6",
# For enforcing string formatting mechanism in source files
"semgrep==1.40.0",
# For templates linting
"curlylint==0.13.1",
# For template indenting
"djhtml==3.0.6",
# For validating string formats in .po translation files
"polib>=1.1,<2.0",
# For wagtail.test.utils.wagtail_factories (used for streamfield migration toolkit)
"factory-boy>=3.2",
# For running tests in parallel
"tblib>=2.0,<3.0",
]
# Documentation dependencies
documentation_extras = [
"pyenchant>=3.1.1,<4",
"sphinxcontrib-spelling>=7,<8",
"Sphinx>=7.3",
"sphinx-autobuild>=0.6.0",
"sphinx-wagtail-theme==6.5.0",
"myst_parser==2.0.0",
]
setup(
name="wagtail",
version=__version__,
description="A Django content management system.",
author="Wagtail core team + contributors",
author_email="hello@wagtail.org", # For support queries, please see https://docs.wagtail.org/en/stable/support.html
url="https://wagtail.org/",
project_urls={
"Changelog": "https://github.com/wagtail/wagtail/blob/main/CHANGELOG.txt",
"Documentation": "https://docs.wagtail.org",
"Source": "https://github.com/wagtail/wagtail",
"Tracker": "https://github.com/wagtail/wagtail/issues",
},
packages=find_packages(),
include_package_data=True,
license="BSD",
long_description="Wagtail is an open source content management \
system built on Django, with a strong community and commercial support. \
Its focused on user experience, and offers precise control for \
designers and developers.\n\n\
For more details, see https://wagtail.org, https://docs.wagtail.org and \
https://github.com/wagtail/wagtail/.",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Framework :: Django",
"Framework :: Django :: 4.2",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"Framework :: Wagtail",
"Topic :: Internet :: WWW/HTTP :: Site Management",
],
python_requires=">=3.9",
install_requires=install_requires,
extras_require={"testing": testing_extras, "docs": documentation_extras},
entry_points="""
[console_scripts]
wagtail=wagtail.bin.wagtail:main
""",
zip_safe=False,
cmdclass={"sdist": sdist},
)

Wyświetl plik

@ -1,16 +0,0 @@
import subprocess
from setuptools.command.sdist import sdist as base_sdist
class sdist(base_sdist):
def compile_assets(self):
try:
subprocess.check_call(["npm", "run", "build"])
except (OSError, subprocess.CalledProcessError) as e:
print("Error compiling assets: " + str(e)) # noqa: T201
raise SystemExit(1)
def run(self):
self.compile_assets()
base_sdist.run(self)