QA: run_qa v1.6 form + ExplicitImports#76
Open
ChrisRackauckas-Claude wants to merge 5 commits into
Open
Conversation
Bring QA onto the SciMLTesting 1.6 run_qa folder model with ExplicitImports enabled, replacing the hand-rolled inline ExplicitImports test. - Add a `test/qa` group (qa.jl + Project.toml) wired through the run_tests `qa` entry; declare `[QA]` in test_groups.toml (lts, 1; out of All). - `run_qa(GeometricIntegratorsDiffEq; explicit_imports = true, ...)` runs Aqua (all sub-checks) + the 6 ExplicitImports checks. JET/AllocCheck stay in the existing NoPre group (those are @test_opt type-stability / allocation checks, not run_qa's report/test_package JET). - Fix the EI all_qualified_accesses_via_owners finding properly: access the 9 SciMLBase-owned names (AbstractODEAlgorithm, AbstractODEProblem, __solve, build_solution, has_jac, has_tgrad, unwrapped_f, StandardODEProblem, AbstractParameterizedFunction, AbstractDynamicalODEProblem) from their owner SciMLBase instead of via the DiffEqBase re-export. These are identical objects (DiffEqBase.X === SciMLBase.X), present since SciMLBase 2.x (verified down to the 2.5.0 downgrade floor), so the change is behavior-preserving. - ei_kwargs ignore-list for all_qualified_accesses_are_public: the remaining names are non-public in their owner (SciMLBase API-extension points / problem types, ReturnCode.Success enum member flagged only on Julia 1.10) or the non-public DiffEqBase.RecursiveArrayTools module path to ArrayPartition. Source package noted per name; they go public as the base libraries release. - Fix the Aqua deps_compat extras finding by adding root [compat] for ODEProblemLibrary and Test (test-only extras that lacked compat entries). - Drop ExplicitImports from root [extras]/[targets]/[compat] (now transitive via SciMLTesting in the QA sub-env); bump root SciMLTesting compat to "1.6". Verified locally against released SciMLTesting 1.6.0 (Pkg resolves it; no dev-from-branch): GROUP=QA green on Julia 1.10 (17/17) and 1.11 (17/17), 0 Fail/Error/Broken; Core tests 32/32 on 1.11 with the source change. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.7 runs check_all_qualified_accesses_are_public only on Julia >= 1.11, and SciMLBase 3.24.0 made AbstractODEProblem, AbstractODEAlgorithm, AbstractDynamicalODEProblem, build_solution and has_jac public. Drop those plus :Success (ReturnCode.Success is public on 1.11+; the lts-only flag no longer fires since 1.7 skips the check there). Verified against registered releases (SciMLBase 3.24.0, DiffEqBase 7.5.7, SciMLTesting 1.7.0): QA group is 17/17 green on Julia 1.12 with the remaining six still-non-public ignores, and 15/15 green on Julia 1.10. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…se libs SciMLTesting 1.7 gates the two public-API ExplicitImports checks (all_qualified_accesses_are_public, all_explicit_imports_are_public) to Julia >= 1.11, so they now RUN on 1.12 and SKIP on the 1.10 LTS. Verified the full GROUP=QA CI path (Pkg.test) against the registered releases SciMLBase 3.27.0 / DiffEqBase 7.6.0 / SciMLTesting 1.7.0 / ExplicitImports 1.15.0 / Aqua 0.8.16: * Julia 1.12: QA 17/17 (public-API checks run), 0 Fail/Error/Broken. * Julia 1.10: QA 15/15 (public-API checks skipped), 0 Fail/Error/Broken. The six all_qualified_accesses_are_public ignores are kept because each name is still genuinely non-public in its owner's released version (Base.ispublic == false on 3.27.0/7.6.0): AbstractParameterizedFunction, StandardODEProblem, __solve, has_tgrad, unwrapped_f (SciMLBase), and the DiffEqBase.RecursiveArrayTools module path to ArrayPartition. The source's owner-qualified accesses (now-public SciMLBase names) already pass all_qualified_accesses_via_owners on both versions; no migration was outstanding. 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>
…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 onto the SciMLTesting 1.6
run_qafolder model with ExplicitImports enabled, replacing the hand-rolled inline ExplicitImports test. Verified locally against the released SciMLTesting 1.6.0 (Pkg resolves it; no dev-from-branch).What changed
test/qagroup (qa.jl+Project.toml), wired through therun_testsqaentry;[QA]declared intest_groups.toml(versionslts,1;in_all = false).run_qa(GeometricIntegratorsDiffEq; explicit_imports = true, ...)runs Aqua (all sub-checks) + the 6 ExplicitImports checks.NoPregroup (JET@test_opttype-stability + AllocCheck) is left untouched — those are@test_opt/@check_allocsanalyses, notrun_qa'sreport_package/test_packageJET, so they stay where they are. JET is therefore not added to the QA group.ExplicitImportsfrom root[extras]/[targets]/[compat](now transitive via SciMLTesting in the QA sub-env); bump rootSciMLTestingcompat to"1.6".ExplicitImports findings (6 checks)
no_implicit_imports,no_stale_explicit_imports,all_explicit_imports_via_owners,all_explicit_imports_are_public: pass as-is.all_qualified_accesses_via_owners: fixed — the 9 SciMLBase-owned names (AbstractODEAlgorithm,AbstractODEProblem,AbstractParameterizedFunction,StandardODEProblem,AbstractDynamicalODEProblem,__solve,has_jac,has_tgrad,build_solution) were being accessed via theDiffEqBasere-export; now accessed from their ownerSciMLBase. These are identical objects (DiffEqBase.X === SciMLBase.X), present since early SciMLBase 2.x (verified down to the 2.5.0 downgrade floor), so the change is behavior-preserving.all_qualified_accesses_are_public: ignored (documented per name) — the remaining names are non-public in their owner: SciMLBase API-extension points / problem types (10 names incl.unwrapped_f),ReturnCode.Success(enum member, flagged only on Julia 1.10), and the non-publicDiffEqBase.RecursiveArrayToolsmodule path toArrayPartition. They go public as the base libraries release.Aqua
All sub-checks green after fixing the one finding:
deps_compatextras failed because root[extras]listedODEProblemLibraryandTestwith no[compat]entries — fixed by adding those compat bounds (no sub-check disabled, no@test_broken).Local verification (released SciMLTesting 1.6.0)
GROUP=QAgreen on Julia 1.10 (lts): 17/17 and Julia 1.11: 17/17, 0 Fail/Error/Broken (Aqua 11 + ExplicitImports 6).Pkg.test()withGROUP=QA):QA | 17 17, exit 0.SciMLBase.Xsource change; downgrade floor SciMLBase 2.5.0 precompiles cleanly.🤖 Generated with Claude Code