QA: run_qa v1.6 form + ExplicitImports#549
Merged
ChrisRackauckas merged 3 commits intoJun 27, 2026
Merged
Conversation
Rewrite the QA group's hand-rolled Aqua body (test/qa/qa.jl) onto the
SciMLTesting 1.6 `run_qa` form and enable the ExplicitImports checks.
- test/qa/qa.jl: replace the 8 individual `Aqua.test_*` calls with
`run_qa(DataInterpolations; explicit_imports = true, ...)`. run_qa runs
the full `Aqua.test_all` (Aqua + ExplicitImports come from SciMLTesting's
own deps) plus the 6 ExplicitImports checks. No aqua_kwargs / aqua_broken
needed: Aqua.test_all passes with defaults (including recursive
ambiguities and persistent_tasks, which the old find_persistent_tasks_deps
body did not exercise). No JET (none in the prior qa.jl). No ei_broken.
- src/DataInterpolations.jl: make the implicit `using` lines explicit
(`using X: X, names...`) so check_no_implicit_imports passes by FIX rather
than suppression. The exact set ExplicitImports flagged:
LinearAlgebra{Tridiagonal,dot,norm,normalize!}, RecipesBase{@recipe,@Series},
PrettyTables{pretty_table}, ForwardDiff, EnumX{@enumx}.
- ei_kwargs ignores (documented, not broken markers):
* no_implicit_imports / no_stale_explicit_imports: allow_unanalyzable =
(DataInterpolations.ExtrapolationType,) — the @enumx-generated submodule
has dynamic includes ExplicitImports cannot statically analyze.
* all_qualified_accesses_are_public: ignore ForwardDiff.{Dual,derivative,
value} (not public in ForwardDiff) and Base.{front,require_one_based_indexing}
(Base internals flagged non-public on the Julia 1.10 LTS lane only).
- test/qa/Project.toml: bump SciMLTesting compat floor to 1.6 (the run_qa
v1.6 form + EI defaults). Aqua kept as a direct dep (Aqua.test_all's
ambiguities child-process needs it). ExplicitImports stays transitive via
SciMLTesting (not added).
Verified locally against released SciMLTesting 1.6.0 (resolved by Pkg, no
dev-from-branch): QA group green on both lanes —
Julia 1.10 (lts): Quality Assurance | 17 pass 0 fail 0 error 0 broken
Julia 1.12 ("1"): Quality Assurance | 17 pass 0 fail 0 error 0 broken
plus QA/alloc_tests.jl 8/8 (unchanged sibling file).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7 runs the two public-API ExplicitImports checks
(all_qualified_accesses_are_public / all_explicit_imports_are_public)
only on Julia >= 1.11, skipping them on the 1.10 LTS. The Base internal
`:front` was only ever flagged on 1.10, so it is now inert and removed.
Verified against registered releases (SciMLTesting 1.7.0):
* Julia 1.12: QA group 17/17, public checks green.
* Julia 1.11: QA group 17/17 (Base.require_one_based_indexing is still
non-public there, so it is retained; it became public in >= 1.12).
* Julia 1.10: public checks correctly skipped.
ForwardDiff.{Dual,derivative,value} stay ignored (non-public in a
non-SciML dependency we cannot annotate).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ndexing ignore
SciMLTesting 1.7 runs the two public-API ExplicitImports checks
(all_qualified_accesses_are_public / all_explicit_imports_are_public)
only on Julia >= 1.11, so bump test/qa compat floor 1.6 -> 1.7 to admit it.
The CI matrix is [lts, 1, pre] = Julia 1.10, 1.12, 1.13; there is no 1.11
lane. Base.require_one_based_indexing is public on Julia >= 1.12, so the
public-API check never flags it on any lane that runs those checks (1.12
and 1.13); it was retained only for a 1.11 lane that CI does not run.
Dropping it from the ignore list leaves the genuine survivors
ForwardDiff.{Dual,derivative,value} (non-public in ForwardDiff, a
non-SciML dependency we cannot annotate).
DataInterpolations does not depend on DiffEqBase or SciMLBase, so there
is no DiffEqBase.X -> SciMLBase.X caller migration to do.
Verified against registered releases (SciMLTesting 1.7.0, DataInterpolations
9.0.0 developed from branch, no dev of SciMLTesting):
* Julia 1.12: Quality Assurance 17/17 (public checks run; emptying the
public-API ignore surfaced only ForwardDiff Dual/derivative/value, which
are restored).
* Julia 1.10: Quality Assurance 15/15 (public checks correctly skipped).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.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.
Note
Please ignore until reviewed by @ChrisRackauckas.
Brings this repo's QA group onto the SciMLTesting 1.6
run_qaform and enables the ExplicitImports checks.What changed
test/qa/qa.jl— replaced the hand-rolled body (8 individualAqua.test_*calls) with:run_qaruns the fullAqua.test_all(Aqua + ExplicitImports come from SciMLTesting's own deps) plus the 6 ExplicitImports checks. No JET (none in the priorqa.jl), noaqua_kwargs/aqua_broken(Aqua.test_allpasses with defaults — including recursive ambiguities andpersistent_tasks, which the oldfind_persistent_tasks_depsbody did not actually exercise), noei_broken.src/DataInterpolations.jl— made the implicitusinglines explicit (using X: X, names...) socheck_no_implicit_importspasses by FIX rather than suppression.test/qa/Project.toml—SciMLTestingcompat floor bumped to1.6.Aquakept as a direct dep (theAqua.test_allambiguities child-process needs it);ExplicitImportsstays transitive via SciMLTesting (not added).ExplicitImports findings (6 checks)
no_implicit_importsusing X: ...for LinearAlgebra{Tridiagonal,dot,norm,normalize!}, RecipesBase{@recipe,@Series}, PrettyTables{pretty_table}, ForwardDiff, EnumX{@enumx}no_stale_explicit_importsallow_unanalyzable = (DataInterpolations.ExtrapolationType,)(the@enumx-generated submodule has dynamic includes EI can't statically analyze)all_explicit_imports_via_ownersall_qualified_accesses_via_ownersall_qualified_accesses_are_publicForwardDiff.{Dual,derivative,value}(non-public in ForwardDiff) andBase.{front,require_one_based_indexing}(Base internals flagged non-public only on the Julia 1.10 LTS lane)all_explicit_imports_are_publicNo findings deferred to
@test_broken; everything is FIXED or documented-IGNORE.Verification (local, released SciMLTesting 1.6.0 — resolved by Pkg, no dev-from-branch)
🤖 Generated with Claude Code