QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#206
Open
ChrisRackauckas-Claude wants to merge 3 commits into
Open
QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#206ChrisRackauckas-Claude wants to merge 3 commits into
ChrisRackauckas-Claude wants to merge 3 commits into
Conversation
Convert the root QA env and all 7 lib/<Sub> sublibrary QA envs to the SciMLTesting 1.6 run_qa form with ExplicitImports enabled. Per QA env: rewrite qa.jl to `using SciMLTesting, <Module>, Test` + `run_qa(<Module>; explicit_imports = true, ...)`; bump the env's SciMLTesting [compat] to "1.6"; keep Aqua where ambiguities is disabled. ExplicitImports stays a transitive dep of SciMLTesting (not listed). ExplicitImports findings were fixed, not suppressed (0 hard FAIL, no broken markers): - no_implicit_imports: each sublibrary's blanket `using <dep>` is made explicit (e.g. `using DiffEqBase: DiffEqBase, BVProblem, ...`, `using Catalyst: Catalyst, @reaction_network, ...`), exactly the ExplicitImports-recommended replacement; all 6 EI checks then pass. - all_qualified_accesses_are_public: JumpProblemLibrary and SDEProblemLibrary call the non-public `RuntimeGeneratedFunctions.init` (the package's documented init boilerplate), so `:init` is added to that check's ignore list. Genuine Aqua disables preserved: `ambiguities = false` everywhere (and on the root, whose ambiguities come only from the imported dependency tree), `persistent_tasks = false` for JumpProblemLibrary / SDEProblemLibrary. Root package Project.toml: add the missing `Pkg` [compat] entry (Aqua deps_compat extras check) and bump SciMLTesting [compat] to "1.6". Monorepo [sources]/develop wiring is unchanged. Verified on Julia 1.11 against released SciMLTesting 1.6.0: root QA 16/16 pass; each sublibrary's 6 ExplicitImports checks pass. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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 RuntimeGeneratedFunctions made `init` public (Base.ispublic(RuntimeGeneratedFunctions, :init) === true as of v0.5.21). The `RuntimeGeneratedFunctions.init(@__MODULE__)` boilerplate in JumpProblemLibrary and SDEProblemLibrary therefore no longer trips the qualified-access public-API check, so the per-repo `:init` ignore on `all_qualified_accesses_are_public` is now inert and is removed. Both qa.jl calls reduce to the plain `run_qa(...; explicit_imports = true, aqua_kwargs = ...)` form with no EI ignore-lists. Verified against the registered releases (no dev): - Julia 1.12 (>= 1.11, public checks run): SDEProblemLibrary EI runs 6/6 with the emptied ignore-list (SciMLTesting 1.7.0). JumpProblemLibrary uses the identical init pattern and already passed EI 6/6 on CI; init being public makes the ignore unnecessary. - Julia 1.10 (lts, public checks skipped by 1.7): SDE/Jump EI 4/4, root QA 14/14. SciMLTesting [compat] "1.6" already admits 1.7 (caret), so no compat bump needed. No `if VERSION < v"1.11"` ignore blocks existed to remove. No names required restoring -- the public-API ignore-lists are now fully empty. Note: the sublibrary QA (Julia 1) lanes still fail on a pre-existing, unrelated Aqua deps_compat issue (`Pkg` listed in [extras] without a [compat] bound in DAE/DDE/Jump/Nonlinear/ODE/SDE, identical on master); that is out of scope for this EI ignore sweep and left for a separate focused fix. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…API EI)
Finish the run_qa/ExplicitImports conversion against the now-released
public-API surfaces (SciMLBase 3.27.0, DiffEqBase 7.6.0, ArrayInterface
7.26.0) and SciMLTesting 1.7.0 (which gates the two public-API EI checks
-- all_qualified_accesses_are_public / all_explicit_imports_are_public --
to Julia >= 1.11).
Compat:
- Bump SciMLTesting "1.6" -> "1.7" in the root [compat] and every QA
sub-env (root test/qa + all 7 lib/*/test/qa). "1.6" already admits
1.7.0 by caret, but the public-API checks are unconditional in 1.6 and
only gained the >= 1.11 gate in 1.7; pinning the floor at 1.7 guarantees
the gating version so the LTS (1.10) lane skips the backport-incompatible
public checks instead of spuriously flagging backported-public names.
QA fix (the QA / Julia 1 reds):
- Add the missing `Pkg = "1.10"` [compat] entry to the six sublibraries
that list `Pkg` in [extras] without a [compat] bound (DAE/DDE/Jump/
Nonlinear/ODE/SDE). Aqua's deps_compat extras check (Aqua 0.8 via
SciMLTesting) hard-fails on `Pkg` extras lacking compat; BVProblemLibrary
already carries this entry and its QA lane was the only green one. This
matches BVProblemLibrary exactly -- a real missing bound, not a silenced
check.
No EI ignore-lists, `ei_broken`, or `VERSION < v"1.11"` blocks exist to
strip (the qa.jl files were already in the bare run_qa form), and no
`DiffEqBase.X` qualified accesses of SciMLBase-owned public names exist in
src/ to migrate -- the source uses explicit imports (`using DiffEqBase:
ODEProblem`, ...) which pass all_explicit_imports_are_public unchanged.
Verified against the registered releases (Pkg resolve, no dev of deps):
Julia 1.12 (public checks run): root 16/16, ODEProblemLibrary 16/16,
SDEProblemLibrary 15/15, NonlinearProblemLibrary 16/16,
DAEProblemLibrary 16/16, JumpProblemLibrary 15/15 -- all green, 0 Fail.
Julia 1.10 (public checks skipped by the 1.7 gate): ODEProblemLibrary
14/14 (= 16 minus the 2 skipped public checks); root EI runs 4/4.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.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.
This PR should be ignored until reviewed by @ChrisRackauckas.
Converts the root QA env and all 7
lib/<Sub>sublibrary QA envs to the SciMLTesting 1.6run_qaform withexplicit_imports = true, in one branch.Per QA env
qa.jl→using SciMLTesting, <Module>, Test+run_qa(<Module>; explicit_imports = true, ...).test/qa/Project.toml: SciMLTesting[compat]bumped to"1.6"; Aqua kept (ambiguities is disabled in every env); ExplicitImports left as a transitive dep of SciMLTesting (not listed).[sources]/ develop wiring (sublib + umbrella-root pins,activate_group_env/develop_sources!<1.11backport) is preserved exactly.ExplicitImports: fixed, not suppressed (0 hard FAIL, no broken markers)
no_implicit_imports— each sublibrary's blanketusing <dep>is replaced with the explicit name list ExplicitImports recommends, e.g.using DiffEqBase: DiffEqBase, BVPFunction, BVProblem,using SpecialFunctions: SpecialFunctions, erfusing LinearAlgebra: LinearAlgebra, Diagonal, I, SymTridiagonal, diagind, ldiv!, mul!, rmul!, etc.using Catalyst: Catalyst, @reaction_network, @species, @parameters, @named, Num, Reaction, ReactionSystem, complete, default_t, hill, make_empty_network, species, unknownsall_qualified_accesses_are_public—JumpProblemLibraryandSDEProblemLibrarycall the non-publicRuntimeGeneratedFunctions.init(the documented RGF init boilerplate), so:initis added to that check's ignore list.Genuine Aqua disables preserved
ambiguities = falsein every env (including the root — its only ambiguities come from the imported dependency tree, since the umbrella owns no methods).persistent_tasks = falseforJumpProblemLibraryandSDEProblemLibrary.Root package
Project.tomlPkg[compat]entry (Aquadeps_compatextras check flagged it once Aqua started running on the root).[compat]to"1.6".Sublibs converted
BVProblemLibrary, DAEProblemLibrary, DDEProblemLibrary, JumpProblemLibrary, NonlinearProblemLibrary, ODEProblemLibrary, SDEProblemLibrary (7) + root.
Verification (Julia 1.11, released SciMLTesting 1.6.0)
Quality Assurance | 16 pass / 16 total(Aqua incl. persistent_tasks + deps_compat after the Pkg fix; ExplicitImports 6/6).initignore). Aqua per sublib unchanged from the prior hand-rolled call.🤖 Generated with Claude Code