Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
709a434
first pass
ryanmrichard Jul 2, 2026
92fc44c
adds upstream dependencies
ryanmrichard Jul 2, 2026
b46207b
Migrate to fork-tested CI/CD + TestPyPI publish infrastructure
ryanmrichard Jul 11, 2026
f081dcf
Fix docs autoapi_dirs stale src/ path; add extra_index_url to build_p…
ryanmrichard Jul 11, 2026
6b23819
Re-trigger CI with build_pypi_dist Python-version fix
ryanmrichard Jul 11, 2026
0a53a25
Add numpy to the test extra
ryanmrichard Jul 11, 2026
c5b9bfc
Pin test_python job's Python to 3.12, matching the ecosystem's publis…
ryanmrichard Jul 11, 2026
50d6e33
TEMPORARY: add diagnostic step to isolate MPI/RuntimeView crash
ryanmrichard Jul 12, 2026
7ce2708
TEMPORARY: fetch OpenMPI help text and set OPAL_PREFIX to unmask real…
ryanmrichard Jul 12, 2026
e115884
TEMPORARY: extend RuntimeView diagnostics with pip list, ldd hash, MC…
ryanmrichard Jul 12, 2026
df356c2
Remove TEMPORARY RuntimeView diagnostic step
ryanmrichard Jul 12, 2026
fd7588d
TEMPORARY: re-add narrow RuntimeView/chemist/tensorwrapper import dia…
ryanmrichard Jul 13, 2026
6894add
TEMPORARY: expand diagnostic to trace which libmpi.so is actually loaded
ryanmrichard Jul 13, 2026
206673c
TEMPORARY: fix broken-pipe in diagnostic, add ompi_info prefix check,…
ryanmrichard Jul 13, 2026
8a04bda
Remove TEMPORARY RuntimeView/RPATH diagnostic step
ryanmrichard Jul 13, 2026
b75a843
Fix NWChem-via-MolSSI module key casing regression, enable real NWChe…
ryanmrichard Jul 13, 2026
974049d
test_python: install molssi+ase extras so real NWChem gets exercised
ryanmrichard Jul 13, 2026
f6d0cb4
pytest: ignore ase's own numpy 2.5 shape-deprecation warning
ryanmrichard Jul 14, 2026
740082c
use fork
ryanmrichard Jul 15, 2026
7c59b96
add pre-commit to gitignore
ryanmrichard Aug 3, 2026
a8e0045
update nightly
ryanmrichard Aug 5, 2026
f2852c7
Migrate CI/CD to NWChemEx org, master branch, real PyPI
ryanmrichard Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 20 additions & 2 deletions .github/workflows/merge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,24 @@ jobs:
deploy_nwx_docs:
uses: NWChemEx/.github/.github/workflows/deploy_nwx_docs.yaml@master
with:
doc_target: "friendzone_cxx_api"
generate_module_docs: true
doc_target: "Sphinx"
secrets: inherit

# No platform_matrix / cibw_build needed: FriendZone is pure Python, so
# build_pypi_dist's plain path (cibw_build left unset) applies -- a single
# platform-independent sdist+wheel, same shape as NWXCMake's own working
# merge.yaml.
deploy_to_pypi:
needs: tag-commit
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Build PyPI Distribution
uses: NWChemEx/.github/.github/actions/build_pypi_dist@master
with:

- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist/
11 changes: 7 additions & 4 deletions .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,16 @@
#

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.
# Both callers share test_python_build.yaml, so there is nothing to keep in
# sync by hand.

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
with:
compilers: '["gcc-14", "clang-18"]'
test_python_build:
uses: ./.github/workflows/test_python_build.yaml
10 changes: 5 additions & 5 deletions .github/workflows/pull_request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ jobs:
test_nwx_docs:
uses: NWChemEx/.github/.github/workflows/test_nwx_docs.yaml@master
with:
doc_target: "friendzone_cxx_api"
doc_target: "Sphinx"

