QA: run_qa v1.6 form + ExplicitImports#165
Open
ChrisRackauckas-Claude wants to merge 5 commits into
Open
Conversation
Convert test/qa/qa.jl from the hand-rolled SafeTestsets + Aqua.test_all + JET.test_package layout to SciMLTesting 1.6's run_qa, and turn on the ExplicitImports checks (explicit_imports = true). - Aqua: piracies stays disabled and tracked via aqua_broken = (:piracies,) (was Aqua.test_all(...; piracies = false) + @test_broken false), issue SciML#156. - JET: still runs (jet_kwargs = (; target_defined_modules = true)). - ExplicitImports (6 checks): - no_stale_explicit_imports: drop unused `coeff` from the Symbolics import. - all_qualified_accesses_via_owners / *_are_public / all_explicit_imports_are_public: ignore upstream non-public / re-exported names (Symbolics, SymbolicUtils, DataDrivenDiffEq, DataDrivenSparse) via per-check ei_kwargs ignore-lists. - no_implicit_imports: many heavy-`using` names across the Symbolics/DataDriven stacks; marked ei_broken = (:no_implicit_imports,) and tracked in issue SciML#164 rather than a risky mass explicit-import refactor. qa env: add SciMLTesting (compat "1.6"), drop SafeTestsets (run_qa owns the testset); ExplicitImports comes in transitively via SciMLTesting; Aqua stays a direct dep (its ambiguities sub-check spawns a child process). Verified locally against released SciMLTesting 1.6.0 (Aqua 0.8.16, JET 0.9.18, ExplicitImports 1.15.0): Quality Assurance | 16 Pass, 2 Broken, 0 Fail/Error. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e-lib make-public SciMLTesting 1.7 runs check_all_qualified_accesses_are_public and check_all_explicit_imports_are_public only on Julia >= 1.11. With the released Symbolics 7.29.0 / SymbolicUtils 4.36.0 now declaring several formerly-internal names public, the per-repo public-API ignore lists are largely redundant. Emptied both public-API ignore lists and re-verified on Julia 1.12 (>= 1.11, where the checks run) against the registered releases, then restored only the names still flagged as non-public: all_qualified_accesses_are_public: AbstractDataDrivenAlgorithm (DataDrivenDiffEq), Sym (SymbolicUtils), active_set!/coef (DataDrivenSparse), toexpr (Symbolics) all_explicit_imports_are_public: issym (SymbolicUtils) Removed (now public): derivative, scalarize, unwrap, value (all_qualified_accesses_are_public); BasicSymbolic, get_variables, value (all_explicit_imports_are_public). The all_qualified_accesses_via_owners ignore, aqua_broken, and ei_broken are left untouched. Verified: Julia 1.12 QA group green for both public checks; Julia 1.10 (lts) skips them per SciMLTesting 1.7. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The public-API ExplicitImports checks (all_qualified_accesses_are_public / all_explicit_imports_are_public) are gated to Julia >= 1.11 starting in SciMLTesting 1.7. Bump the qa env compat floor so CI resolves the gating release rather than an older SciMLTesting that would skip those checks. Verified against the registered make-public releases (SciMLBase 3.27.0, SciMLTesting 1.7.0, Symbolics 7.29.0, SymbolicUtils 4.36.0): - Julia 1.12 (public-API checks run): 16 pass, 2 broken, 0 fail. The emptied public-API ignore lists flag exactly 6 survivors, all from packages outside the make-public scope and kept ALLOWED: AbstractDataDrivenAlgorithm (DataDrivenDiffEq); Sym, issym (SymbolicUtils); active_set!, coef (DataDrivenSparse); toexpr (Symbolics). - Julia 1.10 (public-API checks skipped via the 1.7 gate): 14 pass, 2 broken, 0 fail. This package has no SciMLBase/DiffEqBase dependency, so no caller migration applies; the restored ignore lists are unchanged from the prior commit. 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.
Ignore until reviewed by @ChrisRackauckas.
Brings
test/qa/qa.jlonto SciMLTesting 1.6'srun_qaand enables the ExplicitImports checks (explicit_imports = true). Replaces the hand-rolledSafeTestsets+Aqua.test_all+JET.test_packagelayout.What changed
test/qa/qa.jl:run_qa(SymbolicNumericIntegration; explicit_imports = true, jet_kwargs = (; target_defined_modules = true), aqua_broken = (:piracies,), ei_kwargs = (...), ei_broken = (:no_implicit_imports,)).test/qa/Project.toml: addSciMLTesting(compat "1.6"), dropSafeTestsets(run_qa owns the testset).ExplicitImportsis transitive via SciMLTesting;Aquastays a direct dep because itsambiguitiessub-check spawns a child process.src/SymbolicNumericIntegration.jl: drop the unusedcoefffromusing Symbolics: ...(was a stale explicit import).Preserved tracked-broken findings
piracies->aqua_broken = (:piracies,)(waspiracies = false+@test_broken false). Tracked in QA: Aqua/JET findings marked @test_broken pending fix #156.ExplicitImports findings (Julia 1.10, ExplicitImports 1.15.0)
no_stale_explicit_imports: fixed by removingcoeff.all_explicit_imports_via_owners: passes.all_qualified_accesses_via_owners: ignore:coef, :scalarize, :toexpr, :unwrap(re-exports —coefowned by StatsAPI via DataDrivenSparse;scalarize/toexpr/unwrapowned by SymbolicUtils[.Code] via Symbolics).all_qualified_accesses_are_public: ignore 9 upstream non-public names (DataDrivenDiffEqAbstractDataDrivenAlgorithm; DataDrivenSparseactive_set!,coef; SymbolicUtilsSym; Symbolicsderivative,scalarize,toexpr,unwrap,value).all_explicit_imports_are_public: ignore 4 upstream non-public names (SymbolicUtilsBasicSymbolic,issym; Symbolicsget_variables,value).no_implicit_imports: many heavy-usingnames across the Symbolics / SymbolicUtils / DataDriven stacks (macros + module bindings used for qualified access). Markedei_broken = (:no_implicit_imports,)and tracked in QA: ExplicitImports no_implicit_imports findings (tracked @test_broken) #164 rather than a risky massusing X: namerefactor.Local verification
Ran the QA group against released SciMLTesting 1.6.0 (no dev-from-branch), local source developed into the qa env:
0 Fail / 0 Error. The 2 Broken are the intended
piracies(#156) andno_implicit_imports(#164) placeholders; both auto-flag an Unexpected Pass once fixed.🤖 Generated with Claude Code