From 1a6773a02f6e3dc326b3979dcfeba4d606c5d6f4 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 1 Jul 2026 14:15:21 -0500 Subject: [PATCH 01/21] build overhauled --- CMakeLists.txt | 65 ++++++++--------- cmake/get_nwx_cmake.cmake | 72 +++++++++++++++---- {include => cxx/include}/utilities/README.md | 0 .../containers/case_insensitive_map.hpp | 0 .../containers/indexable_container_base.hpp | 0 .../utilities/containers/math_set.hpp | 0 .../utilities/containers/own_or_borrow.hpp | 0 .../include}/utilities/dsl/add.hpp | 0 .../include}/utilities/dsl/binary_op.hpp | 0 .../utilities/dsl/detail_/leaf_holder.hpp | 0 .../include}/utilities/dsl/divide.hpp | 0 .../include}/utilities/dsl/dsl.hpp | 0 .../include}/utilities/dsl/dsl_fwd.hpp | 0 .../include}/utilities/dsl/dsl_traits.hpp | 0 .../include}/utilities/dsl/function_call.hpp | 0 .../include}/utilities/dsl/leaf.hpp | 0 .../include}/utilities/dsl/multiply.hpp | 0 .../include}/utilities/dsl/n_ary_op.hpp | 0 .../include}/utilities/dsl/subtract.hpp | 0 .../include}/utilities/dsl/term.hpp | 0 .../include}/utilities/dsl/term_traits.hpp | 0 .../include}/utilities/iter_tools.hpp | 0 .../utilities/iter_tools/enumerate.hpp | 0 .../include}/utilities/iter_tools/range.hpp | 0 .../include}/utilities/iter_tools/zip.hpp | 0 .../include}/utilities/iterators/README.md | 0 .../iterators/bidirectional_iterator_base.hpp | 0 .../iterators/input_iterator_base.hpp | 0 .../utilities/iterators/offset_iterator.hpp | 0 .../iterators/random_access_iterator_base.hpp | 0 .../utilities/mathematician/integer_utils.hpp | 0 .../include}/utilities/printing/demangler.hpp | 0 .../include}/utilities/printing/print_stl.hpp | 0 .../include}/utilities/printing/print_stl.ipp | 0 .../utilities/printing/word_wrap_stream.hpp | 0 .../utilities/strings/string_tools.hpp | 0 {include => cxx/include}/utilities/timer.hpp | 0 .../utilities/type_traits/is_printable.hpp | 0 .../type_traits/parameter_pack_traits.hpp | 0 .../type_traits/tuple/count_type.hpp | 0 .../utilities/type_traits/tuple/has_type.hpp | 0 .../utilities/type_traits/tuple/is_tuple.hpp | 0 .../utilities/type_traits/tuple/tuple.hpp | 0 .../utilities/type_traits/tuple/tuple_cat.hpp | 0 .../type_traits/tuple/tuple_product.hpp | 0 .../type_traits/tuple/tuple_utilities.hpp | 0 .../utilities/type_traits/tuple/variant.hpp | 0 .../type_traits/type_traits_extensions.hpp | 0 .../type_traits/variant/add_const.hpp | 0 .../utilities/type_traits/variant/cat.hpp | 0 .../utilities/type_traits/variant/decay.hpp | 0 .../type_traits/variant/has_type.hpp | 0 .../type_traits/variant/to_tuple.hpp | 0 .../utilities/type_traits/variant/tuple.hpp | 0 .../utilities/type_traits/variant/variant.hpp | 0 .../type_traits/variant/variant_product.hpp | 0 .../src}/utilities/printing/demangler.cpp | 0 pyproject.toml | 44 ++++++++++++ tests/{ => cxx}/unit_tests/catch.hpp | 0 .../containers/case_insensitive_map.cpp | 0 .../containers/indexable_container_base.cpp | 0 .../unit_tests/containers/math_set.cpp | 0 .../unit_tests/containers/own_or_borrow.cpp | 0 tests/{ => cxx}/unit_tests/dsl/add.cpp | 0 tests/{ => cxx}/unit_tests/dsl/binary_op.cpp | 0 .../unit_tests/dsl/detail_/leaf_holder.cpp | 0 tests/{ => cxx}/unit_tests/dsl/divide.cpp | 0 .../unit_tests/dsl/function_call.cpp | 0 tests/{ => cxx}/unit_tests/dsl/leaf.cpp | 0 tests/{ => cxx}/unit_tests/dsl/multiply.cpp | 0 tests/{ => cxx}/unit_tests/dsl/n_ary_op.cpp | 0 tests/{ => cxx}/unit_tests/dsl/subtract.cpp | 0 tests/{ => cxx}/unit_tests/dsl/term.cpp | 0 .../{ => cxx}/unit_tests/dsl/term_traits.cpp | 0 tests/{ => cxx}/unit_tests/dsl/test_dsl.hpp | 0 .../unit_tests/iter_tools/enumerate.cpp | 0 .../{ => cxx}/unit_tests/iter_tools/range.cpp | 0 tests/{ => cxx}/unit_tests/iter_tools/zip.cpp | 0 .../iterators/bidirectional_iterator_base.cpp | 0 .../iterators/input_iterator_base.cpp | 0 .../unit_tests/iterators/offset_iterator.cpp | 0 .../iterators/random_access_iterator_base.cpp | 0 .../mathematician/integer_utils.cpp | 0 .../unit_tests/printing/demangler.cpp | 0 .../unit_tests/printing/print_stl.cpp | 0 .../unit_tests/printing/word_wrap_stream.cpp | 0 .../unit_tests/strings/string_tools.cpp | 0 tests/{ => cxx}/unit_tests/test_helpers.hpp | 0 tests/{ => cxx}/unit_tests/test_main.cpp | 0 tests/{ => cxx}/unit_tests/timer.cpp | 0 .../type_traits/parameter_pack_traits.cpp | 0 .../type_traits/tuple/count_type.cpp | 0 .../unit_tests/type_traits/tuple/has_type.cpp | 0 .../unit_tests/type_traits/tuple/is_tuple.cpp | 0 .../type_traits/tuple/tuple_cat.cpp | 0 .../type_traits/tuple/tuple_product.cpp | 0 .../type_traits/tuple/tuple_utilities.cpp | 0 .../unit_tests/type_traits/tuple/variant.cpp | 0 .../type_traits/type_traits_extensions.cpp | 0 .../type_traits/variant/add_const.cpp | 0 .../unit_tests/type_traits/variant/cat.cpp | 0 .../unit_tests/type_traits/variant/decay.cpp | 0 .../type_traits/variant/has_type.cpp | 0 .../type_traits/variant/to_tuple.cpp | 0 .../unit_tests/type_traits/variant/tuple.cpp | 0 .../type_traits/variant/variant_product.cpp | 0 106 files changed, 133 insertions(+), 48 deletions(-) rename {include => cxx/include}/utilities/README.md (100%) rename {include => cxx/include}/utilities/containers/case_insensitive_map.hpp (100%) rename {include => cxx/include}/utilities/containers/indexable_container_base.hpp (100%) rename {include => cxx/include}/utilities/containers/math_set.hpp (100%) rename {include => cxx/include}/utilities/containers/own_or_borrow.hpp (100%) rename {include => cxx/include}/utilities/dsl/add.hpp (100%) rename {include => cxx/include}/utilities/dsl/binary_op.hpp (100%) rename {include => cxx/include}/utilities/dsl/detail_/leaf_holder.hpp (100%) rename {include => cxx/include}/utilities/dsl/divide.hpp (100%) rename {include => cxx/include}/utilities/dsl/dsl.hpp (100%) rename {include => cxx/include}/utilities/dsl/dsl_fwd.hpp (100%) rename {include => cxx/include}/utilities/dsl/dsl_traits.hpp (100%) rename {include => cxx/include}/utilities/dsl/function_call.hpp (100%) rename {include => cxx/include}/utilities/dsl/leaf.hpp (100%) rename {include => cxx/include}/utilities/dsl/multiply.hpp (100%) rename {include => cxx/include}/utilities/dsl/n_ary_op.hpp (100%) rename {include => cxx/include}/utilities/dsl/subtract.hpp (100%) rename {include => cxx/include}/utilities/dsl/term.hpp (100%) rename {include => cxx/include}/utilities/dsl/term_traits.hpp (100%) rename {include => cxx/include}/utilities/iter_tools.hpp (100%) rename {include => cxx/include}/utilities/iter_tools/enumerate.hpp (100%) rename {include => cxx/include}/utilities/iter_tools/range.hpp (100%) rename {include => cxx/include}/utilities/iter_tools/zip.hpp (100%) rename {include => cxx/include}/utilities/iterators/README.md (100%) rename {include => cxx/include}/utilities/iterators/bidirectional_iterator_base.hpp (100%) rename {include => cxx/include}/utilities/iterators/input_iterator_base.hpp (100%) rename {include => cxx/include}/utilities/iterators/offset_iterator.hpp (100%) rename {include => cxx/include}/utilities/iterators/random_access_iterator_base.hpp (100%) rename {include => cxx/include}/utilities/mathematician/integer_utils.hpp (100%) rename {include => cxx/include}/utilities/printing/demangler.hpp (100%) rename {include => cxx/include}/utilities/printing/print_stl.hpp (100%) rename {include => cxx/include}/utilities/printing/print_stl.ipp (100%) rename {include => cxx/include}/utilities/printing/word_wrap_stream.hpp (100%) rename {include => cxx/include}/utilities/strings/string_tools.hpp (100%) rename {include => cxx/include}/utilities/timer.hpp (100%) rename {include => cxx/include}/utilities/type_traits/is_printable.hpp (100%) rename {include => cxx/include}/utilities/type_traits/parameter_pack_traits.hpp (100%) rename {include => cxx/include}/utilities/type_traits/tuple/count_type.hpp (100%) rename {include => cxx/include}/utilities/type_traits/tuple/has_type.hpp (100%) rename {include => cxx/include}/utilities/type_traits/tuple/is_tuple.hpp (100%) rename {include => cxx/include}/utilities/type_traits/tuple/tuple.hpp (100%) rename {include => cxx/include}/utilities/type_traits/tuple/tuple_cat.hpp (100%) rename {include => cxx/include}/utilities/type_traits/tuple/tuple_product.hpp (100%) rename {include => cxx/include}/utilities/type_traits/tuple/tuple_utilities.hpp (100%) rename {include => cxx/include}/utilities/type_traits/tuple/variant.hpp (100%) rename {include => cxx/include}/utilities/type_traits/type_traits_extensions.hpp (100%) rename {include => cxx/include}/utilities/type_traits/variant/add_const.hpp (100%) rename {include => cxx/include}/utilities/type_traits/variant/cat.hpp (100%) rename {include => cxx/include}/utilities/type_traits/variant/decay.hpp (100%) rename {include => cxx/include}/utilities/type_traits/variant/has_type.hpp (100%) rename {include => cxx/include}/utilities/type_traits/variant/to_tuple.hpp (100%) rename {include => cxx/include}/utilities/type_traits/variant/tuple.hpp (100%) rename {include => cxx/include}/utilities/type_traits/variant/variant.hpp (100%) rename {include => cxx/include}/utilities/type_traits/variant/variant_product.hpp (100%) rename {src => cxx/src}/utilities/printing/demangler.cpp (100%) create mode 100644 pyproject.toml rename tests/{ => cxx}/unit_tests/catch.hpp (100%) rename tests/{ => cxx}/unit_tests/containers/case_insensitive_map.cpp (100%) rename tests/{ => cxx}/unit_tests/containers/indexable_container_base.cpp (100%) rename tests/{ => cxx}/unit_tests/containers/math_set.cpp (100%) rename tests/{ => cxx}/unit_tests/containers/own_or_borrow.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/add.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/binary_op.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/detail_/leaf_holder.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/divide.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/function_call.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/leaf.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/multiply.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/n_ary_op.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/subtract.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/term.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/term_traits.cpp (100%) rename tests/{ => cxx}/unit_tests/dsl/test_dsl.hpp (100%) rename tests/{ => cxx}/unit_tests/iter_tools/enumerate.cpp (100%) rename tests/{ => cxx}/unit_tests/iter_tools/range.cpp (100%) rename tests/{ => cxx}/unit_tests/iter_tools/zip.cpp (100%) rename tests/{ => cxx}/unit_tests/iterators/bidirectional_iterator_base.cpp (100%) rename tests/{ => cxx}/unit_tests/iterators/input_iterator_base.cpp (100%) rename tests/{ => cxx}/unit_tests/iterators/offset_iterator.cpp (100%) rename tests/{ => cxx}/unit_tests/iterators/random_access_iterator_base.cpp (100%) rename tests/{ => cxx}/unit_tests/mathematician/integer_utils.cpp (100%) rename tests/{ => cxx}/unit_tests/printing/demangler.cpp (100%) rename tests/{ => cxx}/unit_tests/printing/print_stl.cpp (100%) rename tests/{ => cxx}/unit_tests/printing/word_wrap_stream.cpp (100%) rename tests/{ => cxx}/unit_tests/strings/string_tools.cpp (100%) rename tests/{ => cxx}/unit_tests/test_helpers.hpp (100%) rename tests/{ => cxx}/unit_tests/test_main.cpp (100%) rename tests/{ => cxx}/unit_tests/timer.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/parameter_pack_traits.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/tuple/count_type.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/tuple/has_type.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/tuple/is_tuple.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/tuple/tuple_cat.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/tuple/tuple_product.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/tuple/tuple_utilities.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/tuple/variant.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/type_traits_extensions.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/variant/add_const.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/variant/cat.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/variant/decay.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/variant/has_type.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/variant/to_tuple.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/variant/tuple.cpp (100%) rename tests/{ => cxx}/unit_tests/type_traits/variant/variant_product.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0cc453f9..496c606c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2022 NWChemEx-Project +# Copyright 2026 NWChemEx-Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,46 +14,39 @@ cmake_minimum_required(VERSION 3.14) -#Downloads common CMake modules used throughout NWChemEx +# Downloads common CMake modules used throughout NWChemEx. Included before +# project() so nwx_set_version() is available to compute the version. include(cmake/get_nwx_cmake.cmake) -#Sets the version to whatever git thinks it is -include(get_version_from_git) -get_version_from_git(utilities_version "${CMAKE_CURRENT_LIST_DIR}") +# Version from scikit-build-core (wheels/sdists) or the latest git tag. +include(nwx_set_version) +nwx_set_version(utilities_version "${CMAKE_CURRENT_LIST_DIR}") project(utilities VERSION "${utilities_version}" LANGUAGES CXX) -set(CMAKE_CXX_STANDARD 20) - -include(get_cmaize) -include(nwx_cxx_api_docs) - -### Paths ### -set(UTILITIES_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/include") -set(UTILITIES_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/src") - -nwx_cxx_api_docs("${UTILITIES_SOURCE_DIR}" "${UTILITIES_INCLUDE_DIR}") - -### Options ### -cmaize_option_list( - BUILD_TESTING OFF "Should we build the tests?" -) -cmaize_add_library( - ${PROJECT_NAME} - SOURCE_DIR "${UTILITIES_SOURCE_DIR}/${PROJECT_NAME}" - INCLUDE_DIRS "${UTILITIES_INCLUDE_DIR}/${PROJECT_NAME}" -) - -if("${BUILD_TESTING}") - set(UTILITIES_TEST_DIR "${CMAKE_CURRENT_LIST_DIR}/tests/unit_tests") +include(disable_in_source_builds) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_SCAN_FOR_MODULES OFF) - include(get_catch2) +option(BUILD_TESTING "Whether to build the unit tests" OFF) - cmaize_add_tests( - test_unit_${PROJECT_NAME} - SOURCE_DIR "${UTILITIES_TEST_DIR}" - INCLUDE_DIRS "${UTILITIES_SOURCE_DIR}/${PROJECT_NAME}" - DEPENDS Catch2 ${PROJECT_NAME} +# Define the documentation target +include(nwx_cxx_api_docs) +nwx_cxx_api_docs("cxx/include" "cxx/src") + +# Build the library +include(nwx_library) +nwx_library(${PROJECT_NAME} "cxx/include" "cxx/src") + +# Register the C++ tests +if(BUILD_TESTING) + include(catch2_tests_from_dir) + catch2_tests_from_dir( + "unit_test_${PROJECT_NAME}" + "tests/cxx/unit_tests" + ${PROJECT_NAME} + ) + target_include_directories( + "unit_test_${PROJECT_NAME}" PRIVATE + "${CMAKE_CURRENT_LIST_DIR}/cxx/src" ) endif() - -cmaize_add_package(${PROJECT_NAME} NAMESPACE nwx::) diff --git a/cmake/get_nwx_cmake.cmake b/cmake/get_nwx_cmake.cmake index c99674d9..26b614ec 100644 --- a/cmake/get_nwx_cmake.cmake +++ b/cmake/get_nwx_cmake.cmake @@ -1,4 +1,4 @@ -# Copyright 2024 NWChemEx-Project +# Copyright 2026 NWChemEx-Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,18 +14,66 @@ include_guard() +# Puts the shared NWXCMake modules on CMAKE_MODULE_PATH. This runs *before* +# project() so factored helpers (e.g. nwx_set_version) are available to feed +# project(VERSION ...). +# +# Resolution order: +# 1. A pip-installed `nwxcmake` package (query it for its cmake/ dir). An +# editable install (`pip install -e /path/to/NWXCMake`) points at a local +# working copy, so NWXCMake edits are picked up with no git push. +# 2. Fallback: FetchContent from github.com/NWChemEx/NWXCMake. macro(get_nwx_cmake) - include(FetchContent) - FetchContent_Declare( - nwx_cmake - GIT_REPOSITORY https://github.com/NWChemEx/NWXCMake - ) - FetchContent_MakeAvailable(nwx_cmake) - set( - CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${nwx_cmake_SOURCE_DIR}/cmake" - CACHE STRING "" - FORCE - ) + if(NOT _NWX_CMAKE_MODULE_DIR) + # find_package(Python) needs no enabled language, so it is safe here, + # before project(). Request only the interpreter to avoid a dev/compiler + # probe this early. + find_package(Python QUIET COMPONENTS Interpreter) + + set(_gnc_local_dir "") + if(Python_Interpreter_FOUND) + execute_process( + COMMAND "${Python_EXECUTABLE}" -c + "import nwxcmake,sys;sys.stdout.write(nwxcmake.cmake_dir())" + OUTPUT_VARIABLE _gnc_local_dir + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE _gnc_rc + ERROR_QUIET + ) + if(NOT _gnc_rc EQUAL 0) + set(_gnc_local_dir "") + endif() + endif() + + if(_gnc_local_dir AND IS_DIRECTORY "${_gnc_local_dir}") + message(STATUS + "NWXCMake: using local pip package at ${_gnc_local_dir}" + ) + set(_gnc_resolved "${_gnc_local_dir}") + else() + message(STATUS + "NWXCMake: pip package not found; fetching from git" + ) + include(FetchContent) + FetchContent_Declare( + nwx_cmake + GIT_REPOSITORY https://github.com/NWChemEx/NWXCMake + ) + FetchContent_MakeAvailable(nwx_cmake) + set(_gnc_resolved "${nwx_cmake_SOURCE_DIR}/cmake") + endif() + + # Cache the resolved directory (not CMAKE_MODULE_PATH itself) so + # reconfigures are stable. Clear this var (or the build dir) to + # re-resolve after switching between the pip and git sources. + set(_NWX_CMAKE_MODULE_DIR "${_gnc_resolved}" + CACHE INTERNAL "Resolved NWXCMake module directory" + ) + endif() + + # Prepend so NWXCMake modules win; set in the caller's scope (macro), do not + # FORCE-cache CMAKE_MODULE_PATH (avoids accumulating stale entries). + list(PREPEND CMAKE_MODULE_PATH "${_NWX_CMAKE_MODULE_DIR}") endmacro() get_nwx_cmake() diff --git a/include/utilities/README.md b/cxx/include/utilities/README.md similarity index 100% rename from include/utilities/README.md rename to cxx/include/utilities/README.md diff --git a/include/utilities/containers/case_insensitive_map.hpp b/cxx/include/utilities/containers/case_insensitive_map.hpp similarity index 100% rename from include/utilities/containers/case_insensitive_map.hpp rename to cxx/include/utilities/containers/case_insensitive_map.hpp diff --git a/include/utilities/containers/indexable_container_base.hpp b/cxx/include/utilities/containers/indexable_container_base.hpp similarity index 100% rename from include/utilities/containers/indexable_container_base.hpp rename to cxx/include/utilities/containers/indexable_container_base.hpp diff --git a/include/utilities/containers/math_set.hpp b/cxx/include/utilities/containers/math_set.hpp similarity index 100% rename from include/utilities/containers/math_set.hpp rename to cxx/include/utilities/containers/math_set.hpp diff --git a/include/utilities/containers/own_or_borrow.hpp b/cxx/include/utilities/containers/own_or_borrow.hpp similarity index 100% rename from include/utilities/containers/own_or_borrow.hpp rename to cxx/include/utilities/containers/own_or_borrow.hpp diff --git a/include/utilities/dsl/add.hpp b/cxx/include/utilities/dsl/add.hpp similarity index 100% rename from include/utilities/dsl/add.hpp rename to cxx/include/utilities/dsl/add.hpp diff --git a/include/utilities/dsl/binary_op.hpp b/cxx/include/utilities/dsl/binary_op.hpp similarity index 100% rename from include/utilities/dsl/binary_op.hpp rename to cxx/include/utilities/dsl/binary_op.hpp diff --git a/include/utilities/dsl/detail_/leaf_holder.hpp b/cxx/include/utilities/dsl/detail_/leaf_holder.hpp similarity index 100% rename from include/utilities/dsl/detail_/leaf_holder.hpp rename to cxx/include/utilities/dsl/detail_/leaf_holder.hpp diff --git a/include/utilities/dsl/divide.hpp b/cxx/include/utilities/dsl/divide.hpp similarity index 100% rename from include/utilities/dsl/divide.hpp rename to cxx/include/utilities/dsl/divide.hpp diff --git a/include/utilities/dsl/dsl.hpp b/cxx/include/utilities/dsl/dsl.hpp similarity index 100% rename from include/utilities/dsl/dsl.hpp rename to cxx/include/utilities/dsl/dsl.hpp diff --git a/include/utilities/dsl/dsl_fwd.hpp b/cxx/include/utilities/dsl/dsl_fwd.hpp similarity index 100% rename from include/utilities/dsl/dsl_fwd.hpp rename to cxx/include/utilities/dsl/dsl_fwd.hpp diff --git a/include/utilities/dsl/dsl_traits.hpp b/cxx/include/utilities/dsl/dsl_traits.hpp similarity index 100% rename from include/utilities/dsl/dsl_traits.hpp rename to cxx/include/utilities/dsl/dsl_traits.hpp diff --git a/include/utilities/dsl/function_call.hpp b/cxx/include/utilities/dsl/function_call.hpp similarity index 100% rename from include/utilities/dsl/function_call.hpp rename to cxx/include/utilities/dsl/function_call.hpp diff --git a/include/utilities/dsl/leaf.hpp b/cxx/include/utilities/dsl/leaf.hpp similarity index 100% rename from include/utilities/dsl/leaf.hpp rename to cxx/include/utilities/dsl/leaf.hpp diff --git a/include/utilities/dsl/multiply.hpp b/cxx/include/utilities/dsl/multiply.hpp similarity index 100% rename from include/utilities/dsl/multiply.hpp rename to cxx/include/utilities/dsl/multiply.hpp diff --git a/include/utilities/dsl/n_ary_op.hpp b/cxx/include/utilities/dsl/n_ary_op.hpp similarity index 100% rename from include/utilities/dsl/n_ary_op.hpp rename to cxx/include/utilities/dsl/n_ary_op.hpp diff --git a/include/utilities/dsl/subtract.hpp b/cxx/include/utilities/dsl/subtract.hpp similarity index 100% rename from include/utilities/dsl/subtract.hpp rename to cxx/include/utilities/dsl/subtract.hpp diff --git a/include/utilities/dsl/term.hpp b/cxx/include/utilities/dsl/term.hpp similarity index 100% rename from include/utilities/dsl/term.hpp rename to cxx/include/utilities/dsl/term.hpp diff --git a/include/utilities/dsl/term_traits.hpp b/cxx/include/utilities/dsl/term_traits.hpp similarity index 100% rename from include/utilities/dsl/term_traits.hpp rename to cxx/include/utilities/dsl/term_traits.hpp diff --git a/include/utilities/iter_tools.hpp b/cxx/include/utilities/iter_tools.hpp similarity index 100% rename from include/utilities/iter_tools.hpp rename to cxx/include/utilities/iter_tools.hpp diff --git a/include/utilities/iter_tools/enumerate.hpp b/cxx/include/utilities/iter_tools/enumerate.hpp similarity index 100% rename from include/utilities/iter_tools/enumerate.hpp rename to cxx/include/utilities/iter_tools/enumerate.hpp diff --git a/include/utilities/iter_tools/range.hpp b/cxx/include/utilities/iter_tools/range.hpp similarity index 100% rename from include/utilities/iter_tools/range.hpp rename to cxx/include/utilities/iter_tools/range.hpp diff --git a/include/utilities/iter_tools/zip.hpp b/cxx/include/utilities/iter_tools/zip.hpp similarity index 100% rename from include/utilities/iter_tools/zip.hpp rename to cxx/include/utilities/iter_tools/zip.hpp diff --git a/include/utilities/iterators/README.md b/cxx/include/utilities/iterators/README.md similarity index 100% rename from include/utilities/iterators/README.md rename to cxx/include/utilities/iterators/README.md diff --git a/include/utilities/iterators/bidirectional_iterator_base.hpp b/cxx/include/utilities/iterators/bidirectional_iterator_base.hpp similarity index 100% rename from include/utilities/iterators/bidirectional_iterator_base.hpp rename to cxx/include/utilities/iterators/bidirectional_iterator_base.hpp diff --git a/include/utilities/iterators/input_iterator_base.hpp b/cxx/include/utilities/iterators/input_iterator_base.hpp similarity index 100% rename from include/utilities/iterators/input_iterator_base.hpp rename to cxx/include/utilities/iterators/input_iterator_base.hpp diff --git a/include/utilities/iterators/offset_iterator.hpp b/cxx/include/utilities/iterators/offset_iterator.hpp similarity index 100% rename from include/utilities/iterators/offset_iterator.hpp rename to cxx/include/utilities/iterators/offset_iterator.hpp diff --git a/include/utilities/iterators/random_access_iterator_base.hpp b/cxx/include/utilities/iterators/random_access_iterator_base.hpp similarity index 100% rename from include/utilities/iterators/random_access_iterator_base.hpp rename to cxx/include/utilities/iterators/random_access_iterator_base.hpp diff --git a/include/utilities/mathematician/integer_utils.hpp b/cxx/include/utilities/mathematician/integer_utils.hpp similarity index 100% rename from include/utilities/mathematician/integer_utils.hpp rename to cxx/include/utilities/mathematician/integer_utils.hpp diff --git a/include/utilities/printing/demangler.hpp b/cxx/include/utilities/printing/demangler.hpp similarity index 100% rename from include/utilities/printing/demangler.hpp rename to cxx/include/utilities/printing/demangler.hpp diff --git a/include/utilities/printing/print_stl.hpp b/cxx/include/utilities/printing/print_stl.hpp similarity index 100% rename from include/utilities/printing/print_stl.hpp rename to cxx/include/utilities/printing/print_stl.hpp diff --git a/include/utilities/printing/print_stl.ipp b/cxx/include/utilities/printing/print_stl.ipp similarity index 100% rename from include/utilities/printing/print_stl.ipp rename to cxx/include/utilities/printing/print_stl.ipp diff --git a/include/utilities/printing/word_wrap_stream.hpp b/cxx/include/utilities/printing/word_wrap_stream.hpp similarity index 100% rename from include/utilities/printing/word_wrap_stream.hpp rename to cxx/include/utilities/printing/word_wrap_stream.hpp diff --git a/include/utilities/strings/string_tools.hpp b/cxx/include/utilities/strings/string_tools.hpp similarity index 100% rename from include/utilities/strings/string_tools.hpp rename to cxx/include/utilities/strings/string_tools.hpp diff --git a/include/utilities/timer.hpp b/cxx/include/utilities/timer.hpp similarity index 100% rename from include/utilities/timer.hpp rename to cxx/include/utilities/timer.hpp diff --git a/include/utilities/type_traits/is_printable.hpp b/cxx/include/utilities/type_traits/is_printable.hpp similarity index 100% rename from include/utilities/type_traits/is_printable.hpp rename to cxx/include/utilities/type_traits/is_printable.hpp diff --git a/include/utilities/type_traits/parameter_pack_traits.hpp b/cxx/include/utilities/type_traits/parameter_pack_traits.hpp similarity index 100% rename from include/utilities/type_traits/parameter_pack_traits.hpp rename to cxx/include/utilities/type_traits/parameter_pack_traits.hpp diff --git a/include/utilities/type_traits/tuple/count_type.hpp b/cxx/include/utilities/type_traits/tuple/count_type.hpp similarity index 100% rename from include/utilities/type_traits/tuple/count_type.hpp rename to cxx/include/utilities/type_traits/tuple/count_type.hpp diff --git a/include/utilities/type_traits/tuple/has_type.hpp b/cxx/include/utilities/type_traits/tuple/has_type.hpp similarity index 100% rename from include/utilities/type_traits/tuple/has_type.hpp rename to cxx/include/utilities/type_traits/tuple/has_type.hpp diff --git a/include/utilities/type_traits/tuple/is_tuple.hpp b/cxx/include/utilities/type_traits/tuple/is_tuple.hpp similarity index 100% rename from include/utilities/type_traits/tuple/is_tuple.hpp rename to cxx/include/utilities/type_traits/tuple/is_tuple.hpp diff --git a/include/utilities/type_traits/tuple/tuple.hpp b/cxx/include/utilities/type_traits/tuple/tuple.hpp similarity index 100% rename from include/utilities/type_traits/tuple/tuple.hpp rename to cxx/include/utilities/type_traits/tuple/tuple.hpp diff --git a/include/utilities/type_traits/tuple/tuple_cat.hpp b/cxx/include/utilities/type_traits/tuple/tuple_cat.hpp similarity index 100% rename from include/utilities/type_traits/tuple/tuple_cat.hpp rename to cxx/include/utilities/type_traits/tuple/tuple_cat.hpp diff --git a/include/utilities/type_traits/tuple/tuple_product.hpp b/cxx/include/utilities/type_traits/tuple/tuple_product.hpp similarity index 100% rename from include/utilities/type_traits/tuple/tuple_product.hpp rename to cxx/include/utilities/type_traits/tuple/tuple_product.hpp diff --git a/include/utilities/type_traits/tuple/tuple_utilities.hpp b/cxx/include/utilities/type_traits/tuple/tuple_utilities.hpp similarity index 100% rename from include/utilities/type_traits/tuple/tuple_utilities.hpp rename to cxx/include/utilities/type_traits/tuple/tuple_utilities.hpp diff --git a/include/utilities/type_traits/tuple/variant.hpp b/cxx/include/utilities/type_traits/tuple/variant.hpp similarity index 100% rename from include/utilities/type_traits/tuple/variant.hpp rename to cxx/include/utilities/type_traits/tuple/variant.hpp diff --git a/include/utilities/type_traits/type_traits_extensions.hpp b/cxx/include/utilities/type_traits/type_traits_extensions.hpp similarity index 100% rename from include/utilities/type_traits/type_traits_extensions.hpp rename to cxx/include/utilities/type_traits/type_traits_extensions.hpp diff --git a/include/utilities/type_traits/variant/add_const.hpp b/cxx/include/utilities/type_traits/variant/add_const.hpp similarity index 100% rename from include/utilities/type_traits/variant/add_const.hpp rename to cxx/include/utilities/type_traits/variant/add_const.hpp diff --git a/include/utilities/type_traits/variant/cat.hpp b/cxx/include/utilities/type_traits/variant/cat.hpp similarity index 100% rename from include/utilities/type_traits/variant/cat.hpp rename to cxx/include/utilities/type_traits/variant/cat.hpp diff --git a/include/utilities/type_traits/variant/decay.hpp b/cxx/include/utilities/type_traits/variant/decay.hpp similarity index 100% rename from include/utilities/type_traits/variant/decay.hpp rename to cxx/include/utilities/type_traits/variant/decay.hpp diff --git a/include/utilities/type_traits/variant/has_type.hpp b/cxx/include/utilities/type_traits/variant/has_type.hpp similarity index 100% rename from include/utilities/type_traits/variant/has_type.hpp rename to cxx/include/utilities/type_traits/variant/has_type.hpp diff --git a/include/utilities/type_traits/variant/to_tuple.hpp b/cxx/include/utilities/type_traits/variant/to_tuple.hpp similarity index 100% rename from include/utilities/type_traits/variant/to_tuple.hpp rename to cxx/include/utilities/type_traits/variant/to_tuple.hpp diff --git a/include/utilities/type_traits/variant/tuple.hpp b/cxx/include/utilities/type_traits/variant/tuple.hpp similarity index 100% rename from include/utilities/type_traits/variant/tuple.hpp rename to cxx/include/utilities/type_traits/variant/tuple.hpp diff --git a/include/utilities/type_traits/variant/variant.hpp b/cxx/include/utilities/type_traits/variant/variant.hpp similarity index 100% rename from include/utilities/type_traits/variant/variant.hpp rename to cxx/include/utilities/type_traits/variant/variant.hpp diff --git a/include/utilities/type_traits/variant/variant_product.hpp b/cxx/include/utilities/type_traits/variant/variant_product.hpp similarity index 100% rename from include/utilities/type_traits/variant/variant_product.hpp rename to cxx/include/utilities/type_traits/variant/variant_product.hpp diff --git a/src/utilities/printing/demangler.cpp b/cxx/src/utilities/printing/demangler.cpp similarity index 100% rename from src/utilities/printing/demangler.cpp rename to cxx/src/utilities/printing/demangler.cpp diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..b8d06644 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,44 @@ +# Copyright 2026 NWChemEx-Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +[build-system] +requires = [ + "scikit-build-core>=0.10", + "setuptools-scm>=8", + "nwchemex-nwxcmake @ git+https://github.com/NWChemEx/NWXCMake", +] +build-backend = "scikit_build_core.build" + +[project] +name = "nwchemex-utilities" +dynamic = ["version"] +description = "General-purpose C++ utilities for the NWChemEx ecosystem" +license = { text = "Apache-2.0" } +requires-python = ">=3.8" + +[tool.scikit-build] +metadata.version.provider = "scikit_build_core.metadata.setuptools_scm" +cmake.build-type = "Release" +cmake.args = ["-DBUILD_TESTING=OFF"] +# All installed content comes from the CMake install; no pure-Python packages. +wheel.packages = [] +build-dir = "build" + +[tool.setuptools_scm] +fallback_version = "0.0.0" + +# For editable (developer) installs, also build the tests. +[[tool.scikit-build.overrides]] +if.state = "editable" +cmake.args = ["-DBUILD_TESTING=ON"] diff --git a/tests/unit_tests/catch.hpp b/tests/cxx/unit_tests/catch.hpp similarity index 100% rename from tests/unit_tests/catch.hpp rename to tests/cxx/unit_tests/catch.hpp diff --git a/tests/unit_tests/containers/case_insensitive_map.cpp b/tests/cxx/unit_tests/containers/case_insensitive_map.cpp similarity index 100% rename from tests/unit_tests/containers/case_insensitive_map.cpp rename to tests/cxx/unit_tests/containers/case_insensitive_map.cpp diff --git a/tests/unit_tests/containers/indexable_container_base.cpp b/tests/cxx/unit_tests/containers/indexable_container_base.cpp similarity index 100% rename from tests/unit_tests/containers/indexable_container_base.cpp rename to tests/cxx/unit_tests/containers/indexable_container_base.cpp diff --git a/tests/unit_tests/containers/math_set.cpp b/tests/cxx/unit_tests/containers/math_set.cpp similarity index 100% rename from tests/unit_tests/containers/math_set.cpp rename to tests/cxx/unit_tests/containers/math_set.cpp diff --git a/tests/unit_tests/containers/own_or_borrow.cpp b/tests/cxx/unit_tests/containers/own_or_borrow.cpp similarity index 100% rename from tests/unit_tests/containers/own_or_borrow.cpp rename to tests/cxx/unit_tests/containers/own_or_borrow.cpp diff --git a/tests/unit_tests/dsl/add.cpp b/tests/cxx/unit_tests/dsl/add.cpp similarity index 100% rename from tests/unit_tests/dsl/add.cpp rename to tests/cxx/unit_tests/dsl/add.cpp diff --git a/tests/unit_tests/dsl/binary_op.cpp b/tests/cxx/unit_tests/dsl/binary_op.cpp similarity index 100% rename from tests/unit_tests/dsl/binary_op.cpp rename to tests/cxx/unit_tests/dsl/binary_op.cpp diff --git a/tests/unit_tests/dsl/detail_/leaf_holder.cpp b/tests/cxx/unit_tests/dsl/detail_/leaf_holder.cpp similarity index 100% rename from tests/unit_tests/dsl/detail_/leaf_holder.cpp rename to tests/cxx/unit_tests/dsl/detail_/leaf_holder.cpp diff --git a/tests/unit_tests/dsl/divide.cpp b/tests/cxx/unit_tests/dsl/divide.cpp similarity index 100% rename from tests/unit_tests/dsl/divide.cpp rename to tests/cxx/unit_tests/dsl/divide.cpp diff --git a/tests/unit_tests/dsl/function_call.cpp b/tests/cxx/unit_tests/dsl/function_call.cpp similarity index 100% rename from tests/unit_tests/dsl/function_call.cpp rename to tests/cxx/unit_tests/dsl/function_call.cpp diff --git a/tests/unit_tests/dsl/leaf.cpp b/tests/cxx/unit_tests/dsl/leaf.cpp similarity index 100% rename from tests/unit_tests/dsl/leaf.cpp rename to tests/cxx/unit_tests/dsl/leaf.cpp diff --git a/tests/unit_tests/dsl/multiply.cpp b/tests/cxx/unit_tests/dsl/multiply.cpp similarity index 100% rename from tests/unit_tests/dsl/multiply.cpp rename to tests/cxx/unit_tests/dsl/multiply.cpp diff --git a/tests/unit_tests/dsl/n_ary_op.cpp b/tests/cxx/unit_tests/dsl/n_ary_op.cpp similarity index 100% rename from tests/unit_tests/dsl/n_ary_op.cpp rename to tests/cxx/unit_tests/dsl/n_ary_op.cpp diff --git a/tests/unit_tests/dsl/subtract.cpp b/tests/cxx/unit_tests/dsl/subtract.cpp similarity index 100% rename from tests/unit_tests/dsl/subtract.cpp rename to tests/cxx/unit_tests/dsl/subtract.cpp diff --git a/tests/unit_tests/dsl/term.cpp b/tests/cxx/unit_tests/dsl/term.cpp similarity index 100% rename from tests/unit_tests/dsl/term.cpp rename to tests/cxx/unit_tests/dsl/term.cpp diff --git a/tests/unit_tests/dsl/term_traits.cpp b/tests/cxx/unit_tests/dsl/term_traits.cpp similarity index 100% rename from tests/unit_tests/dsl/term_traits.cpp rename to tests/cxx/unit_tests/dsl/term_traits.cpp diff --git a/tests/unit_tests/dsl/test_dsl.hpp b/tests/cxx/unit_tests/dsl/test_dsl.hpp similarity index 100% rename from tests/unit_tests/dsl/test_dsl.hpp rename to tests/cxx/unit_tests/dsl/test_dsl.hpp diff --git a/tests/unit_tests/iter_tools/enumerate.cpp b/tests/cxx/unit_tests/iter_tools/enumerate.cpp similarity index 100% rename from tests/unit_tests/iter_tools/enumerate.cpp rename to tests/cxx/unit_tests/iter_tools/enumerate.cpp diff --git a/tests/unit_tests/iter_tools/range.cpp b/tests/cxx/unit_tests/iter_tools/range.cpp similarity index 100% rename from tests/unit_tests/iter_tools/range.cpp rename to tests/cxx/unit_tests/iter_tools/range.cpp diff --git a/tests/unit_tests/iter_tools/zip.cpp b/tests/cxx/unit_tests/iter_tools/zip.cpp similarity index 100% rename from tests/unit_tests/iter_tools/zip.cpp rename to tests/cxx/unit_tests/iter_tools/zip.cpp diff --git a/tests/unit_tests/iterators/bidirectional_iterator_base.cpp b/tests/cxx/unit_tests/iterators/bidirectional_iterator_base.cpp similarity index 100% rename from tests/unit_tests/iterators/bidirectional_iterator_base.cpp rename to tests/cxx/unit_tests/iterators/bidirectional_iterator_base.cpp diff --git a/tests/unit_tests/iterators/input_iterator_base.cpp b/tests/cxx/unit_tests/iterators/input_iterator_base.cpp similarity index 100% rename from tests/unit_tests/iterators/input_iterator_base.cpp rename to tests/cxx/unit_tests/iterators/input_iterator_base.cpp diff --git a/tests/unit_tests/iterators/offset_iterator.cpp b/tests/cxx/unit_tests/iterators/offset_iterator.cpp similarity index 100% rename from tests/unit_tests/iterators/offset_iterator.cpp rename to tests/cxx/unit_tests/iterators/offset_iterator.cpp diff --git a/tests/unit_tests/iterators/random_access_iterator_base.cpp b/tests/cxx/unit_tests/iterators/random_access_iterator_base.cpp similarity index 100% rename from tests/unit_tests/iterators/random_access_iterator_base.cpp rename to tests/cxx/unit_tests/iterators/random_access_iterator_base.cpp diff --git a/tests/unit_tests/mathematician/integer_utils.cpp b/tests/cxx/unit_tests/mathematician/integer_utils.cpp similarity index 100% rename from tests/unit_tests/mathematician/integer_utils.cpp rename to tests/cxx/unit_tests/mathematician/integer_utils.cpp diff --git a/tests/unit_tests/printing/demangler.cpp b/tests/cxx/unit_tests/printing/demangler.cpp similarity index 100% rename from tests/unit_tests/printing/demangler.cpp rename to tests/cxx/unit_tests/printing/demangler.cpp diff --git a/tests/unit_tests/printing/print_stl.cpp b/tests/cxx/unit_tests/printing/print_stl.cpp similarity index 100% rename from tests/unit_tests/printing/print_stl.cpp rename to tests/cxx/unit_tests/printing/print_stl.cpp diff --git a/tests/unit_tests/printing/word_wrap_stream.cpp b/tests/cxx/unit_tests/printing/word_wrap_stream.cpp similarity index 100% rename from tests/unit_tests/printing/word_wrap_stream.cpp rename to tests/cxx/unit_tests/printing/word_wrap_stream.cpp diff --git a/tests/unit_tests/strings/string_tools.cpp b/tests/cxx/unit_tests/strings/string_tools.cpp similarity index 100% rename from tests/unit_tests/strings/string_tools.cpp rename to tests/cxx/unit_tests/strings/string_tools.cpp diff --git a/tests/unit_tests/test_helpers.hpp b/tests/cxx/unit_tests/test_helpers.hpp similarity index 100% rename from tests/unit_tests/test_helpers.hpp rename to tests/cxx/unit_tests/test_helpers.hpp diff --git a/tests/unit_tests/test_main.cpp b/tests/cxx/unit_tests/test_main.cpp similarity index 100% rename from tests/unit_tests/test_main.cpp rename to tests/cxx/unit_tests/test_main.cpp diff --git a/tests/unit_tests/timer.cpp b/tests/cxx/unit_tests/timer.cpp similarity index 100% rename from tests/unit_tests/timer.cpp rename to tests/cxx/unit_tests/timer.cpp diff --git a/tests/unit_tests/type_traits/parameter_pack_traits.cpp b/tests/cxx/unit_tests/type_traits/parameter_pack_traits.cpp similarity index 100% rename from tests/unit_tests/type_traits/parameter_pack_traits.cpp rename to tests/cxx/unit_tests/type_traits/parameter_pack_traits.cpp diff --git a/tests/unit_tests/type_traits/tuple/count_type.cpp b/tests/cxx/unit_tests/type_traits/tuple/count_type.cpp similarity index 100% rename from tests/unit_tests/type_traits/tuple/count_type.cpp rename to tests/cxx/unit_tests/type_traits/tuple/count_type.cpp diff --git a/tests/unit_tests/type_traits/tuple/has_type.cpp b/tests/cxx/unit_tests/type_traits/tuple/has_type.cpp similarity index 100% rename from tests/unit_tests/type_traits/tuple/has_type.cpp rename to tests/cxx/unit_tests/type_traits/tuple/has_type.cpp diff --git a/tests/unit_tests/type_traits/tuple/is_tuple.cpp b/tests/cxx/unit_tests/type_traits/tuple/is_tuple.cpp similarity index 100% rename from tests/unit_tests/type_traits/tuple/is_tuple.cpp rename to tests/cxx/unit_tests/type_traits/tuple/is_tuple.cpp diff --git a/tests/unit_tests/type_traits/tuple/tuple_cat.cpp b/tests/cxx/unit_tests/type_traits/tuple/tuple_cat.cpp similarity index 100% rename from tests/unit_tests/type_traits/tuple/tuple_cat.cpp rename to tests/cxx/unit_tests/type_traits/tuple/tuple_cat.cpp diff --git a/tests/unit_tests/type_traits/tuple/tuple_product.cpp b/tests/cxx/unit_tests/type_traits/tuple/tuple_product.cpp similarity index 100% rename from tests/unit_tests/type_traits/tuple/tuple_product.cpp rename to tests/cxx/unit_tests/type_traits/tuple/tuple_product.cpp diff --git a/tests/unit_tests/type_traits/tuple/tuple_utilities.cpp b/tests/cxx/unit_tests/type_traits/tuple/tuple_utilities.cpp similarity index 100% rename from tests/unit_tests/type_traits/tuple/tuple_utilities.cpp rename to tests/cxx/unit_tests/type_traits/tuple/tuple_utilities.cpp diff --git a/tests/unit_tests/type_traits/tuple/variant.cpp b/tests/cxx/unit_tests/type_traits/tuple/variant.cpp similarity index 100% rename from tests/unit_tests/type_traits/tuple/variant.cpp rename to tests/cxx/unit_tests/type_traits/tuple/variant.cpp diff --git a/tests/unit_tests/type_traits/type_traits_extensions.cpp b/tests/cxx/unit_tests/type_traits/type_traits_extensions.cpp similarity index 100% rename from tests/unit_tests/type_traits/type_traits_extensions.cpp rename to tests/cxx/unit_tests/type_traits/type_traits_extensions.cpp diff --git a/tests/unit_tests/type_traits/variant/add_const.cpp b/tests/cxx/unit_tests/type_traits/variant/add_const.cpp similarity index 100% rename from tests/unit_tests/type_traits/variant/add_const.cpp rename to tests/cxx/unit_tests/type_traits/variant/add_const.cpp diff --git a/tests/unit_tests/type_traits/variant/cat.cpp b/tests/cxx/unit_tests/type_traits/variant/cat.cpp similarity index 100% rename from tests/unit_tests/type_traits/variant/cat.cpp rename to tests/cxx/unit_tests/type_traits/variant/cat.cpp diff --git a/tests/unit_tests/type_traits/variant/decay.cpp b/tests/cxx/unit_tests/type_traits/variant/decay.cpp similarity index 100% rename from tests/unit_tests/type_traits/variant/decay.cpp rename to tests/cxx/unit_tests/type_traits/variant/decay.cpp diff --git a/tests/unit_tests/type_traits/variant/has_type.cpp b/tests/cxx/unit_tests/type_traits/variant/has_type.cpp similarity index 100% rename from tests/unit_tests/type_traits/variant/has_type.cpp rename to tests/cxx/unit_tests/type_traits/variant/has_type.cpp diff --git a/tests/unit_tests/type_traits/variant/to_tuple.cpp b/tests/cxx/unit_tests/type_traits/variant/to_tuple.cpp similarity index 100% rename from tests/unit_tests/type_traits/variant/to_tuple.cpp rename to tests/cxx/unit_tests/type_traits/variant/to_tuple.cpp diff --git a/tests/unit_tests/type_traits/variant/tuple.cpp b/tests/cxx/unit_tests/type_traits/variant/tuple.cpp similarity index 100% rename from tests/unit_tests/type_traits/variant/tuple.cpp rename to tests/cxx/unit_tests/type_traits/variant/tuple.cpp diff --git a/tests/unit_tests/type_traits/variant/variant_product.cpp b/tests/cxx/unit_tests/type_traits/variant/variant_product.cpp similarity index 100% rename from tests/unit_tests/type_traits/variant/variant_product.cpp rename to tests/cxx/unit_tests/type_traits/variant/variant_product.cpp From df26bf2623c68206ef65136d2a40b6a094f93cdc Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 1 Jul 2026 15:49:41 -0500 Subject: [PATCH 02/21] refactor CMake --- CMakeLists.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 496c606c..3ccb948c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,9 +44,6 @@ if(BUILD_TESTING) "unit_test_${PROJECT_NAME}" "tests/cxx/unit_tests" ${PROJECT_NAME} - ) - target_include_directories( - "unit_test_${PROJECT_NAME}" PRIVATE - "${CMAKE_CURRENT_LIST_DIR}/cxx/src" + PRIVATE_INCLUDES cxx/src ) endif() From 411eedbec1fc31ee14ee9505784edd055b8590a6 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Mon, 6 Jul 2026 15:16:18 -0500 Subject: [PATCH 03/21] code refactorization --- CMakeLists.txt | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ccb948c..7ccfbd40 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,10 +24,7 @@ nwx_set_version(utilities_version "${CMAKE_CURRENT_LIST_DIR}") project(utilities VERSION "${utilities_version}" LANGUAGES CXX) include(disable_in_source_builds) -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_SCAN_FOR_MODULES OFF) - -option(BUILD_TESTING "Whether to build the unit tests" OFF) +include(set_default_nwx_options) # Define the documentation target include(nwx_cxx_api_docs) @@ -38,12 +35,10 @@ include(nwx_library) nwx_library(${PROJECT_NAME} "cxx/include" "cxx/src") # Register the C++ tests -if(BUILD_TESTING) - include(catch2_tests_from_dir) - catch2_tests_from_dir( - "unit_test_${PROJECT_NAME}" - "tests/cxx/unit_tests" - ${PROJECT_NAME} - PRIVATE_INCLUDES cxx/src - ) -endif() +include(catch2_tests_from_dir) +catch2_tests_from_dir( + "unit_test_${PROJECT_NAME}" + "tests/cxx/unit_tests" + ${PROJECT_NAME} + PRIVATE_INCLUDES cxx/src +) From ab461030e301d119c2ae0376a51ce8f0ab97c189 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Tue, 7 Jul 2026 09:25:19 -0500 Subject: [PATCH 04/21] add mac files to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 803d6f08..e4f5b6b8 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,6 @@ install/ # Users commonly store their specific CMake settings in a toolchain file toolchain.cmake + +# These are MacOS files +.DS_Store \ No newline at end of file From d4612ccd99ffba19a74d8cae8513a9ae0ff709b6 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 8 Jul 2026 13:17:09 -0500 Subject: [PATCH 05/21] Retarget NWChemEx/ -> ryanmrichard/ for fork testing; adopt test_nwx_cmake_build Fork-test-only commit: points merge.yaml/pull_request.yaml at the ryanmrichard/.github fork's reusable workflows instead of the real NWChemEx/.github, triggers off build_overhaul (this fork's working branch), and swaps the older test_nwx_library job for test_nwx_cmake_build (run_python_tests disabled; no Python bindings on this branch yet). --- .github/workflows/merge.yaml | 6 +++--- .github/workflows/pull_request.yaml | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index 9e3ee141..34e3b0df 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -18,15 +18,15 @@ name: Merge Workflow on: push: branches: - - master + - build_overhaul jobs: tag-commit: - uses: NWChemEx/.github/.github/workflows/tag.yaml@master + uses: ryanmrichard/.github/.github/workflows/tag.yaml@master secrets: inherit deploy_nwx_docs: - uses: NWChemEx/.github/.github/workflows/deploy_nwx_docs.yaml@master + uses: ryanmrichard/.github/.github/workflows/deploy_nwx_docs.yaml@master with: doc_target: "utilities_cxx_api" secrets: inherit diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index dc0b00c0..93c32f43 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -18,18 +18,18 @@ name: Pull Request Workflow on: pull_request: branches: - - master + - build_overhaul jobs: check_formatting: - uses: NWChemEx/.github/.github/workflows/check_formatting.yaml@master + uses: ryanmrichard/.github/.github/workflows/check_formatting.yaml@master test_nwx_docs: - uses: NWChemEx/.github/.github/workflows/test_nwx_docs.yaml@master + uses: ryanmrichard/.github/.github/workflows/test_nwx_docs.yaml@master with: doc_target: "utilities_cxx_api" - test_library: - uses: NWChemEx/.github/.github/workflows/test_nwx_library.yaml@master + test_cmake_build: + uses: ryanmrichard/.github/.github/workflows/test_nwx_cmake_build.yaml@master with: - compilers: '["gcc-14", "clang-18"]' + run_python_tests: "false" From e6cf406e25877d5451d5094e402a1f32f913755f Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 8 Jul 2026 13:21:06 -0500 Subject: [PATCH 06/21] Trigger CI (diagnostic empty commit) From 532a514ded765f08317a7a03885fc442c396fa05 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 8 Jul 2026 13:23:27 -0500 Subject: [PATCH 07/21] Trigger CI now that fork workflows are enabled From 623a3d0405e9a9a3f6017680d892193c60e82f69 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 8 Jul 2026 13:27:58 -0500 Subject: [PATCH 08/21] Retarget NWXCMake FetchContent fallback to ryanmrichard/ for fork testing The nwx_set_version refactor this branch depends on only exists on ryanmrichard/NWXCMake's master (fork-tested); NWChemEx/NWXCMake's master doesn't have it yet, so the git-fallback FetchContent needs to point at the fork too, same as the CI workflow retargeting. --- cmake/get_nwx_cmake.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/get_nwx_cmake.cmake b/cmake/get_nwx_cmake.cmake index 26b614ec..275cb94b 100644 --- a/cmake/get_nwx_cmake.cmake +++ b/cmake/get_nwx_cmake.cmake @@ -57,7 +57,7 @@ macro(get_nwx_cmake) include(FetchContent) FetchContent_Declare( nwx_cmake - GIT_REPOSITORY https://github.com/NWChemEx/NWXCMake + GIT_REPOSITORY https://github.com/ryanmrichard/NWXCMake ) FetchContent_MakeAvailable(nwx_cmake) set(_gnc_resolved "${nwx_cmake_SOURCE_DIR}/cmake") From e795616365c14e47714bc7fd1373d67494065906 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 8 Jul 2026 13:32:58 -0500 Subject: [PATCH 09/21] Add trailing newline to .gitignore (pre-commit end-of-file-fixer) --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e4f5b6b8..d32658fd 100644 --- a/.gitignore +++ b/.gitignore @@ -48,4 +48,4 @@ install/ toolchain.cmake # These are MacOS files -.DS_Store \ No newline at end of file +.DS_Store From 7e25f1b0cb80d99c69eadd27d867f77bd16d945c Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Thu, 9 Jul 2026 15:42:47 -0500 Subject: [PATCH 10/21] Add TestPyPI publish job to merge.yaml; retarget NWXCMake build dep to fork Co-Authored-By: Claude Sonnet 5 --- .github/workflows/merge.yaml | 25 +++++++++++++++++++++++++ pyproject.toml | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index 34e3b0df..2c26a1e0 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -30,3 +30,28 @@ jobs: with: doc_target: "utilities_cxx_api" secrets: inherit + + platform_matrix: + uses: ryanmrichard/.github/.github/workflows/platform_matrix.yaml@master + + deploy_to_pypi: + needs: [tag-commit, platform_matrix] + strategy: + fail-fast: false + matrix: + include: ${{ fromJSON(needs.platform_matrix.outputs.release_matrix) }} + runs-on: ${{ matrix.os }} + permissions: + id-token: write + steps: + - name: Build PyPI Distribution + uses: ryanmrichard/.github/.github/actions/build_pypi_dist@master + with: + cibw_build: ${{ matrix.cibw_build }} + build_sdist: ${{ matrix.os == 'ubuntu-latest' && 'true' || 'false' }} + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + repository-url: https://test.pypi.org/legacy/ diff --git a/pyproject.toml b/pyproject.toml index b8d06644..04e69b1f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ requires = [ "scikit-build-core>=0.10", "setuptools-scm>=8", - "nwchemex-nwxcmake @ git+https://github.com/NWChemEx/NWXCMake", + "nwchemex-nwxcmake @ git+https://github.com/ryanmrichard/NWXCMake", ] build-backend = "scikit_build_core.build" From 1709f7ab8a36c9d1255fa72538e213d5d12023fc Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Thu, 9 Jul 2026 15:47:49 -0500 Subject: [PATCH 11/21] Use shared deploy_to_pypi.yaml (fixes macOS-leg publish failure) Co-Authored-By: Claude Sonnet 5 --- .github/workflows/merge.yaml | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index 2c26a1e0..03ddb20f 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -31,27 +31,7 @@ jobs: doc_target: "utilities_cxx_api" secrets: inherit - platform_matrix: - uses: ryanmrichard/.github/.github/workflows/platform_matrix.yaml@master - deploy_to_pypi: - needs: [tag-commit, platform_matrix] - strategy: - fail-fast: false - matrix: - include: ${{ fromJSON(needs.platform_matrix.outputs.release_matrix) }} - runs-on: ${{ matrix.os }} - permissions: - id-token: write - steps: - - name: Build PyPI Distribution - uses: ryanmrichard/.github/.github/actions/build_pypi_dist@master - with: - cibw_build: ${{ matrix.cibw_build }} - build_sdist: ${{ matrix.os == 'ubuntu-latest' && 'true' || 'false' }} - - - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 - with: - packages-dir: dist/ - repository-url: https://test.pypi.org/legacy/ + needs: tag-commit + uses: ryanmrichard/.github/.github/workflows/deploy_to_pypi.yaml@master + secrets: inherit From 6e9ea0857f0c16dde0def64739faee8dde6c3087 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Thu, 9 Jul 2026 15:53:06 -0500 Subject: [PATCH 12/21] Inline deploy_to_pypi (reusable workflows unsupported by PyPI trusted publishing) Co-Authored-By: Claude Sonnet 5 --- .github/workflows/merge.yaml | 47 +++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index 03ddb20f..2003f7b8 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -31,7 +31,48 @@ jobs: doc_target: "utilities_cxx_api" secrets: inherit + platform_matrix: + uses: ryanmrichard/.github/.github/workflows/platform_matrix.yaml@master + + build_pypi_dist: + needs: [tag-commit, platform_matrix] + strategy: + fail-fast: false + matrix: + include: ${{ fromJSON(needs.platform_matrix.outputs.release_matrix) }} + runs-on: ${{ matrix.os }} + steps: + - name: Build PyPI Distribution + uses: ryanmrichard/.github/.github/actions/build_pypi_dist@master + with: + cibw_build: ${{ matrix.cibw_build }} + build_sdist: ${{ matrix.os == 'ubuntu-latest' && 'true' || 'false' }} + + - name: Upload Distribution Artifact + uses: actions/upload-artifact@v4 + with: + name: dist-${{ matrix.os }} + path: dist/ + + # A separate, ubuntu-only publish job (rather than a publish step per + # build_pypi_dist leg) because pypa/gh-action-pypi-publish only runs on + # Linux, and because PyPI trusted publishing does not support reusable + # workflows (this job must be defined directly here, not delegated). deploy_to_pypi: - needs: tag-commit - uses: ryanmrichard/.github/.github/workflows/deploy_to_pypi.yaml@master - secrets: inherit + needs: build_pypi_dist + runs-on: ubuntu-latest + permissions: + id-token: write + steps: + - name: Download All Distributions + uses: actions/download-artifact@v4 + with: + pattern: dist-* + path: dist + merge-multiple: true + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + repository-url: https://test.pypi.org/legacy/ From 6a7ef996fd0a4be68c14355b6b4fc9db8c8daa21 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Mon, 3 Aug 2026 11:28:31 -0500 Subject: [PATCH 13/21] update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 04e69b1f..957873f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,4 +41,4 @@ fallback_version = "0.0.0" # For editable (developer) installs, also build the tests. [[tool.scikit-build.overrides]] if.state = "editable" -cmake.args = ["-DBUILD_TESTING=ON"] +cmake.args = ["-DDEVELOPER_SETUP=ON"] From 14f257614a99979fae81f948add183dbf987f6ca Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Mon, 3 Aug 2026 12:16:17 -0500 Subject: [PATCH 14/21] add pre-commit to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index d32658fd..204f627b 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,6 @@ toolchain.cmake # These are MacOS files .DS_Store + +# Automatically installed in dev mode +.pre-commit-config.yaml From 34371f0be6e68c4e36371514e5a05dad98d8431e Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Mon, 3 Aug 2026 12:26:48 -0500 Subject: [PATCH 15/21] update pyproject.toml --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 957873f8..081345a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,9 @@ description = "General-purpose C++ utilities for the NWChemEx ecosystem" license = { text = "Apache-2.0" } requires-python = ">=3.8" +[project.optional-dependencies] +dev = ["pre-commit"] + [tool.scikit-build] metadata.version.provider = "scikit_build_core.metadata.setuptools_scm" cmake.build-type = "Release" From 9dba6ebe7cfef269420799b9f95ad159db758ba4 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Tue, 4 Aug 2026 11:52:20 -0500 Subject: [PATCH 16/21] adds python build --- .github/workflows/pull_request.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 93c32f43..2f02e26b 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -33,3 +33,6 @@ jobs: uses: ryanmrichard/.github/.github/workflows/test_nwx_cmake_build.yaml@master with: run_python_tests: "false" + + test_pip_build: + uses: ryanmrichard/.github/.github/workflows/test_nwx_pip_build.yaml@master From 07286ce325c64c00abbfb554bd40cdb999455b0d Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Tue, 4 Aug 2026 21:45:35 -0500 Subject: [PATCH 17/21] move nwxcmake/pybind11 to project --- pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 081345a2..649a442b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,6 @@ requires = [ "scikit-build-core>=0.10", "setuptools-scm>=8", - "nwchemex-nwxcmake @ git+https://github.com/ryanmrichard/NWXCMake", ] build-backend = "scikit_build_core.build" @@ -26,6 +25,9 @@ dynamic = ["version"] description = "General-purpose C++ utilities for the NWChemEx ecosystem" license = { text = "Apache-2.0" } requires-python = ">=3.8" +dependencies = [ + "nwchemex-nwxcmake @ git+https://github.com/ryanmrichard/NWXCMake", +] [project.optional-dependencies] dev = ["pre-commit"] From defa4ad9bf751f14b462958fcc5a3a82585c4205 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 5 Aug 2026 10:32:29 -0500 Subject: [PATCH 18/21] update nightly --- .github/workflows/nightly.yaml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index 13a475e6..f763743d 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -14,13 +14,20 @@ # name: Nightly Workflow +# Re-runs the same build/test jobs pull_request.yaml runs, on a schedule, to +# catch breakage that originates outside the repo (upstream dependency +# releases, refreshed GitHub runner images) rather than from a code change. +# Keep the job list below in sync with pull_request.yaml. on: schedule: - cron: "0 6 * * *" # Every day at 06:00 UTC (00:00 CST) jobs: - test_library: - uses: NWChemEx/.github/.github/workflows/test_nwx_library.yaml@master + test_cmake_build: + uses: ryanmrichard/.github/.github/workflows/test_nwx_cmake_build.yaml@master with: - compilers: '["gcc-14", "clang-18"]' + run_python_tests: "false" + + test_pip_build: + uses: ryanmrichard/.github/.github/workflows/test_nwx_pip_build.yaml@master From 96099792c67e89f74c4844562b57d55fc67ab9f4 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 5 Aug 2026 14:34:36 -0500 Subject: [PATCH 19/21] Migrate CI and dependencies from ryanmrichard to NWChemEx Repoints this repo's workflows at NWChemEx/.github (landed in NWChemEx/.github#187) instead of the ryanmrichard fork they were developed against, and switches merge.yaml's and pull_request.yaml's branch triggers from build_overhaul to master now that master is the ecosystem's working branch. Drops the test.pypi.org repository-url override on the merge workflow's publish step, so a merge to master publishes to real PyPI -- nwchemex-utilities is free there and a trusted publisher has been registered for it. get_nwx_cmake.cmake's FetchContent fallback and pyproject.toml's runtime dependency both repoint at NWChemEx/NWXCMake; the latter also switches from a git+ dependency to a published floor (nwchemex-nwxcmake>=0.1.0), now that NWXCMake has an actual PyPI release to pin against. --- .github/workflows/merge.yaml | 11 +++++------ .github/workflows/nightly.yaml | 4 ++-- .github/workflows/pull_request.yaml | 10 +++++----- cmake/get_nwx_cmake.cmake | 2 +- pyproject.toml | 2 +- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index 2003f7b8..ab6973ad 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -18,21 +18,21 @@ name: Merge Workflow on: push: branches: - - build_overhaul + - master jobs: tag-commit: - uses: ryanmrichard/.github/.github/workflows/tag.yaml@master + uses: NWChemEx/.github/.github/workflows/tag.yaml@master secrets: inherit deploy_nwx_docs: - uses: ryanmrichard/.github/.github/workflows/deploy_nwx_docs.yaml@master + uses: NWChemEx/.github/.github/workflows/deploy_nwx_docs.yaml@master with: doc_target: "utilities_cxx_api" secrets: inherit platform_matrix: - uses: ryanmrichard/.github/.github/workflows/platform_matrix.yaml@master + uses: NWChemEx/.github/.github/workflows/platform_matrix.yaml@master build_pypi_dist: needs: [tag-commit, platform_matrix] @@ -43,7 +43,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Build PyPI Distribution - uses: ryanmrichard/.github/.github/actions/build_pypi_dist@master + uses: NWChemEx/.github/.github/actions/build_pypi_dist@master with: cibw_build: ${{ matrix.cibw_build }} build_sdist: ${{ matrix.os == 'ubuntu-latest' && 'true' || 'false' }} @@ -75,4 +75,3 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: packages-dir: dist/ - repository-url: https://test.pypi.org/legacy/ diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index f763743d..85a6ad39 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -25,9 +25,9 @@ on: jobs: test_cmake_build: - uses: ryanmrichard/.github/.github/workflows/test_nwx_cmake_build.yaml@master + uses: NWChemEx/.github/.github/workflows/test_nwx_cmake_build.yaml@master with: run_python_tests: "false" test_pip_build: - uses: ryanmrichard/.github/.github/workflows/test_nwx_pip_build.yaml@master + uses: NWChemEx/.github/.github/workflows/test_nwx_pip_build.yaml@master diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 2f02e26b..4314d9bf 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -18,21 +18,21 @@ name: Pull Request Workflow on: pull_request: branches: - - build_overhaul + - master jobs: check_formatting: - uses: ryanmrichard/.github/.github/workflows/check_formatting.yaml@master + uses: NWChemEx/.github/.github/workflows/check_formatting.yaml@master test_nwx_docs: - uses: ryanmrichard/.github/.github/workflows/test_nwx_docs.yaml@master + uses: NWChemEx/.github/.github/workflows/test_nwx_docs.yaml@master with: doc_target: "utilities_cxx_api" test_cmake_build: - uses: ryanmrichard/.github/.github/workflows/test_nwx_cmake_build.yaml@master + uses: NWChemEx/.github/.github/workflows/test_nwx_cmake_build.yaml@master with: run_python_tests: "false" test_pip_build: - uses: ryanmrichard/.github/.github/workflows/test_nwx_pip_build.yaml@master + uses: NWChemEx/.github/.github/workflows/test_nwx_pip_build.yaml@master diff --git a/cmake/get_nwx_cmake.cmake b/cmake/get_nwx_cmake.cmake index 275cb94b..26b614ec 100644 --- a/cmake/get_nwx_cmake.cmake +++ b/cmake/get_nwx_cmake.cmake @@ -57,7 +57,7 @@ macro(get_nwx_cmake) include(FetchContent) FetchContent_Declare( nwx_cmake - GIT_REPOSITORY https://github.com/ryanmrichard/NWXCMake + GIT_REPOSITORY https://github.com/NWChemEx/NWXCMake ) FetchContent_MakeAvailable(nwx_cmake) set(_gnc_resolved "${nwx_cmake_SOURCE_DIR}/cmake") diff --git a/pyproject.toml b/pyproject.toml index 649a442b..1802b514 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ description = "General-purpose C++ utilities for the NWChemEx ecosystem" license = { text = "Apache-2.0" } requires-python = ">=3.8" dependencies = [ - "nwchemex-nwxcmake @ git+https://github.com/ryanmrichard/NWXCMake", + "nwchemex-nwxcmake>=0.1.0", ] [project.optional-dependencies] From 662475c450dbcd6dfab51d2651835bd6b0f888c2 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 5 Aug 2026 14:39:29 -0500 Subject: [PATCH 20/21] Fix CI: skip pytest in test_pip_build (no python test suite) test_pip_build was failing with "pytest: command not found" -- this repo has no tests/ directory and its dev extra doesn't even include pytest, but test_nwx_pip_build.yaml runs pytest by default. Set run_python_tests: "false" here too, matching the override test_cmake_build already had. Same fix in nightly.yaml, which mirrors pull_request.yaml's job list but has never actually run (GitHub only fires schedule triggers from the default branch, which this repo is only just becoming). --- .github/workflows/nightly.yaml | 2 ++ .github/workflows/pull_request.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index 85a6ad39..5e4aacca 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -31,3 +31,5 @@ jobs: test_pip_build: uses: NWChemEx/.github/.github/workflows/test_nwx_pip_build.yaml@master + with: + run_python_tests: "false" diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 4314d9bf..d191d089 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -36,3 +36,5 @@ jobs: test_pip_build: uses: NWChemEx/.github/.github/workflows/test_nwx_pip_build.yaml@master + with: + run_python_tests: "false" From 61f302ac475c378c730321559d006b58f4d122e3 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Wed, 5 Aug 2026 14:44:27 -0500 Subject: [PATCH 21/21] Fix CI: also skip ctest in test_pip_build (no editable-only DEVELOPER_SETUP) Setting run_python_tests: "false" switches pip_build's install to the non-editable "pip install ." path. This repo's pyproject.toml only sets -DDEVELOPER_SETUP=ON for an *editable* install (the [[tool.scikit-build.overrides]] with if.state = "editable"), and DEVELOPER_SETUP is what actually wires up the CMake test targets -- BUILD_TESTING alone isn't enough. So the non-editable install builds with zero CTest tests registered, and run_cmake_tests (still defaulting to "true") then fails with "zero CTest tests were found". test_cmake_build already exercises the real CTest suite directly (DEVELOPER_SETUP=ON unconditionally there), so test_pip_build doesn't need to duplicate it -- set run_cmake_tests: "false" too, so this job only verifies that a plain `pip install .` succeeds. --- .github/workflows/nightly.yaml | 1 + .github/workflows/pull_request.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index 5e4aacca..1ba6e517 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -33,3 +33,4 @@ jobs: uses: NWChemEx/.github/.github/workflows/test_nwx_pip_build.yaml@master with: run_python_tests: "false" + run_cmake_tests: "false" diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index d191d089..7dc1c360 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -38,3 +38,4 @@ jobs: uses: NWChemEx/.github/.github/workflows/test_nwx_pip_build.yaml@master with: run_python_tests: "false" + run_cmake_tests: "false"