Skip to content

Commit 6efec86

Browse files
Merge pull request #2806 from ChrisRackauckas-Claude/fix-autodiff-missing-imports
Use explicit imports
2 parents bada5b4 + 5904cf6 commit 6efec86

File tree

118 files changed

+716
-558
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+716
-558
lines changed

.github/workflows/CI.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ jobs:
2525
- Downstream
2626
- ODEInterfaceRegression
2727
- Multithreading
28+
- QA
2829

2930
- OrdinaryDiffEqAdamsBashforthMoulton
3031
- OrdinaryDiffEqBDF

Project.toml

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,16 @@ uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
33
authors = ["Chris Rackauckas <[email protected]>", "Yingbo Ma <[email protected]>"]
44
version = "6.101.0"
55

6-
[sources]
7-
OrdinaryDiffEqAdamsBashforthMoulton = {path = "lib/OrdinaryDiffEqAdamsBashforthMoulton"}
8-
OrdinaryDiffEqBDF = {path = "lib/OrdinaryDiffEqBDF"}
9-
OrdinaryDiffEqCore = {path = "lib/OrdinaryDiffEqCore"}
10-
OrdinaryDiffEqDefault = {path = "lib/OrdinaryDiffEqDefault"}
11-
OrdinaryDiffEqDifferentiation = {path = "lib/OrdinaryDiffEqDifferentiation"}
12-
OrdinaryDiffEqExplicitRK = {path = "lib/OrdinaryDiffEqExplicitRK"}
13-
OrdinaryDiffEqExponentialRK = {path = "lib/OrdinaryDiffEqExponentialRK"}
14-
OrdinaryDiffEqExtrapolation = {path = "lib/OrdinaryDiffEqExtrapolation"}
15-
OrdinaryDiffEqFIRK = {path = "lib/OrdinaryDiffEqFIRK"}
16-
OrdinaryDiffEqFeagin = {path = "lib/OrdinaryDiffEqFeagin"}
17-
OrdinaryDiffEqFunctionMap = {path = "lib/OrdinaryDiffEqFunctionMap"}
18-
OrdinaryDiffEqHighOrderRK = {path = "lib/OrdinaryDiffEqHighOrderRK"}
19-
OrdinaryDiffEqIMEXMultistep = {path = "lib/OrdinaryDiffEqIMEXMultistep"}
20-
OrdinaryDiffEqLinear = {path = "lib/OrdinaryDiffEqLinear"}
21-
OrdinaryDiffEqLowOrderRK = {path = "lib/OrdinaryDiffEqLowOrderRK"}
22-
OrdinaryDiffEqLowStorageRK = {path = "lib/OrdinaryDiffEqLowStorageRK"}
23-
OrdinaryDiffEqNonlinearSolve = {path = "lib/OrdinaryDiffEqNonlinearSolve"}
24-
OrdinaryDiffEqNordsieck = {path = "lib/OrdinaryDiffEqNordsieck"}
25-
OrdinaryDiffEqPDIRK = {path = "lib/OrdinaryDiffEqPDIRK"}
26-
OrdinaryDiffEqPRK = {path = "lib/OrdinaryDiffEqPRK"}
27-
OrdinaryDiffEqQPRK = {path = "lib/OrdinaryDiffEqQPRK"}
28-
OrdinaryDiffEqRKN = {path = "lib/OrdinaryDiffEqRKN"}
29-
OrdinaryDiffEqRosenbrock = {path = "lib/OrdinaryDiffEqRosenbrock"}
30-
OrdinaryDiffEqSDIRK = {path = "lib/OrdinaryDiffEqSDIRK"}
31-
OrdinaryDiffEqSSPRK = {path = "lib/OrdinaryDiffEqSSPRK"}
32-
OrdinaryDiffEqStabilizedIRK = {path = "lib/OrdinaryDiffEqStabilizedIRK"}
33-
OrdinaryDiffEqStabilizedRK = {path = "lib/OrdinaryDiffEqStabilizedRK"}
34-
OrdinaryDiffEqSymplecticRK = {path = "lib/OrdinaryDiffEqSymplecticRK"}
35-
OrdinaryDiffEqTsit5 = {path = "lib/OrdinaryDiffEqTsit5"}
36-
OrdinaryDiffEqVerner = {path = "lib/OrdinaryDiffEqVerner"}
37-
386
[deps]
397
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
408
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
419
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
10+
CommonSolve = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2"
4211
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
4312
DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e"
4413
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
4514
EnumX = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
15+
ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7"
4616
ExponentialUtilities = "d4d017d3-3776-5f7e-afef-a10c40355c18"
4717
FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898"
4818
FastClosures = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a"
@@ -105,14 +75,48 @@ StaticArrayInterface = "0d7ed370-da01-4f52-bd93-41d350b8b718"
10575
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
10676
TruncatedStacktraces = "781d530d-4396-4725-bb49-402e4bee1e77"
10777

78+
[sources]
79+
OrdinaryDiffEqAdamsBashforthMoulton = {path = "lib/OrdinaryDiffEqAdamsBashforthMoulton"}
80+
OrdinaryDiffEqBDF = {path = "lib/OrdinaryDiffEqBDF"}
81+
OrdinaryDiffEqCore = {path = "lib/OrdinaryDiffEqCore"}
82+
OrdinaryDiffEqDefault = {path = "lib/OrdinaryDiffEqDefault"}
83+
OrdinaryDiffEqDifferentiation = {path = "lib/OrdinaryDiffEqDifferentiation"}
84+
OrdinaryDiffEqExplicitRK = {path = "lib/OrdinaryDiffEqExplicitRK"}
85+
OrdinaryDiffEqExponentialRK = {path = "lib/OrdinaryDiffEqExponentialRK"}
86+
OrdinaryDiffEqExtrapolation = {path = "lib/OrdinaryDiffEqExtrapolation"}
87+
OrdinaryDiffEqFIRK = {path = "lib/OrdinaryDiffEqFIRK"}
88+
OrdinaryDiffEqFeagin = {path = "lib/OrdinaryDiffEqFeagin"}
89+
OrdinaryDiffEqFunctionMap = {path = "lib/OrdinaryDiffEqFunctionMap"}
90+
OrdinaryDiffEqHighOrderRK = {path = "lib/OrdinaryDiffEqHighOrderRK"}
91+
OrdinaryDiffEqIMEXMultistep = {path = "lib/OrdinaryDiffEqIMEXMultistep"}
92+
OrdinaryDiffEqLinear = {path = "lib/OrdinaryDiffEqLinear"}
93+
OrdinaryDiffEqLowOrderRK = {path = "lib/OrdinaryDiffEqLowOrderRK"}
94+
OrdinaryDiffEqLowStorageRK = {path = "lib/OrdinaryDiffEqLowStorageRK"}
95+
OrdinaryDiffEqNonlinearSolve = {path = "lib/OrdinaryDiffEqNonlinearSolve"}
96+
OrdinaryDiffEqNordsieck = {path = "lib/OrdinaryDiffEqNordsieck"}
97+
OrdinaryDiffEqPDIRK = {path = "lib/OrdinaryDiffEqPDIRK"}
98+
OrdinaryDiffEqPRK = {path = "lib/OrdinaryDiffEqPRK"}
99+
OrdinaryDiffEqQPRK = {path = "lib/OrdinaryDiffEqQPRK"}
100+
OrdinaryDiffEqRKN = {path = "lib/OrdinaryDiffEqRKN"}
101+
OrdinaryDiffEqRosenbrock = {path = "lib/OrdinaryDiffEqRosenbrock"}
102+
OrdinaryDiffEqSDIRK = {path = "lib/OrdinaryDiffEqSDIRK"}
103+
OrdinaryDiffEqSSPRK = {path = "lib/OrdinaryDiffEqSSPRK"}
104+
OrdinaryDiffEqStabilizedIRK = {path = "lib/OrdinaryDiffEqStabilizedIRK"}
105+
OrdinaryDiffEqStabilizedRK = {path = "lib/OrdinaryDiffEqStabilizedRK"}
106+
OrdinaryDiffEqSymplecticRK = {path = "lib/OrdinaryDiffEqSymplecticRK"}
107+
OrdinaryDiffEqTsit5 = {path = "lib/OrdinaryDiffEqTsit5"}
108+
OrdinaryDiffEqVerner = {path = "lib/OrdinaryDiffEqVerner"}
109+
108110
[compat]
109111
ADTypes = "1.16"
110112
Adapt = "3.0, 4"
111113
ArrayInterface = "7.15"
114+
CommonSolve = "0.2"
112115
DataStructures = "0.18, 0.19"
113116
DiffEqBase = "6.169.1"
114117
DocStringExtensions = "0.9"
115118
EnumX = "1"
119+
ExplicitImports = "1.13.1"
116120
ExponentialUtilities = "1"
117121
FastBroadcast = "0.2, 0.3"
118122
FastClosures = "0.3"
@@ -186,6 +190,7 @@ DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def"
186190
DiffEqDevTools = "f3b72e0c-5b89-59e1-b016-84e28bfd966d"
187191
DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63"
188192
ElasticArrays = "fdbdab4c-e67f-52f5-8c3f-e7b388dad3d4"
193+
ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7"
189194
IncompleteLU = "40713840-3770-5561-ab4c-a76e7d0d7895"
190195
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
191196
JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb"
@@ -210,4 +215,4 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
210215
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
211216

