Module compartmentalization#1097
Closed
ConnectedSystems wants to merge 10 commits into
Closed
Conversation
It was barely used and the ecosystem is moving to other approaches (base @threads is pretty good now too).
Introduces the ADRIAAnalysis package under packages/ADRIAAnalysis/ and registers it as a workspace member in the root Project.toml so that it resolves against the shared Manifest without being a hard dependency of ADRIA core.
Relocates data_envelopment, feature_set, intervention, rule_extraction, scenario, sensitivity, and clustering from src/analysis/ into packages/ADRIAAnalysis/src/ so that heavy optional dependencies (SIRUS, Clustering, etc.) are only required when ADRIAAnalysis is explicitly loaded.
Strips exports, imports, and includes for the analysis modules now living in ADRIAAnalysis. ADRIA core no longer carries optional dependencies such as SIRUS, Clustering, or DEA — these are only pulled in when ADRIAAnalysis is loaded.
AvizExt previously called ADRIA.analysis.scenario_types/rcps/clusters and imported Rule/DEAResult which moved to ADRIAAnalysis. Fixes: - Inline private _scenario_helpers.jl for pure scenario-grouping fns - Relax Rule/DEAResult dispatch signatures to duck-typed AbstractVector and untyped parameters so AvizExt compiles without ADRIAAnalysis
Adds 48 tests covering clustering, sensitivity, scenario grouping, rule extraction, DEA, and feature-set analysis in ADRIAAnalysis. Removes test coverage for modules no longer present in ADRIA core.
…layout Dockerfile and sysimage build scripts now resolve the ADRIAAnalysis workspace member. Docs reflect the new package split and updated getting-started instructions for the workspace-based install.
Deletes the original src/analysis/{data_envelopment,feature_set,
intervention,rule_extraction,scenario,sensitivity}.jl files now that
their content lives in packages/ADRIAAnalysis/src/. Logically part of
the migration commit.
Cleaner visual naming (and more consistent with other planned subpackages).
Member
|
Closed in favor of #1100 |
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.
@Zapiano the target branch here
compartmentalized-adriais a branch off theiv-study-changesbranch.This is a larger set of changes and I don't want to interfere with the study codebase as it should be fairly static from now.
Note we also need to merge in changes on
main(including the documentation updates).Summary
Moves optional, heavyweight analysis tools (MLJ, SIRUS, Bootstrap, HypothesisTests, DataEnvelopmentAnalysis) out of the ADRIA core package and into a new companion package
ADRIAAnalysis.jl, structured as a Julia 1.11 workspace member.This reduces ADRIA's mandatory dependency footprint — users who only run simulations no longer pay the load-time and precompilation cost of ML and statistical inference libraries.
Changes
New:
packages/ADRIAAnalysis/A new Julia package declared as a workspace member in the root
Project.toml:ADRIA core trimmed
MLJ,SIRUS,Bootstrap,HypothesisTests,DataEnvelopmentAnalysisfromProject.tomldependenciesADRIAAnalysis:src/analysis/clustering.jlsrc/analysis/data_envelopment.jlsrc/analysis/feature_set.jlsrc/analysis/intervention.jlsrc/analysis/rule_extraction.jlsrc/analysis/scenario.jlsrc/analysis/sensitivity.jlBase.precompileblock for moved symbolsAvizExt compatibility fixes
AvizExtpreviously calledADRIA.analysis.*functions that are now inADRIAAnalysis. SinceAvizExtcannot depend onADRIAAnalysis(circular), the scenario grouping helpers are duplicated as private functions inext/AvizExt/_scenario_helpers.jl:_scenario_clusters,_scenario_rcps,_scenario_types— private copies of the moved grouping logicviz/data_envelopment.jlandviz/rule_extraction.jlrelaxed from concreteDEAResult/Ruleto abstract/untyped to avoid hard importsBuild, Docker, docs
Dockerfile: Julia 1.10.4 → 1.11.5build/make.jl: platform-aware sysimage extension (.dll/.dylib/.so)build/precompile_script.jl: restored with real execution tracedocs/src/development/docker.md: updated for Julia 1.11 and workspace layoutdocs/src/usage/analysis.md: addedusing ADRIAAnalysisimport notedocs/src/usage/getting_started.md: addedADRIAAnalysisinstall instructionsWorkspace declaration
Root
Project.tomlgains:Breaking changes
ADRIA.analysis.sensitivity.pawnADRIAAnalysis.sensitivity.pawnADRIA.analysis.cluster_series_by_outcomeADRIAAnalysis.cluster_series_by_outcomeADRIA.analysis.rulesADRIAAnalysis.rulesADRIA.analysis.data_envelopment_analysisADRIAAnalysis.data_envelopment_analysisADRIA.analysis.scenario_typesADRIAAnalysis.scenario_typesUsers need to add
ADRIAAnalysisto their project and replace theADRIA.analysis.*prefixes.Deferred / known follow-ons
@compile_workloadbody in both ADRIA and ADRIAAnalysis.Project.tomlversion must be incremented before release.Test plan
] test ADRIAAnalysispasses all 48 tests] test ADRIApasses with moved symbols removedusing ADRIAsucceeds without MLJ/SIRUS/Bootstrap in scopeusing ADRIAAnalysisresolves all moved symbolsmake.jl) succeeds