QA: run_qa v1.6 form + ExplicitImports - #160
Merged
ChrisRackauckas merged 6 commits intoJul 3, 2026
Merged
Conversation
Replace the hand-rolled Aqua + ExplicitImports QA files (qa_tests.jl, explicit_imports_tests.jl) with a single qa.jl on the SciMLTesting 1.6 `run_qa` form, with ExplicitImports enabled (all six checks). - Aqua: `run_qa` runs the full `Aqua.test_all` (11 checks); no broken markers or aqua_kwargs tweaks needed — all pass. - ExplicitImports: `explicit_imports = true`. Two checks needed ignore lists for third-party symbolic-stack internal names re-exported but not owned/public by ModelingToolkit/Symbolics (documented per source pkg); the other four checks pass unmodified. - JET: `jet = false` in run_qa. Whole-package JET hits a toplevel `invalid redefinition of constant ModelOrderReduction.TSVD` (the exported `TSVD` struct collides with the `TSVD` dependency package under JET's toplevel virtualizer). The existing targeted `report_call` checks in jet_tests.jl provide the JET coverage and stay as a separate group file. test/qa/Project.toml: drop ExplicitImports (transitive via SciMLTesting), keep Aqua (ambiguities child-proc needs it direct) and JET (jet_tests.jl), bump SciMLTesting compat to "1.6". Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
`Symbolics.rhss` is an undocumented one-line internal helper (`rhss(xs) = map(x->x.rhs, xs)`, not exported). Replace the single use in deim.jl with the equivalent comprehension and drop its ExplicitImports non-public allow-list entry, so we don't depend on a Symbolics internal. 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 the base-lib make-public releases (ModelingToolkit 11.29, Symbolics 7.28+, SymbolicUtils 4.36, SciMLBase 3.24) marked most of the previously-ignored names public. Verified against registered releases on Julia 1.12: of the 13 all_qualified_accesses_are_public ignores, only :topsort_equations (still non-public in ModelingToolkit) and :getname (re-exported by Symbolics from SymbolicIndexingInterface, non-public) remain flagged. The other 11 are now public and removed. QA group passes 17/17 on 1.12 and 15/15 on 1.10 (public checks skipped on the LTS). The all_qualified_accesses_via_owners list is a distinct (non public-API) check and is left untouched. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7 gates the two public-API ExplicitImports checks (check_all_qualified_accesses_are_public / check_all_explicit_imports_are_public) to Julia >= 1.11, which is the regime in which the stripped public-API ignore lists are correct. Raising the floor from "1.6" to "1.7" ensures CI resolves a SciMLTesting that runs those checks rather than potentially an older release. Verified against the registered releases (SciMLBase 3.27.0, DiffEqBase 7.6.0, ModelingToolkit 11.29.0, Symbolics 7.29.0, SymbolicUtils 4.36.0, SciMLTesting 1.7.0, ExplicitImports 1.15.0): - Julia 1.12 (public-API checks run): emptying both public-API ignore lists leaves exactly two survivors flagged by all_qualified_accesses_are_public -- topsort_equations (non-public in ModelingToolkit) and getname (re-exported by Symbolics from SymbolicIndexingInterface, non-public). Neither is a SciMLBase-owned name, so no DiffEqBase.X -> SciMLBase.X migration applies; both are restored. all_explicit_imports_are_public passes with an empty ignore list. QA group: 17/17 pass. - Julia 1.10 (public-API checks skipped on the LTS): QA group 15/15 pass. ModelOrderReduction's source makes no qualified SciMLBase/DiffEqBase accesses, so steps 2 (caller-migrate) is a no-op for this package. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ChrisRackauckas-Claude
marked this pull request as ready for review
June 27, 2026 20:59
… ignores Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…non-public re-exports) 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.
Brings this repo's QA group onto the SciMLTesting 1.6
run_qaform with ExplicitImports enabled. Replaces the hand-rolledtest/qa/qa_tests.jl(Aqua subset) andtest/qa/explicit_imports_tests.jl(2 EI checks) with a singletest/qa/qa.jlcallingrun_qa(ModelOrderReduction; explicit_imports = true, ...).Aqua
run_qaruns the fullAqua.test_all(11 sub-checks) — superset of the previous hand-rolled subset. All pass; noaqua_brokenmarkers oraqua_kwargstweaks needed. (The old file's commented-outfind_persistent_tasks_depsandtreat_as_own = []were no-ops;test_allrunspersistent_tasksandpiraciesand both pass.)ExplicitImports (newly enabled, all 6 checks)
no_implicit_imports— passno_stale_explicit_imports— passall_explicit_imports_via_owners— passall_explicit_imports_are_public— passall_qualified_accesses_via_owners— ignore-list (10 names): third-party symbolic-stack names accessed via a re-exporter, owner differs.get_eqs/get_initial_conditions/get_iv/get_observed/get_unknowns/get_var_to_name/topsort_equations(owner ModelingToolkitBase, via ModelingToolkit);scalarize/unwrap(owner SymbolicUtils, via Symbolics);getname(owner SymbolicIndexingInterface, via Symbolics).all_qualified_accesses_are_public— ignore-list (14 names): third-party non-public internal API. Same MTK names as above plusgetname/scalarize/unwrap/rhss/value(Symbolics) andisadd/ismul(SymbolicUtils).These are internal symbolic-stack names ModelingToolkit/Symbolics re-export but neither own nor mark public; ModelOrderReduction uses them as internal API. Each ignore is documented with its source package in
qa.jl. They will fall away as the base libs mark them public.JET
jet = falseinrun_qa. Whole-package JET (report_package/test_package) hits a toplevelinvalid redefinition of constant ModelOrderReduction.TSVD: the package exports aTSVDstruct whose name collides with theTSVDdependency package under JET's toplevel virtualizer (a structural collision, not a type-stability issue; fixing it would mean renaming a public export). JET coverage stays in the existing targetedreport_callchecks intest/qa/jet_tests.jl, which sidestep the toplevel re-eval and pass (5/5). JET remains a direct dep for that file.Deps (
test/qa/Project.toml)ExplicitImports(transitive via SciMLTesting).Aqua(the ambiguities child-process needs it as a direct dep) andJET(used byjet_tests.jl).SciMLTestingcompat to"1.6".Local verification (released SciMLTesting 1.6.0, Julia 1.10,
GROUP=QA)0 Fail / 0 Error / 0 Broken. Runic-clean.
🤖 Generated with Claude Code