Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
0704c51
Fix CMake build system and remove legacy build files
andersx Feb 16, 2026
f7f82c5
Add pybind11 bindings for Fortran solver functions
andersx Feb 16, 2026
1123b89
Refactor fsolvers.f90 to eliminate code duplication
andersx Feb 16, 2026
d914edb
Add pybind11 bindings for representations and utils modules
andersx Feb 16, 2026
e02c9d4
Add input validation back to representation functions
andersx Feb 16, 2026
e953de5
Add comprehensive input validation to all representation functions
andersx Feb 16, 2026
6fbefac
Remove example kernel files and build configuration
andersx Feb 16, 2026
e01dad2
Restore compiler optimization flags for all modules
andersx Feb 16, 2026
94ed569
Merge pull request #1 from andersx/fix/cmake-build-system
andersx Feb 16, 2026
6c70f21
Add pybind11 bindings for kernels
andersx Feb 16, 2026
2ab7e37
Convert gradient kernels from f2py to pybind11 (#3)
andersx Feb 16, 2026
f12aa9e
Convert SLATM to pybind11 and remove ARAD representation (#4)
andersx Feb 16, 2026
1e09b07
WIP: Migrate FCHL representations from f2py to pybind11 (#5)
andersx Feb 16, 2026
97ead18
Complete FCHL migration from f2py to pybind11 (#6)
andersx Feb 17, 2026
958f797
Feature/fix gradient kernels (#7)
andersx Feb 17, 2026
68429c1
Fix/fchl openmp race conditions (#8)
andersx Feb 18, 2026
68d58e9
Fix local kernel functions to handle arbitrary representation sizes (#9)
andersx Feb 18, 2026
cc8b248
Fix test_gdml_derivative and add diagnostics to remaining xfail tests…
andersx Feb 18, 2026
7a3594b
Convert README from RST to Markdown
andersx Feb 18, 2026
5396700
Remove README.rst in favor of README.md (#11)
andersx Feb 18, 2026
e8ed1b7
Add strict ruff and mypy linting (#12)
andersx Feb 18, 2026
919394a
Migrate from mypy to ty for type checking (#13)
andersx Feb 18, 2026
a7adc2c
Migrate fqrlq_solve, fcond, and fcond_ge from f2py to pybind11 (#14)
andersx Feb 18, 2026
e66b12c
Separate integration tests from unit tests for faster CI (#15)
andersx Feb 19, 2026
522e576
Optimize FCHL kernel tests with symmetry
andersx Feb 19, 2026
155a2b0
WAdded ci build for macos (#17)
andersx Feb 19, 2026
8ace403
Feature/release workflow (#18)
andersx Feb 21, 2026
47e1095
Jimmyfy in progress ...
andersx Feb 21, 2026
42fe920
Fix make clean, stubs, monkeytype targets; add monkeytype to dev deps
andersx Feb 21, 2026
70c1471
Add build and test-dist targets, add twine to dev deps
andersx Feb 21, 2026
cc69f85
Remove stray kernel.npy from repo root
andersx Feb 21, 2026
a9d1949
Use uv run consistently for all tools in Makefile (stubgen, pip, pre-…
andersx Feb 21, 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
5 changes: 0 additions & 5 deletions .coveragerc

This file was deleted.

40 changes: 40 additions & 0 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Code Quality

on:
push:
branches: [main]
pull_request:
branches: [main]

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
code-quality:
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ruff ty numpy scipy pytest

- name: Check formatting with Ruff
run: ruff format --check src/ tests/

- name: Lint with Ruff
run: ruff check src/ tests/

- name: Type check with ty
run: ty check src/
31 changes: 0 additions & 31 deletions .github/workflows/publish.yml

This file was deleted.

113 changes: 113 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# .github/workflows/release.yml
name: "Build & Publish"

on:
release:
types: [published]
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

jobs:
build-wheels:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, macos-15]

steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0 # Required for setuptools-scm to detect version from git tags

- uses: actions/setup-python@v6
with:
python-version: "3.12" # host Python; cibuildwheel builds all others

- name: Clean build artifacts
run: rm -rf dist/ build/ *.egg-info wheelhouse/

- name: Install GCC, LLVM and OpenMP (macOS)
if: runner.os == 'macOS'
run: brew install gcc llvm libomp

- name: Install cibuildwheel
run: python -m pip install cibuildwheel==3.3.1

- name: Build wheels
env:
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-*"
CIBW_SKIP: "pp* *-musllinux_* cp*-manylinux_i686 cp31?t-*"
CIBW_TEST_COMMAND: "pytest -q {project}/tests -m 'not integration' -x"
CIBW_TEST_EXTRAS: "test"
CIBW_ENVIRONMENT: >
OMP_NUM_THREADS=1
OPENBLAS_NUM_THREADS=1
CIBW_BEFORE_BUILD_LINUX: |
yum -y install openblas-devel
find /usr/include -name cblas.h -print
CIBW_ENVIRONMENT_LINUX: >
CPPFLAGS="-I/usr/include/openblas"
CFLAGS="-I/usr/include/openblas"
LD_LIBRARY_PATH="/usr/lib64:$LD_LIBRARY_PATH"
CMAKE_ARGS="-DBLAS_LIBRARIES=/usr/lib64/libopenblas.so
-DBLAS_INCLUDE_DIR=/usr/include/openblas
-DCMAKE_CXX_FLAGS=-I/usr/include/openblas
-DCMAKE_C_FLAGS=-I/usr/include/openblas"
OPENBLAS_NUM_THREADS=1
OMP_NUM_THREADS=1
CIBW_ENVIRONMENT_MACOS: >
MACOSX_DEPLOYMENT_TARGET=15.0
FC=gfortran-14
OpenMP_ROOT=/opt/homebrew/opt/libomp
CMAKE_ARGS="-DCMAKE_Fortran_COMPILER=gfortran-14
-DOpenMP_ROOT=/opt/homebrew/opt/libomp
-DCMAKE_CXX_FLAGS=-I/opt/homebrew/opt/libomp/include
-DCMAKE_C_FLAGS=-I/opt/homebrew/opt/libomp/include
-DCMAKE_SHARED_LINKER_FLAGS=-L/opt/homebrew/opt/libomp/lib
-DCMAKE_EXE_LINKER_FLAGS=-L/opt/homebrew/opt/libomp/lib"
CIBW_ARCHS_MACOS: arm64
run: python -m cibuildwheel --output-dir wheelhouse

- name: Build sdist
if: runner.os == 'Linux'
run: python -m pip install build && python -m build --sdist -o wheelhouse

- name: Upload artifacts
uses: actions/upload-artifact@v6
with:
name: wheels-${{ runner.os }}
path: wheelhouse/*

publish:
needs: build-wheels
runs-on: ubuntu-24.04
if: github.event_name == 'release' || github.event_name == 'workflow_dispatch'
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v7
with:
name: wheels-Linux
path: dist

- uses: actions/download-artifact@v7
with:
name: wheels-macOS
path: dist

- name: Flatten artifacts
run: |
mkdir -p dist/flat
find dist -name '*.whl' -exec cp {} dist/flat/ \;
find dist -name '*.tar.gz' -exec cp {} dist/flat/ \;

# - uses: pypa/gh-action-pypi-publish@v1.13.0
# with:
# packages-dir: dist/flat
64 changes: 44 additions & 20 deletions .github/workflows/test.macos.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,61 @@
name: Test MacOS

on:
push:
branches:
- '**'
# push:
# branches:
# - '**'
pull_request:
branches: [ main ]
branches: [main]

jobs:
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: Testing ${{matrix.os}} py-${{matrix.python-version}}
runs-on: ${{matrix.os}}

strategy:
matrix:
os: ['macos-latest']
python-version: ['3.11', '3.12']
os: ['macos-15']
python-version: ['3.12']

steps:
- uses: actions/checkout@v2
env:
HOMEBREW_NO_AUTO_UPDATE: "1"

- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
steps:
- uses: actions/checkout@v4

- run: which brew
- run: brew install gcc openblas lapack libomp
- run: ls /opt/homebrew/bin/
- run: which gfortran-14
- name: Install Homebrew dependencies
run: |
brew install gcc libomp llvm

- run: FC=gfortran-14 make env_uv python_version=${{ matrix.python-version }}
- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ matrix.python-version }}

- name: Build & install (macOS only)
env:
# Set Fortran compiler to Homebrew GCC
FC: gfortran-14
CMAKE_PREFIX_PATH: /opt/homebrew
# Help CMake find OpenMP
OpenMP_ROOT: /opt/homebrew/opt/libomp
# Pass CMake arguments for explicit compiler selection
CMAKE_ARGS: >-
-DCMAKE_Fortran_COMPILER=gfortran-14
-DOpenMP_ROOT=/opt/homebrew/opt/libomp
run: |
# Install build dependencies first
uv pip install scikit-build-core pybind11 setuptools setuptools-scm
# Build and install with test dependencies
uv pip install -e .[test] --verbose

- name: Run unit tests (exclude integration tests)
run: uv run pytest -m "not integration" -v

- run: make test
- run: make format
- run: FC=gfortran-14 make build
- run: make test-dist
50 changes: 32 additions & 18 deletions .github/workflows/test.ubuntu.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,48 @@
name: Test Ubuntu

on:
push:
branches:
- '**'
# push:
# branches:
# - '**'
pull_request:
branches: [ main ]
branches: [main]

jobs:
permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
name: Testing ${{matrix.os}} py-${{matrix.python-version}}
runs-on: ${{matrix.os}}

strategy:
matrix:
os: ['ubuntu-latest']
python-version: ['3.11', '3.12']
os: ['ubuntu-24.04']
python-version: ['3.12']

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y gfortran libomp-dev libopenblas-dev

- run: sudo apt-get install -y gcc libomp-dev libopenblas-dev

- run: make env_uv python_version=${{ matrix.python-version }}

- run: make test
- run: make format
- run: make build
- run: make test-dist
- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ matrix.python-version }}

- name: Build & install
run: |
# Install build dependencies first
uv pip install scikit-build-core pybind11 setuptools setuptools-scm
# Build and install with test dependencies
uv pip install -e .[test] --verbose

- name: Run unit tests (exclude integration tests)
run: uv run pytest -m "not integration" -v
Loading
Loading