QA: run_qa v1.6 form + ExplicitImports#156
Conversation
Convert test/qa/qa.jl from hand-rolled per-check Aqua calls to the SciMLTesting v1.6 run_qa form, enabling ExplicitImports (the six EI checks) alongside the Aqua suite. ExplicitImports findings: - all_qualified_accesses_via_owners: FIXED. `AbstractODEAlgorithm` and `AbstractODEProblem` were accessed via `DiffEqBase.<name>` but are owned by SciMLBase (DiffEqBase only reexports them). Switched the three subtype annotations in src/HighDimPDE.jl to `SciMLBase.<name>`. - all_qualified_accesses_are_public: IGNORED. Six names are non-public in their owner packages (SciMLBase: AbstractODEAlgorithm, AbstractODEProblem, AbstractSciMLProblem; Flux/Flux.Optimise: AbstractOptimiser, Optimise, params). Added to the check's `ignore` list with the source package documented per name; these go public as the base libs add `public`/exports. - no_implicit_imports: BROKEN. 37 implicit names from heavy whole-module `using` of CUDA/Flux/Zygote/DiffEqBase(reexport)/etc.; making them explicit is a deliberate refactor, tracked in SciML#155. Marked ei_broken = (:no_implicit_imports,) (auto-flags once resolved). - no_stale_explicit_imports, all_explicit_imports_via_owners, all_explicit_imports_are_public: PASS. Also fixes a pre-existing Aqua stale_deps failure (reproduces on unmodified main): `Test` was listed in the package `[deps]` but is never imported by the source; it is a test-only stdlib already present in `[extras]`/`[targets].test`. Removed it from `[deps]`. Bumped SciMLTesting [compat] floor to "1.6" in both the root and test/qa Project.toml. Local QA group (Julia 1.11, released SciMLTesting 1.6.0): 16 Pass, 1 Broken (no_implicit_imports), 0 Fail, 0 Error. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLBase 3.24.0 declared AbstractODEAlgorithm, AbstractODEProblem and AbstractSciMLProblem public, and SciMLTesting 1.7.0 runs the two public-API ExplicitImports checks only on Julia >= 1.11. Drop those three SciMLBase entries from all_qualified_accesses_are_public; verified on Julia 1.12 that the check passes with only the three Flux internals (params, Optimise, Flux.Optimise.AbstractOptimiser) remaining, which Flux has not declared public. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The QA (julia 1 = 1.12) lane is red on Aqua test_undefined_exports, which flags du_cache/u_cache/user_cache. These are owned by SciMLBase, re-exported by DiffEqBase, and re-exported again here via `@reexport using DiffEqBase`. On Julia <=1.11 the binding resolves and Aqua passes; Julia 1.12's binding-partition change makes the double-reexported names report `isdefined == false`, so Aqua reports them as undefined exports. The names are absent from src/ -- this is a 1.12-only artifact of the SciMLBase->DiffEqBase reexport chain, fixable only upstream, and reproduces on unmodified main (the old hand-rolled qa.jl already called Aqua.test_undefined_exports). Not introduced by the run_qa conversion. Mark it `aqua_broken = (:undefined_exports,)` (run_qa disables the sub-check in Aqua.test_all and emits a tracked @test_broken) with a comment + issue ref so the lane is green and the placeholder is removed once the upstream chain is fixed. Tracked in SciML#157. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
|
Fixed the red Root cause (verified locally, not introduced by this conversion): on Julia 1.12 Aqua Pre-existing: reproduces on unmodified Fix: Local verification (released SciMLTesting 1.7.0):
Note: CI only schedules |
This PR should be ignored until reviewed by @ChrisRackauckas.
Brings this repo's QA group onto the SciMLTesting v1.6
run_qaform with ExplicitImports enabled, convertingtest/qa/qa.jlfrom hand-rolled per-check Aqua calls.ExplicitImports findings (6 checks)
no_implicit_importsusing(CUDA/Flux/Zygote/DiffEqBase-reexport/etc.); making them explicit is a deliberate refactor.ei_broken = (:no_implicit_imports,), tracked in #155 (auto-flags once resolved).all_qualified_accesses_via_ownersAbstractODEAlgorithm/AbstractODEProblemwere accessed viaDiffEqBase.<name>but are owned by SciMLBase (DiffEqBase only reexports them). Switched the three subtype annotations insrc/HighDimPDE.jltoSciMLBase.<name>.all_qualified_accesses_are_publicAbstractODEAlgorithm,AbstractODEProblem,AbstractSciMLProblem; Flux/Flux.Optimise:AbstractOptimiser,Optimise,params). Added to the check'signorelist with source pkg documented; these go public as the base libs addpublic/exports.no_stale_explicit_importsall_explicit_imports_via_ownersall_explicit_imports_are_publicAlso: pre-existing Aqua
stale_depsfixTestwas in the package[deps]but is never imported bysrc/— a genuine stale dep (this failure reproduces on unmodifiedmainwith the old qa.jl too).Testis a test-only stdlib already present in[extras]/[targets].test; removed it from[deps].Deps
[compat]floor bumped to"1.6"in root andtest/qa/Project.toml.Local verification (Julia 1.11, released SciMLTesting 1.6.0)
0 Fail / 0 Error. The 1 Broken is the intended
no_implicit_importsplaceholder.🤖 Generated with Claude Code