Skip to content

Remove EinExprs dependency#327

Merged
mtfishman merged 3 commits intomainfrom
mf/remove-einexprs
Apr 23, 2026
Merged

Remove EinExprs dependency#327
mtfishman merged 3 commits intomainfrom
mf/remove-einexprs

Conversation

@mtfishman
Copy link
Copy Markdown
Member

@mtfishman mtfishman commented Apr 23, 2026

Summary

  • Breaking: removes the alg = "einexpr" contraction sequence optimizer. Downstream users should switch to one of "optimal", "greedy", "tree_sa", "sa_bipartite", or "kahypar_bipartite" (all still dispatched through the OMEinsumContractionOrders extension).
  • Deletes the ITensorNetworksEinExprsExt weak-dep extension and drops EinExprs from both the root and test/ Project.toml.
  • Removes the alg = "einexpr" cases (and the commented-out KaHyPar/einexpr block) from test/test_contraction_sequence.jl.
  • Bumps the version to 0.16.0 (minor bump for a pre-1.0 breaking change) and updates pinned ITensorNetworks compat in test/, docs/, and examples/ Project.toml accordingly.

mtfishman and others added 2 commits April 23, 2026 14:39
Delete the ITensorNetworksEinExprsExt extension and its tests. The
`alg = "einexpr"` contraction sequence optimizer is no longer supported;
use `alg = "optimal"`, `"greedy"`, `"tree_sa"`, `"sa_bipartite"`, or
`"kahypar_bipartite"` via OMEinsumContractionOrders instead.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removing the EinExprs extension drops the `alg = "einexpr"` contraction
sequence algorithm, so this is a breaking change. Bump the root package
to 0.16.0 and update the pinned version in test/, docs/, and examples/
Project.toml files to match.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mtfishman mtfishman changed the title Remove EinExprs dependency [Breaking] Remove EinExprs dependency Apr 23, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.25%. Comparing base (b9fa26d) to head (bd14b85).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #327      +/-   ##
==========================================
- Coverage   71.45%   71.25%   -0.20%     
==========================================
  Files          81       80       -1     
  Lines        4029     4001      -28     
==========================================
- Hits         2879     2851      -28     
  Misses       1150     1150              
Flag Coverage Δ
docs 36.83% <ø> (+0.26%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@mtfishman mtfishman changed the title [Breaking] Remove EinExprs dependency Remove EinExprs dependency Apr 23, 2026
mtfishman added a commit to ITensor/ITensorActions that referenced this pull request Apr 23, 2026
## Summary
The `try/catch Pkg.Resolve.ResolverError` wrapper was only around the
registered-package branch of `IntegrationTest.yml`. URL-based
downstreams (unregistered / private packages specified as `https://...`
or `git@...`) ran `Pkg.add(url=pkg)` / `Pkg.develop(".")` /
`Pkg.update()` with no error handling, so a breaking change in the PR
that the downstream's compat didn't allow failed the job instead of
being reported as an intentional SemVer-breaking change.

This PR hoists the existing `try/catch` up to cover the full `if/else`,
so both branches share one resolver-error exit (the "not compatible with
this release — no problem" path). No other behavior changes.

Surfaced by
[ITensor/ITensorNetworks.jl#327](ITensor/ITensorNetworks.jl#327),
where the Tennis.jl downstream (passed as a URL) failed with
`ResolverError` after the PR bumped ITensorNetworks to 0.16.0.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mtfishman
Copy link
Copy Markdown
Member Author

Closing and reopening to trigger a fresh IntegrationTest run that picks up ITensor/ITensorActions#80 (URL-branch ResolverError catch) from main. The previous gh run rerun replayed the cached workflow and didn't pull the fix.

@mtfishman mtfishman closed this Apr 23, 2026
@mtfishman mtfishman reopened this Apr 23, 2026
@mtfishman mtfishman enabled auto-merge (squash) April 23, 2026 20:09
@mtfishman mtfishman merged commit 6912226 into main Apr 23, 2026
16 of 17 checks passed
@mtfishman mtfishman deleted the mf/remove-einexprs branch April 23, 2026 20:23
mtfishman added a commit that referenced this pull request Apr 26, 2026
`DataStructures` was narrowed to `"0.18"` in #328 because the `EinExprs`
weakdep pinned it that way. The `EinExprs` dependency was removed in
#327, but the narrowed `DataStructures` compat was never reverted (and
`DataStructures` itself is no longer `using`'d anywhere in `src/`,
`ext/`, or `test/`). Drop the entry entirely from `[deps]` and `[compat]`.

This also unblocks `OrdinaryDiffEqTsit5 = "1.1, 2"` resolution: the
v2 chain pulls in `OrdinaryDiffEqCore` 4, which requires
`DataStructures` 1.x-3.x and was previously incompatible with the 0.18 pin.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mtfishman added a commit that referenced this pull request Apr 26, 2026
`DataStructures` was narrowed to `"0.18"` in #328 because the `EinExprs`
weakdep pinned it that way. The `EinExprs` dependency was removed in
#327, but the narrowed `DataStructures` compat was never reverted (and
`DataStructures` itself is no longer `using`'d anywhere in `src/`,
`ext/`, or `test/`). Drop the entry entirely from `[deps]` and `[compat]`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant