Skip to content

QA: run_qa v1.6 form + ExplicitImports#612

Merged
ChrisRackauckas merged 4 commits into
SciML:masterfrom
ChrisRackauckas-Claude:qa-run-qa-v1.6-explicit-imports
Jul 3, 2026
Merged

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

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Please ignore until reviewed by @ChrisRackauckas.

What

Convert the hand-rolled test/qa.jl (Aqua + a partial ExplicitImports body) to SciMLTesting's run_qa v1.6 form, with explicit_imports = true so all six ExplicitImports checks run.

Before

test/qa.jl ran Aqua.test_all plus only three EI checks: check_no_implicit_imports and check_no_stale_explicit_imports as @test, and check_all_explicit_imports_via_owners under the softer @test_nowarn. The three public-API / qualified-access-owner checks were never run.

After

using SciMLTesting, JumpProcesses, Test
run_qa(JumpProcesses; explicit_imports = true, aqua_kwargs = (; ...), ei_kwargs = (; ...))

explicit_imports = true runs 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 as DiffEqBase.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-public ExtendedJumpArrayStyle.
  • 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_broken existed, so no aqua_broken. No JET in this repo.

Deps

  • Add SciMLTesting (compat "1.6").
  • Drop Aqua as a direct test dep (now transitive via SciMLTesting; the ambiguities child-proc check that needs Aqua direct is disabled here).
  • Drop ExplicitImports (now transitive via SciMLTesting).

🤖 Generated with Claude Code

ChrisRackauckas and others added 3 commits June 25, 2026 06:15
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>
@ChrisRackauckas-Claude ChrisRackauckas-Claude marked this pull request as ready for review June 27, 2026 20:59
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas ChrisRackauckas merged commit 1c3a2d4 into SciML:master Jul 3, 2026
12 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