Add ExplicitImports.jl checks to QA via SciMLTesting run_qa#48
Merged
ChrisRackauckas merged 2 commits intoJun 27, 2026
Merged
Conversation
Wire all six ExplicitImports.jl checks (no_implicit_imports, no_stale_explicit_imports, all_explicit_imports_via_owners, all_qualified_accesses_via_owners, all_qualified_accesses_are_public, all_explicit_imports_are_public) into the QA test group through SciMLTesting's run_qa, keeping the existing Aqua and JET checks. ConcreteStructs has no non-stdlib dependencies and references Base names only via fully-qualified, public accesses, so all six checks pass with no fixes, no public-API declarations, and no ignore-list entries. Also bump the QA env's SciMLTesting compat to 1.4 (run_qa's ExplicitImports support) and add ExplicitImports = "1.4"; convert the hand-written Aqua/JET @testsets to the canonical run_qa call and replace JET's deprecated target_defined_modules with target_modules. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SciMLTesting 1.5.0 makes Aqua and ExplicitImports its own direct deps and
auto-detects them in run_qa (JET stays a weakdep, opt-in via `using JET`).
So the qa.jl call collapses to the per-repo essentials:
- drop the `Aqua = Aqua`, `JET = JET`, `jet = true`, and
`ExplicitImports = ExplicitImports` module-threading boilerplate
(now auto-detected);
- keep `explicit_imports = true` (opt-in, defaults false) and the genuine
`jet_kwargs` target_modules override;
- drop the `using Aqua` / `using ExplicitImports` lines (SciMLTesting
provides them); keep `using JET` (this QA group runs JET).
QA env (test/qa/Project.toml): drop ExplicitImports (now transitive via
SciMLTesting), bump SciMLTesting compat to "1.5".
Keep Aqua as a direct dep of the QA env: Aqua's method-ambiguity check spawns
a clean worker subprocess that runs `using Aqua` (Base.load_path_setup_code +
`using Aqua`). A transitive-only Aqua is not resolvable by a top-level
`using` in that subprocess, so dropping it from [deps] fails the ambiguity
check with "Package Aqua not found in current path." Verified against released
SciMLTesting 1.5.0 on Julia 1.10: QA group passes 18/18 (Aqua 11 incl.
ambiguity + JET 1 + ExplicitImports 6); dropping Aqua from [deps] regresses
the ambiguity check to errored.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds ExplicitImports.jl testing to the QA test group through SciMLTesting's
run_qa, alongside the existing Aqua and JET checks. All six ExplicitImports checks are enabled:Standard checks
no_implicit_importsno_stale_explicit_importsall_explicit_imports_via_ownersall_qualified_accesses_via_ownersPublic-API checks
all_qualified_accesses_are_publicall_explicit_imports_are_publicResult: all six pass with zero changes to package source
ConcreteStructs has no non-stdlib dependencies. Its source uses no
using/importof external modules and referencesBasenames only via fully-qualified, public accesses (Base.@__doc__,Base.show,Base.size, etc.). Consequently:@concrete, alreadyexported.Changes
test/qa/qa.jl: convert the hand-writtenAqua.test_all/JET.test_package@testsets to the canonicalrun_qa(ConcreteStructs; Aqua=Aqua, JET=JET, jet=true, ExplicitImports=ExplicitImports, explicit_imports=true, ...). JET's deprecatedtarget_defined_modules=trueis replaced with the supportedtarget_modules=(ConcreteStructs,).test/qa/Project.toml: addExplicitImports(compat1.4) and bumpSciMLTestingcompat to1.4(the version whoserun_qasupports ExplicitImports).Local verification (Julia 1.12.6 and 1.10.11 / lts)
Full QA group via the CI path (
Pkg.test()withGROUP=QA, Julia 1):The six ExplicitImports checks individually (Julia 1.12.6):
Same six pass on Julia 1.10.11 (lts). Runic check passes on
test/qa/qa.jl.This PR should be ignored until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code