212217
[targets]
213-
test = ["Calculus", "ComponentArrays", "Symbolics", "AlgebraicMultigrid", "IncompleteLU", "DiffEqCallbacks", "DifferentiationInterface", "DiffEqDevTools", "ODEProblemLibrary", "ElasticArrays", "InteractiveUtils", "ParameterizedFunctions", "JLArrays", "PoissonRandom", "Printf", "Random", "ReverseDiff", "SafeTestsets", "SparseArrays", "Statistics", "StructArrays", "Test", "Unitful", "ModelingToolkit", "Pkg", "NLsolve", "RecursiveFactorization", "SparseConnectivityTracer", "SparseMatrixColorings"]
218+
test = ["Calculus", "ComponentArrays", "Symbolics", "AlgebraicMultigrid", "IncompleteLU", "DiffEqCallbacks", "DifferentiationInterface", "DiffEqDevTools", "ODEProblemLibrary", "ElasticArrays", "ExplicitImports", "InteractiveUtils", "ParameterizedFunctions", "JLArrays", "PoissonRandom", "Printf", "Random", "ReverseDiff", "SafeTestsets", "SparseArrays", "Statistics", "StructArrays", "Test", "Unitful", "ModelingToolkit", "Pkg", "NLsolve", "RecursiveFactorization", "SparseConnectivityTracer", "SparseMatrixColorings"]

lib/ImplicitDiscreteSolve/src/ImplicitDiscreteSolve.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import OrdinaryDiffEqCore: OrdinaryDiffEqAlgorithm, alg_cache, OrdinaryDiffEqMut
1111
_initialize_dae!, DefaultInit, BrownFullBasicInit, OverrideInit
1212

1313
using Reexport
14-
@reexport using DiffEqBase
14+
@reexport using SciMLBase
1515

