From cf50b318d25e3c3328e263df2fcd6e9af192e93e Mon Sep 17 00:00:00 2001 From: John Stilley Date: Wed, 17 Dec 2025 13:24:47 -0800 Subject: [PATCH 01/14] Testing SCR troubles --- doc/.static/automateScr.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/.static/automateScr.py b/doc/.static/automateScr.py index 79e71f4ea..90e51b6d6 100644 --- a/doc/.static/automateScr.py +++ b/doc/.static/automateScr.py @@ -68,8 +68,7 @@ def main(): prNum = int(args.prNum) pastCommit = args.pastCommit - rstContent = buildScrListing(prNum, pastCommit) - print(rstContent) + buildScrListing(prNum, pastCommit) def _findOneLineData(lines: list, prNum: str, key: str): @@ -254,7 +253,10 @@ def buildScrListing(thisPrNum: int, pastCommit: str): content += line content += "\n\n" - return content + "\n\n" + content += "\n\n" + + print(content) + return content if __name__ == "__main__": From a3014ca1b1ee84aa37d02b4720f237e8cebc398b Mon Sep 17 00:00:00 2001 From: John Stilley Date: Wed, 17 Dec 2025 13:25:52 -0800 Subject: [PATCH 02/14] Trying to speed up testing cycle --- .github/workflows/coverage.yaml | 52 ------------------------- .github/workflows/docs.yaml | 4 +- .github/workflows/licensechecker.yaml | 14 ------- .github/workflows/stale.yaml | 29 -------------- .github/workflows/validatemanifest.yaml | 22 ----------- .github/workflows/wintests.yaml | 39 ------------------- 6 files changed, 2 insertions(+), 158 deletions(-) delete mode 100644 .github/workflows/coverage.yaml delete mode 100644 .github/workflows/licensechecker.yaml delete mode 100644 .github/workflows/stale.yaml delete mode 100644 .github/workflows/validatemanifest.yaml delete mode 100644 .github/workflows/wintests.yaml diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml deleted file mode 100644 index 8f85dfe09..000000000 --- a/.github/workflows/coverage.yaml +++ /dev/null @@ -1,52 +0,0 @@ -name: Coverage - -permissions: - contents: read - -on: - push: - branches: - - main - paths-ignore: - - 'doc/**' - pull_request: - paths-ignore: - - 'doc/**' - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build: - # Deploying coverage to coveralls.io should not happen on forks - if: github.repository == 'terrapower/armi' - runs-on: ubuntu-24.04 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: '3.11' - - name: Install ARMI and MPI - run: | - sudo apt-get -y install libopenmpi-dev - pip install -e .[memprof,mpi,test] - - name: Run Coverage - run: | - set -x - coverage run --rcfile=pyproject.toml -m pytest -n 4 --cov=armi --cov-config=pyproject.toml --cov-report=lcov --ignore=venv armi - mpiexec -n 2 --use-hwthread-cpus coverage run --rcfile=pyproject.toml -m pytest --cov=armi --cov-config=pyproject.toml --cov-report=lcov --cov-append --ignore=venv armi/tests/test_mpiFeatures.py || true - mpiexec -n 2 --use-hwthread-cpus coverage run --rcfile=pyproject.toml -m pytest --cov=armi --cov-config=pyproject.toml --cov-report=lcov --cov-append --ignore=venv armi/tests/test_mpiParameters.py || true - mpiexec -n 2 --use-hwthread-cpus coverage run --rcfile=pyproject.toml -m pytest --cov=armi --cov-config=pyproject.toml --cov-report=lcov --cov-append --ignore=venv armi/tests/test_mpiDirectoryChangers.py || true - coverage combine --rcfile=pyproject.toml --keep -a - coverage report --rcfile=pyproject.toml -i --skip-empty --skip-covered --sort=cover --fail-under=90 - - name: Publish to coveralls.io - if: github.ref == 'refs/heads/main' - uses: coverallsapp/github-action@v2 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - file: coverage.lcov diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index e4e7c3575..9a490b65e 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -40,9 +40,9 @@ jobs: pip install -e .[memprof,mpi,test,docs] echo "Run unit tests..." - pytest --junit-xml=test_results.xml -v -n 4 armi > pytest_verbose.log + pytest --junit-xml=test_results.xml -v -n 4 armi/tests/ > pytest_verbose.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi1.xml armi/tests/test_mpiFeatures.py > pytest_verbose_mpi1.log - mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi2.xml armi/tests/test_mpiParameters.py > pytest_verbose_mpi2.log + #mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi2.xml armi/tests/test_mpiParameters.py > pytest_verbose_mpi2.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi3.xml armi/utils/tests/test_directoryChangersMpi.py > pytest_verbose_mpi3.log python doc/.static/cleanup_test_results.py test_results.xml diff --git a/.github/workflows/licensechecker.yaml b/.github/workflows/licensechecker.yaml deleted file mode 100644 index e9eea4134..000000000 --- a/.github/workflows/licensechecker.yaml +++ /dev/null @@ -1,14 +0,0 @@ -name: Check License Lines - -permissions: - contents: read - -on: [push] - -jobs: - check-license-lines: - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@master - - name: Check License Lines - uses: kt3k/license_checker@v1.0.6 diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml deleted file mode 100644 index 2adea167e..000000000 --- a/.github/workflows/stale.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# This workflow warns and then closes PRs that have had no activity for a specified amount of time. -# -# You can adjust the behavior by modifying this file. -# For more information, see: https://github.com/actions/stale -name: Mark Stale PRs - -on: - schedule: - # once a day at 3:14 AM - - cron: '14 3 * * *' - -permissions: - pull-requests: write - -jobs: - stale: - # This workflow is not designed to make sense on forks - if: github.repository == 'terrapower/armi' - runs-on: ubuntu-24.04 - steps: - - uses: actions/stale@v8 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-pr-message: "This pull request has been automatically marked as stale because it has not had any activity in the last 100 days. It will be closed in 7 days if no further activity occurs. Thank you for your contributions." - stale-pr-label: "stale" - days-before-pr-stale: 100 - days-before-pr-close: 7 - days-before-issue-stale: -1 - operations-per-run: 100 \ No newline at end of file diff --git a/.github/workflows/validatemanifest.yaml b/.github/workflows/validatemanifest.yaml deleted file mode 100644 index 23f227610..000000000 --- a/.github/workflows/validatemanifest.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: Validate Manifest - -permissions: - contents: read - -on: [push] - -jobs: - build: - - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: '3.11' - - name: Validate Manifest - run: | - pip install toml - python .github/workflows/validatemanifest.py diff --git a/.github/workflows/wintests.yaml b/.github/workflows/wintests.yaml deleted file mode 100644 index e9131aff8..000000000 --- a/.github/workflows/wintests.yaml +++ /dev/null @@ -1,39 +0,0 @@ -name: ARMI Windows tests - -permissions: - contents: read - -on: - push: - branches: - - main - paths-ignore: - - 'doc/**' - pull_request: - paths-ignore: - - 'doc/**' - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build: - - runs-on: windows-2022 - - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: '3.11' - - name: Upgrade PIP - run: python -m pip install --upgrade pip - - name: Run Unit Tests on Windows - run: | - pip install mpi4py==3.1.6 - pip install -e .[memprof,mpi,test] - pytest -n 4 armi - - name: Find Test Crumbs - run: python .github/workflows/find_test_crumbs.py From d7e9c7011365c7f28ba2fcadd814e682a169b6af Mon Sep 17 00:00:00 2001 From: John Stilley Date: Wed, 17 Dec 2025 13:27:06 -0800 Subject: [PATCH 03/14] Trying to speed up testing cycle --- .github/workflows/linting.yaml | 24 -------------------- .github/workflows/mac_tests.yaml | 37 ------------------------------ .github/workflows/unittests.yaml | 39 -------------------------------- 3 files changed, 100 deletions(-) delete mode 100644 .github/workflows/linting.yaml delete mode 100644 .github/workflows/mac_tests.yaml delete mode 100644 .github/workflows/unittests.yaml diff --git a/.github/workflows/linting.yaml b/.github/workflows/linting.yaml deleted file mode 100644 index 6037e5b1e..000000000 --- a/.github/workflows/linting.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: Linting - -permissions: - contents: read - -on: [push] - -jobs: - build: - - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v4 - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.13' - - name: Run Linter - run: | - set -x - pip install -e .[test] - ruff format --check . - ruff check . diff --git a/.github/workflows/mac_tests.yaml b/.github/workflows/mac_tests.yaml deleted file mode 100644 index fc2b0f85a..000000000 --- a/.github/workflows/mac_tests.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: ARMI MacOS Tests - -permissions: - contents: read - -on: - push: - branches: - - main - paths-ignore: - - 'doc/**' - pull_request: - paths-ignore: - - 'doc/**' - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build: - - runs-on: macos-14 - - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: '3.11' - - name: Upgrade PIP - run: python -m pip install --upgrade pip - - name: Run Unit Tests on MacOS - run: | - brew install openmpi - pip install -e .[memprof,mpi,test] - pytest -n 4 armi diff --git a/.github/workflows/unittests.yaml b/.github/workflows/unittests.yaml deleted file mode 100644 index db5efba5d..000000000 --- a/.github/workflows/unittests.yaml +++ /dev/null @@ -1,39 +0,0 @@ -name: ARMI unit tests - -permissions: - contents: read - -on: - push: - paths-ignore: - - 'doc/**' - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build: - - runs-on: ubuntu-24.04 - strategy: - matrix: - python: [3.9, '3.10', '3.11', '3.12', '3.13'] - - steps: - - uses: actions/checkout@v4 - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python }} - allow-prereleases: true - - name: Install mpi libs - run: sudo apt-get -y install libopenmpi-dev - - name: Run Tests - run: | - set -x - pip install -e .[memprof,mpi,test] - pytest -n 4 armi - mpiexec -n 2 --use-hwthread-cpus pytest armi/tests/test_mpiFeatures.py - mpiexec -n 2 --use-hwthread-cpus pytest armi/tests/test_mpiParameters.py - mpiexec -n 2 --use-hwthread-cpus pytest armi/utils/tests/test_directoryChangersMpi.py From a13b8321ebb3e8fabb1566e82572e35076a1d061 Mon Sep 17 00:00:00 2001 From: John Stilley Date: Wed, 17 Dec 2025 13:38:36 -0800 Subject: [PATCH 04/14] reverting doc changes for testing --- .github/workflows/docs.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 9a490b65e..e4e7c3575 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -40,9 +40,9 @@ jobs: pip install -e .[memprof,mpi,test,docs] echo "Run unit tests..." - pytest --junit-xml=test_results.xml -v -n 4 armi/tests/ > pytest_verbose.log + pytest --junit-xml=test_results.xml -v -n 4 armi > pytest_verbose.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi1.xml armi/tests/test_mpiFeatures.py > pytest_verbose_mpi1.log - #mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi2.xml armi/tests/test_mpiParameters.py > pytest_verbose_mpi2.log + mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi2.xml armi/tests/test_mpiParameters.py > pytest_verbose_mpi2.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi3.xml armi/utils/tests/test_directoryChangersMpi.py > pytest_verbose_mpi3.log python doc/.static/cleanup_test_results.py test_results.xml From 9b2dfce4f73c45e06bd15ef6f22bbc5908633019 Mon Sep 17 00:00:00 2001 From: John Stilley Date: Mon, 5 Jan 2026 11:06:20 -0800 Subject: [PATCH 05/14] why are the tests failing? --- .github/workflows/docs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index e4e7c3575..be5464286 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -40,7 +40,7 @@ jobs: pip install -e .[memprof,mpi,test,docs] echo "Run unit tests..." - pytest --junit-xml=test_results.xml -v -n 4 armi > pytest_verbose.log + python -m pytest --junit-xml=test_results.xml -v -n 4 armi/tests > pytest_verbose.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi1.xml armi/tests/test_mpiFeatures.py > pytest_verbose_mpi1.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi2.xml armi/tests/test_mpiParameters.py > pytest_verbose_mpi2.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi3.xml armi/utils/tests/test_directoryChangersMpi.py > pytest_verbose_mpi3.log From f2e822f01db5917b787779b7eb91577f40739d41 Mon Sep 17 00:00:00 2001 From: John Stilley Date: Mon, 5 Jan 2026 11:10:20 -0800 Subject: [PATCH 06/14] bumping action versions --- .github/workflows/docs.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index be5464286..5d6fe2251 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -17,9 +17,9 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: 3.13 - name: Update package index From 2645e4bbbc6e088676d4c9a37422745122d0780b Mon Sep 17 00:00:00 2001 From: John Stilley Date: Mon, 5 Jan 2026 11:24:10 -0800 Subject: [PATCH 07/14] Does the doc build fail without the other YAML files???? --- .github/workflows/coverage.yaml | 52 +++++++++++++++++++++++++ .github/workflows/licensechecker.yaml | 14 +++++++ .github/workflows/linting.yaml | 24 ++++++++++++ .github/workflows/mac_tests.yaml | 37 ++++++++++++++++++ .github/workflows/stale.yaml | 29 ++++++++++++++ .github/workflows/unittests.yaml | 39 +++++++++++++++++++ .github/workflows/validatemanifest.yaml | 22 +++++++++++ .github/workflows/wintests.yaml | 39 +++++++++++++++++++ 8 files changed, 256 insertions(+) create mode 100644 .github/workflows/coverage.yaml create mode 100644 .github/workflows/licensechecker.yaml create mode 100644 .github/workflows/linting.yaml create mode 100644 .github/workflows/mac_tests.yaml create mode 100644 .github/workflows/stale.yaml create mode 100644 .github/workflows/unittests.yaml create mode 100644 .github/workflows/validatemanifest.yaml create mode 100644 .github/workflows/wintests.yaml diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml new file mode 100644 index 000000000..8f85dfe09 --- /dev/null +++ b/.github/workflows/coverage.yaml @@ -0,0 +1,52 @@ +name: Coverage + +permissions: + contents: read + +on: + push: + branches: + - main + paths-ignore: + - 'doc/**' + pull_request: + paths-ignore: + - 'doc/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + # Deploying coverage to coveralls.io should not happen on forks + if: github.repository == 'terrapower/armi' + runs-on: ubuntu-24.04 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: '3.11' + - name: Install ARMI and MPI + run: | + sudo apt-get -y install libopenmpi-dev + pip install -e .[memprof,mpi,test] + - name: Run Coverage + run: | + set -x + coverage run --rcfile=pyproject.toml -m pytest -n 4 --cov=armi --cov-config=pyproject.toml --cov-report=lcov --ignore=venv armi + mpiexec -n 2 --use-hwthread-cpus coverage run --rcfile=pyproject.toml -m pytest --cov=armi --cov-config=pyproject.toml --cov-report=lcov --cov-append --ignore=venv armi/tests/test_mpiFeatures.py || true + mpiexec -n 2 --use-hwthread-cpus coverage run --rcfile=pyproject.toml -m pytest --cov=armi --cov-config=pyproject.toml --cov-report=lcov --cov-append --ignore=venv armi/tests/test_mpiParameters.py || true + mpiexec -n 2 --use-hwthread-cpus coverage run --rcfile=pyproject.toml -m pytest --cov=armi --cov-config=pyproject.toml --cov-report=lcov --cov-append --ignore=venv armi/tests/test_mpiDirectoryChangers.py || true + coverage combine --rcfile=pyproject.toml --keep -a + coverage report --rcfile=pyproject.toml -i --skip-empty --skip-covered --sort=cover --fail-under=90 + - name: Publish to coveralls.io + if: github.ref == 'refs/heads/main' + uses: coverallsapp/github-action@v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + file: coverage.lcov diff --git a/.github/workflows/licensechecker.yaml b/.github/workflows/licensechecker.yaml new file mode 100644 index 000000000..e9eea4134 --- /dev/null +++ b/.github/workflows/licensechecker.yaml @@ -0,0 +1,14 @@ +name: Check License Lines + +permissions: + contents: read + +on: [push] + +jobs: + check-license-lines: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@master + - name: Check License Lines + uses: kt3k/license_checker@v1.0.6 diff --git a/.github/workflows/linting.yaml b/.github/workflows/linting.yaml new file mode 100644 index 000000000..6037e5b1e --- /dev/null +++ b/.github/workflows/linting.yaml @@ -0,0 +1,24 @@ +name: Linting + +permissions: + contents: read + +on: [push] + +jobs: + build: + + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.13' + - name: Run Linter + run: | + set -x + pip install -e .[test] + ruff format --check . + ruff check . diff --git a/.github/workflows/mac_tests.yaml b/.github/workflows/mac_tests.yaml new file mode 100644 index 000000000..fc2b0f85a --- /dev/null +++ b/.github/workflows/mac_tests.yaml @@ -0,0 +1,37 @@ +name: ARMI MacOS Tests + +permissions: + contents: read + +on: + push: + branches: + - main + paths-ignore: + - 'doc/**' + pull_request: + paths-ignore: + - 'doc/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + + runs-on: macos-14 + + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: '3.11' + - name: Upgrade PIP + run: python -m pip install --upgrade pip + - name: Run Unit Tests on MacOS + run: | + brew install openmpi + pip install -e .[memprof,mpi,test] + pytest -n 4 armi diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 000000000..2adea167e --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,29 @@ +# This workflow warns and then closes PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: https://github.com/actions/stale +name: Mark Stale PRs + +on: + schedule: + # once a day at 3:14 AM + - cron: '14 3 * * *' + +permissions: + pull-requests: write + +jobs: + stale: + # This workflow is not designed to make sense on forks + if: github.repository == 'terrapower/armi' + runs-on: ubuntu-24.04 + steps: + - uses: actions/stale@v8 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-pr-message: "This pull request has been automatically marked as stale because it has not had any activity in the last 100 days. It will be closed in 7 days if no further activity occurs. Thank you for your contributions." + stale-pr-label: "stale" + days-before-pr-stale: 100 + days-before-pr-close: 7 + days-before-issue-stale: -1 + operations-per-run: 100 \ No newline at end of file diff --git a/.github/workflows/unittests.yaml b/.github/workflows/unittests.yaml new file mode 100644 index 000000000..db5efba5d --- /dev/null +++ b/.github/workflows/unittests.yaml @@ -0,0 +1,39 @@ +name: ARMI unit tests + +permissions: + contents: read + +on: + push: + paths-ignore: + - 'doc/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + + runs-on: ubuntu-24.04 + strategy: + matrix: + python: [3.9, '3.10', '3.11', '3.12', '3.13'] + + steps: + - uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + allow-prereleases: true + - name: Install mpi libs + run: sudo apt-get -y install libopenmpi-dev + - name: Run Tests + run: | + set -x + pip install -e .[memprof,mpi,test] + pytest -n 4 armi + mpiexec -n 2 --use-hwthread-cpus pytest armi/tests/test_mpiFeatures.py + mpiexec -n 2 --use-hwthread-cpus pytest armi/tests/test_mpiParameters.py + mpiexec -n 2 --use-hwthread-cpus pytest armi/utils/tests/test_directoryChangersMpi.py diff --git a/.github/workflows/validatemanifest.yaml b/.github/workflows/validatemanifest.yaml new file mode 100644 index 000000000..23f227610 --- /dev/null +++ b/.github/workflows/validatemanifest.yaml @@ -0,0 +1,22 @@ +name: Validate Manifest + +permissions: + contents: read + +on: [push] + +jobs: + build: + + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: '3.11' + - name: Validate Manifest + run: | + pip install toml + python .github/workflows/validatemanifest.py diff --git a/.github/workflows/wintests.yaml b/.github/workflows/wintests.yaml new file mode 100644 index 000000000..e9131aff8 --- /dev/null +++ b/.github/workflows/wintests.yaml @@ -0,0 +1,39 @@ +name: ARMI Windows tests + +permissions: + contents: read + +on: + push: + branches: + - main + paths-ignore: + - 'doc/**' + pull_request: + paths-ignore: + - 'doc/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + + runs-on: windows-2022 + + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: '3.11' + - name: Upgrade PIP + run: python -m pip install --upgrade pip + - name: Run Unit Tests on Windows + run: | + pip install mpi4py==3.1.6 + pip install -e .[memprof,mpi,test] + pytest -n 4 armi + - name: Find Test Crumbs + run: python .github/workflows/find_test_crumbs.py From 033c1eeaba32f2c47eb0e14c861f83e81e33db2b Mon Sep 17 00:00:00 2001 From: John Stilley Date: Mon, 5 Jan 2026 11:30:01 -0800 Subject: [PATCH 08/14] ruamel.yaml troubles --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c1ec04211..7996d2261 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ dependencies = [ "pluggy>=1.2.0", # Central tool behind the ARMI Plugin system "pyDOE>=0.3.8", # We import a Latin-hypercube algorithm to explore a phase space "pyevtk>=1.2.0", # Handles binary VTK visualization files - "ruamel.yaml ; python_version >= '3.11.0'", # Our foundational YAML library + "ruamel.yaml<0.19.0 ; python_version >= '3.11.0'", # Our foundational YAML library "ruamel.yaml.clib ; python_version >= '3.11.0'", # C-based core of ruamel below "ruamel.yaml.clib<=0.2.7 ; python_version < '3.11.0'", # C-based core of ruamel below "ruamel.yaml<=0.17.21 ; python_version < '3.11.0'", # Our foundational YAML library From 6dfdedbd22c4f8c265a39072efccc45bf4c61351 Mon Sep 17 00:00:00 2001 From: John Stilley Date: Mon, 5 Jan 2026 12:03:39 -0800 Subject: [PATCH 09/14] Fixing broken gallery item --- doc/gallery-src/framework/run_blockVolumeFractions.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/gallery-src/framework/run_blockVolumeFractions.py b/doc/gallery-src/framework/run_blockVolumeFractions.py index fbd4d3918..583d284a1 100644 --- a/doc/gallery-src/framework/run_blockVolumeFractions.py +++ b/doc/gallery-src/framework/run_blockVolumeFractions.py @@ -54,6 +54,7 @@ def plotVolFracsWithComponentTemps(b, uniformTemps): initialVols = {} relativeVols = collections.defaultdict(list) for tempInC in uniformTemps: + print(f"tempInC: {tempInC}") print(f"Updating fuel/structure components to {tempInC} °C") # Modify the fuel/structure components to the same uniform temperature for c in componentsToModify: @@ -83,7 +84,7 @@ def plotVolFracsWithComponentTemps(b, uniformTemps): plt.show() -uniformTempsInC = [400.0, 500.0, 600.0, 700.0, 800.0, 900.0, 1200.0] +uniformTempsInC = [300.0, 400.0, 500.0, 600.0, 700.0] b = buildSimpleFuelBlock() writeInitialVolumeFractions(b) From 62eadd0e7955c148b87a6c5e0b3a7a34f5c26642 Mon Sep 17 00:00:00 2001 From: John Stilley Date: Mon, 5 Jan 2026 13:54:12 -0800 Subject: [PATCH 10/14] removing crumbs --- doc/gallery-src/framework/run_blockVolumeFractions.py | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/gallery-src/framework/run_blockVolumeFractions.py b/doc/gallery-src/framework/run_blockVolumeFractions.py index 583d284a1..c623bb6b9 100644 --- a/doc/gallery-src/framework/run_blockVolumeFractions.py +++ b/doc/gallery-src/framework/run_blockVolumeFractions.py @@ -54,7 +54,6 @@ def plotVolFracsWithComponentTemps(b, uniformTemps): initialVols = {} relativeVols = collections.defaultdict(list) for tempInC in uniformTemps: - print(f"tempInC: {tempInC}") print(f"Updating fuel/structure components to {tempInC} °C") # Modify the fuel/structure components to the same uniform temperature for c in componentsToModify: From 472f179d4ee5720e528df4f48045e7acd5385694 Mon Sep 17 00:00:00 2001 From: John Stilley Date: Mon, 5 Jan 2026 15:22:36 -0800 Subject: [PATCH 11/14] refactoring script --- doc/.static/automateScr.py | 20 ++++++++++++-------- doc/qa_docs/scr/latest_scr.rst | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/doc/.static/automateScr.py b/doc/.static/automateScr.py index 90e51b6d6..923a42a71 100644 --- a/doc/.static/automateScr.py +++ b/doc/.static/automateScr.py @@ -60,15 +60,17 @@ def main(): parser = argparse.ArgumentParser(description="An ARMI custom doc tool to build the SCR for this release.") # Required positional argument - parser.add_argument("prNum", type=int, help="The current PR number (use -1 if there is no PR).") parser.add_argument("pastCommit", help="The commit hash of the last release.") + parser.add_argument( + "prNum", nargs="?", type=int, default=-1, help="The current PR number (use -1 if there is no PR)." + ) # Parse the command line args = parser.parse_args() - prNum = int(args.prNum) pastCommit = args.pastCommit + prNum = int(args.prNum) - buildScrListing(prNum, pastCommit) + buildScrListing(pastCommit, prNum) def _findOneLineData(lines: list, prNum: str, key: str): @@ -109,6 +111,7 @@ def _buildScrLine(prNum: str): str RST-formatted list item. """ + print(prNum) txt = subprocess.check_output(["gh", "pr", "view", prNum]).decode("utf-8") lines = [ln.strip() for ln in txt.split("\n") if ln.strip()] @@ -187,16 +190,16 @@ def isMainPR(prNum: int): return True -def buildScrListing(thisPrNum: int, pastCommit: str): +def buildScrListing(pastCommit: str, thisPrNum: int = -1): """Helper method to build an RST-formatted lists of all SCRs, by category. Parameters ---------- - thisPrNum : int - The number of this PR. If this is not a PR, this is a -1. pastCommit : str - The shortened commit hash for a past reference commit. (This is the last commit of the last - release. It will not be included.) + The shortened commit hash for a past reference commit. (This is the last commit of the last release. It will not + be included.) + thisPrNum : int + The number of this PR. If this is not a PR, the default is -1. Returns ------- @@ -236,6 +239,7 @@ def buildScrListing(thisPrNum: int, pastCommit: str): # 3. Build a list for each SCR data = {"docs": [], "features": [], "fixes": [], "trivial": []} + print(sorted(prNums)) for prNum in sorted(prNums): if not isMainPR(prNum): continue diff --git a/doc/qa_docs/scr/latest_scr.rst b/doc/qa_docs/scr/latest_scr.rst index 675c45417..174c4a278 100644 --- a/doc/qa_docs/scr/latest_scr.rst +++ b/doc/qa_docs/scr/latest_scr.rst @@ -17,4 +17,4 @@ The following lists display all the SCRs in this release of the ARMI framework. from automateScr import buildScrListing thisPrNum = int(os.environ.get('PR_NUMBER', -1) or -1) - return buildScrListing(thisPrNum, "95d94a4d") + return buildScrListing("95d94a4d", thisPrNum) From 25f4dbff9499901a8a529f5b2f1a9a0cfdd518d5 Mon Sep 17 00:00:00 2001 From: John Stilley Date: Mon, 5 Jan 2026 15:55:53 -0800 Subject: [PATCH 12/14] Fixing PR_NUMBER for main --- .github/workflows/docs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 5d6fe2251..daac00184 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -32,7 +32,7 @@ jobs: continue-on-error: true env: GH_TOKEN: ${{ github.token }} - PR_NUMBER: ${{ github.event.number }} + PR_NUMBER: ${{ github.ref == 'refs/heads/main' && -1 || github.event.number }} run: | echo "Installing ARMI..." set -x From 85b91188866182149e455bfcac0fe7f323c14a5a Mon Sep 17 00:00:00 2001 From: John Stilley Date: Tue, 6 Jan 2026 09:56:07 -0800 Subject: [PATCH 13/14] cleaning up dev crumbs --- .github/workflows/docs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index daac00184..88c09bf20 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -40,7 +40,7 @@ jobs: pip install -e .[memprof,mpi,test,docs] echo "Run unit tests..." - python -m pytest --junit-xml=test_results.xml -v -n 4 armi/tests > pytest_verbose.log + pytest --junit-xml=test_results.xml -v -n 4 armi > pytest_verbose.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi1.xml armi/tests/test_mpiFeatures.py > pytest_verbose_mpi1.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi2.xml armi/tests/test_mpiParameters.py > pytest_verbose_mpi2.log mpiexec -n 2 --use-hwthread-cpus pytest --junit-xml=test_results_mpi3.xml armi/utils/tests/test_directoryChangersMpi.py > pytest_verbose_mpi3.log From 266a393b8937eef7abc4db5cb2e57ef00749533f Mon Sep 17 00:00:00 2001 From: John Stilley <1831479+john-science@users.noreply.github.com> Date: Tue, 6 Jan 2026 15:10:12 -0800 Subject: [PATCH 14/14] Arrielle pointed out my dev print statements. Thanks! --- doc/.static/automateScr.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/.static/automateScr.py b/doc/.static/automateScr.py index 923a42a71..4faf4db22 100644 --- a/doc/.static/automateScr.py +++ b/doc/.static/automateScr.py @@ -111,7 +111,6 @@ def _buildScrLine(prNum: str): str RST-formatted list item. """ - print(prNum) txt = subprocess.check_output(["gh", "pr", "view", prNum]).decode("utf-8") lines = [ln.strip() for ln in txt.split("\n") if ln.strip()] @@ -239,7 +238,6 @@ def buildScrListing(pastCommit: str, thisPrNum: int = -1): # 3. Build a list for each SCR data = {"docs": [], "features": [], "fixes": [], "trivial": []} - print(sorted(prNums)) for prNum in sorted(prNums): if not isMainPR(prNum): continue