Skip to content

ExplicitImports QA findings (root umbrella + sublibraries) #519

Description

@ChrisRackauckas-Claude

Enabling ExplicitImports.jl (via SciMLTesting run_qa(...; explicit_imports = true)) in
the QA lanes surfaces a set of pre-existing findings across the umbrella package and the
sublibraries. To keep the QA lanes green while these are addressed, the failing
ExplicitImports checks are marked @test_broken (via ei_broken = (...)) per-env; they
auto-flag (Unexpected Pass) once fixed, prompting removal of the marker.

This issue tracks fixing them so the ei_broken markers can be dropped.

Categories

  • no_implicit_imports (all envs): modules bring names into scope via bare
    using ADTypes / using LinearAlgebra / using BoundaryValueDiffEqCore /
    using SciMLBase; the umbrella BoundaryValueDiffEq re-exports the solver algorithms
    (Shooting, MIRK*, RadauIIa*, LobattoIII*, Ascher*, ...) via
    using <Sublibrary> + export. Fix: list the names explicitly on the using
    statements (using ADTypes: AutoForwardDiff, ...) or @reexport using <Sublibrary>.

  • no_stale_explicit_imports (Core, MIRK, MIRKN, Shooting, Ascher, FIRK): the
    sublibraries import a batch of BoundaryValueDiffEqCore internal helpers
    (__vec_f, __initial_guess, recursive_flatten, ...) that are not all used in
    every sublibrary. Fix: drop the genuinely-unused imports (taking care to keep names
    that exist for method extension).

  • all_explicit_imports_via_owners (MIRK, MIRKN, Shooting): get_tmp (owned by
    PreallocationTools) and @SciMLMessage (owned by SciMLLogging) are imported from
    BoundaryValueDiffEqCore, which re-exports them. Fix: import from the owning package.

  • all_qualified_accesses_are_public / all_explicit_imports_are_public (all envs):
    the sublibraries use BoundaryValueDiffEqCore's internal API (__vec,
    eval_bc_residual, recursive_flatten, ...) and some upstream non-public names
    (SciMLBase.__init/__solve/ReturnCode.Success, ForwardDiff.Dual, Base.Fix2, ...).
    Fix: declare the shared BoundaryValueDiffEqCore API names public (Julia 1.11+
    public/SciMLPublic) so the sublibraries can import them cleanly, and ignore the
    genuine other-package internals.

QA conversion PR: run_qa v1.6 form + ExplicitImports (root + sublibs).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions