Commit 043aaa6
QA: run_qa v1.6 form + ExplicitImports (#319)
* QA: run_qa v1.6 form + ExplicitImports
Convert test/qa/qa.jl from a hand-rolled Aqua testset to SciMLTesting's
run_qa (v1.6) with ExplicitImports enabled. The bespoke JET `@test_opt`
constructor type-stability checks stay in test/qa/jet_tests.jl (run_qa's
`JET.test_package` error analysis does not subsume them); run_qa keeps its
JET off via `jet = false` so loading JET in jet_tests.jl does not
auto-enable it.
ExplicitImports findings resolved:
- no_implicit_imports: add SciMLBase.DiscreteProblem to the explicit imports
(was used implicitly).
- no_stale_explicit_imports: drop genuinely-unused imports
NonlinearLeastSquaresProblem, init, reinit!, solve! (SciMLBase) and ldiv!
(LinearAlgebra) — each was only ever accessed in qualified/extended form
(SciMLBase.reinit! etc.) or not at all. derivative_discontinuity! is kept
and ignored: it is imported inside the @static-if SciMLBase v2/v3 rename
shim and used bare on v3, which the static scan cannot see through.
- all_qualified_accesses_via_owners: change SciMLBase.copyto! to bare copyto!
in the manifold projection (copyto! is Base's, already imported from
LinearAlgebra).
- Remaining other-package non-public qualified accesses / explicit imports
ignored via ei_kwargs (SciMLBase / LinearAlgebra / Base / DiffEqBase
internals; several are `public` on 1.11+ but flagged on the LTS).
test/qa/Project.toml: add SciMLTesting (compat "1.6"); ExplicitImports comes
transitively via SciMLTesting; Aqua and JET stay direct deps (Aqua's
ambiguities child-proc and the bespoke JET check need them).
Verified locally against released SciMLTesting 1.6.0: QA group green on both
lanes (Julia 1.12: jet_tests 15/15, qa.jl 17/17; Julia 1.10 LTS: jet_tests 1
broken [JET-skip-on-LTS, preserved], qa.jl 17/17). Full Core lane green on
1.12 (manifold 25/25, domain 19/19, terminatesteadystate 11/11).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* QA: trim redundant public-API EI ignores (SciMLTesting 1.7 + released base libs)
SciMLTesting 1.7.0 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 skips them on the LTS, and SciMLBase 3.24.0 made
several formerly-internal names public. With those released, the per-name
public-API ignore-lists in test/qa/qa.jl are largely redundant.
Drop the entries that are now public on the registered releases (verified on
Julia 1.12 against SciMLBase 3.24.0):
- all_qualified_accesses_are_public: remove numargs, successful_retcode,
Success, ConvergenceFailure, InitialFailure (SciMLBase), depwarn (Base),
reverse (Base.Iterators).
Keep only what the public checks still flag against the registered releases:
- all_qualified_accesses_are_public: AbstractDEProblem, AbstractODEIntegrator,
INITIALIZE_DEFAULT, _unwrap_val, alg_order, isadaptive (SciMLBase 3.24.0,
still non-public), QRCompactWY (LinearAlgebra), RefValue (Base).
- all_explicit_imports_are_public: get_tstops, get_tstops_array,
get_tstops_max (DiffEqBase 7.5.7, still non-public).
The no_stale_explicit_imports ignore (derivative_discontinuity!) is unchanged.
qa/Project.toml needs no compat change: SciMLTesting="1.6" already admits 1.7,
and the base-lib floors transitively admit the released versions.
Verified locally against registered releases (SciMLTesting 1.7.0, SciMLBase
3.24.0, DiffEqBase 7.5.7, ExplicitImports 1.15.0):
- Julia 1.12 (public checks run): QA group 32/32 pass.
- Julia 1.10 LTS (public checks skipped): QA group 15 pass + 1 broken
(pre-existing JET-skip-on-LTS marker), 0 fail.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* QA: migrate DiffEqBase.X -> SciMLBase.X callers; strip now-public EI ignores
DiffEqBase 7.6.0 / SciMLBase 3.27.0 make the previously-internal names
public, so the public-API ExplicitImports ignores can be trimmed and the
qualified-access callers pointed at the owning module (SciMLBase):
- src: rewrite `DiffEqBase.isinplace/addsteps!/get_du!/DiscreteProblem`
(all SciMLBase-owned, now public, identity-equal re-exports) to
`SciMLBase.X`; drop the now-unused `DiffEqBase` module self-binding from
the import (only the DiffEqBase-own `get_tstops*` are still used bare);
fix the PresetTimeCallback docstring to `SciMLBase.INITIALIZE_DEFAULT`.
- qa.jl: empty `all_explicit_imports_are_public` (get_tstops* now public in
DiffEqBase 7.6.0) and drop `AbstractDEProblem/alg_order/isadaptive` from
`all_qualified_accesses_are_public` (now public in SciMLBase 3.27.0).
Survivors kept (verified still non-public on Julia 1.12 / SciMLBase 3.27.0,
DiffEqBase 7.6.0, stdlib): AbstractODEIntegrator, INITIALIZE_DEFAULT,
_unwrap_val (SciMLBase), QRCompactWY (LinearAlgebra), RefValue (Base).
Verified: QA group 17/17 on Julia 1.12 (public-API checks run), 15/15 on
Julia 1.10 (public-API checks gated off by SciMLTesting 1.7); 0 fail/error.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* QA: eliminate fixable EI exceptions (migrate/local-define), keep only stdlib internals
ExplicitImports exceptions in test/qa/qa.jl reduced from 6 to 2 by fixing the
root cause instead of ignoring:
- derivative_discontinuity! (no_stale_explicit_imports ignore): the v2/v3 rename
shim used `using SciMLBase: derivative_discontinuity!` on one branch and a
`const ... = SciMLBase.u_modified!` on the other, which EI flagged as a stale
import. Replaced with a single `const` bound to whichever public name the
loaded SciMLBase provides; behavior is identical on both v2 (u_modified!) and
v3 (derivative_discontinuity!), both of which are public. Drops the ignore.
- AbstractODEIntegrator (all_qualified_accesses_are_public ignore): now public in
SciMLBase 3.30.0 and already accessed via the public owner SciMLBase; ignore is
redundant and dropped.
- INITIALIZE_DEFAULT: defined a local no-op `INITIALIZE_DEFAULT(cb,u,t,integrator)
= derivative_discontinuity!(integrator, false)` matching SciMLBase's non-public
const (no identity comparison exists for it anywhere in SciMLBase/DiffEqBase/
OrdinaryDiffEqCore, so a local binding is behavior-preserving) and use it as the
PresetTimeCallback default. Drops the ignore.
- _unwrap_val: defined a local `_unwrap_val` (the leading-underscore SciMLBase
internal that will not be made public) reproducing its exact behavior, used in
manifold.jl. Drops the ignore.
Remaining 2 ignores are genuinely-irreducible concrete stdlib internal types with
no public spelling: LinearAlgebra.QRCompactWY (dispatch target of fact_successful)
and Base.RefValue (concrete Ref type in a parametric NamedTuple alias).
No new direct deps: all migrations went to local definitions or to already-imported
public SciMLBase API. Verified on Julia 1.12 / SciMLBase 3.30.0 / SciMLTesting 1.7.0:
QA group 17/17 pass; print_explicit_imports reports only the 2 stdlib internals.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
---------
Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 411b4bc commit 043aaa6
12 files changed
Lines changed: 67 additions & 40 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
| 12 | + | |
| 13 | + | |
14 | 14 | | |
15 | | - | |
16 | | - | |
| 15 | + | |
| 16 | + | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | | - | |
23 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
24 | 28 | | |
25 | | - | |
| 29 | + | |
26 | 30 | | |
27 | 31 | | |
28 | 32 | | |
29 | 33 | | |
30 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
31 | 45 | | |
32 | 46 | | |
33 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
181 | 181 | | |
182 | 182 | | |
183 | 183 | | |
184 | | - | |
| 184 | + | |
185 | 185 | | |
186 | 186 | | |
187 | 187 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
178 | 178 | | |
179 | 179 | | |
180 | 180 | | |
181 | | - | |
| 181 | + | |
182 | 182 | | |
183 | 183 | | |
184 | 184 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
91 | | - | |
| 91 | + | |
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
117 | | - | |
| 117 | + | |
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
| 155 | + | |
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
| 37 | + | |
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | | - | |
| 57 | + | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | | - | |
21 | | - | |
| 20 | + | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| |||
0 commit comments