From 30f033677133cffdd0fd9b3f1189beb4a4648569 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Thu, 25 Jun 2026 08:12:31 -0400 Subject: [PATCH 1/3] QA: run_qa v1.6 form + ExplicitImports Convert the hand-rolled test/qa Aqua body to SciMLTesting's run_qa v1.6 declarative form and enable ExplicitImports (explicit_imports = true). - Add a test/qa/Project.toml sub-env (Aqua + SciMLTesting "1.6" + SafeTestsets + Test, package via [sources]) so the QA group is isolated, matching the SciMLTesting folder model used by sibling repos. - qa.jl now calls run_qa(ModelingToolkitStandardLibrary; explicit_imports = true, ...). Aqua + ExplicitImports come from SciMLTesting's own deps. JET is not run (the prior QA did not run JET). The original non-broken Aqua tweak (ambiguities recursive = false) is preserved via aqua_kwargs. - ExplicitImports findings (vs released SciMLTesting 1.6.0): * no_stale_explicit_imports: FIXED by removing genuinely unused imports (RealOutput in Electrical / IsothermalCompressible / TranslationalModelica; getdefault + IfElse.ifelse in Translational). * all_explicit_imports_via_owners / *_are_public / all_qualified_accesses_are_public: ignore other packages' non-public names (unwrap<-Symbolics, ifelse<-IfElse, getdefault/isvariable/t_nounits<-ModelingToolkitBase, SConst<-Symbolics, depwarn<-Base). Documented per source. * no_implicit_imports: many submodules `using ModelingToolkitBase, Symbolics, IfElse` for exported names/macros; mass-explicit refactor is large and tracked in #467, kept as ei_broken = (:no_implicit_imports,). - Drop now-stale Aqua from the root [extras]/[targets].test/[compat] (Aqua moved to the QA sub-env; ExplicitImports stays transitive via SciMLTesting). Verified locally on Julia 1.10 with SciMLTesting 1.6.0 from the registry: QA group = 16 Pass, 1 Broken, 0 Fail, 0 Error. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- Project.toml | 4 +-- src/Electrical/Electrical.jl | 2 +- .../IsothermalCompressible.jl | 2 +- src/Mechanical/Translational/Translational.jl | 3 +-- .../TranslationalModelica.jl | 2 +- test/qa/Project.toml | 16 +++++++++++ test/qa/aqua.jl | 11 -------- test/qa/qa.jl | 27 +++++++++++++++++++ 8 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 test/qa/Project.toml delete mode 100644 test/qa/aqua.jl create mode 100644 test/qa/qa.jl diff --git a/Project.toml b/Project.toml index c048c5442..6c4137135 100644 --- a/Project.toml +++ b/Project.toml @@ -14,7 +14,6 @@ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" [compat] ADTypes = "1" -Aqua = "0.8" ChainRulesCore = "1" ControlSystemsBase = "1.4" DataFrames = "1.7" @@ -44,7 +43,6 @@ julia = "1.10" [extras] ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" ControlSystemsBase = "aaaaaaaa-a6ca-5380-bf3e-84a91bcd477e" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" DataInterpolations = "82cc6244-b520-54b8-b5a6-8a565e85f1d0" @@ -66,4 +64,4 @@ SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["ADTypes", "Aqua", "LinearAlgebra", "OrdinaryDiffEqBDF", "OrdinaryDiffEqDefault", "OrdinaryDiffEq", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqSDIRK", "SafeTestsets", "SciMLTesting", "Test", "ControlSystemsBase", "DataFrames", "DataInterpolations", "SciMLBase", "SciMLStructures", "SymbolicIndexingInterface", "ForwardDiff", "SciCompDSL", "ModelingToolkit"] +test = ["ADTypes", "LinearAlgebra", "OrdinaryDiffEqBDF", "OrdinaryDiffEqDefault", "OrdinaryDiffEq", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqSDIRK", "SafeTestsets", "SciMLTesting", "Test", "ControlSystemsBase", "DataFrames", "DataInterpolations", "SciMLBase", "SciMLStructures", "SymbolicIndexingInterface", "ForwardDiff", "SciCompDSL", "ModelingToolkit"] diff --git a/src/Electrical/Electrical.jl b/src/Electrical/Electrical.jl index 5f0b4d332..4eb1c7472 100644 --- a/src/Electrical/Electrical.jl +++ b/src/Electrical/Electrical.jl @@ -8,7 +8,7 @@ using ModelingToolkitBase, Symbolics, IfElse using ModelingToolkitBase: t_nounits as t, D_nounits as D using ..Thermal: HeatPort using ..Mechanical.Rotational: Flange, Support -using ..Blocks: RealInput, RealOutput +using ..Blocks: RealInput export Pin, OnePort include("utils.jl") diff --git a/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl b/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl index 5865fac1a..6be563767 100644 --- a/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl +++ b/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl @@ -6,7 +6,7 @@ module IsothermalCompressible using ModelingToolkitBase, Symbolics using ModelingToolkitBase: t_nounits as t, D_nounits as D -using ...Blocks: RealInput, RealOutput +using ...Blocks: RealInput using ...Mechanical.Translational: MechanicalPort, Mass using IfElse: ifelse diff --git a/src/Mechanical/Translational/Translational.jl b/src/Mechanical/Translational/Translational.jl index 42a5b5f4a..1d93f1bc0 100644 --- a/src/Mechanical/Translational/Translational.jl +++ b/src/Mechanical/Translational/Translational.jl @@ -4,10 +4,9 @@ Library to model 1-dimensional, translational mechanical systems module Translational using ModelingToolkitBase, Symbolics -using ModelingToolkitBase: getdefault, t_nounits as t, D_nounits as D +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ModelingToolkitStandardLibrary.Blocks: RealInput, RealOutput -using IfElse: ifelse export MechanicalPort include("utils.jl") diff --git a/src/Mechanical/TranslationalModelica/TranslationalModelica.jl b/src/Mechanical/TranslationalModelica/TranslationalModelica.jl index f13d7a1c1..b77924e51 100644 --- a/src/Mechanical/TranslationalModelica/TranslationalModelica.jl +++ b/src/Mechanical/TranslationalModelica/TranslationalModelica.jl @@ -5,7 +5,7 @@ module TranslationalModelica using ModelingToolkitBase, Symbolics, IfElse using ModelingToolkitBase: t_nounits as t, D_nounits as D -using ...Blocks: RealInput, RealOutput +using ...Blocks: RealInput export Flange include("utils.jl") diff --git a/test/qa/Project.toml b/test/qa/Project.toml new file mode 100644 index 000000000..fea90d4c9 --- /dev/null +++ b/test/qa/Project.toml @@ -0,0 +1,16 @@ +[deps] +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" +ModelingToolkitStandardLibrary = "16a59e39-deab-5bd0-87e4-056b12336739" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[sources] +ModelingToolkitStandardLibrary = {path = "../.."} + +[compat] +Aqua = "0.8" +SafeTestsets = "0.1" +SciMLTesting = "1.6" +Test = "1" +julia = "1.10" diff --git a/test/qa/aqua.jl b/test/qa/aqua.jl deleted file mode 100644 index 5d580adc1..000000000 --- a/test/qa/aqua.jl +++ /dev/null @@ -1,11 +0,0 @@ -using ModelingToolkitStandardLibrary, Aqua -@testset "Aqua" begin - Aqua.find_persistent_tasks_deps(ModelingToolkitStandardLibrary) - Aqua.test_ambiguities(ModelingToolkitStandardLibrary, recursive = false) - Aqua.test_deps_compat(ModelingToolkitStandardLibrary) - Aqua.test_piracies(ModelingToolkitStandardLibrary) - Aqua.test_project_extras(ModelingToolkitStandardLibrary) - Aqua.test_stale_deps(ModelingToolkitStandardLibrary) - Aqua.test_unbound_args(ModelingToolkitStandardLibrary) - Aqua.test_undefined_exports(ModelingToolkitStandardLibrary) -end diff --git a/test/qa/qa.jl b/test/qa/qa.jl new file mode 100644 index 000000000..23b7e7509 --- /dev/null +++ b/test/qa/qa.jl @@ -0,0 +1,27 @@ +using SciMLTesting, ModelingToolkitStandardLibrary, Test + +run_qa( + ModelingToolkitStandardLibrary; + explicit_imports = true, + aqua_kwargs = (; ambiguities = (; recursive = false)), + ei_kwargs = (; + # `unwrap` is re-exported by Symbolics but owned by SymbolicUtils, and is + # not declared public in Symbolics. + all_explicit_imports_via_owners = (; ignore = (:unwrap,)), + # Names explicitly imported but not declared public in their source package: + # unwrap -> Symbolics, ifelse -> IfElse (its main export), + # getdefault -> ModelingToolkitBase + all_explicit_imports_are_public = (; ignore = (:unwrap, :ifelse, :getdefault)), + # Names accessed qualified but not declared public in their source package: + # ifelse -> IfElse, SConst -> Symbolics, depwarn -> Base, + # isvariable, t_nounits -> ModelingToolkitBase + all_qualified_accesses_are_public = (; + ignore = (:ifelse, :SConst, :depwarn, :isvariable, :t_nounits), + ), + ), + # The component submodules `using ModelingToolkitBase, Symbolics, IfElse` and + # rely on their exported names/macros (@component, @named, @variables, System, + # Equation, Flow, ...). Making these explicit is a large, mechanical refactor + # tracked in https://github.com/SciML/ModelingToolkitStandardLibrary.jl/issues/467. + ei_broken = (:no_implicit_imports,), +) From 986c8848c46f83cb7cf4e0dda89705be637a3759 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Sat, 27 Jun 2026 09:17:40 -0400 Subject: [PATCH 2/3] Downgrade: raise DiffEqBase floor to 6.190 The Downgrade CI lane precompile-failed with a `CommonSolve.init` method ambiguity between DiffEqBase's `init(::Union{AbstractDEProblem, NonlinearProblem}, args...)` and NonlinearSolveBase's `init(::AbstractNonlinearProblem, ::AbstractNonlinearTerminationMode, du, u, ...)`, surfaced while precompiling NonlinearSolveFirstOrder / OrdinaryDiffEq*. DiffEqBase 6.190.0 (commit "remove NonlinearSolve things") dropped `NonlinearProblem` from that `init` signature, removing the ambiguity. The old floor 6.189.1 still carried the colliding method, so downgrade resolved into the ambiguous state. Bump the floor to 6.190. Verified on Julia 1.10: with DiffEqBase 6.190.0 and the CI-downgrade-resolved solver stack (NonlinearSolveFirstOrder 1.7.0, NonlinearSolveBase 1.14.0, SciMLBase 2.125.0, OrdinaryDiffEq 6.102.1, OrdinaryDiffEqBDF/SDIRK/Default/ NonlinearSolve at floors), all 51 packages precompile cleanly (the 5 that failed in CI now pass). 6.190.0 requires SciMLBase >= 2.115.0, satisfied by the resolved 2.125.0. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 6c4137135..585bff160 100644 --- a/Project.toml +++ b/Project.toml @@ -18,7 +18,7 @@ ChainRulesCore = "1" ControlSystemsBase = "1.4" DataFrames = "1.7" DataInterpolations = "8" -DiffEqBase = "6.189.1, 7" +DiffEqBase = "6.190, 7" ForwardDiff = "0.10, 1" IfElse = "0.1" LinearAlgebra = "1.10" From 4907bac09538382581564d10d873b29d8533ae2e Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Mon, 29 Jun 2026 13:14:38 -0400 Subject: [PATCH 3/3] QA: eliminate ExplicitImports exceptions (no implicit imports) Make every submodule's `using ModelingToolkitBase/Symbolics/IfElse` explicit so the package no longer relies on implicit imports, then drop the corresponding ei exceptions from the QA configuration. Source changes (per-module explicit name lists derived from ExplicitImports.print_explicit_imports on Julia 1.12): - Each component submodule now imports exactly the macros/types it uses (e.g. @component, @connector, @named, @parameters, @unpack, @variables, System, Equation, Flow, compose, connect, extend, ParentScope, domain_connect, @register_symbolic, @register_derivative, Differential), plus the bare module names that are accessed qualified. - Blocks/sources.jl: `using DiffEqBase`/`using PreallocationTools` made explicit (DiffCache, GeneralLazyBufferCache, get_tmp); DiffEqBase had no used names so only its module name is imported. - The thin wrapper modules (Magnetic, Mechanical, Hydraulic) only reference the ModelingToolkitBase module name, so they import just that. qa.jl exceptions removed (verified now unnecessary against released SciMLTesting 1.7.0 / SciMLBase 3.30 / ModelingToolkitBase 1.48 / Symbolics 7.29): - ei_broken = (:no_implicit_imports,) -> all 16 modules now pass the check. - all_explicit_imports_via_owners ignore (:unwrap) -> passes with no ignore. - all_explicit_imports_are_public: dropped :unwrap (public in Symbolics) and :getdefault (public in ModelingToolkitBase); only :ifelse remains. - all_qualified_accesses_are_public: dropped :t_nounits (public) and :depwarn (no longer flagged); only :ifelse, :SConst, :isvariable remain. Remaining ignores are irreducible (genuinely non-public upstream names): ifelse (IfElse's sole export, not declared public), SConst (Symbolics-internal, used in a @register_derivative), isvariable (ModelingToolkitBase-internal). Verified on Julia 1.12.6: full QA group green via run_qa (17 Pass / 0 Broken, was 16 Pass / 1 Broken), and a smoke test constructs one component from every affected module successfully (Blocks.Sine/DeadZone, Electrical.Pin, IsothermalCompressible.Cap, FluxTubes.Ground, etc.). Runic-formatted. Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- src/Blocks/Blocks.jl | 6 ++++-- src/Blocks/sources.jl | 4 ++-- src/Electrical/Electrical.jl | 7 +++++-- src/Hydraulic/Hydraulic.jl | 2 +- .../IsothermalCompressible.jl | 6 ++++-- src/Magnetic/FluxTubes/FluxTubes.jl | 5 +++-- src/Magnetic/Magnetic.jl | 2 +- src/Mechanical/Mechanical.jl | 2 +- src/Mechanical/MultiBody2D/MultiBody2D.jl | 6 ++++-- src/Mechanical/Rotational/Rotational.jl | 6 ++++-- src/Mechanical/Translational/Translational.jl | 5 +++-- .../TranslationalModelica.jl | 6 ++++-- .../TranslationalPosition.jl | 6 ++++-- src/Thermal/Thermal.jl | 6 ++++-- test/qa/qa.jl | 21 ++++--------------- 15 files changed, 48 insertions(+), 42 deletions(-) diff --git a/src/Blocks/Blocks.jl b/src/Blocks/Blocks.jl index 6361c9fae..cbe6fe6cd 100644 --- a/src/Blocks/Blocks.jl +++ b/src/Blocks/Blocks.jl @@ -2,10 +2,12 @@ The module `Blocks` contains common input-output components, referred to as blocks. """ module Blocks -using ModelingToolkitBase, Symbolics +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @named, + @parameters, @unpack, System, compose, connect, extend, + getdefault, t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @register_symbolic, @variables, Differential, Equation import IfElse: ifelse import ..@symcheck -using ModelingToolkitBase: getdefault, t_nounits as t, D_nounits as D export RealInput, RealInputArray, RealOutput, RealOutputArray, SISO include("utils.jl") diff --git a/src/Blocks/sources.jl b/src/Blocks/sources.jl index 3aa381e4a..9e282d861 100644 --- a/src/Blocks/sources.jl +++ b/src/Blocks/sources.jl @@ -1,6 +1,6 @@ -using DiffEqBase +using DiffEqBase: DiffEqBase import ChainRulesCore -using PreallocationTools +using PreallocationTools: DiffCache, GeneralLazyBufferCache, get_tmp # Define and register smooth functions # These are "smooth" aka differentiable and avoid Gibbs effect diff --git a/src/Electrical/Electrical.jl b/src/Electrical/Electrical.jl index 4eb1c7472..a4d62a3db 100644 --- a/src/Electrical/Electrical.jl +++ b/src/Electrical/Electrical.jl @@ -4,8 +4,11 @@ This library contains electrical components to build up analog circuits. """ module Electrical -using ModelingToolkitBase, Symbolics, IfElse -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using IfElse: IfElse +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @constants, + @named, @parameters, @unpack, Flow, System, connect, extend, + t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @register_symbolic, @variables, Equation using ..Thermal: HeatPort using ..Mechanical.Rotational: Flange, Support using ..Blocks: RealInput diff --git a/src/Hydraulic/Hydraulic.jl b/src/Hydraulic/Hydraulic.jl index c1c072bd4..9a107afbe 100644 --- a/src/Hydraulic/Hydraulic.jl +++ b/src/Hydraulic/Hydraulic.jl @@ -3,7 +3,7 @@ Library of hydraulic models. """ module Hydraulic -using ModelingToolkitBase +using ModelingToolkitBase: ModelingToolkitBase include("IsothermalCompressible/IsothermalCompressible.jl") diff --git a/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl b/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl index 6be563767..c10a7a91a 100644 --- a/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl +++ b/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl @@ -3,8 +3,10 @@ Library to model iso-thermal compressible liquid fluid flow """ module IsothermalCompressible -using ModelingToolkitBase, Symbolics -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @named, + @parameters, Flow, ParentScope, System, connect, domain_connect, + t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @register_derivative, @register_symbolic, @variables, Equation using ...Blocks: RealInput using ...Mechanical.Translational: MechanicalPort, Mass diff --git a/src/Magnetic/FluxTubes/FluxTubes.jl b/src/Magnetic/FluxTubes/FluxTubes.jl index f5db15420..69a722bf9 100644 --- a/src/Magnetic/FluxTubes/FluxTubes.jl +++ b/src/Magnetic/FluxTubes/FluxTubes.jl @@ -1,6 +1,7 @@ module FluxTubes -using ModelingToolkitBase -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @named, + @parameters, @unpack, @variables, Equation, Flow, System, connect, extend, + t_nounits as t, D_nounits as D using ...Electrical: Pin export PositiveMagneticPort, NegativeMagneticPort, TwoPort diff --git a/src/Magnetic/Magnetic.jl b/src/Magnetic/Magnetic.jl index 65a850c12..b58a754e6 100644 --- a/src/Magnetic/Magnetic.jl +++ b/src/Magnetic/Magnetic.jl @@ -1,6 +1,6 @@ module Magnetic -using ModelingToolkitBase +using ModelingToolkitBase: ModelingToolkitBase # FluxTubes include("FluxTubes/FluxTubes.jl") diff --git a/src/Mechanical/Mechanical.jl b/src/Mechanical/Mechanical.jl index 64393d119..0427be809 100644 --- a/src/Mechanical/Mechanical.jl +++ b/src/Mechanical/Mechanical.jl @@ -3,7 +3,7 @@ Library of mechanical models. """ module Mechanical -using ModelingToolkitBase +using ModelingToolkitBase: ModelingToolkitBase include("Rotational/Rotational.jl") include("Translational/Translational.jl") diff --git a/src/Mechanical/MultiBody2D/MultiBody2D.jl b/src/Mechanical/MultiBody2D/MultiBody2D.jl index bb8495783..25f3ad0e7 100644 --- a/src/Mechanical/MultiBody2D/MultiBody2D.jl +++ b/src/Mechanical/MultiBody2D/MultiBody2D.jl @@ -1,7 +1,9 @@ module MultiBody2D -using ModelingToolkitBase, Symbolics, IfElse -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using IfElse: IfElse +using ModelingToolkitBase: ModelingToolkitBase, @component, @named, @parameters, + System, t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @variables, Equation using ..TranslationalPosition export Link diff --git a/src/Mechanical/Rotational/Rotational.jl b/src/Mechanical/Rotational/Rotational.jl index a26885dd2..24ac1b4cd 100644 --- a/src/Mechanical/Rotational/Rotational.jl +++ b/src/Mechanical/Rotational/Rotational.jl @@ -3,8 +3,10 @@ Library to model 1-dimensional, rotational mechanical systems """ module Rotational -using ModelingToolkitBase, Symbolics, IfElse -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using IfElse: IfElse +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @named, + @parameters, @unpack, Flow, System, compose, extend, t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @variables, Equation using ...Blocks: RealInput, RealOutput import ...@symcheck diff --git a/src/Mechanical/Translational/Translational.jl b/src/Mechanical/Translational/Translational.jl index 1d93f1bc0..5032680b9 100644 --- a/src/Mechanical/Translational/Translational.jl +++ b/src/Mechanical/Translational/Translational.jl @@ -3,8 +3,9 @@ Library to model 1-dimensional, translational mechanical systems """ module Translational -using ModelingToolkitBase, Symbolics -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @named, + @parameters, Flow, System, compose, t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @variables, Equation using ModelingToolkitStandardLibrary.Blocks: RealInput, RealOutput diff --git a/src/Mechanical/TranslationalModelica/TranslationalModelica.jl b/src/Mechanical/TranslationalModelica/TranslationalModelica.jl index b77924e51..3eb96a1cf 100644 --- a/src/Mechanical/TranslationalModelica/TranslationalModelica.jl +++ b/src/Mechanical/TranslationalModelica/TranslationalModelica.jl @@ -3,8 +3,10 @@ Library to model 1-dimensional, translational mechanical components. """ module TranslationalModelica -using ModelingToolkitBase, Symbolics, IfElse -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using IfElse: IfElse +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @named, + @parameters, @unpack, Flow, System, compose, extend, t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @variables, Equation using ...Blocks: RealInput export Flange diff --git a/src/Mechanical/TranslationalPosition/TranslationalPosition.jl b/src/Mechanical/TranslationalPosition/TranslationalPosition.jl index d27c082f0..c531fd6d0 100644 --- a/src/Mechanical/TranslationalPosition/TranslationalPosition.jl +++ b/src/Mechanical/TranslationalPosition/TranslationalPosition.jl @@ -3,8 +3,10 @@ Library to model 1-dimensional, translational mechanical components. """ module TranslationalPosition -using ModelingToolkitBase, Symbolics, IfElse -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using IfElse: IfElse +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @named, + @parameters, @unpack, Flow, System, compose, extend, t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @variables, Equation using ...Blocks: RealInput, RealOutput export Flange diff --git a/src/Thermal/Thermal.jl b/src/Thermal/Thermal.jl index 5df7b306f..d64149053 100644 --- a/src/Thermal/Thermal.jl +++ b/src/Thermal/Thermal.jl @@ -2,8 +2,10 @@ Library of thermal system components to model heat transfer. """ module Thermal -using ModelingToolkitBase, Symbolics, IfElse -using ModelingToolkitBase: t_nounits as t, D_nounits as D +using IfElse: IfElse +using ModelingToolkitBase: ModelingToolkitBase, @component, @connector, @named, + @parameters, @unpack, Flow, System, extend, t_nounits as t, D_nounits as D +using Symbolics: Symbolics, @variables, Equation using ...Blocks: RealInput, RealOutput export HeatPort, Element1D diff --git a/test/qa/qa.jl b/test/qa/qa.jl index 23b7e7509..60acfa77c 100644 --- a/test/qa/qa.jl +++ b/test/qa/qa.jl @@ -5,23 +5,10 @@ run_qa( explicit_imports = true, aqua_kwargs = (; ambiguities = (; recursive = false)), ei_kwargs = (; - # `unwrap` is re-exported by Symbolics but owned by SymbolicUtils, and is - # not declared public in Symbolics. - all_explicit_imports_via_owners = (; ignore = (:unwrap,)), - # Names explicitly imported but not declared public in their source package: - # unwrap -> Symbolics, ifelse -> IfElse (its main export), - # getdefault -> ModelingToolkitBase - all_explicit_imports_are_public = (; ignore = (:unwrap, :ifelse, :getdefault)), + # `ifelse` is IfElse's sole export but it is not declared public in IfElse. + all_explicit_imports_are_public = (; ignore = (:ifelse,)), # Names accessed qualified but not declared public in their source package: - # ifelse -> IfElse, SConst -> Symbolics, depwarn -> Base, - # isvariable, t_nounits -> ModelingToolkitBase - all_qualified_accesses_are_public = (; - ignore = (:ifelse, :SConst, :depwarn, :isvariable, :t_nounits), - ), + # ifelse -> IfElse, SConst -> Symbolics, isvariable -> ModelingToolkitBase + all_qualified_accesses_are_public = (; ignore = (:ifelse, :SConst, :isvariable)), ), - # The component submodules `using ModelingToolkitBase, Symbolics, IfElse` and - # rely on their exported names/macros (@component, @named, @variables, System, - # Equation, Flow, ...). Making these explicit is a large, mechanical refactor - # tracked in https://github.com/SciML/ModelingToolkitStandardLibrary.jl/issues/467. - ei_broken = (:no_implicit_imports,), )