Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
f5a4ed4
Implemented by claude: added a Python interface for Monarch3
nsoblath Aug 19, 2026
0561905
Added validation testing (courtesy of claude)
nsoblath Aug 19, 2026
dee71ba
Update HDF5 usage: 1.10.1 is now the minimum required version; v2.0.0…
nsoblath Aug 19, 2026
868d55a
Namespace and constness fix
nsoblath Aug 19, 2026
d665786
Fixing issues with the initial version of the validation tests
nsoblath Aug 19, 2026
70d2446
Added changelog.md
nsoblath Aug 19, 2026
00b4f87
Added GHA workflow file
nsoblath Aug 19, 2026
1ca632f
Disable Python in the Monarch2 builds and install numpy in the Monarc…
nsoblath Aug 19, 2026
4b34436
Remove unused protobuf::libprotoc
nsoblath Aug 19, 2026
3e7a6ca
Use pip3 to install python packages in mac jobs. Include ubuntu-22.0…
nsoblath Aug 19, 2026
1c03da0
Move the M2Header operator<<() to within the monarch2 namespace
nsoblath Aug 19, 2026
6874c5a
Adapt finding of Protobuf to more modern Protobuf installations
nsoblath Aug 19, 2026
2f7e156
Macs are picky about modifying the global Python environment . . .
nsoblath Aug 19, 2026
712b080
More modernizing protobuf usage
nsoblath Aug 19, 2026
654f643
Fixing the protobuf_generate() usage
nsoblath Aug 19, 2026
f83a288
Another attempt to use protobuf_generate correctly
nsoblath Aug 19, 2026
ace0fe5
More details being fixed on the Python installation for Monarch3 and …
nsoblath Aug 20, 2026
fb0a833
With Claude's help we might have this Python thing sorted
nsoblath Aug 20, 2026
2cc7e8a
Attempting to fix the RTD docs build
nsoblath Aug 20, 2026
f015d6a
Trying to get the doxygen processing running
nsoblath Aug 20, 2026
6a25378
Remove running doxygen from conf.py
nsoblath Aug 20, 2026
374f41f
Updated C++ usage documentation
nsoblath Aug 20, 2026
574735f
Add Python API documentation generation to the RTD site
nsoblath Aug 20, 2026
d1dde98
Build the C++ library and bindings to get the full Python API in the …
nsoblath Aug 20, 2026
ed607a3
Update OS to make sure software versions are sufficient and to be mor…
nsoblath Aug 20, 2026
830e6b0
Don't use /usr/local as the install directory
nsoblath Aug 20, 2026
62b468e
[no ci] Minor documentation fix
nsoblath Aug 20, 2026
b673e69
[no ci] Updated the changelog
nsoblath Aug 20, 2026
a59c0de
[no ci] Updated the README
nsoblath Aug 20, 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
189 changes: 189 additions & 0 deletions .github/workflows/run_tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
name: Run Tests

on:
push:
branches: [ 'main', 'develop' ]
tags: ['*']
pull_request:

workflow_dispatch:

jobs:

Monarch3Tests:

runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-24.04-arm, ubuntu-22.04, ubuntu-22.04-arm, macos-26, macos-15-intel, macos-15]

steps:

- name: Checkout the repo
uses: actions/checkout@v7
with:
submodules: recursive

- name: Select CC version
# We require GCC 12 or higher if using GCC
# The default GCC for Ubuntu 22.04 is 11, but 12 is available
if: ${{ matrix.os == 'ubuntu-22.04' || matrix.os == 'ubuntu-22.04-arm' }}
run: |
echo "CC=gcc-12" >> $GITHUB_ENV
echo "CXX=g++-12" >> $GITHUB_ENV

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'

- name: Install Python packages
run: pip install pytest numpy

- name: Install dependencies -- Mac
# pybind11 is manually installed because we need to use v3.0.0 (as of 8/21/25)
# Fix the /usr/local directory structure
if: startsWith(matrix.os, 'macos')
run: |
brew install \
hdf5 \
boost \
pybind11 \
rapidjson \
yaml-cpp

