Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,44 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
Sundials_jll = "fb77eaff-e24c-56d4-86b1-d163f2edb164"

[compat]
AlgebraicMultigrid = "1"
Aqua = "0.8"
CEnum = "0.5"
DAEProblemLibrary = "0.1"
DataStructures = "0.18, 0.19"
DiffEqBase = "6.154"
DiffEqCallbacks = "4"
ExplicitImports = "1"
ForwardDiff = "0.10"
IncompleteLU = "0.2"
Libdl = "1"
LinearAlgebra = "1"
Logging = "1"
ModelingToolkit = "10"
ODEProblemLibrary = "1"
PrecompileTools = "1"
Reexport = "1.0"
SciMLBase = "2.9"
SparseArrays = "1"
SparseConnectivityTracer = "0.6"
SparseDiffTools = "2"
Sundials_jll = "5.2"
Test = "1"
julia = "1.9"

[extras]
AlgebraicMultigrid = "2169fc97-5a83-5252-b627-83903c6c433c"
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
DAEProblemLibrary = "dfb8ca35-80a1-48ba-a605-84916a45b4f8"
DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def"
ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
IncompleteLU = "40713840-3770-5561-ab4c-a76e7d0d7895"
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
ODEProblemLibrary = "fdc4e326-1af4-4b90-96e7-779fcce2daa5"
SparseDiffTools = "47a9eef4-7e08-11e9-0b38-333d64bd3804"
SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5"
SparseDiffTools = "47a9eef4-7e08-11e9-0b38-333d64bd3804"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test", "AlgebraicMultigrid", "DiffEqCallbacks", "ODEProblemLibrary", "DAEProblemLibrary", "ForwardDiff", "SparseDiffTools", "SparseConnectivityTracer", "IncompleteLU", "ModelingToolkit"]
test = ["Test", "AlgebraicMultigrid", "Aqua", "DiffEqCallbacks", "ExplicitImports", "ODEProblemLibrary", "DAEProblemLibrary", "ForwardDiff", "SparseDiffTools", "SparseConnectivityTracer", "IncompleteLU", "ModelingToolkit"]
31 changes: 31 additions & 0 deletions analyze_imports.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using ExplicitImports
using Sundials

# Print the names we are using from each module
println("=== Analyzing what is used from each module ===")
print_explicit_imports(Sundials)

# Try to get implicit imports without throwing
println("\n=== Implicit imports list ===")
try
check_no_implicit_imports(Sundials)
catch e
if isa(e, ExplicitImports.ImplicitImportsException)
println(e.msg)
else
rethrow(e)
end
end

# Try to get stale imports
println("\n=== Stale imports list ===")
try
check_no_stale_explicit_imports(Sundials)
println("No stale explicit imports found")
catch e
if isa(e, ExplicitImports.StaleImportsException)
println(e.msg)
else
println("No stale explicit imports found")
end
end
40 changes: 28 additions & 12 deletions src/Sundials.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,22 @@ module Sundials

import Reexport
Reexport.@reexport using SciMLBase
using DiffEqBase
using SciMLBase: AbstractSciMLOperator
import DataStructures
import Logging
import DiffEqBase
import SparseArrays
import LinearAlgebra

import Libdl
using CEnum
using DiffEqBase: DiffEqBase, NonlinearFunction, ODEFunction, add_saveat!,
add_tstop!, change_t_via_interpolation!, check_error,
check_keywords, get_du, get_du!, get_tmp_cache, get_tstops,
get_tstops_array, initialize!, isinplace,
reeval_internals_due_to_modification!, reinit!, savevalues!,
set_proposed_dt!, solve, solve!, step!, terminate!, u_modified!,
update_coefficients!, warn_compat
using SciMLBase: AbstractSciMLOperator, DAEProblem, ODEProblem, ReturnCode,
SciMLBase, SplitODEProblem, VectorContinuousCallback
using DataStructures: DataStructures
using Logging: Logging
using SparseArrays: SparseArrays
using LinearAlgebra: LinearAlgebra

using Libdl: Libdl
using CEnum: CEnum, @cenum

const warnkeywords = (:isoutofdomain,
:unstable_check,
Expand All @@ -29,7 +35,17 @@ const warnkeywords = (:isoutofdomain,
warnlist = Set(warnkeywords)
warnida = union(warnlist, Set((:dtmin,)))

using Sundials_jll
using Sundials_jll: Sundials_jll, libsundials_arkode, libsundials_cvode,
libsundials_cvodes, libsundials_idas, libsundials_kinsol,
libsundials_nvecserial, libsundials_sunlinsolband,
libsundials_sunlinsoldense, libsundials_sunlinsolklu,
libsundials_sunlinsollapackband,
libsundials_sunlinsollapackdense, libsundials_sunlinsolpcg,
libsundials_sunlinsolspbcgs, libsundials_sunlinsolspfgmr,
libsundials_sunlinsolspgmr, libsundials_sunlinsolsptfqmr,
libsundials_sunmatrixband, libsundials_sunmatrixdense,
libsundials_sunmatrixsparse, libsundials_sunnonlinsolfixedpoint,
libsundials_sunnonlinsolnewton

export solve,
SundialsODEAlgorithm, SundialsDAEAlgorithm, ARKODE, CVODE_BDF, CVODE_Adams, IDA,
Expand Down Expand Up @@ -84,7 +100,7 @@ include("common_interface/integrator_types.jl")
include("common_interface/integrator_utils.jl")
include("common_interface/solve.jl")

import PrecompileTools
using PrecompileTools: PrecompileTools

PrecompileTools.@compile_workload begin
function lorenz(du, u, p, t)
Expand Down
25 changes: 25 additions & 0 deletions test/qa_test.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Sundials
using Aqua
using ExplicitImports
using Test

@testset "Quality Assurance" begin
@testset "Aqua tests" begin
Aqua.test_ambiguities(Sundials; recursive = false)
Aqua.test_deps_compat(Sundials)
Aqua.test_piracies(Sundials;
treat_as_own = [Sundials.NVector])
Aqua.test_project_extras(Sundials)
Aqua.test_stale_deps(Sundials)
Aqua.test_unbound_args(Sundials)
Aqua.test_undefined_exports(Sundials)
end

@testset "ExplicitImports tests" begin
@test check_no_implicit_imports(Sundials) === nothing
@test check_no_stale_explicit_imports(Sundials) === nothing
# AbstractSciMLOperator is re-exported from SciMLBase, so allow it
@test check_all_explicit_imports_via_owners(Sundials;
ignore = (:AbstractSciMLOperator,)) === nothing
end
end
4 changes: 4 additions & 0 deletions test/runtests.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
using Sundials
using Test

@testset "Quality Assurance" begin
include("qa_test.jl")
end

@testset "Generator" begin
include("generator.jl")
end
Expand Down
Loading