Previously, the Config implementation was based on a Python dictionary, which had two issues.
Default value handling is trickier.
config[key] is less intuitive than config.key.
Therefore, we re-implement Config using Python dataclass in this PR.
Analysis
Previously, we used to have AnalysisBase and subclass it for specific analyses like InfluenceFunction. However, we realized that, at the moment, we don't have many other analyses to support, making this subclassing strategy useless. Therefore, I just removed AnalysisBase and directly have InfluenceFunction as a member of AnaLog. Also, I implemented the front-end interface for members of InfluenceFunction in AnaLog, so users can use both:
analog.compute_influence(...)
analog.influence.compute_influence(...)
Depending on the user's feedback, we may deprecate one in the future.
I made two major changes for
Config
andAnalysis
.Config
Previously, the
Config
implementation was based on a Python dictionary, which had two issues.config[key]
is less intuitive thanconfig.key
.Therefore, we re-implement
Config
using Python dataclass in this PR.Analysis
Previously, we used to have
AnalysisBase
and subclass it for specific analyses likeInfluenceFunction
. However, we realized that, at the moment, we don't have many other analyses to support, making this subclassing strategy useless. Therefore, I just removedAnalysisBase
and directly haveInfluenceFunction
as a member ofAnaLog
. Also, I implemented the front-end interface for members ofInfluenceFunction
inAnaLog
, so users can use both:analog.compute_influence(...)
analog.influence.compute_influence(...)
Depending on the user's feedback, we may deprecate one in the future.
@levmckinney @hwijeen @eatpk