SciML / SciML/ModelingToolkitStandardLibrary.jl
QA: make implicit imports explicit (ExplicitImports no_implicit_imports)
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 171
- Forks
- 49
- Avg merge
- 15h 50m
- Merged PRs (30d)
- 10
Description
ExplicitImports: no_implicit_imports known-broken
The QA group now runs ExplicitImports.jl's checks via SciMLTesting.run_qa(...; explicit_imports = true). Five of the six checks pass (after fixing stale imports and ignoring other packages' non-public names); check_no_implicit_imports is currently marked @test_broken (via ei_broken = (:no_implicit_imports,) in test/qa/qa.jl).
The component submodules do using ModelingToolkitBase, Symbolics, IfElse (and a couple do using DiffEqBase / using PreallocationTools) and rely on those packages' exported names and macros (@component, @named, @parameters, @variables, System, Equation, Flow, @connector, @unpack, connect, extend, compose, ...). Making every one of these an explicit using X: a, b, c is a large, mechanical, but per-submodule-different refactor; it is tracked here rather than done as one risky sweep.
Once it's done, drop :no_implicit_imports from ei_broken in test/qa/qa.jl (the marker auto-flags an Unexpected Pass when the check starts passing).
Names relied on implicitly (per submodule, from ExplicitImports.print_explicit_imports)
Mechanical.MultiBody2D (9):
IfElse; ModelingToolkitBase: @component @named @parameters System; Symbolics: @variables Equation
Mechanical.TranslationalModelica (14):
IfElse; ModelingToolkitBase: @component @connector @named @parameters @unpack Flow System compose extend; Symbolics: @variables Equation
Magnetic.FluxTubes (12):
ModelingToolkitBase: @component @connector @named @parameters @unpack @variables Equation Flow System connect extend
Electrical (16):
IfElse; ModelingToolkitBase: @component @connector @constants @named @parameters @unpack Flow System connect extend; Symbolics: @register_symbolic @variables Equation
Hydraulic (1):
ModelingToolkitBase
Mechanical.Translational (11):
ModelingToolkitBase: @component @connector @named @parameters Flow System compose; Symbolics: @variables Equation
Magnetic (1):
ModelingToolkitBase
Mechanical.Rotational (14):
IfElse; ModelingToolkitBase: @component @connector @named @parameters @unpack Flow System compose extend; Symbolics: @variables Equation
Hydraulic.IsothermalCompressible (15):
ModelingToolkitBase: @component @connector @named @parameters Flow ParentScope System connect domain_connect; Symbolics: @register_derivative @register_symbolic @variables Equation
Mechanical (1):
ModelingToolkitBase
Mechanical.TranslationalPosition (14):
IfElse; ModelingToolkitBase: @component @connector @named @parameters @unpack Flow System compose extend; Symbolics: @variables Equation
Thermal (13):
IfElse; ModelingToolkitBase: @component @connector @named @parameters @unpack Flow System extend; Symbolics: @variables Equation
Blocks (20):
DiffEqBase; ModelingToolkitBase: @component @connector @named @parameters @unpack System compose connect extend; PreallocationTools: DiffCache GeneralLazyBufferCache get_tmp; Symbolics: @register_symbolic @variables Differential Equation
Part of the SciML run_qa v1.6 / ExplicitImports rollout.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Use the per-submodule output from ExplicitImports.print_explicit_imports as the checklist for the component submodules, adding explicit imports for the listed names and macros. Run test/qa/qa.jl through the SciML QA path and confirm that check_no_implicit_imports passes before removing :no_implicit_imports from ei_broken.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- testing-qa, tooling
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 64/100