Skip to content

QA: run_qa v1.6 form + ExplicitImports#549

Merged
ChrisRackauckas merged 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicit-imports
Jun 27, 2026
Merged

QA: run_qa v1.6 form + ExplicitImports#549
ChrisRackauckas merged 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run_qa-v1.6-explicit-imports

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Note

Please ignore until reviewed by @ChrisRackauckas.

Brings this repo's QA group onto the SciMLTesting 1.6 run_qa form and enables the ExplicitImports checks.

What changed

  • test/qa/qa.jl — replaced the hand-rolled body (8 individual Aqua.test_* calls) with:
    using SciMLTesting, DataInterpolations, Test
    run_qa(DataInterpolations; explicit_imports = true, ei_kwargs = (; ...))
    run_qa runs the full Aqua.test_all (Aqua + ExplicitImports come from SciMLTesting's own deps) plus the 6 ExplicitImports checks. No JET (none in the prior qa.jl), no aqua_kwargs/aqua_broken (Aqua.test_all passes with defaults — including recursive ambiguities and persistent_tasks, which the old find_persistent_tasks_deps body did not actually exercise), no ei_broken.
  • src/DataInterpolations.jl — made the implicit using lines explicit (using X: X, names...) so check_no_implicit_imports passes by FIX rather than suppression.
  • test/qa/Project.tomlSciMLTesting compat floor bumped to 1.6. Aqua kept as a direct dep (the Aqua.test_all ambiguities child-process needs it); ExplicitImports stays transitive via SciMLTesting (not added).

ExplicitImports findings (6 checks)

Check Result Handling
no_implicit_imports was 13 implicit names FIXEDusing X: ... for LinearAlgebra{Tridiagonal,dot,norm,normalize!}, RecipesBase{@recipe,@Series}, PrettyTables{pretty_table}, ForwardDiff, EnumX{@enumx}
no_stale_explicit_imports pass allow_unanalyzable = (DataInterpolations.ExtrapolationType,) (the @enumx-generated submodule has dynamic includes EI can't statically analyze)
all_explicit_imports_via_owners pass
all_qualified_accesses_via_owners pass
all_qualified_accesses_are_public pass ignore ForwardDiff.{Dual,derivative,value} (non-public in ForwardDiff) and Base.{front,require_one_based_indexing} (Base internals flagged non-public only on the Julia 1.10 LTS lane)
all_explicit_imports_are_public pass

No 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)

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
QA/alloc_tests.jl:  8/8 (unchanged sibling file)

🤖 Generated with Claude Code

ChrisRackauckas and others added 3 commits June 25, 2026 07:38
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>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 27, 2026 21:30
@ChrisRackauckas ChrisRackauckas merged commit a7e432f into SciML:master Jun 27, 2026
4 of 7 checks passed
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