From 287341a7c406f6fd406be7e370ef036bc481c914 Mon Sep 17 00:00:00 2001 From: Jonathan Stone Date: Thu, 19 Feb 2026 07:53:50 -0800 Subject: [PATCH] Migrate Python packaging to `pyproject.toml` This changelist migrates the MaterialX Python packaging configuration from the legacy `setup.py` script to the modern `pyproject.toml` standard, as defined in PEP 517 and PEP 621. --- python/CMakeLists.txt | 4 ++-- python/MaterialX/MANIFEST.in | 1 - python/pyproject.toml.in | 13 +++++++++++++ python/setup.py.in | 18 ------------------ 4 files changed, 15 insertions(+), 21 deletions(-) delete mode 100644 python/MaterialX/MANIFEST.in create mode 100644 python/pyproject.toml.in delete mode 100644 python/setup.py.in diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index f0b6de07dd..a2e8f58d24 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -12,7 +12,7 @@ if(SKBUILD) endif() if(MATERIALX_INSTALL_PYTHON AND PYTHON_EXECUTABLE AND NOT SKBUILD) - set(SETUP_PY "${CMAKE_INSTALL_PREFIX}/python/setup.py") - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in" "${SETUP_PY}") + set(PYPROJECT_TOML "${CMAKE_INSTALL_PREFIX}/python/pyproject.toml") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pyproject.toml.in" "${PYPROJECT_TOML}") install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install . WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/python)") endif() diff --git a/python/MaterialX/MANIFEST.in b/python/MaterialX/MANIFEST.in deleted file mode 100644 index 576179d13a..0000000000 --- a/python/MaterialX/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -recursive-include libraries diff --git a/python/pyproject.toml.in b/python/pyproject.toml.in new file mode 100644 index 0000000000..f0f65abd6a --- /dev/null +++ b/python/pyproject.toml.in @@ -0,0 +1,13 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + +[project] +name = "MaterialX" +version = "${MATERIALX_MAJOR_VERSION}.${MATERIALX_MINOR_VERSION}.${MATERIALX_BUILD_VERSION}" + +[tool.setuptools] +packages = ["MaterialX"] + +[tool.setuptools.package-data] +MaterialX = ["**/*"] diff --git a/python/setup.py.in b/python/setup.py.in deleted file mode 100644 index 072bafa968..0000000000 --- a/python/setup.py.in +++ /dev/null @@ -1,18 +0,0 @@ -from setuptools import setup -import os - -os.chdir(os.path.dirname(os.path.abspath(__file__))) - -def getRecursivePackageData(root): - packageData = [] - for dirpath, dirnames, filenames in os.walk(root): - relpath = os.path.relpath(dirpath, root) - packageData.append(os.path.join(relpath, '*.*')) - return packageData - -setup(name='MaterialX', - url='www.materialx.org', - version='${MATERIALX_MAJOR_VERSION}.${MATERIALX_MINOR_VERSION}.${MATERIALX_BUILD_VERSION}', - packages=['MaterialX'], - package_data={'MaterialX' : getRecursivePackageData('MaterialX')}, - zip_safe = False)