diff --git a/.github/workflows/SpellCheck.yml b/.github/workflows/SpellCheck.yml new file mode 100644 index 000000000..599253c8c --- /dev/null +++ b/.github/workflows/SpellCheck.yml @@ -0,0 +1,13 @@ +name: Spell Check + +on: [pull_request] + +jobs: + typos-check: + name: Spell Check with Typos + runs-on: ubuntu-latest + steps: + - name: Checkout Actions Repository + uses: actions/checkout@v3 + - name: Check spelling + uses: crate-ci/typos@v1.16.23 \ No newline at end of file diff --git a/.typos.toml b/.typos.toml new file mode 100644 index 000000000..9e125bbdc --- /dev/null +++ b/.typos.toml @@ -0,0 +1,4 @@ +[default.extend-words] +fom = "fom" +Pris = "Pris" +PARM = "PARM" \ No newline at end of file diff --git a/Project.toml b/Project.toml index 71f0ca822..12d3aab9d 100644 --- a/Project.toml +++ b/Project.toml @@ -8,7 +8,6 @@ ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" ConcreteStructs = "2569d6c7-a4a2-43d3-a901-331e8e4be471" DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" EnumX = "4e289a0a-7415-4d19-859d-a7e5c4648b56" -EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FastLapackInterface = "29a986be-02c6-4525-aec4-84b980013641" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" @@ -34,6 +33,7 @@ BandedMatrices = "aae01518-5342-5314-be14-df237901396f" BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" +EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" @@ -47,7 +47,7 @@ RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" LinearSolveBandedMatricesExt = "BandedMatrices" LinearSolveBlockDiagonalsExt = "BlockDiagonals" LinearSolveCUDAExt = "CUDA" -LinearSolveEnzymeExt = "Enzyme" +LinearSolveEnzymeExt = ["Enzyme", "EnzymeCore"] LinearSolveHYPREExt = "HYPRE" LinearSolveIterativeSolversExt = "IterativeSolvers" LinearSolveKernelAbstractionsExt = "KernelAbstractions" @@ -58,39 +58,55 @@ LinearSolveRecursiveArrayToolsExt = "RecursiveArrayTools" LinearSolveFastAlmostBandedMatricesExt = ["FastAlmostBandedMatrices"] [compat] +Aqua = "0.8" ArrayInterface = "7.4.11" BandedMatrices = "1" BlockDiagonals = "0.1" ConcreteStructs = "0.2" +CUDA = "5" DocStringExtensions = "0.9" EnumX = "1" +Enzyme = "0.11" EnzymeCore = "0.6" +FastAlmostBandedMatrices = "0.1" FastLapackInterface = "2" +FiniteDiff = "2" +ForwardDiff = "0.10" GPUArraysCore = "0.1" HYPRE = "1.4.0" InteractiveUtils = "1.6" IterativeSolvers = "0.9.3" Libdl = "1.6" LinearAlgebra = "1.9" +JET = "0.8" KLU = "0.3.0, 0.4" KernelAbstractions = "0.9" Krylov = "0.9" KrylovKit = "0.6" +Metal = "0.5" +MPI = "0.20" +MultiFloats = "1" +Pardiso = "0.5" +Pkg = "1" PrecompileTools = "1" Preferences = "1" +Random = "1" RecursiveArrayTools = "2" RecursiveFactorization = "0.2.8" Reexport = "1" Requires = "1" +SafeTestsets = "0.1" SciMLBase = "2" SciMLOperators = "0.3" Setfield = "1" SparseArrays = "1.9" Sparspak = "0.3.6" +Test = "1" UnPack = "1" julia = "1.9" [extras] +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" BandedMatrices = "aae01518-5342-5314-be14-df237901396f" BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" @@ -113,4 +129,4 @@ SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test", "IterativeSolvers", "InteractiveUtils", "JET", "KrylovKit", "Pkg", "Random", "SafeTestsets", "MultiFloats", "ForwardDiff", "HYPRE", "MPI", "BlockDiagonals", "Enzyme", "FiniteDiff", "BandedMatrices", "FastAlmostBandedMatrices"] +test = ["Aqua", "Test", "IterativeSolvers", "InteractiveUtils", "JET", "KrylovKit", "Pkg", "Random", "SafeTestsets", "MultiFloats", "ForwardDiff", "HYPRE", "MPI", "BlockDiagonals", "Enzyme", "FiniteDiff", "BandedMatrices", "FastAlmostBandedMatrices"] diff --git a/docs/src/solvers/solvers.md b/docs/src/solvers/solvers.md index e602770db..c6a8709f5 100644 --- a/docs/src/solvers/solvers.md +++ b/docs/src/solvers/solvers.md @@ -109,7 +109,7 @@ NormalBunchKaufmanFactorization ### LinearSolve.jl -LinearSolve.jl contains some linear solvers built in for specailized cases. +LinearSolve.jl contains some linear solvers built in for specialized cases. ```@docs SimpleLUFactorization diff --git a/test/basictests.jl b/test/basictests.jl index 93b22fbdd..c28113654 100644 --- a/test/basictests.jl +++ b/test/basictests.jl @@ -43,17 +43,17 @@ function test_interface(alg, prob1, prob2) sol = solve(prob2, alg; cache_kwargs...) @test A2 * sol.u ≈ b2 - # Test cache resue: base mechanism + # Test cache reuse: base mechanism cache = SciMLBase.init(prob1, alg; cache_kwargs...) # initialize cache sol = solve!(cache) @test A1 * sol.u ≈ b1 - # Test cache resue: only A changes + # Test cache reuse: only A changes cache.A = deepcopy(A2) sol = solve!(cache; cache_kwargs...) @test A2 * sol.u ≈ b1 - # Test cache resue: both A and b change + # Test cache reuse: both A and b change cache.A = deepcopy(A2) cache.b = b2 sol = solve!(cache; cache_kwargs...) diff --git a/test/qa.jl b/test/qa.jl new file mode 100644 index 000000000..5c4f3e061 --- /dev/null +++ b/test/qa.jl @@ -0,0 +1,12 @@ +using LinearSolve, Aqua +@testset "Aqua" begin + Aqua.find_persistent_tasks_deps(LinearSolve) + Aqua.test_ambiguities(LinearSolve, recursive = false, broken = true) + Aqua.test_deps_compat(LinearSolve, ignore = [:MKL_jll]) + Aqua.test_piracies(LinearSolve, + treat_as_own = [LinearProblem]) + Aqua.test_project_extras(LinearSolve) + Aqua.test_stale_deps(LinearSolve) + Aqua.test_unbound_args(LinearSolve) + Aqua.test_undefined_exports(LinearSolve) +end diff --git a/test/runtests.jl b/test/runtests.jl index b9c4a4941..4ca877a76 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -7,6 +7,7 @@ const GROUP = get(ENV, "GROUP", "All") const HAS_EXTENSIONS = isdefined(Base, :get_extension) if GROUP == "All" || GROUP == "Core" + @time @safetestset "Quality Assurance" include("qa.jl") @time @safetestset "Basic Tests" include("basictests.jl") VERSION >= v"1.9" && @time @safetestset "Re-solve" include("resolve.jl") @time @safetestset "Zero Initialization Tests" include("zeroinittests.jl")