aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--create_wheels.py77
-rw-r--r--wheel_artifacts/pyproject.toml3
-rw-r--r--wheel_artifacts/pyproject.toml.base61
-rw-r--r--wheel_artifacts/setup.cfg.base55
4 files changed, 103 insertions, 93 deletions
diff --git a/create_wheels.py b/create_wheels.py
index e3c9d1d85..67626bdde 100644
--- a/create_wheels.py
+++ b/create_wheels.py
@@ -28,7 +28,7 @@ class SetupData:
name: str
version: str
description: str
- long_description: str
+ readme: str
console_scripts: List[str]
@@ -40,7 +40,7 @@ def get_version_from_package(name: str) -> str:
if line.strip().startswith("__version__"):
version = line.split("=")[1].strip().replace('"', "")
break
- return version
+ return version, f"{name}.__init__.__version__"
def get_manifest(wheel_name: str, data: List[ModuleData]) -> str:
@@ -75,7 +75,7 @@ def get_manifest(wheel_name: str, data: List[ModuleData]) -> str:
return "\n".join(lines)
-def generate_setup_cfg(artifacts: Path, setup: SetupData) -> str:
+def get_platform_tag() -> str:
content = None
_os = sys.platform
arch = platform.machine()
@@ -122,13 +122,21 @@ def generate_setup_cfg(artifacts: Path, setup: SetupData) -> str:
msvc_arch = "x86" if win_arch.startswith("32") else "amd64"
_tag = f"win_{msvc_arch}"
- with open(artifacts / "setup.cfg.base") as f:
- content = f.read().format(
- name=setup.name,
- version=setup.version,
- description=setup.description,
- long_description=setup.long_description,
- tag=_tag,
+ return _tag
+
+def generate_pyproject_toml(artifacts: Path, setup: SetupData) -> str:
+ content = None
+
+ _tag = get_platform_tag()
+
+ with open(artifacts / "pyproject.toml.base") as f:
+ content = (
+ f.read()
+ .replace("PROJECT_NAME", f'"{setup.name}"')
+ .replace("PROJECT_VERSION", f'"{setup.version[1]}"')
+ .replace("PROJECT_DESCRIPTION", f'"{setup.description}"')
+ .replace("PROJECT_README", f'"{setup.readme}"')
+ .replace("PROJECT_TAG", f'"{_tag}"')
)
return content
@@ -152,14 +160,14 @@ def generate_setup_py(artifacts: Path, setup: SetupData):
# Installing dependencies
install_requires = []
if name == "PySide6":
- install_requires.append(f"shiboken6=={setup.version}")
- install_requires.append(f"PySide6_Essentials=={setup.version}")
- install_requires.append(f"PySide6_Addons=={setup.version}")
+ install_requires.append(f"shiboken6=={setup.version[0]}")
+ install_requires.append(f"PySide6_Essentials=={setup.version[0]}")
+ install_requires.append(f"PySide6_Addons=={setup.version[0]}")
elif _name == "PySide6_Essentials":
- install_requires.append(f"shiboken6=={setup.version}")
+ install_requires.append(f"shiboken6=={setup.version[0]}")
elif _name == "PySide6_Addons":
- install_requires.append(f"shiboken6=={setup.version}")
- install_requires.append(f"PySide6_Essentials=={setup.version}")
+ install_requires.append(f"shiboken6=={setup.version[0]}")
+ install_requires.append(f"PySide6_Essentials=={setup.version[0]}")
# For special wheels based on 'PySide6'
# we force the name to be PySide6 for the package_name,
@@ -183,7 +191,7 @@ def wheel_shiboken_generator() -> Tuple[SetupData, None]:
name="shiboken6_generator",
version=get_version_from_package("shiboken6_generator"),
description="Python/C++ bindings generator",
- long_description="README.shiboken6-generator.md",
+ readme="README.shiboken6-generator.md",
console_scripts=[
"shiboken6 = shiboken6_generator.scripts.shiboken_tool:main",
"shiboken6-genpyi = shiboken6_generator.scripts.shiboken_tool:genpyi",
@@ -198,7 +206,7 @@ def wheel_shiboken_module() -> Tuple[SetupData, None]:
name="shiboken6",
version=get_version_from_package("shiboken6"),
description="Python/C++ bindings helper module",
- long_description="README.shiboken6.md",
+ readme="README.shiboken6.md",
console_scripts=[],
)
@@ -223,7 +231,7 @@ def wheel_pyside6_essentials(packaged_qt_tools_path: Path) -> Tuple[SetupData, L
name="PySide6_Essentials",
version=get_version_from_package("PySide6"), # we use 'PySide6' here
description="Python bindings for the Qt cross-platform application and UI framework (Essentials)",
- long_description="README.pyside6_essentials.md",
+ readme="README.pyside6_essentials.md",
console_scripts=_console_scripts
)
@@ -237,7 +245,7 @@ def wheel_pyside6_addons() -> Tuple[SetupData, List[ModuleData]]:
name="PySide6_Addons",
version=get_version_from_package("PySide6"), # we use 'PySide6' here
description="Python bindings for the Qt cross-platform application and UI framework (Addons)",
- long_description="README.pyside6_addons.md",
+ readme="README.pyside6_addons.md",
console_scripts=[],
)
@@ -251,7 +259,7 @@ def wheel_pyside6() -> Tuple[SetupData, Optional[List[ModuleData]]]:
name="PySide6",
version=get_version_from_package("PySide6"),
description="Python bindings for the Qt cross-platform application and UI framework",
- long_description="README.pyside6.md",
+ readme="README.pyside6.md",
console_scripts=[],
)
@@ -324,11 +332,10 @@ if __name__ == "__main__":
print("Maybe your build used '--skip-packaging'?. Exiting")
sys.exit(-1)
- setup_cfg_path = package_path / "setup.cfg"
setup_py_path = package_path / "setup.py"
+ pyproject_toml_path = package_path / "pyproject.toml"
base_files = [
- artifacts_path / "pyproject.toml",
current_path / "LICENSES/GFDL-1.3-no-invariants-only.txt",
current_path / "LICENSES/LicenseRef-Qt-Commercial.txt",
current_path / "LICENSES/GPL-2.0-only.txt",
@@ -352,19 +359,19 @@ if __name__ == "__main__":
setup, data = wheel_info() if not name=="PySide6_Essentials" else \
wheel_pyside6_essentials(package_path / "PySide6")
- # 1. Generate 'setup.cfg'
- print("-- Generating setup.cfg")
- setup_cfg_content = generate_setup_cfg(artifacts_path, setup)
- with open(setup_cfg_path, "w") as f:
- f.write(setup_cfg_content)
-
# 2. Generate 'setup.py'
print("-- Generating setup.py")
setup_py_content = generate_setup_py(artifacts_path, setup)
with open(setup_py_path, "w") as f:
f.write(setup_py_content)
- # 3. Create the 'MANIFEST.in'
+ # 3. Generate 'pyproject.toml'
+ print("-- Generating pyproject.toml")
+ pyproject_toml_content = generate_pyproject_toml(artifacts_path, setup)
+ with open(pyproject_toml_path, "w") as f:
+ f.write(pyproject_toml_content)
+
+ # 4. Create the 'MANIFEST.in'
# Special case for shiboken and shiboken_generator
# so we copy the whole directory, only PySide and derivatives
# will need to have specific information
@@ -381,13 +388,13 @@ if __name__ == "__main__":
with open(package_path / "MANIFEST.in", "w") as f:
f.write(manifest_content)
- # 4. copy configuration files to create the wheel
+ # 5. copy configuration files to create the wheel
print("-- Copy configuration files to create the wheel")
- _files: List[Path] = base_files + [Path(setup.long_description)]
+ _files: List[Path] = base_files + [Path(setup.readme)]
for fname in _files:
copy(fname, package_path)
- # 5. call the build module to create the wheel
+ # 6. call the build module to create the wheel
# print("-- Creating wheel")
# os.chdir(package_path)
if not verbose:
@@ -398,7 +405,7 @@ if __name__ == "__main__":
builder.build("wheel", "dist_new")
# os.chdir(current_path)
- # 6. Copy wheels back
+ # 7. Copy wheels back
print("-- Copying wheels to dist_new/")
dist_path = Path("dist_new")
if not dist_path.is_dir():
@@ -406,7 +413,7 @@ if __name__ == "__main__":
for wheel in Path(package_path / "dist_new").glob("*.whl"):
copy(wheel, dist_path / wheel.name)
- # 7. Remove leftover files
+ # 8. Remove leftover files
print("-- Removing leftover files")
all_files = set(package_path.glob("*"))
files_to_remove = all_files - {
diff --git a/wheel_artifacts/pyproject.toml b/wheel_artifacts/pyproject.toml
deleted file mode 100644
index 9787c3bdf..000000000
--- a/wheel_artifacts/pyproject.toml
+++ /dev/null
@@ -1,3 +0,0 @@
-[build-system]
-requires = ["setuptools", "wheel"]
-build-backend = "setuptools.build_meta"
diff --git a/wheel_artifacts/pyproject.toml.base b/wheel_artifacts/pyproject.toml.base
new file mode 100644
index 000000000..22da9c895
--- /dev/null
+++ b/wheel_artifacts/pyproject.toml.base
@@ -0,0 +1,61 @@
+[build-system]
+requires = ["setuptools", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = PROJECT_NAME
+authors = [
+ {name = "Qt for Python Team", email = "pyside@qt-project.org"},
+]
+description = PROJECT_DESCRIPTION
+readme = PROJECT_README
+dynamic = ["version"]
+requires-python = ">=3.8, <3.13"
+keywords = ["Qt"]
+license = {text = "LGPL"}
+classifiers = [
+ "Development Status :: 5 - Production/Stable",
+ "Environment :: Console",
+ "Environment :: MacOS X",
+ "Environment :: X11 Applications :: Qt",
+ "Environment :: Win32 (MS Windows)",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)",
+ "License :: Other/Proprietary License",
+ "Operating System :: MacOS :: MacOS X",
+ "Operating System :: POSIX",
+ "Operating System :: POSIX :: Linux",
+ "Operating System :: Microsoft",
+ "Operating System :: Microsoft :: Windows",
+ "Programming Language :: C++",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Topic :: Database",
+ "Topic :: Software Development",
+ "Topic :: Software Development :: Code Generators",
+ "Topic :: Software Development :: Libraries :: Application Frameworks",
+ "Topic :: Software Development :: User Interfaces",
+ "Topic :: Software Development :: Widget Sets",
+]
+
+[project.urls]
+Homepage = "https://pyside.org"
+Documentation = "https://doc.qt.io/qtforpython"
+Repository = "https://code.qt.io/cgit/pyside/pyside-setup.git/"
+Changelog = "https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs"
+Tracker = "https://bugreports.qt.io/projects/PYSIDE"
+
+[tool.distutils.bdist_wheel]
+py_limited_api = "cp38"
+plat_name = PROJECT_TAG
+
+[tool.setuptools.packages]
+find = {}
+
+[tool.setuptools.dynamic]
+version = {attr = PROJECT_VERSION}
diff --git a/wheel_artifacts/setup.cfg.base b/wheel_artifacts/setup.cfg.base
deleted file mode 100644
index d93c23afc..000000000
--- a/wheel_artifacts/setup.cfg.base
+++ /dev/null
@@ -1,55 +0,0 @@
-[metadata]
-name = {name}
-version = {version}
-description = {description}
-url = https://www.pyside.org
-download_url = https://download.qt.io/official_releases/QtForPython
-license = LGPL
-keywords = Qt
-author = Qt for Python Team
-author_email = pyside@qt-project.org
-long_description = file: {long_description}
-long_description_content_type = text/markdown
-ext_modules = None
-projects_urls =
- Documentation = https://doc.qt.io/qtforpython
- Release notes = https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs
- Source = https://code.qt.io/cgit/pyside/pyside-setup.git/
- Tracker = https://bugreports.qt.io/projects/PYSIDE
-classifiers =
- Development Status :: 5 - Production/Stable
- Environment :: Console
- Environment :: MacOS X
- Environment :: X11 Applications :: Qt
- Environment :: Win32 (MS Windows)
- Intended Audience :: Developers
- License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
- License :: Other/Proprietary License
- Operating System :: MacOS :: MacOS X
- Operating System :: POSIX
- Operating System :: POSIX :: Linux
- Operating System :: Microsoft
- Operating System :: Microsoft :: Windows
- Programming Language :: C++
- Programming Language :: Python
- Programming Language :: Python :: 3
- Programming Language :: Python :: 3.8
- Programming Language :: Python :: 3.9
- Programming Language :: Python :: 3.10
- Programming Language :: Python :: 3.11
- Programming Language :: Python :: 3.12
- Topic :: Database
- Topic :: Software Development
- Topic :: Software Development :: Code Generators
- Topic :: Software Development :: Libraries :: Application Frameworks
- Topic :: Software Development :: User Interfaces
- Topic :: Software Development :: Widget Sets
-
-[options]
-packages = find:
-python_requires = >=3.8, <3.13
-include_package_data = True
-
-[bdist_wheel]
-py_limited_api = cp38
-plat_name = {tag}