QA: run_qa v1.6 form + ExplicitImports#612
Merged
ChrisRackauckas merged 4 commits intoJul 3, 2026
Merged
Conversation
Convert the hand-rolled test/qa.jl (Aqua + a partial ExplicitImports body) to SciMLTesting's run_qa v1.6 with explicit_imports = true so all six ExplicitImports checks run. The previous qa.jl only ran three EI checks (no_implicit_imports, no_stale_explicit_imports as @test, all_explicit_imports_via_owners as the softer @test_nowarn) and never ran the public-API / qualified-access-owner checks. Enabling explicit_imports = true surfaces those; the findings are all non-public names owned by other packages (SciMLBase types re-exported through DiffEqBase, DiffEqBase/Base/LinearAlgebra/ArrayInterface/FunctionWrappers internals, DiffEqCallbacks gauss data) plus one own non-public name (ExtendedJumpArrayStyle). They are documented per-source and ignored via ei_kwargs, so all six checks pass green (0 Fail/Error/Broken). Aqua tuning disables preserved as aqua_kwargs (ambiguities, piracies, persistent_tasks). Deps: add SciMLTesting (compat 1.6); drop Aqua (no longer a needed direct dep since the ambiguities child-proc check is disabled) and ExplicitImports (now transitive via SciMLTesting). Verified locally against released SciMLTesting 1.6.0 (GROUP=QA): QA Tests 14/14 Pass. 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 (check_all_qualified_accesses_are_public, check_all_explicit_imports_are_public) only on Julia >= 1.11, and several base libs published their public-API surface (ArrayInterface 7.26.0 made zeromatrix public). Drop the now-redundant ignore entries. Removed from all_qualified_accesses_are_public: - zeromatrix (ArrayInterface): now public in 7.26.0. - ExtendedJumpArrayStyle (JumpProcesses own): never flagged by the qualified-access public check (it is JumpProcesses' own name, not a qualified access into another module). All other names remain genuinely non-public in their owner package's released API and are kept. all_explicit_imports_are_public is unchanged (all five names still non-public). all_qualified_accesses_via_owners, aqua_kwargs untouched. Verified against registered releases (SciMLTesting 1.7.0, SciMLBase 3.24.0, ArrayInterface 7.26.0, DiffEqBase 7.5.7, DiffEqCallbacks 4.18.0): - Julia 1.12 (public checks run): QA Tests 14/14 Pass, 0 Fail/Error/Broken. - Julia 1.10 (public checks skipped): QA Tests 12/12 Pass. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…public-API EI ignores
SciMLBase 3.27.0 made its problem/algorithm/solution abstract types and
build_solution public, and DiffEqBase 7.6.0 made get_tstops*/ODE_DEFAULT_NORM/
apply_discrete_callback!/merge_problem_kwargs public. SciMLTesting 1.7 gates the
public-API ExplicitImports checks to Julia >= 1.11.
Source (src/, ext/): rewrite the 14 SciMLBase-owned qualified accesses that were
reaching through the DiffEqBase re-export (Abstract{DAE,DDE,Discrete,ODE,SDE,Jump}Problem,
AbstractDEAlgorithm, build_solution, ConstantInterpolation, DISCRETE_INPLACE_DEFAULT,
__init, __solve, parameterless_type, solution_new_retcode) to SciMLBase.X. DiffEqBase-owned
accesses (merge_problem_kwargs, ODE_DEFAULT_NORM, get_tstops*, apply_discrete_callback!,
Stats) keep their DiffEqBase.X form. Add `import SciMLBase` to the OrdinaryDiffEqCore ext.
QA (test/qa.jl): the all_qualified_accesses_via_owners list is now fully clean and was
removed. all_qualified_accesses_are_public is reduced to the genuine non-public survivors
(Base/Broadcast/FastMath internals, SciMLBase non-public, DiffEqBase Stats, LinearAlgebra
AbstractQ, FunctionWrappers FunctionWrapper); the now-public DiffEqBase names and the
migrated/now-public SciMLBase names were dropped. all_explicit_imports_are_public unchanged.
Verified: QA group 14/14 on Julia 1.12 (public checks run) and 12/12 on 1.10 (public checks
skipped by SciMLTesting 1.7) against registered SciMLBase 3.27.0 / DiffEqBase 7.6.0 /
SciMLTesting 1.7.0. Split Coupled 5/5, Variable Rate 75/75, Constant Rate 2/2 on 1.12.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What
Convert the hand-rolled
test/qa.jl(Aqua + a partial ExplicitImports body) to SciMLTesting'srun_qav1.6 form, withexplicit_imports = trueso all six ExplicitImports checks run.Before
test/qa.jlranAqua.test_allplus only three EI checks:check_no_implicit_importsandcheck_no_stale_explicit_importsas@test, andcheck_all_explicit_imports_via_ownersunder the softer@test_nowarn. The three public-API / qualified-access-owner checks were never run.After
explicit_imports = trueruns all six EI checks. Verified locally against released SciMLTesting 1.6.0 (GROUP=QA): QA Tests 14/14 Pass, 0 Fail/Error/Broken.ExplicitImports findings
The three newly-run checks surfaced only non-public names; all are FIXED-by-ignore (documented per source), 0 BROKEN:
all_qualified_accesses_via_owners(15 names): SciMLBase types re-exported through DiffEqBase and accessed asDiffEqBase.X(e.g.AbstractODEProblem,build_solution,__init,__solve).all_qualified_accesses_are_public(~45 names): Base / Base.Broadcast / Base.FastMath internals, SciMLBase + DiffEqBase non-public, LinearAlgebra (AbstractQ), ArrayInterface (zeromatrix), FunctionWrappers (FunctionWrapper), plus JumpProcesses' own non-publicExtendedJumpArrayStyle.all_explicit_imports_are_public(5 names):DEIntegrator/plot_indices(SciMLBase),add_fast(Base.FastMath),gauss_points/gauss_weights(DiffEqCallbacks).These are other packages' internals (they go public as the base libs release) and one own internal; each ignore is annotated with its source package in
test/qa.jl. The first three checks (no_implicit_imports,no_stale_explicit_imports,all_explicit_imports_via_owners) already pass with no ignores.Aqua
Preserved the existing tuning disables as
aqua_kwargs:ambiguities = false(TODO),piracies = false(default solvers for AbstractJumpProblem),persistent_tasks = false(false positives). No tracked@test_brokenexisted, so noaqua_broken. No JET in this repo.Deps
SciMLTesting(compat"1.6").Aquaas a direct test dep (now transitive via SciMLTesting; theambiguitieschild-proc check that needs Aqua direct is disabled here).ExplicitImports(now transitive via SciMLTesting).🤖 Generated with Claude Code