From 55e958a2acc38841c7de74e6b20f97dbec1a15ec Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 18:04:54 -0400 Subject: [PATCH 01/14] build: migrate to scikit-build-core Signed-off-by: Jinzhe Zeng --- .pre-commit-config.yaml | 5 +++++ CMakeLists.txt | 25 +++++++++++++++++++++++ mddatasetbuilder/c_stack.cpp | 2 -- mddatasetbuilder/c_stack.h | 2 -- pyproject.toml | 13 +++++++----- setup.py | 39 ------------------------------------ tox.ini | 2 +- 7 files changed, 39 insertions(+), 49 deletions(-) create mode 100644 CMakeLists.txt delete mode 100644 setup.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 362e4df..2b763e5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -38,3 +38,8 @@ repos: hooks: - id: cython-lint - id: double-quote-cython-strings +# CMake +- repo: https://github.com/cheshirekow/cmake-format-precommit + rev: v0.6.13 + hooks: + - id: cmake-format diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1175a6e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.15...3.28) +project(${SKBUILD_PROJECT_NAME} LANGUAGES CXX) + +find_package( + Python + COMPONENTS Interpreter Development.Module + REQUIRED) + +find_package( + Cython + REQUIRED +) + +Cython_compile_pyx( + ${CMAKE_CURRENT_BINARY_DIR}/dps.pyx + OUTPUT_VAR _dps_source_files +) + +python_add_library(dps MODULE ${_dps_source_files} ${CMAKE_CURRENT_BINARY_DIR}/c_stack.cpp WITH_SOABI) +target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 Py_LIMITED_API=0x03070000) +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_definitions(dps PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1) +endif() + +install(TARGETS dps DESTINATION .) \ No newline at end of file diff --git a/mddatasetbuilder/c_stack.cpp b/mddatasetbuilder/c_stack.cpp index 802b3dd..5613106 100644 --- a/mddatasetbuilder/c_stack.cpp +++ b/mddatasetbuilder/c_stack.cpp @@ -1,6 +1,4 @@ -extern "C" { #include "c_stack.h" -} C_Stack::C_Stack() { tail = new Node; diff --git a/mddatasetbuilder/c_stack.h b/mddatasetbuilder/c_stack.h index 979307b..af41219 100644 --- a/mddatasetbuilder/c_stack.h +++ b/mddatasetbuilder/c_stack.h @@ -1,6 +1,5 @@ #include -extern "C" { class C_Stack { private: struct Node { @@ -18,4 +17,3 @@ class C_Stack { int pop(); }; -} diff --git a/pyproject.toml b/pyproject.toml index 679d1a5..8663c6e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] -requires = ["setuptools>=61", "setuptools_scm[toml]>=7", "cython>=3.0.1", "wheel"] -build-backend = "setuptools.build_meta" +requires = ["scikit-build-core>=0.9.0", "cython>=3.0.1"] +build-backend = "scikit-build-core.build" [project] name = "mddatasetbuilder" @@ -43,7 +43,7 @@ homepage = "https://github.com/tongzhugroup/mddatasetbuilder" documentation = "https://mddatasetbuilder.njzjz.win/" repository = "https://github.com/tongzhugroup/mddatasetbuilder" -[project.entry-points.console_scripts] +[project.scripts] datasetbuilder = "mddatasetbuilder.datasetbuilder:_commandline" qmcalc = "mddatasetbuilder.qmcalc:_commandline" preparedeepmd = "mddatasetbuilder.deepmd:_commandline" @@ -57,8 +57,11 @@ test = [ 'fakegaussian>=0.0.3', ] -[tool.setuptools.packages.find] -include = ["mddatasetbuilder*"] +[tool.scikit-build] +minimum-version = "0.9" +wheel.py-api = "cp37" +metadata.version.provider = "scikit_build_core.metadata.setuptools_scm" +sdist.include = ["src/package/_version.py"] [tool.setuptools_scm] write_to = "mddatasetbuilder/_version.py" diff --git a/setup.py b/setup.py deleted file mode 100644 index d704dcd..0000000 --- a/setup.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Use 'pip install .' to install mddatasetbuilder.""" - - -import os - -from setuptools import Extension, setup -from wheel.bdist_wheel import bdist_wheel - - -class bdist_wheel_abi3(bdist_wheel): - """Build the distributed wheel for abi3.""" - - def get_tag(self): - """Get the wheel tag.""" - python, abi, plat = super().get_tag() - - if python.startswith("cp"): - # on CPython, our wheels are abi3 and compatible back to 3.7 - return "cp37", "abi3", plat - - return python, abi, plat - - -if __name__ == "__main__": - define_macros = [("CYTHON_LIMITED_API", "1"), ("Py_LIMITED_API", "0x03070000")] - if os.environ.get("DEBUG", 0): - define_macros.extend((("CYTHON_TRACE", "1"), ("CYTHON_TRACE_NOGIL", "1"))) - setup( - ext_modules=[ - Extension( - "mddatasetbuilder.dps", - sources=["mddatasetbuilder/dps.pyx", "mddatasetbuilder/c_stack.cpp"], - language="c++", - define_macros=define_macros, - py_limited_api=True, - ), - ], - cmdclass={"bdist_wheel": bdist_wheel_abi3}, - ) diff --git a/tox.ini b/tox.ini index f8a977a..257861d 100644 --- a/tox.ini +++ b/tox.ini @@ -9,7 +9,7 @@ passenv = TOXENV GITHUB_* setenv = - DEBUG = 1 + SKBUILD_CMAKE_BUILD_TYPE = Debug usedevelop = true commands = pytest tests --cov --cov-report term --cov-report xml --cov-config={toxinidir}/tox.ini From 37f79c05721acc19251f11f359a700685931ec3c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 20 Apr 2024 22:05:11 +0000 Subject: [PATCH 02/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- CMakeLists.txt | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1175a6e..2571dd2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,20 +6,17 @@ find_package( COMPONENTS Interpreter Development.Module REQUIRED) -find_package( - Cython - REQUIRED -) +find_package(Cython REQUIRED) -Cython_compile_pyx( - ${CMAKE_CURRENT_BINARY_DIR}/dps.pyx - OUTPUT_VAR _dps_source_files -) +cython_compile_pyx(${CMAKE_CURRENT_BINARY_DIR}/dps.pyx OUTPUT_VAR + _dps_source_files) -python_add_library(dps MODULE ${_dps_source_files} ${CMAKE_CURRENT_BINARY_DIR}/c_stack.cpp WITH_SOABI) -target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 Py_LIMITED_API=0x03070000) +python_add_library(dps MODULE ${_dps_source_files} + ${CMAKE_CURRENT_BINARY_DIR}/c_stack.cpp WITH_SOABI) +target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 + Py_LIMITED_API=0x03070000) if(CMAKE_BUILD_TYPE STREQUAL "Debug") - target_compile_definitions(dps PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1) + target_compile_definitions(dps PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1) endif() -install(TARGETS dps DESTINATION .) \ No newline at end of file +install(TARGETS dps DESTINATION .) From 694a6b0896cc4c11ef8bcaa5dfa8f689ea540edd Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 18:06:56 -0400 Subject: [PATCH 03/14] fix pyproject.toml Signed-off-by: Jinzhe Zeng --- pyproject.toml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8663c6e..6626192 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,10 @@ [build-system] -requires = ["scikit-build-core>=0.9.0", "cython>=3.0.1"] -build-backend = "scikit-build-core.build" +requires = [ + "scikit-build-core>=0.9.0", + "cython>=3.0.1", + "cython-cmake", +] +build-backend = "scikit_build_core.build" [project] name = "mddatasetbuilder" From f7142289ad2cfdea393be4a4d3b103e4a31ca548 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 18:36:32 -0400 Subject: [PATCH 04/14] fix build Signed-off-by: Jinzhe Zeng --- CMakeLists.txt | 14 +++++++++----- pyproject.toml | 1 - 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2571dd2..c8bd993 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,12 +6,16 @@ find_package( COMPONENTS Interpreter Development.Module REQUIRED) -find_package(Cython REQUIRED) +add_custom_command( +OUTPUT dps.cpp +COMMENT + "Making ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp from ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/dps.pyx" +COMMAND Python::Interpreter -m cython + "${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/dps.pyx" --output-file dps.cpp +DEPENDS mddatasetbuilder/dps.pyx +VERBATIM) -cython_compile_pyx(${CMAKE_CURRENT_BINARY_DIR}/dps.pyx OUTPUT_VAR - _dps_source_files) - -python_add_library(dps MODULE ${_dps_source_files} +python_add_library(dps MODULE ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp ${CMAKE_CURRENT_BINARY_DIR}/c_stack.cpp WITH_SOABI) target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 Py_LIMITED_API=0x03070000) diff --git a/pyproject.toml b/pyproject.toml index 6626192..d4f7bc8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,6 @@ requires = [ "scikit-build-core>=0.9.0", "cython>=3.0.1", - "cython-cmake", ] build-backend = "scikit_build_core.build" From 73824f83134de6bf34e5fbbf52f60b9395011ac1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 20 Apr 2024 22:36:41 +0000 Subject: [PATCH 05/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- CMakeLists.txt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c8bd993..fead350 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,13 +7,14 @@ find_package( REQUIRED) add_custom_command( -OUTPUT dps.cpp -COMMENT + OUTPUT dps.cpp + COMMENT "Making ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp from ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/dps.pyx" -COMMAND Python::Interpreter -m cython - "${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/dps.pyx" --output-file dps.cpp -DEPENDS mddatasetbuilder/dps.pyx -VERBATIM) + COMMAND + Python::Interpreter -m cython + "${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/dps.pyx" --output-file dps.cpp + DEPENDS mddatasetbuilder/dps.pyx + VERBATIM) python_add_library(dps MODULE ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp ${CMAKE_CURRENT_BINARY_DIR}/c_stack.cpp WITH_SOABI) From ef50a673fa71df04a23e02199f6ef63bd4e02511 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 18:38:45 -0400 Subject: [PATCH 06/14] fix the directory of c_stack.cpp Signed-off-by: Jinzhe Zeng --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fead350..7d03b12 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ add_custom_command( VERBATIM) python_add_library(dps MODULE ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp - ${CMAKE_CURRENT_BINARY_DIR}/c_stack.cpp WITH_SOABI) +${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/c_stack.cpp WITH_SOABI) target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 Py_LIMITED_API=0x03070000) if(CMAKE_BUILD_TYPE STREQUAL "Debug") From feeb1b4cd2390aad1ee343cef8693dee9e56c011 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 20 Apr 2024 22:39:19 +0000 Subject: [PATCH 07/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d03b12..a1811ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,8 +16,9 @@ add_custom_command( DEPENDS mddatasetbuilder/dps.pyx VERBATIM) -python_add_library(dps MODULE ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp -${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/c_stack.cpp WITH_SOABI) +python_add_library( + dps MODULE ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/c_stack.cpp WITH_SOABI) target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 Py_LIMITED_API=0x03070000) if(CMAKE_BUILD_TYPE STREQUAL "Debug") From 408aecc9417dbedd0f20371c1b66ef30b72e0a68 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 18:40:31 -0400 Subject: [PATCH 08/14] add include dir Signed-off-by: Jinzhe Zeng --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a1811ab..585bca1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ add_custom_command( python_add_library( dps MODULE ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/c_stack.cpp WITH_SOABI) +target_include_directories(dps PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder) target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 Py_LIMITED_API=0x03070000) if(CMAKE_BUILD_TYPE STREQUAL "Debug") From 8391344bfef94eecbeb6f77ed8646321009200d6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 20 Apr 2024 22:40:39 +0000 Subject: [PATCH 09/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 585bca1..12c7767 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,7 +19,8 @@ add_custom_command( python_add_library( dps MODULE ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/c_stack.cpp WITH_SOABI) -target_include_directories(dps PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder) +target_include_directories(dps + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder) target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 Py_LIMITED_API=0x03070000) if(CMAKE_BUILD_TYPE STREQUAL "Debug") From 5101182e046339deb6283716581cf825c679c3e5 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 18:42:03 -0400 Subject: [PATCH 10/14] fix destination Signed-off-by: Jinzhe Zeng --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 12c7767..5c823c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,4 +27,4 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_definitions(dps PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1) endif() -install(TARGETS dps DESTINATION .) +install(TARGETS dps DESTINATION mddatasetbuilder/) From 3dc500fc43c6ffdb492d8571c656f275e15b36dc Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 18:45:32 -0400 Subject: [PATCH 11/14] fix typo Signed-off-by: Jinzhe Zeng --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d4f7bc8..185ddda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,7 @@ test = [ minimum-version = "0.9" wheel.py-api = "cp37" metadata.version.provider = "scikit_build_core.metadata.setuptools_scm" -sdist.include = ["src/package/_version.py"] +sdist.include = ["mddatasetbuilder/_version.py"] [tool.setuptools_scm] write_to = "mddatasetbuilder/_version.py" From 7b42c2d290e5c6bf5b24ba668568766b33eb03a7 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 19:13:40 -0400 Subject: [PATCH 12/14] set USE_SABI Signed-off-by: Jinzhe Zeng --- CMakeLists.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c823c5..1e1a265 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ project(${SKBUILD_PROJECT_NAME} LANGUAGES CXX) find_package( Python - COMPONENTS Interpreter Development.Module + COMPONENTS Interpreter Development.SABIModule REQUIRED) add_custom_command( @@ -17,12 +17,11 @@ add_custom_command( VERBATIM) python_add_library( - dps MODULE ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp + dps MODULE USE_SABI 3.7 ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/c_stack.cpp WITH_SOABI) target_include_directories(dps PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder) -target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1 - Py_LIMITED_API=0x03070000) +target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1) if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_definitions(dps PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1) endif() From 20585c07d96e8d00c952b25fe4118d0fcc575e78 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 20 Apr 2024 23:13:49 +0000 Subject: [PATCH 13/14] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e1a265..01825ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,8 +17,13 @@ add_custom_command( VERBATIM) python_add_library( - dps MODULE USE_SABI 3.7 ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/c_stack.cpp WITH_SOABI) + dps + MODULE + USE_SABI + 3.7 + ${CMAKE_CURRENT_BINARY_DIR}/dps.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder/c_stack.cpp + WITH_SOABI) target_include_directories(dps PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/mddatasetbuilder) target_compile_definitions(dps PRIVATE CYTHON_LIMITED_API=1) From d51305f48e340f0c55727b2ec46681ef321891c3 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Sat, 20 Apr 2024 19:14:56 -0400 Subject: [PATCH 14/14] set cmake version Signed-off-by: Jinzhe Zeng --- CMakeLists.txt | 2 +- pyproject.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 01825ad..ba22636 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.15...3.28) +cmake_minimum_required(VERSION 3.26...3.28) project(${SKBUILD_PROJECT_NAME} LANGUAGES CXX) find_package( diff --git a/pyproject.toml b/pyproject.toml index 185ddda..b680196 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,6 +65,7 @@ minimum-version = "0.9" wheel.py-api = "cp37" metadata.version.provider = "scikit_build_core.metadata.setuptools_scm" sdist.include = ["mddatasetbuilder/_version.py"] +cmake.version = ">=3.26" [tool.setuptools_scm] write_to = "mddatasetbuilder/_version.py"