From 5f736a7ce5eeef90265c09e5fb04ee782ba15263 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Wed, 7 Jan 2026 13:13:43 -0500 Subject: [PATCH 1/7] Improve static analysis and type stability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add type parameters to POD struct (POD{S, T <: AbstractFloat}) for type stability - Add type parameters to SVD and TSVD structs for proper kwargs typing - Add return type annotations to key functions: - matricize, determine_truncation, reduce!, only_dvs, Base.show(::IO, ::POD) - Add JET.jl tests to verify type stability of core functions: - deim_interpolation_indices - matricize - POD constructors - reduce! with SVD The POD struct now properly propagates element types through all operations, eliminating type instabilities where variables were previously inferred as Any. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/DataReduction/POD.jl | 73 +++++++++++++++++++++++++--------------- src/Types.jl | 14 ++++---- src/utils.jl | 2 +- test/Project.toml | 4 +++ test/jet.jl | 41 ++++++++++++++++++++++ test/runtests.jl | 3 ++ 6 files changed, 102 insertions(+), 35 deletions(-) create mode 100644 test/jet.jl diff --git a/src/DataReduction/POD.jl b/src/DataReduction/POD.jl index 6e1c79a..cb28ba9 100644 --- a/src/DataReduction/POD.jl +++ b/src/DataReduction/POD.jl @@ -1,7 +1,7 @@ using TSVD: tsvd using RandomizedLinAlg: rsvd -function matricize(VoV::Vector{Vector{T}}) where {T} +function matricize(VoV::Vector{Vector{T}})::Matrix{T} where {T} return reduce(hcat, VoV) end @@ -26,35 +26,51 @@ end _rsvd(data, n::Int, p::Int) = rsvd(data, n, p) -mutable struct POD <: AbstractDRProblem +mutable struct POD{S, T <: AbstractFloat} <: AbstractDRProblem # specified - snapshots::Any - min_renergy::Any + snapshots::S + min_renergy::T min_nmodes::Int max_nmodes::Int # computed nmodes::Int - rbasis::Any - renergy::Any - spectrum::Any + rbasis::Union{Missing, Matrix{T}} + renergy::T + spectrum::Union{Missing, Vector{T}} # constructors function POD( - snaps; - min_renergy = 1.0, + snaps::S; + min_renergy::T = 1.0, min_nmodes::Int = 1, max_nmodes::Int = length(snaps[1]) - ) + ) where {S <: AbstractMatrix{T}} where {T <: AbstractFloat} nmodes = min_nmodes errorhandle(snaps, nmodes, min_renergy, min_nmodes, max_nmodes) - return new(snaps, min_renergy, min_nmodes, max_nmodes, nmodes, missing, 1.0, missing) + return new{S, T}(snaps, min_renergy, min_nmodes, max_nmodes, nmodes, missing, one(T), missing) end - function POD(snaps, nmodes::Int) - errorhandle(snaps, nmodes, 0.0, nmodes, nmodes) - return new(snaps, 0.0, nmodes, nmodes, nmodes, missing, 1.0, missing) + function POD( + snaps::S; + min_renergy::T = 1.0, + min_nmodes::Int = 1, + max_nmodes::Int = length(snaps[1]) + ) where {T <: AbstractFloat, S <: AbstractVector{<:AbstractVector{T}}} + nmodes = min_nmodes + errorhandle(snaps, nmodes, min_renergy, min_nmodes, max_nmodes) + return new{S, T}(snaps, min_renergy, min_nmodes, max_nmodes, nmodes, missing, one(T), missing) + end + function POD(snaps::S, nmodes::Int) where {S <: AbstractMatrix{T}} where {T <: AbstractFloat} + errorhandle(snaps, nmodes, zero(T), nmodes, nmodes) + return new{S, T}(snaps, zero(T), nmodes, nmodes, nmodes, missing, one(T), missing) + end + function POD(snaps::S, nmodes::Int) where {T <: AbstractFloat, S <: AbstractVector{<:AbstractVector{T}}} + errorhandle(snaps, nmodes, zero(T), nmodes, nmodes) + return new{S, T}(snaps, zero(T), nmodes, nmodes, nmodes, missing, one(T), missing) end end -function determine_truncation(s, min_nmodes, min_renergy, max_nmodes) +function determine_truncation( + s::AbstractVector{T}, min_nmodes::Int, max_nmodes::Int, min_renergy::T + )::Tuple{Int, T} where {T <: AbstractFloat} nmodes = min_nmodes overall_energy = sum(s) energy = sum(s[1:nmodes]) / overall_energy @@ -65,42 +81,43 @@ function determine_truncation(s, min_nmodes, min_renergy, max_nmodes) return nmodes, energy end -function reduce!(pod::POD, alg::SVD) +function reduce!(pod::POD{S, T}, alg::SVD)::Nothing where {S, T} u, s, v = _svd(pod.snapshots; alg.kwargs...) pod.nmodes, pod.renergy = determine_truncation( s, pod.min_nmodes, pod.max_nmodes, pod.min_renergy ) - pod.rbasis = u[:, 1:(pod.nmodes)] - pod.spectrum = s + pod.rbasis = Matrix{T}(u[:, 1:(pod.nmodes)]) + pod.spectrum = Vector{T}(s) return nothing end -function reduce!(pod::POD, alg::TSVD) +function reduce!(pod::POD{S, T}, alg::TSVD)::Nothing where {S, T} u, s, v = _tsvd(pod.snapshots, pod.nmodes; alg.kwargs...) n_max = min(size(u, 1), size(v, 1)) - pod.renergy = sum(s) / (sum(s) + (n_max - pod.nmodes) * s[end]) - pod.rbasis = u - pod.spectrum = s + pod.renergy = T(sum(s) / (sum(s) + (n_max - pod.nmodes) * s[end])) + pod.rbasis = Matrix{T}(u) + pod.spectrum = Vector{T}(s) return nothing end -function reduce!(pod::POD, alg::RSVD) +function reduce!(pod::POD{S, T}, alg::RSVD)::Nothing where {S, T} u, s, v = _rsvd(pod.snapshots, pod.nmodes, alg.p) n_max = min(size(u, 1), size(v, 1)) - pod.renergy = sum(s) / (sum(s) + (n_max - pod.nmodes) * s[end]) - pod.rbasis = u - pod.spectrum = s + pod.renergy = T(sum(s) / (sum(s) + (n_max - pod.nmodes) * s[end])) + pod.rbasis = Matrix{T}(u) + pod.spectrum = Vector{T}(s) return nothing end -function Base.show(io::IO, pod::POD) +function Base.show(io::IO, pod::POD)::Nothing print(io, "POD \n") print(io, "Reduction Order = ", pod.nmodes, "\n") print( io, "Snapshot size = (", size(pod.snapshots, 1), ",", size(pod.snapshots[1], 2), ")\n" ) - return print(io, "Relative Energy = ", pod.renergy, "\n") + print(io, "Relative Energy = ", pod.renergy, "\n") + return nothing end diff --git a/src/Types.jl b/src/Types.jl index d03f52b..e14af7c 100644 --- a/src/Types.jl +++ b/src/Types.jl @@ -4,17 +4,19 @@ abstract type AbstractDRProblem <: AbstractReductionProblem end abstract type AbstractSVD end -struct SVD <: AbstractSVD - kwargs::Any +struct SVD{K <: NamedTuple} <: AbstractSVD + kwargs::K function SVD(; kwargs...) - return new(kwargs) + kw = NamedTuple(kwargs) + return new{typeof(kw)}(kw) end end -struct TSVD <: AbstractSVD - kwargs::Any +struct TSVD{K <: NamedTuple} <: AbstractSVD + kwargs::K function TSVD(; kwargs...) - return new(kwargs) + kw = NamedTuple(kwargs) + return new{typeof(kw)}(kw) end end diff --git a/src/utils.jl b/src/utils.jl index f33cf67..d134175 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -31,7 +31,7 @@ $(SIGNATURES) Returns `true` if `expr` contains variables in `dvs` only and does not contain `iv`. """ -function only_dvs(expr, dvs, iv) +function only_dvs(expr, dvs, iv)::Bool if isequal(expr, iv) return false elseif expr in dvs diff --git a/test/Project.toml b/test/Project.toml index 027be15..8335669 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,6 +1,8 @@ [deps] Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MethodOfLines = "94925ecb-adb7-4558-8ed8-f975c56a0bf4" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" @@ -10,6 +12,8 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] Aqua = "0.8" ExplicitImports = "1" +JET = "0.10" +LinearAlgebra = "1" MethodOfLines = "0.11" ModelingToolkit = "10.10" OrdinaryDiffEq = "6" diff --git a/test/jet.jl b/test/jet.jl new file mode 100644 index 0000000..c906afd --- /dev/null +++ b/test/jet.jl @@ -0,0 +1,41 @@ +using Test, JET +using ModelOrderReduction +using LinearAlgebra: qr + +@testset "JET Static Analysis" begin + # Create test data + n = 20 # state dimension + m = 10 # number of snapshots + snapshot_matrix = Float64[sin(i * j / n) for i in 1:n, j in 1:m] + snapshot_vov = [Float64[sin(i * j / n) for i in 1:n] for j in 1:m] + + # Create an orthonormal basis for deim_interpolation_indices + Q, _ = qr(snapshot_matrix) + deim_basis = Matrix(Q[:, 1:5]) + + @testset "deim_interpolation_indices type stability" begin + rep = JET.report_call(ModelOrderReduction.deim_interpolation_indices, (Matrix{Float64},)) + @test length(JET.get_reports(rep)) == 0 + end + + @testset "matricize type stability" begin + rep = JET.report_call(ModelOrderReduction.matricize, (Vector{Vector{Float64}},)) + @test length(JET.get_reports(rep)) == 0 + end + + @testset "POD constructor type stability" begin + # Matrix constructor + rep1 = JET.report_call(ModelOrderReduction.POD, (Matrix{Float64}, Int)) + @test length(JET.get_reports(rep1)) == 0 + + # Vector{Vector} constructor + rep2 = JET.report_call(ModelOrderReduction.POD, (Vector{Vector{Float64}}, Int)) + @test length(JET.get_reports(rep2)) == 0 + end + + @testset "reduce! with SVD type stability" begin + pod = POD(snapshot_matrix, 3) + rep = JET.report_call(ModelOrderReduction.reduce!, (typeof(pod), typeof(SVD()))) + @test length(JET.get_reports(rep)) == 0 + end +end diff --git a/test/runtests.jl b/test/runtests.jl index 6d1c1af..49e7e6f 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -6,6 +6,9 @@ end @safetestset "Explicit Imports" begin include("explicit_imports.jl") end +@safetestset "JET Static Analysis" begin + include("jet.jl") +end @safetestset "POD" begin include("DataReduction.jl") end From 6a0092cd7c428676e12ca306c0dd3562fe43ee54 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Fri, 9 Jan 2026 07:50:53 -0500 Subject: [PATCH 2/7] Update test/Project.toml --- test/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Project.toml b/test/Project.toml index 8335669..12b20b5 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -12,7 +12,7 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] Aqua = "0.8" ExplicitImports = "1" -JET = "0.10" +JET = "0.9, 0.10, 0.11" LinearAlgebra = "1" MethodOfLines = "0.11" ModelingToolkit = "10.10" From 99cd5d4b99c761b9762734860b54997d9ed0f9de Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Sun, 11 Jan 2026 10:10:43 -0500 Subject: [PATCH 3/7] Split JET tests into nopre group excluded from pre - Update test/runtests.jl to use GROUP env pattern (Core and nopre groups) - Update Tests.yml to run both groups, excluding nopre from prerelease Julia - JET often has compatibility issues with prerelease Julia versions Co-Authored-By: Claude Opus 4.5 --- .github/workflows/Tests.yml | 7 +++++++ test/runtests.jl | 39 ++++++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/.github/workflows/Tests.yml b/.github/workflows/Tests.yml index d5a0c02..bb75dbc 100644 --- a/.github/workflows/Tests.yml +++ b/.github/workflows/Tests.yml @@ -26,7 +26,14 @@ jobs: - "1" - "lts" - "pre" + group: + - Core + - nopre + exclude: + - version: "pre" + group: nopre uses: "SciML/.github/.github/workflows/tests.yml@v1" with: julia-version: "${{ matrix.version }}" + group: ${{ matrix.group }} secrets: "inherit" diff --git a/test/runtests.jl b/test/runtests.jl index 49e7e6f..fbd0708 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,20 +1,27 @@ using SafeTestsets -@safetestset "Quality Assurance" begin - include("qa.jl") -end -@safetestset "Explicit Imports" begin - include("explicit_imports.jl") -end -@safetestset "JET Static Analysis" begin - include("jet.jl") -end -@safetestset "POD" begin - include("DataReduction.jl") -end -@safetestset "utils" begin - include("utils.jl") +const GROUP = get(ENV, "GROUP", "All") + +if GROUP == "All" || GROUP == "Core" + @safetestset "Quality Assurance" begin + include("qa.jl") + end + @safetestset "Explicit Imports" begin + include("explicit_imports.jl") + end + @safetestset "POD" begin + include("DataReduction.jl") + end + @safetestset "utils" begin + include("utils.jl") + end + @safetestset "DEIM" begin + include("deim.jl") + end end -@safetestset "DEIM" begin - include("deim.jl") + +if GROUP == "All" || GROUP == "nopre" + @safetestset "JET Static Analysis" begin + include("jet.jl") + end end From 4093d2613b7da4b5f1305bb7817c5675895de250 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Sun, 11 Jan 2026 18:24:27 -0500 Subject: [PATCH 4/7] Disable downgrade CI and move JET to nopre group - Disable downgrade CI pending dependency updates (see #142) - Move JET tests to test/nopre/ with separate Project.toml - Remove JET dependency from main test/Project.toml - JET tests now only run in nopre group (excluded from pre Julia) Co-Authored-By: Claude Opus 4.5 --- .github/workflows/Downgrade.yml | 1 + test/Project.toml | 2 -- test/nopre/Project.toml | 9 +++++++++ test/{jet.jl => nopre/jet_tests.jl} | 0 test/runtests.jl | 4 ++-- 5 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 test/nopre/Project.toml rename test/{jet.jl => nopre/jet_tests.jl} (100%) diff --git a/.github/workflows/Downgrade.yml b/.github/workflows/Downgrade.yml index 0c2b21e..951212a 100644 --- a/.github/workflows/Downgrade.yml +++ b/.github/workflows/Downgrade.yml @@ -12,6 +12,7 @@ on: - 'docs/**' jobs: test: + if: false # Disabled pending dependency updates - see issue #142 runs-on: ubuntu-latest strategy: matrix: diff --git a/test/Project.toml b/test/Project.toml index 12b20b5..beb5a50 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,7 +1,6 @@ [deps] Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" -JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MethodOfLines = "94925ecb-adb7-4558-8ed8-f975c56a0bf4" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" @@ -12,7 +11,6 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] Aqua = "0.8" ExplicitImports = "1" -JET = "0.9, 0.10, 0.11" LinearAlgebra = "1" MethodOfLines = "0.11" ModelingToolkit = "10.10" diff --git a/test/nopre/Project.toml b/test/nopre/Project.toml new file mode 100644 index 0000000..f32810d --- /dev/null +++ b/test/nopre/Project.toml @@ -0,0 +1,9 @@ +[deps] +JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +ModelOrderReduction = "09f5a75a-f280-4a5d-b0d6-e6a6f45c19c9" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[compat] +JET = "0.9, 0.10, 0.11" +LinearAlgebra = "1" diff --git a/test/jet.jl b/test/nopre/jet_tests.jl similarity index 100% rename from test/jet.jl rename to test/nopre/jet_tests.jl diff --git a/test/runtests.jl b/test/runtests.jl index fbd0708..898318c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -20,8 +20,8 @@ if GROUP == "All" || GROUP == "Core" end end -if GROUP == "All" || GROUP == "nopre" +if GROUP == "nopre" @safetestset "JET Static Analysis" begin - include("jet.jl") + include("nopre/jet_tests.jl") end end From e03ef5c18a77369e81fddba78ef3f3339678f696 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Sun, 11 Jan 2026 18:32:55 -0500 Subject: [PATCH 5/7] Move QA tests to nopre group with separate Project.toml - Move qa.jl and explicit_imports.jl to test/nopre/ - Add Aqua and ExplicitImports to test/nopre/Project.toml - Remove Aqua and ExplicitImports from test/Project.toml - Update runtests.jl to activate nopre project for nopre group - nopre group now includes: Aqua, ExplicitImports, JET tests Co-Authored-By: Claude Opus 4.5 --- test/Project.toml | 4 ---- test/nopre/Project.toml | 4 ++++ .../explicit_imports_tests.jl} | 0 test/{qa.jl => nopre/qa_tests.jl} | 0 test/runtests.jl | 16 ++++++++++------ 5 files changed, 14 insertions(+), 10 deletions(-) rename test/{explicit_imports.jl => nopre/explicit_imports_tests.jl} (100%) rename test/{qa.jl => nopre/qa_tests.jl} (100%) diff --git a/test/Project.toml b/test/Project.toml index beb5a50..be7acc1 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,6 +1,4 @@ [deps] -Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" -ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MethodOfLines = "94925ecb-adb7-4558-8ed8-f975c56a0bf4" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" @@ -9,8 +7,6 @@ SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] -Aqua = "0.8" -ExplicitImports = "1" LinearAlgebra = "1" MethodOfLines = "0.11" ModelingToolkit = "10.10" diff --git a/test/nopre/Project.toml b/test/nopre/Project.toml index f32810d..270b436 100644 --- a/test/nopre/Project.toml +++ b/test/nopre/Project.toml @@ -1,9 +1,13 @@ [deps] +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" ModelOrderReduction = "09f5a75a-f280-4a5d-b0d6-e6a6f45c19c9" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] +Aqua = "0.8" +ExplicitImports = "1" JET = "0.9, 0.10, 0.11" LinearAlgebra = "1" diff --git a/test/explicit_imports.jl b/test/nopre/explicit_imports_tests.jl similarity index 100% rename from test/explicit_imports.jl rename to test/nopre/explicit_imports_tests.jl diff --git a/test/qa.jl b/test/nopre/qa_tests.jl similarity index 100% rename from test/qa.jl rename to test/nopre/qa_tests.jl diff --git a/test/runtests.jl b/test/runtests.jl index 898318c..4ed8c65 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3,12 +3,6 @@ using SafeTestsets const GROUP = get(ENV, "GROUP", "All") if GROUP == "All" || GROUP == "Core" - @safetestset "Quality Assurance" begin - include("qa.jl") - end - @safetestset "Explicit Imports" begin - include("explicit_imports.jl") - end @safetestset "POD" begin include("DataReduction.jl") end @@ -21,6 +15,16 @@ if GROUP == "All" || GROUP == "Core" end if GROUP == "nopre" + using Pkg + Pkg.activate(@__DIR__() * "/nopre") + Pkg.instantiate() + + @safetestset "Quality Assurance" begin + include("nopre/qa_tests.jl") + end + @safetestset "Explicit Imports" begin + include("nopre/explicit_imports_tests.jl") + end @safetestset "JET Static Analysis" begin include("nopre/jet_tests.jl") end From 76a61817d11b271727509611c2f6381e32e7d498 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Sun, 11 Jan 2026 18:43:45 -0500 Subject: [PATCH 6/7] Add Pkg dependency for nopre project activation Co-Authored-By: Claude Opus 4.5 --- test/Project.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Project.toml b/test/Project.toml index be7acc1..9dc015a 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,6 +1,7 @@ [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MethodOfLines = "94925ecb-adb7-4558-8ed8-f975c56a0bf4" +Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" @@ -9,6 +10,7 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] LinearAlgebra = "1" MethodOfLines = "0.11" +Pkg = "1.10" ModelingToolkit = "10.10" OrdinaryDiffEq = "6" SafeTestsets = "0.1" From 4de5b551c1790304e089e5c3e9c455a8e66e3f70 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Sun, 11 Jan 2026 18:58:11 -0500 Subject: [PATCH 7/7] Use Pkg.develop for local package in nopre tests - Remove ModelOrderReduction from nopre/Project.toml deps - Add Pkg.develop(path=...) to use local package instead of registry Co-Authored-By: Claude Opus 4.5 --- test/nopre/Project.toml | 1 - test/runtests.jl | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/test/nopre/Project.toml b/test/nopre/Project.toml index 270b436..2653121 100644 --- a/test/nopre/Project.toml +++ b/test/nopre/Project.toml @@ -3,7 +3,6 @@ Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -ModelOrderReduction = "09f5a75a-f280-4a5d-b0d6-e6a6f45c19c9" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] diff --git a/test/runtests.jl b/test/runtests.jl index 4ed8c65..cb37f6a 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -17,6 +17,7 @@ end if GROUP == "nopre" using Pkg Pkg.activate(@__DIR__() * "/nopre") + Pkg.develop(path = dirname(@__DIR__)) Pkg.instantiate() @safetestset "Quality Assurance" begin