Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
6b2222e
Start 0.1.2 development
t-uda Dec 30, 2025
40d71df
feat: Add dimension scaling benchmark script and optimize C++ tangenc…
t-uda Dec 29, 2025
ca33fc6
feat: Introduce optional LAPACK integration for C++ Cholesky solver, …
t-uda Dec 29, 2025
e0cd429
refactor: Extract conic geometry computation into a cached function u…
t-uda Dec 30, 2025
351cfdb
docs: add plan for building manylinux_2_28 LAPACK-enabled wheels with…
t-uda Dec 30, 2025
d13d0dc
Merge pull request #90 from t-uda/feat/improve-cpp-memory-performance
t-uda Dec 30, 2025
f2492fa
Add Eigen benchmark report
t-uda Jan 1, 2026
661fddf
Switch plan to Eigen backend
t-uda Jan 1, 2026
adc6ef4
feat: Add build information and C++ backend details while removing LA…
t-uda Jan 1, 2026
faf78d3
feat: Add `--build-info` CLI option to display build information and …
t-uda Jan 1, 2026
7935bdb
ci: Enable Eigen support in CI workflows by adding environment variab…
t-uda Jan 1, 2026
a9d6561
feat: Add documentation for optional Eigen build for C++ linear algeb…
t-uda Jan 1, 2026
811b436
test: add comprehensive tests for `_cpp.linalg_kind` function, includ…
t-uda Jan 1, 2026
fff5cda
test: add assertions for `_cpp.is_available()` and `_cpp.backend_vers…
t-uda Jan 1, 2026
f1a06de
Merge pull request #92 from t-uda/feat/replace-with-eigen-cholesky
t-uda Jan 1, 2026
f9014d0
Add edge-case tests for solver and geometry
t-uda Jan 1, 2026
31c53f4
Add edge-case coverage for C++ backend
t-uda Jan 1, 2026
15a50b3
Cover remaining solver and ellcloud edge cases
t-uda Jan 1, 2026
58741d0
Merge pull request #94 from t-uda/chore/improve-coverage
t-uda Jan 1, 2026
b893f76
Add ellphi.grad module with differentiable tangency distances
t-uda Mar 20, 2026
ab4dfe3
Fix review issues in ellphi.grad module
t-uda Mar 20, 2026
e2f0506
Remove dead t==0 guard from tangency_grad
t-uda Mar 20, 2026
9d5d3f8
Document ZeroDivisionError behaviour for degenerate inputs in tangenc…
t-uda Mar 20, 2026
3d37387
Add Section 3: persistence diagram optimisation via VJP (homcloud)
t-uda Mar 20, 2026
cc065c3
Fix review issues in ellphi.grad module
t-uda Mar 20, 2026
80188ac
Fix mypy error and restore shape validation in pdist_tangency_grad
t-uda Mar 20, 2026
0e51015
Add test for pdist_tangency_grad shape validation
t-uda Mar 20, 2026
fe55805
Merge pull request #96 from t-uda/feature/smart-differentiable-solver
t-uda Mar 20, 2026
4164a0b
docs: setup mkdocs documentation site #86
t-uda Jan 1, 2026
202a668
refactor: Convert TangencyResult to a typed NamedTuple and simplify r…
t-uda Jan 1, 2026
4f85f14
docs: expand MkDocs site for 0.1.2 release
t-uda Mar 20, 2026
09669df
docs: fix mathematical descriptions in tda_workflow and geometry refe…
t-uda Mar 20, 2026
6ca23a9
docs: replace Sphinx cross-references with mkdocstrings syntax and ad…
t-uda Mar 20, 2026
ac23eab
style: wrap long mkdocstrings cross-reference lines to satisfy flake8
t-uda Mar 20, 2026
af2edd7
docs: apply English proofreading corrections to guide pages
t-uda Mar 21, 2026
5ada323
docs: unify vector notation using \bm{} (bold-italic) throughout
t-uda Mar 21, 2026
c7c7536
docs: add EllPHi logo to navbar and index page
t-uda Mar 21, 2026
ecbaa62
docs: add transparent EllPHi logo assets
t-uda Mar 21, 2026
19bbd9e
docs: fix markdown and math formatting in Design Notes
t-uda Mar 21, 2026
585da33
docs: fix logo display — attr_list extension, image size, transparency
t-uda Mar 21, 2026
770a245
docs: replace root logo with transparency-processed version
t-uda Mar 21, 2026
edfe7d3
docs: add Notebook Examples page to User Guide
t-uda Mar 21, 2026
f98d5f3
docs: record docs conventions and subagent permissions in CONTRIBUTIN…
t-uda Mar 21, 2026
827097a
docs: introduce CLAUDE.md for Claude Code-specific guidelines
t-uda Mar 21, 2026
81e916b
docs: add Unreleased section to RELEASE_NOTES
t-uda Mar 21, 2026
ebf3d0f
docs: fix broken notebook link note and restore degenerate-input guid…
t-uda Mar 21, 2026
f670310
revert: undo codex review fixes — both changes deemed unnecessary
t-uda Mar 21, 2026
451a730
fix: explicitly load boldsymbol package in MathJax config
t-uda Mar 21, 2026
332bb9f
docs: switch MathJax to tex-chtml-full.js to fix \boldsymbol rendering
t-uda Mar 21, 2026
99b43f4
Merge pull request #93 from t-uda/docs/mkdocs-web-reference
t-uda Mar 21, 2026
a7fa7f0
ci: add Windows wheel build and release workflows
t-uda Mar 21, 2026
6eab29a
fix(ci): correct argument order in Windows smoke test
t-uda Mar 21, 2026
a41dd3b
docs: add Windows CI entries to RELEASE_NOTES
t-uda Mar 21, 2026
ccb48e8
ci: add TestPyPI publish job with dev tag routing
t-uda Mar 21, 2026
829ffef
docs(ci): add setup instructions and tag routing table to release.yml
t-uda Mar 21, 2026
2a4dd2f
docs: add publishing workflow guide to CONTRIBUTING.md
t-uda Mar 21, 2026
d534b08
Merge pull request #97 from t-uda/feature/CI-build-windows-binary
t-uda Mar 21, 2026
cd3216c
fix: invalidate cached C++ backend when Eigen mode changes
t-uda Mar 21, 2026
1121554
Merge pull request #99 from t-uda/fix/eigen-cache-invalidation
t-uda Mar 21, 2026
771d6b2
contrib: add agent-skill for AI agent integration
t-uda Mar 21, 2026
2eec999
revise mathematical explanation
t-uda Mar 21, 2026
ecb370c
ignore .claude/
t-uda Mar 21, 2026
4294c1c
Merge pull request #100 from t-uda/feature/agent-skill
t-uda Mar 21, 2026
206b87e
Add coef_from_cov_grad: differentiable coef_from_cov with VJP
t-uda Mar 21, 2026
7c13dfa
Fix flake8 F401: remove unused imports
t-uda Mar 21, 2026
7e66906
Add coef_from_cov_grad to type stub
t-uda Mar 21, 2026
2fb2499
Update agent skill docs for coef_from_cov_grad
t-uda Mar 22, 2026
8c984b1
Merge pull request #101 from t-uda/feature/grad-coef
t-uda Mar 22, 2026
ffdd80e
Fix coef_from_cov_grad: validate inputs and handle singular covariances
t-uda Mar 23, 2026
679d154
Fix black formatting in grad.py
t-uda Mar 23, 2026
38f914b
Add tests for coef_from_cov_grad input validation and singular fallback
t-uda Mar 23, 2026
f567009
Move pytest import to top of file (flake8 E402)
t-uda Mar 23, 2026
ff2616d
Fix black formatting in test_coef_from_cov_grad.py
t-uda Mar 23, 2026
78d2300
Return NaN gradients (not zeros) for singular covariances
t-uda Mar 23, 2026
a52644f
Merge pull request #102 from t-uda/fix/grad-coef
t-uda Mar 23, 2026
54f53f0
version bump 0.1.2.dev1
t-uda Mar 23, 2026
8d29849
feat: add direct ellipse cloud construction helpers
t-uda Mar 25, 2026
c2cf819
fix: address review edge cases for ellipse cloud helpers
t-uda Mar 25, 2026
5d1162f
Merge pull request #103 from t-uda/codex/feat-ellipsecloud-api
t-uda Mar 25, 2026
ae745b9
docs: curate unreleased release notes
t-uda Mar 25, 2026
c30c03e
Merge pull request #110 from t-uda/codex/release-notes-cleanup
t-uda Mar 25, 2026
06450a7
ci: split docs build from deploy
t-uda Mar 25, 2026
f5b9a9d
Merge pull request #112 from t-uda/codex/docs-workflow-release-builds
t-uda Mar 25, 2026
54f4014
Fix grad symmetry and release metadata gaps
t-uda Mar 25, 2026
983bce6
Format covariance gradient test with black
t-uda Mar 25, 2026
b755a2e
Merge pull request #113 from t-uda/codex/fix-review-comments
t-uda Mar 25, 2026
bb5b8b2
docs: clarify release workflow
t-uda Mar 25, 2026
711193f
Merge pull request #114 from t-uda/codex/update-contributing-release-…
t-uda Mar 25, 2026
15b3901
release: bump version to 0.1.2
t-uda Mar 25, 2026
e711ba8
Merge pull request #115 from t-uda/codex/bump-v0.1.2
t-uda Mar 25, 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
80 changes: 80 additions & 0 deletions .github/workflows/build-windows-wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Windows Wheels

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

permissions:
contents: read

jobs:
build-windows:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Poetry
run: pip install --upgrade poetry

- name: Build wheel
run: poetry build -f wheel

- name: Verify wheel contains binary
shell: pwsh
run: |
Add-Type -AssemblyName System.IO.Compression.FileSystem
$wheel = Get-ChildItem dist/*.whl | Select-Object -First 1
Write-Host "Inspecting $($wheel.Name)"
$zip = [System.IO.Compression.ZipFile]::OpenRead($wheel.FullName)
$entries = $zip.Entries | Where-Object { $_.Name -match '\.(pyd|dll)$' }
if ($entries.Count -eq 0) {
Write-Error "No .pyd or .dll found in wheel"
$zip.Dispose()
exit 1
}
$entries | ForEach-Object { Write-Host "Found: $($_.FullName)" }
$zip.Dispose()

- name: Smoke test — install and import
shell: pwsh
run: |
python -m venv test-env
test-env\Scripts\Activate.ps1
pip install (Get-ChildItem dist\*.whl).FullName
python -c "import ellphi; print('version:', ellphi.__version__)"
python -c "from ellphi.solver import has_cpp_backend; assert has_cpp_backend(), 'C++ backend not available'"
python -c "from ellphi.solver import build_info; print(build_info())"

- name: Smoke test — run solver
shell: pwsh
run: |
test-env\Scripts\Activate.ps1
python -c @"
import numpy as np
from ellphi import tangency, coef_from_cov
c1 = coef_from_cov(np.array([[0.0, 0.0]]), np.eye(2).reshape(1, 2, 2))
c2 = coef_from_cov(np.array([[3.0, 0.0]]), np.eye(2).reshape(1, 2, 2))
result = tangency(c1, c2)
print('tangency t =', result.t)
assert result.t > 0, 'Expected positive tangency time'
print('Solver smoke test passed.')
"@

- name: Upload wheel artifact
uses: actions/upload-artifact@v4
with:
name: wheel-windows-py${{ matrix.python-version }}
path: dist/*.whl
retention-days: 30
37 changes: 37 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: docs

on:
push:
branches:
- main
- "ellphi-*"
pull_request:
workflow_dispatch:

permissions:
contents: write

jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install poetry
run: pipx install poetry

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

- name: Install dependencies
run: poetry install --with docs

- name: Build docs
run: poetry run mkdocs build

- name: Deploy to gh-pages
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
run: poetry run mkdocs gh-deploy --force
42 changes: 28 additions & 14 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,29 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11"]
python-version: ["3.10", "3.11", "3.12"]
env:
ELLPHI_USE_EIGEN: "1"
ELLPHI_EIGEN_INCLUDE: "/usr/include/eigen3"

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"

- name: Install Eigen headers
run: sudo apt-get update && sudo apt-get install -y libeigen3-dev

# -- Poetry ------------------------------------------------------
- name: Install Poetry
run: pip install --upgrade poetry

- name: Cache Poetry env
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('pyproject.toml') }}-v2
Expand All @@ -60,20 +66,26 @@ jobs:
# 3.11 限定で mypy
typecheck:
runs-on: ubuntu-latest
env:
ELLPHI_USE_EIGEN: "1"
ELLPHI_EIGEN_INCLUDE: "/usr/include/eigen3"
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"

- name: Install Eigen headers
run: sudo apt-get update && sudo apt-get install -y libeigen3-dev

- name: Install Poetry
run: pip install --upgrade poetry

- name: Cache Poetry env
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('pyproject.toml') }}-v2
Expand All @@ -89,15 +101,21 @@ jobs:

package-test:
runs-on: ubuntu-latest
env:
ELLPHI_USE_EIGEN: "1"
ELLPHI_EIGEN_INCLUDE: "/usr/include/eigen3"
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"

- name: Install Eigen headers
run: sudo apt-get update && sudo apt-get install -y libeigen3-dev

- name: Install Poetry
run: pip install --upgrade poetry

Expand Down Expand Up @@ -139,13 +157,13 @@ jobs:
cd test_run
pytest ../tests

build-docs:
demo-install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
Expand All @@ -154,14 +172,10 @@ jobs:
run: pip install --upgrade poetry

- name: Cache Poetry env
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('pyproject.toml') }}-v2

- name: Install project (demo extras)
run: poetry install --with demo # Install core and demo dependencies

# Add steps for building documentation here, e.g., mkdocs build or sphinx build
# - name: Build documentation
# run: poetry run mkdocs build
run: poetry install --with demo # Ensure the demo dependency set resolves
Loading
Loading