1616
"""
1717
IDSolve()

lib/OrdinaryDiffEqAdamsBashforthMoulton/Project.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ OrdinaryDiffEqCore = {path = "../OrdinaryDiffEqCore"}
88
OrdinaryDiffEqLowOrderRK = {path = "../OrdinaryDiffEqLowOrderRK"}
99

1010
[deps]
11+
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
12+
1113
DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e"
1214
FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898"
1315
MuladdMacro = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221"
@@ -33,6 +35,7 @@ Reexport = "1.2.2"
3335
SafeTestsets = "0.1.0"
3436
Static = "1.1.1"
3537
Test = "<0.0.1, 1"
38+
SciMLBase = "2"
3639
julia = "1.10"
3740
JET = "0.9.18, 0.10.4"
3841
Aqua = "0.8.11"

lib/OrdinaryDiffEqAdamsBashforthMoulton/src/OrdinaryDiffEqAdamsBashforthMoulton.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import Static: False
1818
import OrdinaryDiffEqCore
1919

2020
using Reexport
21-
@reexport using DiffEqBase
21+
@reexport using SciMLBase
2222

2323
include("algorithms.jl")
2424
include("alg_utils.jl")

lib/OrdinaryDiffEqBDF/Project.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ authors = ["ParamThakkar123 <[email protected]>"]
44
version = "1.7.0"
55

66
[deps]
7+
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
8+
79
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
810
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
911
DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e"
@@ -57,6 +59,7 @@ SafeTestsets = "0.1.0"
5759
StaticArrays = "1.9.7"
5860
Test = "<0.0.1, 1"
5961
TruncatedStacktraces = "1.4.0"
62+
SciMLBase = "2"
6063
julia = "1.10"
6164

6265
[extras]

lib/OrdinaryDiffEqBDF/src/OrdinaryDiffEqBDF.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,25 @@ import OrdinaryDiffEqCore: alg_order, calculate_residuals!,
2424
_process_AD_choice
2525
using OrdinaryDiffEqSDIRK: ImplicitEulerConstantCache, ImplicitEulerCache
2626

27-
using TruncatedStacktraces, MuladdMacro, MacroTools, FastBroadcast, RecursiveArrayTools
27+
using TruncatedStacktraces: @truncate_stacktrace
28+
using MuladdMacro: @muladd
29+
using MacroTools: @capture
30+
using FastBroadcast: @..
31+
using RecursiveArrayTools: recursivefill!
2832
import StaticArrays: SArray, MVector, SVector, @SVector, StaticArray, MMatrix, SA
2933
using LinearAlgebra: mul!, I
30-
using ArrayInterface
34+
import ArrayInterface
35+
using ArrayInterface: ismutable
3136
import OrdinaryDiffEqCore
3237
using OrdinaryDiffEqDifferentiation: UJacobianWrapper
3338
using OrdinaryDiffEqNonlinearSolve: NLNewton, du_alias_or_new, build_nlsolver,
3439
nlsolve!, nlsolvefail, isnewton, markfirststage!,
3540
set_new_W!, DIRK, compute_step!, COEFFICIENT_MULTISTEP,
3641
NonlinearSolveAlg
37-
import ADTypes
3842
import ADTypes: AutoForwardDiff, AutoFiniteDiff, AbstractADType
3943

4044
using Reexport
41-
@reexport using DiffEqBase
45+
@reexport using SciMLBase
4246

4347
include("algorithms.jl")
4448
include("alg_utils.jl")

lib/OrdinaryDiffEqBDF/src/algorithms.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ function QNDF(; max_order::Val{MO} = Val{5}(), chunk_size = Val{0}(),
444444
extrapolant, kappa, controller, step_limiter!, AD_choice)
445445
end
446446

447-
TruncatedStacktraces.@truncate_stacktrace QNDF
447+
@truncate_stacktrace QNDF
448448

449449
@doc BDF_docstring("The second order Modified Extended BDF method,
450450
which has improved stability properties over the standard BDF.
@@ -549,7 +549,7 @@ function FBDF(; max_order::Val{MO} = Val{5}(), chunk_size = Val{0}(),
549549
controller, step_limiter!, AD_choice)
550550
end
551551

552-
TruncatedStacktraces.@truncate_stacktrace FBDF
552+
@truncate_stacktrace FBDF
553553

554554
"""
555555
QBDF1: Multistep Method
@@ -773,4 +773,4 @@ function DFBDF(; max_order::Val{MO} = Val{5}(), chunk_size = Val{0}(),
773773
controller, AD_choice)
774774
end
775775

776-
TruncatedStacktraces.@truncate_stacktrace DFBDF
776+
@truncate_stacktrace DFBDF

lib/OrdinaryDiffEqBDF/src/bdf_caches.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ end
418418
step_limiter!::StepLimiter
419419
end
420420

421-
TruncatedStacktraces.@truncate_stacktrace QNDFCache 1
421+
@truncate_stacktrace QNDFCache 1
422422

