Skip to content

Commit 2889418

Browse files
Fix explicit imports
1 parent 21adabe commit 2889418

File tree

5 files changed

+29
-16
lines changed

5 files changed

+29
-16
lines changed

ext/LinearSolveSparseArraysExt.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ using LinearSolve: LinearSolve, BLASELTYPES, pattern_changed, ArrayInterface,
44
@get_cacheval, CHOLMODFactorization, GenericFactorization, GenericLUFactorization,
55
KLUFactorization, LUFactorization, NormalCholeskyFactorization, OperatorAssumptions,
66
QRFactorization, RFLUFactorization, UMFPACKFactorization, solve
7-
using LinearAlgebra
8-
using SparseArrays
9-
using SparseArrays: AbstractSparseMatrixCSC, nonzeros, rowvals, getcolptr
7+
using LinearAlgebra: LinearAlgebra, I, Hermitian, Symmetric, cholesky, ldiv!, lu, lu!
8+
using SparseArrays: SparseArrays, AbstractSparseArray, AbstractSparseMatrixCSC, SparseMatrixCSC,
9+
nonzeros, rowvals, getcolptr, sparse, sprand
10+
using Base: /, \, convert
1011
using SciMLBase: SciMLBase, LinearProblem, ReturnCode
1112

1213
# Can't `using KLU` because cannot have a dependency in there without

src/KLU/klu.jl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
module KLU
22

3-
using SparseArrays
4-
using SparseArrays: SparseMatrixCSC
3+
using SparseArrays: SparseArrays, SparseMatrixCSC
54
import SparseArrays: nnz
65

76
export klu, klu!
87

98
const libklu = :libklu
9+
const libsuitesparseconfig = :libsuitesparseconfig
10+
using Base: Ptr, Cvoid, Cint, Cdouble, Cchar, Csize_t
1011
include("wrappers.jl")
1112

12-
import Base: (\), size, getproperty, setproperty!, propertynames, show
13+
import Base: (\), size, getproperty, setproperty!, propertynames, show,
14+
copy, eachindex, view, sortperm, unsafe_load, zeros, convert, eltype,
15+
length, parent, stride, finalizer, Complex, complex, imag, real, map!,
16+
summary, println, oneunit, sizeof, isdefined, setfield!, getfield,
17+
OutOfMemoryError, ArgumentError, OverflowError, ErrorException, DimensionMismatch
1318

1419
# Convert from 1-based to 0-based indices
1520
function decrement!(A::AbstractArray{T}) where {T <: Integer}
@@ -29,7 +34,8 @@ function increment!(A::AbstractArray{T}) where {T <: Integer}
2934
end
3035
increment(A::AbstractArray{<:Integer}) = increment!(copy(A))
3136

32-
using LinearAlgebra
37+
using LinearAlgebra: LinearAlgebra, ldiv!, Adjoint, Transpose, Factorization
38+
import LinearAlgebra: issuccess
3339

3440
const AdjointFact = isdefined(LinearAlgebra, :AdjointFactorization) ?
3541
LinearAlgebra.AdjointFactorization : Adjoint

src/LinearSolve.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ using LinearAlgebra: LinearAlgebra, BlasInt, LU, Adjoint, BLAS, Bidiagonal, Bunc
1111
ColumnNorm, Diagonal, Factorization, Hermitian, I, LAPACK, NoPivot,
1212
RowMaximum, RowNonZero, SymTridiagonal, Symmetric, Transpose,
1313
Tridiagonal, UniformScaling, axpby!, axpy!, bunchkaufman, bunchkaufman!,
14-
cholesky, cholesky!, diagind, dot, ldiv!, ldlt!, lu, lu!, mul!, norm,
14+
cholesky, cholesky!, diagind, dot, inv, ldiv!, ldlt!, lu, lu!, mul!, norm,
1515
qr, qr!, svd, svd!
1616
using LazyArrays: @~, BroadcastArray
1717
using SciMLBase: SciMLBase, LinearAliasSpecifier, AbstractSciMLOperator,
@@ -97,6 +97,11 @@ issparsematrix(A) = false
9797
make_SparseMatrixCSC(A) = nothing
9898
makeempty_SparseMatrixCSC(A) = nothing
9999

100+
# Stub functions for SparseArrays - overridden in extension
101+
getcolptr(A) = error("SparseArrays extension not loaded")
102+
rowvals(A) = error("SparseArrays extension not loaded")
103+
nonzeros(A) = error("SparseArrays extension not loaded")
104+
100105
EnumX.@enumx DefaultAlgorithmChoice begin
101106
LUFactorization
102107
QRFactorization

src/common.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,8 @@ function SciMLBase.init(prob::LinearProblem, alg::SciMLLinearSolveAlgorithm,
207207
elseif b isa Array
208208
copy(b)
209209
elseif issparsematrixcsc(b)
210-
SparseMatrixCSC(size(b)..., getcolptr(b), rowvals(b), nonzeros(b))
210+
# Extension must be loaded if issparsematrixcsc returns true
211+
make_SparseMatrixCSC(b)
211212
else
212213
deepcopy(b)
213214
end

test/qa.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using LinearSolve, Aqua
22
using ExplicitImports
3-
using LinearAlgebra, Markdown, Reexport, DocStringExtensions, Libdl, SparseArrays
4-
import CommonSolve
53

64
@testset "Aqua" begin
75
Aqua.find_persistent_tasks_deps(LinearSolve)
@@ -17,16 +15,18 @@ end
1715

1816
@testset "Explicit Imports" begin
1917
# Get extension modules that might be unanalyzable
20-
klu_mod = try; Base.get_extension(LinearSolve, :LinearSolveSparseArraysExt).KLU; catch; nothing; end
18+
klu_mod = try
19+
Base.get_extension(LinearSolve, :LinearSolveSparseArraysExt).KLU
20+
catch
21+
nothing
22+
end
2123
unanalyzable_mods = (LinearSolve.OperatorCondition, LinearSolve.DefaultAlgorithmChoice)
2224
if klu_mod !== nothing
2325
unanalyzable_mods = (unanalyzable_mods..., klu_mod)
2426
end
2527

26-
@test check_no_implicit_imports(
27-
LinearSolve; skip = (Base, Core, SciMLBase, LinearAlgebra, SparseArrays, CommonSolve),
28-
allow_unanalyzable = unanalyzable_mods
29-
) === nothing
28+
@test check_no_implicit_imports(LinearSolve; skip = (Base, Core),
29+
allow_unanalyzable = unanalyzable_mods) === nothing
3030
@test check_no_stale_explicit_imports(LinearSolve; allow_unanalyzable = unanalyzable_mods) === nothing
3131
@test check_all_qualified_accesses_via_owners(LinearSolve) === nothing
3232
end

0 commit comments

Comments
 (0)