Skip to content

Commit 1af75e9

Browse files
ChrisRackauckas-ClaudeChrisRackauckasclaude
authored
QA: run_qa v1.6 form + ExplicitImports (#165)
* QA: run_qa v1.6 form + ExplicitImports 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 #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 #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> * QA: trim redundant public-API EI ignores after SciMLTesting 1.7 + base-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> * QA: require SciMLTesting >= 1.7 for gated public-API EI checks 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> * QA: trim now-public ExplicitImports ignores Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> * QA: thorough EI ignore re-clean (drop stale incl via_owners, migrate non-public re-exports) Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> --------- Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent ea2d9b4 commit 1af75e9

3 files changed

Lines changed: 36 additions & 19 deletions

File tree

src/SymbolicNumericIntegration.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ using TermInterface: iscall
55
using SymbolicUtils
66
using SymbolicUtils: operation, arguments
77
using Symbolics
8-
using Symbolics: value, get_variables, expand_derivatives, coeff, Equation
8+
using Symbolics: value, get_variables, expand_derivatives, Equation
99
using SymbolicUtils.Rewriters
1010
using SymbolicUtils: issym, BasicSymbolic
1111

test/qa/Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[deps]
22
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
33
JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b"
4-
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
4+
SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283"
55
SymbolicNumericIntegration = "78aadeae-fbc0-11eb-17b6-c7ec0477ba9e"
66
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
77

@@ -11,5 +11,6 @@ SymbolicNumericIntegration = {path = "../.."}
1111
[compat]
1212
Aqua = "0.8"
1313
JET = "0.9,0.10,0.11"
14+
SciMLTesting = "1.7"
1415
Test = "1"
1516
julia = "1.10"

test/qa/qa.jl

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,34 @@
1-
using SafeTestsets
1+
using SymbolicNumericIntegration, Test
2+
using JET
3+
using SciMLTesting
24

3-
@safetestset "Aqua" begin
4-
using SymbolicNumericIntegration
5-
using Aqua
6-
using Test
7-
8-
Aqua.test_all(SymbolicNumericIntegration; piracies = false)
9-
@test_broken false # Aqua piracy: Base.signbit(::Complex)/signbit(::SymbolicUtils.Sym) in src/integral.jl + DataDrivenSparse.active_set! in src/sparse.jl — see https://github.com/SciML/SymbolicNumericIntegration.jl/issues/156
10-
end
11-
12-
@safetestset "JET" begin
13-
using SymbolicNumericIntegration
14-
using JET
15-
using Test
16-
17-
JET.test_package(SymbolicNumericIntegration; target_defined_modules = true)
18-
end
5+
run_qa(
6+
SymbolicNumericIntegration;
7+
explicit_imports = true,
8+
jet_kwargs = (; target_defined_modules = true),
9+
# Aqua piracy: Base.signbit(::Complex)/signbit(::SymbolicUtils.Sym) in
10+
# src/integral.jl + DataDrivenSparse.active_set! in src/sparse.jl
11+
# https://github.com/SciML/SymbolicNumericIntegration.jl/issues/156
12+
aqua_broken = (:piracies,),
13+
ei_kwargs = (;
14+
# Re-exports: accessed from the re-exporting module rather than the owner.
15+
# coef -> StatsAPI (via DataDrivenSparse); toexpr -> SymbolicUtils.Code
16+
# (via Symbolics). Neither owner is a SciML make-public target.
17+
all_qualified_accesses_via_owners = (;
18+
ignore = (:coef, :toexpr),
19+
),
20+
# Non-public names of upstream packages accessed via qualification.
21+
# AbstractDataDrivenAlgorithm: DataDrivenDiffEq; active_set!, coef:
22+
# DataDrivenSparse; toexpr: Symbolics.
23+
all_qualified_accesses_are_public = (;
24+
ignore = (
25+
:AbstractDataDrivenAlgorithm, :active_set!, :coef, :toexpr,
26+
),
27+
),
28+
),
29+
# Heavy `using` of the Symbolics/SymbolicUtils/DataDriven stacks (macros +
30+
# module bindings used for qualified access) — tracked for a follow-up
31+
# explicit-import pass rather than a risky mass refactor.
32+
# https://github.com/SciML/SymbolicNumericIntegration.jl/issues/164
33+
ei_broken = (:no_implicit_imports,),
34+
)

0 commit comments

Comments
 (0)