423423
function alg_cache(alg::QNDF{MO}, u, rate_prototype, ::Type{uEltypeNoUnits},
424424
::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t,
@@ -609,7 +609,7 @@ end
609609
step_limiter!::StepLimiter
610610
end
611611

612-
TruncatedStacktraces.@truncate_stacktrace FBDFCache 1
612+
@truncate_stacktrace FBDFCache 1
613613

614614
function alg_cache(alg::FBDF{MO}, u, rate_prototype, ::Type{uEltypeNoUnits},
615615
::Type{uBottomEltypeNoUnits}, ::Type{tTypeNoUnits}, uprev, uprev2, f, t,

lib/OrdinaryDiffEqCore/src/OrdinaryDiffEqCore.jl

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,27 @@ if isdefined(Base, :Experimental) &&
55
@eval Base.Experimental.@max_methods 1
66
end
77

8-
using DocStringExtensions
9-
using Reexport
10-
@reexport using DiffEqBase
8+
import DocStringExtensions
9+
import Reexport: @reexport
10+
using Reexport: @reexport
11+
@reexport using SciMLBase
12+
import DiffEqBase
1113

12-
using Logging
14+
import Logging: @logmsg, LogLevel
1315

14-
using MuladdMacro, FastClosures
16+
using MuladdMacro: @muladd
1517

16-
using LinearAlgebra
18+
using LinearAlgebra: opnorm, I, UniformScaling, diag, rank, isdiag
1719

18-
using PrecompileTools
20+
import PrecompileTools
1921

2022
import FillArrays: Trues, Falses
2123

22-
import FastPower
24+
import FastPower: fastpower
2325

2426
# Interfaces
25-
import DiffEqBase: solve!, step!, initialize!, isadaptive
27+
import SciMLBase: solve!, step!, isadaptive
28+
import DiffEqBase: initialize!
2629

2730
# Internal utils
2831
import DiffEqBase: ODE_DEFAULT_NORM,
@@ -36,25 +39,29 @@ import SciMLOperators: AbstractSciMLOperator, AbstractSciMLScalarOperator,
3639

3740
using DiffEqBase: DEIntegrator
3841

39-
import RecursiveArrayTools: chain, recursivecopy!
42+
import RecursiveArrayTools: chain, recursivecopy!, recursivecopy, recursive_bottom_eltype, recursive_unitless_bottom_eltype, recursive_unitless_eltype, copyat_or_push!, DiffEqArray
4043

41-
using SimpleUnPack, RecursiveArrayTools, DataStructures, ArrayInterface
44+
using SimpleUnPack: @unpack
45+
import RecursiveArrayTools
46+
using DataStructures: BinaryHeap, FasterForward
47+
import DataStructures
48+
using ArrayInterface: ArrayInterface, issingular
4249

43-
import TruncatedStacktraces
50+
import TruncatedStacktraces: @truncate_stacktrace, VERBOSE_MSG
4451

4552
import StaticArraysCore: SArray, MVector, SVector, StaticArray, MMatrix,
4653
StaticMatrix
4754

4855
# Integrator Interface
49-
import DiffEqBase: resize!, deleteat!, addat!, full_cache, user_cache, u_cache, du_cache,
56+
import SciMLBase: resize!, deleteat!, addat!, full_cache, user_cache, u_cache, du_cache,
5057
resize_non_user_cache!, deleteat_non_user_cache!, addat_non_user_cache!,
5158
terminate!, get_du, get_dt, get_proposed_dt, set_proposed_dt!,
5259
u_modified!, savevalues!,
5360
add_tstop!, has_tstop, first_tstop, pop_tstop!,
5461
add_saveat!, set_reltol!,
5562
set_abstol!, postamble!, last_step_failed,
56-
isautodifferentiable,
57-
get_tstops, get_tstops_array, get_tstops_max
63+
isautodifferentiable
64+
import DiffEqBase: get_tstops, get_tstops_array, get_tstops_max
5865

5966
using DiffEqBase: check_error!, @def, _vec, _reshape
6067

@@ -65,21 +72,22 @@ using SciMLBase: NoInit, CheckInit, OverrideInit, AbstractDEProblem, _unwrap_val
6572

6673
import SciMLBase: AbstractNonlinearProblem, alg_order, LinearAliasSpecifier
6774

75+
import SciMLBase: unwrap_cache,
76+
islinear
6877
import DiffEqBase: calculate_residuals,
69-
calculate_residuals!, unwrap_cache,
70-
@tight_loop_macros,
71-
islinear, timedepentdtmin
78+
calculate_residuals!, @tight_loop_macros,
79+
timedepentdtmin
7280

7381
import Polyester
74-
using MacroTools, Adapt
82+
# MacroTools and Adapt imported but not directly used in OrdinaryDiffEqCore
83+
# using MacroTools, Adapt
7584
import ADTypes: AutoFiniteDiff, AutoForwardDiff, AbstractADType, AutoSparse
7685
import Accessors: @reset
7786

78-
using SciMLStructures: canonicalize, Tunable, isscimlstructure
87+
# SciMLStructures symbols imported but not directly used in OrdinaryDiffEqCore
88+
# using SciMLStructures: canonicalize, Tunable, isscimlstructure
7989

80-
using SymbolicIndexingInterface: state_values, parameter_values, is_variable,
81-
variable_index,
82-
symbolic_type, NotSymbolic
90+
using SymbolicIndexingInterface: state_values, parameter_values
8391

8492
const CompiledFloats = Union{Float32, Float64}
8593
import Preferences

0 commit comments

Comments
 (0)