Skip to content

Commit 2c31d86

Browse files
Import public API from its owning module, not a re-exporter (#4880)
`ExplicitImports.check_all_explicit_imports_via_owners` and `check_all_qualified_accesses_via_owners` both failed on `ModelingToolkit` because ten bindings were reached through a package that merely forwards them: - `@add_kwonly`, `NullParameters`, `value` via `DiffEqBase` (owner `SciMLBase`) - `Operator`, `Term`, `_iszero`, `_isone` via `Symbolics` (owner `SymbolicUtils`) - `getname` via `Symbolics` (owner `SymbolicIndexingInterface`) - `maketerm`, `metadata` via `SymbolicUtils` (owner `TermInterface`) - `topological_sort`, `value`, `var_from_nested_derivative`, `schedule` via `ModelingToolkitBase` in the `StructuralTransformations` submodule (owners `Graphs`, `Symbolics`, `Symbolics`, `Base`) Each name is now imported from the module that declares it. Every relocated binding was checked to be `===` to the one previously used, so this is a pure import-site change with no behaviour difference. `schedule` was unused and is dropped rather than re-pointed. Four of the moved names (`@add_kwonly`, `NullParameters`, `value`, `getname`) plus `maketerm`/`metadata` are `public` at their owner but not at the re-exporter, so this also drops the `*_are_public` findings from 57/91 to 53/89. `TermInterface` becomes a direct dependency; it was already in the manifest through `SymbolicUtils`. Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
1 parent 8a18d36 commit 2c31d86

6 files changed

Lines changed: 22 additions & 16 deletions

File tree

Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
4343
SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5"
4444
SymbolicUtils = "d1185830-fcd6-423d-90d6-eec64667417b"
4545
Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
46+
TermInterface = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c"
4647
UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed"
4748

4849
[weakdeps]
@@ -123,6 +124,7 @@ StochasticDiffEq = "6.82.0, 7"
123124
SymbolicIndexingInterface = "0.3.46"
124125
SymbolicUtils = "4.31"
125126
Symbolics = "7.32.1"
127+
TermInterface = "2"
126128
UnPack = "1"
127129
julia = "1.10"
128130
BenchmarkTools = "1"

src/ModelingToolkit.jl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ end
1616

1717
import SymbolicUtils
1818
import SymbolicUtils as SU
19-
import SymbolicUtils: iscall, arguments, operation, maketerm, promote_symtype,
19+
import SymbolicUtils: iscall, arguments, operation, promote_symtype,
2020
isadd, ismul, ispow, issym, FnType, isconst, BSImpl,
21-
@rule, Rewriters, substitute, metadata, BasicSymbolic,
22-
symtype
21+
@rule, Rewriters, substitute, BasicSymbolic,
22+
symtype, _iszero, _isone
23+
import TermInterface: maketerm, metadata
2324
using SymbolicUtils.Code
2425
import SymbolicUtils.Code: toexpr
2526
import SymbolicUtils.Rewriters: Chain, Postwalk, Prewalk, Fixpoint
@@ -31,6 +32,7 @@ using Graphs
3132
import OrderedCollections
3233

3334
using SymbolicIndexingInterface
35+
using SymbolicIndexingInterface: getname
3436
using LinearAlgebra, SparseArrays
3537
using InteractiveUtils
3638
using DataStructures
@@ -56,12 +58,12 @@ using RuntimeGeneratedFunctions: drop_expr
5658
using Symbolics: degree, VartypeT, SymbolicT
5759
using Symbolics: parse_vars, value, @derivatives, get_variables,
5860
exprs_occur_in, symbolic_linear_solve, unwrap, wrap,
59-
VariableSource, getname, variable, COMMON_ZERO,
61+
VariableSource, variable, COMMON_ZERO,
6062
NAMESPACE_SEPARATOR, setdefaultval, Arr,
6163
hasnode, fixpoint_sub, CallAndWrap, SArgsT, SSym, STerm
6264
const NAMESPACE_SEPARATOR_SYMBOL = Symbol(NAMESPACE_SEPARATOR)
6365
import Symbolics: rename, get_variables!, _solve, hessian_sparsity,
64-
jacobian_sparsity, isaffine, islinear, _iszero, _isone,
66+
jacobian_sparsity, isaffine, islinear,
6567
tosymbol, lower_varname, diff2term, var_from_nested_derivative,
6668
BuildTargets, JuliaTarget, StanTarget, CTarget, MATLABTarget,
6769
ParallelForm, SerialForm, MultithreadedForm, build_function,
@@ -71,7 +73,7 @@ import Symbolics: rename, get_variables!, _solve, hessian_sparsity,
7173
import ModelingToolkitBase as MTKBase
7274
import SimpleNonlinearSolve
7375

74-
import DiffEqBase: @add_kwonly
76+
import SciMLBase: @add_kwonly
7577
@reexport using Symbolics
7678
@reexport using UnPack
7779
@reexport using ModelingToolkitBase

src/discretedomain.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Symbolics: Operator, Num, Term, value, recursive_hasoperator
1+
using Symbolics: Num, value, recursive_hasoperator
2+
using SymbolicUtils: Operator, Term
23

34
MTKBase.ShiftIndex() = MTKBase.ShiftIndex(MTKTearing.Inferred())
45
MTKBase.Sample() = MTKBase.Sample(MTKTearing.InferredDiscrete())

src/linearization.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ function linearization_function(
139139
initialization_abstol = 1.0e-5,
140140
initialization_reltol = 1.0e-3,
141141
op = Dict{SymbolicT, SymbolicT}(),
142-
p = DiffEqBase.NullParameters(),
142+
p = SciMLBase.NullParameters(),
143143
zero_dummy_der = false,
144144
initialization_solver_alg = nothing,
145145
autodiff = AutoForwardDiff(),
@@ -957,7 +957,7 @@ lsys_sym, _ = ModelingToolkit.linearize_symbolic(cl, [f.u], [p.x])
957957
function linearize(
958958
sys, lin_fun::LinearizationFunction; t = 0.0,
959959
op = Dict(), allow_input_derivatives = false,
960-
p = DiffEqBase.NullParameters()
960+
p = SciMLBase.NullParameters()
961961
)
962962
if op isa LinearizationOpPoint && op.t isa AbstractVector
963963
ops = _build_op_from_solution(op)

src/problems/semilinearodeproblem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ end
142142
defs[par] = mat
143143
end
144144
cachelen = jac ? length(dvs) * length(eqs) : length(dvs)
145-
defs[diffcache_par] = DiffCache(zeros(DiffEqBase.value(_u0_eltype), cachelen))
145+
defs[diffcache_par] = DiffCache(zeros(SciMLBase.value(_u0_eltype), cachelen))
146146
end
147147
@set! sys.guesses = guess
148148
@set! sys.initial_conditions = defs

src/structural_transformation/StructuralTransformations.jl

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@ module StructuralTransformations
33
using Setfield: @set!, @set
44
using UnPack: @unpack
55

6-
using Symbolics: unwrap, linear_expansion, VartypeT, SymbolicT
6+
using Symbolics: unwrap, linear_expansion, VartypeT, SymbolicT,
7+
var_from_nested_derivative, value
78
import Symbolics
89
using SymbolicUtils
910
using SymbolicUtils: BSImpl
1011
using SymbolicUtils.Code
1112
using SymbolicUtils.Rewriters
12-
using SymbolicUtils: maketerm, iscall, symtype
13+
using SymbolicUtils: iscall, symtype
14+
using TermInterface: maketerm
1315
import SymbolicUtils as SU
1416
import Moshi
1517

1618
using ModelingToolkit
17-
using ModelingToolkitBase: System, AbstractSystem, var_from_nested_derivative, Differential,
19+
using ModelingToolkitBase: System, AbstractSystem, Differential,
1820
unknowns, equations, diff2term_with_unit,
19-
value,
2021
operation, arguments, simplify, symbolic_linear_solve,
2122
isdiffeq, isdifferential, isirreducible,
2223
empty_substitutions, get_substitutions,
@@ -25,17 +26,17 @@ using ModelingToolkitBase: System, AbstractSystem, var_from_nested_derivative, D
2526
ExtraEquationsSystemException,
2627
ExtraVariablesSystemException,
2728
invalidate_cache!, Shift,
28-
topological_sort,
2929
filter_kwargs, lower_varname_with_unit,
3030
setio,
3131
has_equations, observed,
32-
Schedule, schedule, iscomplete, get_schedule, VariableUnshifted,
32+
Schedule, iscomplete, get_schedule, VariableUnshifted,
3333
VariableShift, DerivativeDict, shift2term, simplify_shifts,
3434
distribute_shift
3535

3636
using BipartiteGraphs
3737
import BipartiteGraphs: invview, complete, IncrementalCycleTracker, add_edge_checked!
3838
using Graphs
39+
using Graphs: topological_sort
3940
using ModelingToolkit: mtkcompile!
4041
using SymbolicIndexingInterface: symbolic_type, ArraySymbolic, NotSymbolic, getname
4142

0 commit comments

Comments
 (0)