As discussed here, mozanalysis's DataSource object contains an almost identical set of parameters as metric-config-parser's DataSource. This leads to the need for converter methods (example) and unnecessary confusion over objects. I propose replacing mozanalysis's DataSource object with something like:
from metric_config_parser import DataSource
from mozanalysis.types import AnalysisUnit
class ExperimentDataSource:
data_source: DataSource
app_id: str
analysis_unit: AnalysisUnit
def build_query(self, ...) -> str:
...