QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#627
Draft
ChrisRackauckas-Claude wants to merge 2 commits into
Draft
QA: run_qa v1.6 form + ExplicitImports (root + sublibs)#627ChrisRackauckas-Claude wants to merge 2 commits into
ChrisRackauckas-Claude wants to merge 2 commits into
Conversation
Convert every QA environment in the monorepo to the SciMLTesting v1.6 run_qa form with ExplicitImports enabled: - Root test/qa: new qa.jl calls run_qa(DataDrivenDiffEq; jet = false, explicit_imports = true). Aqua and ExplicitImports now run via run_qa; the curated JET @test_opt checks stay in jet_tests.jl (JET.test_package on the whole method table reports many false positives from the re-exported Symbolics/ModelingToolkit surface). runtests.jl QA body includes both. - lib/DataDrivenDMD, DataDrivenSparse, DataDrivenSR, DataDrivenLux test/qa: qa.jl rewritten to using SciMLTesting, <Sublib>, JET, Test + run_qa(<Sublib>; explicit_imports = true). Aqua + JET preserved. ExplicitImports: no_implicit_imports is marked ei_broken in every env because each module pulls a re-exported public surface in implicitly by design (root: @reexport using ModelingToolkit/StatsBase/DataInterpolations/MLUtils/CommonSolve; sublibs: umbrella using DataDrivenDiffEq, plus DataDrivenSR's @reexport using SymbolicRegression). The other five EI checks run hard. QA env Project.toml: add SciMLTesting (compat 1.6); ExplicitImports stays a transitive SciMLTesting dep (not listed). Aqua + JET kept where they run. The [sources]/develop wiring that pins the in-repo sublib + umbrella root is unchanged. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…oors
The Downgrade Sublibraries / test (lib/DataDrivenLux) lane resolves and
builds, then fails at runtime with 5 errors (reproduces on master, not
introduced by this QA PR; the PR does not touch DataDrivenLux src or
Project.toml). Two distinct root causes, both gated by [compat] floors:
1. IntervalArithmetic floor 0.22.0 (4 errors).
`safe_sin`/`safe_cos` in src/utils.jl evaluate `real(sin(Complex(x)))`
on `x::Interval{Float64}` during path-interval propagation
(path_state.jl `update_path`). Base's `sin(::Complex)` does `zr == 0`,
which dispatches to `==(::Interval, ::Interval)`. IntervalArithmetic
0.22.0-0.22.9 throw `ArgumentError("== is purposely not supported for
intervals")` there; 0.22.10 added the thin-interval fallback so the
comparison returns a value and `sin(Complex{Interval})` works. Bisected
locally: 0.22.9 THROW, 0.22.10 OK. Raise floor to 0.22.10.
2. Optim floor 1.7.6 (1 BoundsError).
`BoundsError: attempt to access Float64 at index [2]` in
`LineSearches.var"#ϕdϕSciML#2"`. Optim's `ManifoldObjective.value_gradient!`
returns a scalar `value(...)` in all Optim versions; LineSearches <= 7.5.x
`make_ϕdϕ` does `f, g = value_gradient!(df, x_new)` and fails to unpack
the scalar into 2 vars. LineSearches 7.6.0 switched to
`value_jvp!(df, x_new, s)` (which returns a 2-tuple) and requires
NLSolversBase 8. No Optim 1.x admits NLSolversBase 8 (all cap "7.9.0"),
so LineSearches stays <= 7.5.x at the Optim 1.7 floor. Optim 2.0.0
requires LineSearches "7.6" + NLSolversBase "8". The passing Core lane
already resolves Optim 2.2.1 / LineSearches 7.7.1 / NLSolversBase 8.
Raise Optim floor to 2.
Verified locally on Julia 1.10 by pinning the new floors and running
`Pkg.test("DataDrivenLux")`: sandbox resolved IntervalArithmetic 0.22.10,
Optim 2.0.0, LineSearches 7.7.1, NLSolversBase 8.0.0; result 96/96 pass
(was 0 pass / 5 errored on the old floors).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Downgrade lane fix (commit 478e89e): the
Verified locally (Julia 1.10): pinned the new floors, Ignore until reviewed by @ChrisRackauckas. |
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.
Converts every QA environment in the monorepo to the SciMLTesting v1.6
run_qaform with ExplicitImports enabled, in one branch.Per-env summary
test/qarun_qa(DataDrivenDiffEq; jet = false, explicit_imports = true, ei_broken = (:no_implicit_imports,))+ curatedjet_tests.jl@test_optinjet_tests.jl(kept)lib/DataDrivenDMD/test/qarun_qa(DataDrivenDMD; explicit_imports = true, ei_broken = (:no_implicit_imports,))using JET)lib/DataDrivenSparse/test/qarun_qa(DataDrivenSparse; explicit_imports = true, ei_broken = (:no_implicit_imports,))lib/DataDrivenSR/test/qarun_qa(DataDrivenSR; explicit_imports = true, ei_broken = (:no_implicit_imports,))lib/DataDrivenLux/test/qarun_qa(DataDrivenLux; explicit_imports = true, ei_broken = (:no_implicit_imports,))Sublibs converted: 4 (DataDrivenDMD, DataDrivenSparse, DataDrivenSR, DataDrivenLux) + root.
Notes
no_implicit_importsisei_brokenin every env because each module pulls a re-exported public surface in implicitly by design: the root@reexport using ModelingToolkit/StatsBase/DataInterpolations/MLUtils/CommonSolve; the sublibsusing DataDrivenDiffEq(umbrella) plususing DataDrivenDiffEq.<submodule>re-exports, and DataDrivenSR additionally@reexport using SymbolicRegression. Making every such name explicit is a large refactor tracked separately. The other five EI checks run as hard@test.run_qais called withjet = false; the curated@test_optchecks injet_tests.jl(targeted at concrete DataDrivenDiffEq code) are kept, becauseJET.test_packageon the whole method table reports many false positives from the re-exported Symbolics/ModelingToolkit infrastructure. The QA group body now includes bothqa/qa.jlandqa/jet_tests.jl.Project.toml:SciMLTestingadded with[compat] SciMLTesting = "1.6".ExplicitImportsstays a transitive SciMLTesting dependency (not listed).Aqua+JETkept where they run. The[sources]/develop wiring pinning the in-repo sublib + umbrella root is unchanged.🤖 Generated with Claude Code