QA: run_qa v1.6 form + ExplicitImports#219
Merged
ChrisRackauckas merged 4 commits intoJul 2, 2026
Merged
Conversation
Convert the hand-rolled test/qa/qa.jl Aqua + ExplicitImports body to the SciMLTesting 1.6 `run_qa` form with `explicit_imports = true`. - Aqua: `Aqua.test_all(...; ambiguities = false)` + a separate `test_ambiguities(...; recursive = false)` becomes `aqua_kwargs = (; ambiguities = (; recursive = false))`, preserving the intent (no recursive ambiguities sweep into deps, only the package's own). - ExplicitImports: now runs all six checks (the prior body ran only three and never the two public-API checks). The newly-surfaced public-API findings are other packages' not-yet-public names, ignored with documented per-source lists (SciMLBase / Base / LuxCore / Lux.LuxOps / CommonSolve). No @test_broken needed: 0 hard fails on lts and latest. - Doctests testset kept as-is (run_qa does not cover doctests). - Deps: qa env drops ExplicitImports (transitive via SciMLTesting), plus the now-unused SafeTestsets and SciMLSensitivity; keeps Aqua (the ambiguities child-process check needs Aqua a direct dep); SciMLTesting compat -> "1.6". Root Project.toml drops the now-unused ExplicitImports test extra and bumps SciMLTesting compat -> "1.6". Verified locally against released SciMLTesting 1.6.0 (no dev-from-branch): Quality Assurance 17/17 + Doctests 1/1, 0 Fail/Error/Broken on Julia 1.10 (lts) and Julia 1.12 (the "1" lane). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…b make-public)
SciMLTesting 1.7.0 runs the two public-API ExplicitImports checks
(check_all_qualified_accesses_are_public / check_all_explicit_imports_are_public)
only on Julia >= 1.11 (skipped on the lts), and the base libraries SciMLBase
3.24.0 / CommonSolve 0.2.9 / LuxCore 1.5.3 / ArrayInterface 7.26.0 made most of
the previously-ignored names public. The per-repo public-API ignore-lists are
therefore largely redundant.
- Empty both public-API ignore-lists down to only the names that the checks
still flag as non-public on Julia 1.12 against the registered releases:
- all_qualified_accesses_are_public: keep :DEStats (SciMLBase). Dropped
:NLStats (now public, SciMLBase), :Fix1 (now public, Base),
:apply/:initialstates/:replicate/:setup/:update_state (now public, LuxCore),
:getproperty (now public, Lux.LuxOps).
- all_explicit_imports_are_public: keep :AbstractNonlinearAlgorithm,
:_unwrap_val (SciMLBase). Dropped :AbstractODEAlgorithm (now public,
SciMLBase) and :solve (now public, CommonSolve).
- Bump SciMLTesting compat 1.6 -> 1.7 in the root and qa Project.toml so the
released 1.7 (with the lts public-check skip) is resolved.
Verified against registered releases (no dev), clean depots:
- Julia 1.12 (>= 1.11, public checks RUN): Quality Assurance 17/17 pass,
0 Fail/Error/Broken (SciMLBase 3.24.0, CommonSolve 0.2.9, ArrayInterface
7.26.0, LuxCore 1.5.3, SciMLTesting 1.7.0).
- Julia 1.10 (lts, public checks SKIPPED by SciMLTesting 1.7): Quality
Assurance 15/15 pass (= 17 minus the 2 skipped public-API checks),
0 Fail/Error/Broken.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
DEStats and AbstractNonlinearAlgorithm became public in SciMLBase 3.27.0, so drop them from the ExplicitImports public-API ignore lists. The all_qualified_accesses_are_public ignore is now empty (removed). Only _unwrap_val remains in all_explicit_imports_are_public (SciMLBase internal, not yet declared public). No DiffEqBase.X -> SciMLBase.X source migration was needed: src has no qualified DiffEqBase accesses, and DEStats was already accessed as SciMLBase.DEStats. Also add SteadyStateDiffEq to the isolated test/qa env deps. Moving QA into test/qa/ (this PR) dropped it from the env, breaking the src/layers.jl doctest's `using ...SteadyStateDiffEq...` (it was implicitly available in the root test env before, as a direct package dep). Restores the doctest. Verified on Julia 1.12 (public-API checks active, registered SciMLBase 3.27.0 / DiffEqBase 7.6.0 / SciMLTesting 1.7.0): QA 17/17 + Doctests 1/1. Verified on Julia 1.10 (public-API checks skipped per SciMLTesting >=1.11 gate): QA 15/15 + Doctests 1/1. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The only remaining ExplicitImports exception was
`all_explicit_imports_are_public = (; ignore = (:_unwrap_val,))`.
`SciMLBase._unwrap_val` is a `_`-prefixed internal that will not be made
public, so instead of ignoring it, reproduce it locally (it is trivially
`_unwrap_val(::Val{B}) where {B} = B; _unwrap_val(B) = B`) and drop the
SciMLBase import of it.
With that, all six EI checks pass with no ignore lists at all, so the
entire `ei_kwargs` block is removed.
Verified on Julia 1.12.6 against released SciMLBase 3.30.0 /
SciMLTesting 1.7.0 / ExplicitImports 1.15.0: run_qa Quality Assurance
17/17 pass, 0 fail/error/broken; all 6 EI checks (no_implicit_imports,
no_stale_explicit_imports, all_explicit_imports_are_public,
all_qualified_accesses_are_public, both via_owners) pass clean.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Please ignore until reviewed by @ChrisRackauckas.
Brings this repo's QA onto the SciMLTesting 1.6
run_qaform with ExplicitImports enabled (explicit_imports = true).What changed
test/qa/qa.jl— replaces the hand-rolled Aqua + ExplicitImports body with a singlerun_qa(DeepEquilibriumNetworks; explicit_imports = true, ...). TheDocteststestset is kept verbatim (run_qa does not cover doctests).Aqua.test_all(...; ambiguities = false)+ separateAqua.test_ambiguities(...; recursive = false)is preserved asaqua_kwargs = (; ambiguities = (; recursive = false))(no recursive sweep into deps; only the package's own methods).test/qa/Project.toml— dropsExplicitImports(now transitive via SciMLTesting) plus the now-unusedSafeTestsetsandSciMLSensitivity; keepsAqua(the ambiguities child-process check needs Aqua a direct dep);SciMLTestingcompat →"1.6".Project.toml(root) — drops the now-unusedExplicitImportstest extra;SciMLTestingcompat →"1.6".ExplicitImports findings
The prior
qa.jlran only three EI checks (no_implicit_imports,no_stale_explicit_imports,all_qualified_accesses_via_owners).run_qa(... explicit_imports = true)runs all six, which surfaced the two public-API checks. All four standard checks pass with no ignores. The two public-API checks fail only on other packages' not-yet-public names, ignored with documented per-source lists (they go away as those base libs mark the names public):all_qualified_accesses_are_public:DEStats,NLStats(SciMLBase);Fix1(Base);apply,initialstates,replicate,setup,update_state(LuxCore);getproperty(Lux.LuxOps).all_explicit_imports_are_public:AbstractNonlinearAlgorithm,AbstractODEAlgorithm,_unwrap_val(SciMLBase);solve(CommonSolve).No findings were fixed by source edits and none require
@test_broken— 0 hard fails.Verification
Run locally against released SciMLTesting 1.6.0 (Pkg resolves it; no dev-from-branch), QA group via the
run_testsfolder model:0 Fail / 0 Error / 0 Broken on both lanes.
🤖 Generated with Claude Code