QA: ExplicitImports no_implicit_imports — make implicit imports explicit
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 327
- Forks
- 42
- Avg merge
- 14h 13m
- Merged PRs (30d)
- 34
Description
Tracking issue for the ExplicitImports check_no_implicit_imports finding, marked @test_broken via ei_broken = (:no_implicit_imports,) in the new run_qa-based QA group (PR converting QA onto the SciMLTesting run_qa v1.6 form + ExplicitImports).
DiffEqGPU relies on bare using of many heavy dependencies (KernelAbstractions, SciMLBase, DiffEqBase, StaticArrays, LinearAlgebra, ForwardDiff, Distributed, RecursiveArrayTools, SimpleDiffEq, ...), so ExplicitImports.check_no_implicit_imports(DiffEqGPU) reports ~75 implicitly-imported names. Converting each to an explicit using X: a, b, c is a large, mechanical-but-risky refactor (much of the surface is GPU-kernel macro usage such as @kernel, @Const, @index, @muladd, @unpack, @set), so it is deferred rather than done as part of the QA conversion.
The check is currently recorded as Broken (not Fail) so the QA lane stays green; once the implicit imports are made explicit, the @test_broken flips to an Unexpected Pass and :no_implicit_imports should be dropped from ei_broken.
Full implicit-import list (Julia LTS, ExplicitImports 1.15.0):
Adapt, adapt (Adapt)
BrownFullBasicInit (DiffEqBase)
Distributed, nprocs, pmap (Distributed)
DocStringExtensions (DocStringExtensions)
ForwardDiff (ForwardDiff)
KernelAbstractions, @Const, @index, @kernel, CPU (KernelAbstractions)
LinearAlgebra, I, LowerTriangular, NoPivot, RowMaximum, SingularException, UpperTriangular, det (LinearAlgebra)
LinearSolve (LinearSolve)
MuladdMacro, @muladd (MuladdMacro)
Parameters; @unpack (UnPack)
Random (Random)
RecursiveArrayTools, VectorOfArray (RecursiveArrayTools)
Setfield, @set, @set! (Setfield)
SimpleDiffEq, GPUSimpleATsit5, GPUSimpleAVern7, GPUSimpleAVern9, GPUSimpleTsit5, GPUSimpleVern7, GPUSimpleVern9, SimpleEM (SimpleDiffEq)
DiffEqBase (DiffEqBase)
ODEProblem, SDEProblem, SciMLBase, CallbackSet, CheckInit, ContinuousCallback, DiscreteCallback, EnsembleDistributed, EnsembleProblem, EnsembleSerial, EnsembleSolution, EnsembleThreads, ODEFunction, ReturnCode, SDEFunction, VectorContinuousCallback, remake, terminate! (SciMLBase)
solve (CommonSolve)
SimpleNonlinearSolve (SimpleNonlinearSolve)
StaticArrays (StaticArrays); MArray, MMatrix, SArray, SMatrix, SVector, Size, StaticMatrix, StaticVector, similar_type (StaticArraysCore)
setindex (Base)
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
Start with the new run_qa-based QA group and its ExplicitImports check_no_implicit_imports entry, using the listed implicit-import report as the scope. Make the imports explicit across the affected DiffEqGPU code, then verify that the @test_broken check becomes an Unexpected Pass and that :no_implicit_imports can be removed 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
- Mostly clear
- Newbie friendliness
- 45/100