Skip to content

compat: declare SciMLTesting 2.10 and remove blanket reexports - #81

Merged
ChrisRackauckas merged 9 commits into
SciML:mainfrom
ChrisRackauckas-Claude:codex/scimltesting-compat-2.4
Aug 17, 2026
Merged

compat: declare SciMLTesting 2.10 and remove blanket reexports#81
ChrisRackauckas merged 9 commits into
SciML:mainfrom
ChrisRackauckas-Claude:codex/scimltesting-compat-2.4

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Aug 15, 2026

Copy link
Copy Markdown
Member

Summary

  • Remove the blanket @reexport using BandedMatrices surface.
  • Retain only brand, which is used unqualified by the documented AlmostBandedMatrix construction workflow.
  • Keep BandedMatrix and all other banded types/utilities available through BandedMatrices directly.
  • Document the retained brand API and align the README, rendered API page, export regression test, and SciMLTesting allowlist.

Please ignore this draft until reviewed by @ChrisRackauckas.

Verification

All commands were run locally after commit 6a5f54a.

  • GROUP=Core julia --project=. -e "using Pkg; Pkg.test()": 35 pass / 2 broken / 37 total.
  • GROUP=QA julia --project=. -e "using Pkg; Pkg.test()": allocations 11/11; QA 18 pass / 2 broken / 20 total.
  • julia --project=docs docs/make.jl: exit 0 with doctests, cross-references, document checks, rendering, and HTML generation enabled.
  • Runic check, Typos, and git diff --check: exit 0.

The two broken Core/QA markers are unchanged ambiguity markers; no tests were disabled or loosened.
The hosted BoundaryValueDiffEq downstream failure is unrelated and has no FastAlmostBandedMatrices frame: https://github.com/SciML/FastAlmostBandedMatrices.jl/actions/runs/31938374279/job/95143782151

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title compat: declare SciMLTesting 2.4 compat: declare SciMLTesting 2.10 Aug 15, 2026
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title compat: declare SciMLTesting 2.10 compat: declare SciMLTesting 2.10 and remove blanket reexports Aug 15, 2026
Keep the blanket BandedMatrices reexport removed while preserving the documented construction path through FastAlmostBandedMatrices itself. Reexport only BandedMatrix and brand, document that small construction-helper surface, and cover it with a focused Core test.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Assert that the documented BandedMatrix and brand helpers remain exported while representative blanket BandedMatrices names do not.\n\nCo-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Inspected the held reexport removal against the README, rendered API, doctests, and focused tests. No documented downstream use requires restoring the blanket BandedMatrices reexport. The documented path uses AlmostBandedMatrix with brand; BandedMatrix and brand are explicitly retained, exported, and documented. Other BandedMatrices names are imported directly where tests intentionally use them.

Evidence on the already-pushed head bc529fa769b87c4d9f1159ddfd86ae4cf4af927d: Core 35 pass / 2 broken / 37 total; QA allocations 11/11; QA 16 pass / 2 broken / 18 total; Julia 1.12 docs exited 0; Runic, typos, and git diff --check passed. Julia 1.10 docs could not start because this host depot lacks OpenSSL_jll; hosted docs passed. The push was confirmed as up-to-date, so no redundant source commit was added.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Correction to the previous comment: the hosted failure is BoundaryValueDiffEq's BigFloat downstream test, with an ambiguous promote_rule(BigFloat, SparseConnectivityTracer.Dual{BigFloat,...}). It does not involve FastAlmostBandedMatrices or the changed reexports. The rework is locally verified (Core/QA/docs/Runic/typos pass).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Reworked in commit 6a5f54a: current master documents and uses brand unqualified, so it remains the only retained user-facing BandedMatrices reexport. BandedMatrix was not a documented constructor in this package and is now accessed as BandedMatrices.BandedMatrix; the README/API page and regression test are aligned. Local Core, QA, docs, Runic, Typos, and diff checks pass as recorded above.