- name: Install dependencies -- Linux
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y \
libhdf5-dev \
libboost-all-dev \
rapidjson-dev \
libyaml-cpp-dev
git clone https://github.com/pybind/pybind11.git
cd pybind11
git checkout v3.1.0
mkdir build
cd build
sudo cmake -DPYBIND11_TEST=FALSE ..
sudo make -j2 install

- name: Configure
run: |
mkdir build
cd build
cmake .. \
-DMonarch_BUILD_MONARCH3=TRUE \
-DMonarch_ENABLE_TESTING=TRUE \
-DMonarch_BUILD_PYTHON=TRUE

- name: Build
run: |
cd build
make -j2 install

- name: Run tests
run: |
cd build
ctest --output-on-failure

# For debugging
# - name: Setup tmate session
# if: ${{ ! success() }}
# uses: mxschmitt/action-tmate@v3


Monarch2Tests:

runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-24.04-arm, ubuntu-22.04, ubuntu-22.04-arm, macos-26, macos-15-intel, macos-15]

steps:

- name: Checkout the repo
uses: actions/checkout@v7
with:
submodules: recursive

- name: Select CC version
if: ${{ matrix.os == 'ubuntu-22.04' || matrix.os == 'ubuntu-22.04-arm' }}
run: |
echo "CC=gcc-12" >> $GITHUB_ENV
echo "CXX=g++-12" >> $GITHUB_ENV

- name: Install dependencies -- Mac
if: startsWith(matrix.os, 'macos')
run: |
brew install \
protobuf \
boost \
rapidjson \
yaml-cpp

- name: Install dependencies -- Linux
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y \
protobuf-compiler \
libprotobuf-dev \
libboost-all-dev \
rapidjson-dev \
libyaml-cpp-dev

- name: Configure
run: |
mkdir build
cd build
cmake .. \
-DMonarch_BUILD_MONARCH2=TRUE \
-DMonarch_BUILD_MONARCH3=FALSE \
-DMonarch_ENABLE_TESTING=TRUE \
-DScarab_BUILD_PYTHON=FALSE

- name: Build
run: |
cd build
make -j2 install

# Tests have not been implemented
# - name: Run tests
# run: |
# cd build
# ctest --output-on-failure

# For debugging
# - name: Setup tmate session
# if: ${{ ! success() }}
# uses: mxschmitt/action-tmate@v3


Release:

runs-on: ubuntu-24.04

if: ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags/') }}

needs: [Monarch3Tests, Monarch2Tests]

steps:

- name: Checkout the repo
uses: actions/checkout@v7
with:
submodules: recursive

- name: Release with a changelog
uses: rasmus-saks/release-a-changelog-action@v1.2.0
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'
path: 'changelog.md'
title-template: 'Monarch v{version} -- Release Notes'
tag-template: 'v{version}'
54 changes: 54 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

# Set the OS, Python version and other tools you might need
build:
os: ubuntu-lts-latest
tools:
python: "3.12"
# You can also specify other tool versions:
# nodejs: "19"
# rust: "1.64"
# golang: "1.19"
apt_packages:
- cmake
- doxygen
- graphviz
- libboost-filesystem-dev
- libhdf5-dev
- pybind11-dev
- rapidjson-dev
- libyaml-cpp-dev
- tree
jobs:
pre_build:
- git submodule update --init --recursive
- cmake -S . -B _rtd_build -DMonarch_BUILD_PYTHON=ON -DPBUILDER_PY_INSTALL_IN_SITELIB=ON
- cmake --build _rtd_build --target install -- -j$(nproc)
- python ./Documentation/run_doxygen.py
- mkdir -p $READTHEDOCS_OUTPUT/html
- mv ./user_doxygen_out/html $READTHEDOCS_OUTPUT/html/_static
- tree

# Build documentation in the "Documentation/" directory with Sphinx
sphinx:
configuration: Documentation/conf.py

submodules:
recursive: true

# Optionally build your docs in additional formats such as PDF and ePub
# formats:
# - pdf
# - epub

# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: Documentation/requirements.txt
Loading