SciML / SciML/ModelingToolkitStandardLibrary.jl

QA: make implicit imports explicit (ExplicitImports no_implicit_imports)

Open
#467 0 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.