Use BandedMatrices.brand explicitly in documented construction examples and keep the FastAlmostBandedMatrices API limited to its own documented names.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Audit against current main (base 27f3749) found that the blanket reexport removal is correct. The original public API list did not include brand; it was only reachable accidentally through @reexport using BandedMatrices.

Follow-up commit 9868805 removes the unnecessary FastAlmostBandedMatrices.brand alias as well, restores explicit BandedMatrices imports in README/docs examples, qualifies source examples/internal precompile code with BandedMatrices.brand, and tests that the package no longer exports brand or the other BandedMatrices names.

Verification on the updated branch:

  • GROUP=Core julia --project=. -e 'using Pkg; Pkg.test()': 35 passing, 2 existing broken, 37 total.
  • GROUP=QA julia --project=. -e 'using Pkg; Pkg.test()': 18 passing, 2 existing broken, 20 total.
  • julia --project=docs docs/make.jl: exit 0; doctests, cross-references, document checks, and HTML rendering completed.
  • typos: clean.
  • Runic formatting: clean.
  • git diff --check: clean.

The documented construction remains usable as using BandedMatrices, FastAlmostBandedMatrices; no downstream source in the local SciML checkout set relied on FastAlmostBandedMatrices.brand.

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review August 17, 2026 06:45
@ChrisRackauckas
ChrisRackauckas merged commit f3ec92e into SciML:main Aug 17, 2026
16 of 17 checks passed
ChrisRackauckas added a commit that referenced this pull request Aug 23, 2026
Commit f3ec92e ("compat: declare SciMLTesting 2.10 and remove blanket
reexports", #81) deleted `@reexport using BandedMatrices` from
FastAlmostBandedMatrices. That silently stripped the package's public surface:
`using FastAlmostBandedMatrices` no longer brought `BandedMatrix` or `brand`
into scope, so the package's own documented construction path stopped working
without a separate `using BandedMatrices`. The same commit had to rewrite every
docstring example from `brand(...)` to `BandedMatrices.brand(...)` and add
`using BandedMatrices` to the README, the docs and nearly every testset -- which
is itself the evidence that those names are normal documented use.

Following the rule "reexport what is normal documented use, but not whole
dependencies", this restores an explicit `export` list instead of the blanket
reexport:

    BandedMatrix, brand, brandn            # build the `bands` argument
    Band, BandRange, band, bandrange       # populate it
    bandwidth, bandwidths, colrange, rowrange  # query it
    BandError                              # thrown by out-of-band setindex!

Everything else BandedMatrices exports stays out, in particular the FillArrays
names it reexports in turn (`Fill`, `Ones`, `Zeros`, `Eye`), the `BandedMatrices`
module binding itself, and `symrcm`.

Evidence for the list:

  * `AlmostBandedMatrix(bands::BandedMatrix, fill)` is the documented
    constructor, and every docstring/README/docs example builds `bands` with
    `brand`; `brandn` is its direct sibling.
  * `test/core_tests.jl` uses `BandedMatrix`, `brand`, `band(0)` and
    `@test_throws BandError` against this package's own type, and
    `test/qa/alloc_tests.jl` uses `brand` -- all of which needed a
    `using BandedMatrices` added by the stripping commit (in alloc_tests.jl
    without BandedMatrices even being a dependency of test/qa/Project.toml,
    which this commit also resolves by dropping that import again).
  * `bandwidth`/`bandwidths` were the two names the stripping commit itself kept
    importing, and are how `bandpart(A)` is queried.

The docstrings, README and docs examples are restored to their unqualified form,
the docs and README now list the reexported surface explicitly, the QA
allow-list (`REEXPORTED_API` in test/qa/qa.jl) is restored and kept in sync, and
a Core test pins that every approved name is exported, in scope from a bare
`using FastAlmostBandedMatrices`, and still identical to the upstream binding --
while the excluded names stay unexported.

Restoring previously exported names is not breaking; no version bump here.



Claude-Session: https://claude.ai/code/session_01Rmh6B9eoW3N8oCbuuVPVxJ

Co-authored-by: Claude <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.

2 participants