test_library:
uses: NWChemEx/.github/.github/workflows/test_nwx_library.yaml@master
with:
compilers: '["gcc-14", "clang-18"]'
# Shared with nightly.yaml -- see that file's comments for why this repo
# doesn't use the shared test_nwx_cmake_build/test_nwx_pip_build workflows.
test_python_build:
uses: ./.github/workflows/test_python_build.yaml
103 changes: 103 additions & 0 deletions .github/workflows/test_python_build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# 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.
#

name: Test Python Build
# Builds FriendZone's distribution and runs its test suite. pull_request.yaml
# and nightly.yaml both need exactly these jobs, so they live here instead of
# being duplicated in each.
#
# This is a repo-local reusable workflow rather than one of the shared
# NWChemEx/.github ones because FriendZone is pure Python (no CMakeLists.txt):
# test_nwx_cmake_build/test_nwx_pip_build both drive a scikit-build-core CMake
# build and don't apply. It isn't a composite action because the duplication
# includes the job's matrix and runs-on, which an action can't own.
#
# Callers reference it as `uses: ./.github/workflows/test_python_build.yaml`,
# which resolves at the caller's own commit -- so a PR that edits this file
# tests the edited version.

on:
workflow_call:

jobs:
# Dry-run of the actual sdist/wheel build (not just an editable install via
# test_python below) -- catches e.g. files missing from the sdist manifest
# that an editable install wouldn't. Matches NWXCMake's own pull_request.yaml.
test_pypi_deploy:
runs-on: ubuntu-latest
steps:
- name: Build PyPI Distribution
uses: NWChemEx/.github/.github/actions/build_pypi_dist@master

# FriendZone is pure Python (no CMakeLists.txt), so there's nothing to
# compile and the compiler axis of the shared dev matrix is meaningless
# here -- just a lean OS-only matrix. setup_nwx_dev_env still runs (via its
# unconditional MPI/Boost install) because nwchemex-simde's prebuilt wheel
# dynamically links against libmpi at import time, and bare GitHub runners
# have no MPI by default.
test_python:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Source
uses: actions/checkout@v4
with:
fetch-depth: 0
# Pinned to 3.12, not "3.x" (whatever's newest, e.g. 3.14 today):
# nwchemex-simde and its own transitive deps are only published as
# prebuilt wheels for cp312 (platform_matrix.yaml's release_matrix).
# Under a newer ambient Python, pip falls back to building those from
# source, which succeeds (setup_nwx_dev_env provides MPI/Boost/etc.)
# but produces a binary missing the rpath-bundled shared libs that
# cibuildwheel+delocate/auditwheel normally provide for the real
# published wheel, so it fails to import at runtime.
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup NWX Dev Environment
uses: NWChemEx/.github/.github/actions/setup_nwx_dev_env@master
with:
compiler: gcc-14
needs_nwchem: "true"
- name: Sanity-check NWChem Is On PATH
shell: bash
run: which nwchem
- name: Install
shell: bash
run: |
# molssi/ase are optional friends (extra deps only needed if the
# corresponding external program is present); install them
# explicitly here since needs_nwchem above means this job now has
# a real NWChem to exercise both wrapper paths against, rather
# than everything just no-op'ing via is_molssi_enabled()/
# is_ase_enabled().
pip install -e ".[dev,molssi,ase]"
- name: Test Python
shell: bash
run: |
set +e
pytest -v
pytest_exit=$?
set -e

if [ "$pytest_exit" -eq 5 ]; then
echo "::error::zero pytest tests were found."
exit 1
fi
exit "$pytest_exit"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,6 @@ uuid.db

# This is a generated file
# src/python/friendzone/friends.py

# Automatically installed in dev mode
.pre-commit-config.yaml
84 changes: 0 additions & 84 deletions CMakeLists.txt

This file was deleted.

32 changes: 0 additions & 32 deletions cmake/ase.cmake

This file was deleted.

31 changes: 0 additions & 31 deletions cmake/get_nwx_cmake.cmake

This file was deleted.

36 changes: 0 additions & 36 deletions cmake/molssi.cmake

This file was deleted.

30 changes: 0 additions & 30 deletions cmake/nwchem.cmake

This file was deleted.

Loading
Loading