class_docstr: Helps build source nodes to use in the dataflow plan builder.
  
  The current use case is for creating a set of input nodes from a data set to support multiple aggregation time
  dimensions. Each data set is converted into k DataFlowPlan nodes.
docstr: Creates read nodes from SemanticModelDataSets.
code: def create_read_nodes_from_data_sets(
      self, data_sets: Sequence[SemanticModelDataSet]
  ) -> Sequence[ReadSqlSourceNode]:
      """Creates read nodes from SemanticModelDataSets."""
      return [ReadSqlSourceNode(data_set) for data_set in data_sets]
  
file_path: metricflow/metricflow/dataflow/builder/source_node.py
imports: from __future__ import annotations
  from typing import List, Sequence
  from metricflow.dataflow.dataflow_plan import BaseOutput, MetricTimeDimensionTransformNode, ReadSqlSourceNode
  from metricflow.dataset.semantic_model_adapter import SemanticModelDataSet
  from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup
label_desc: Use image node_id 3 for calling the SourceNodeBuilder obj's underlying member method code with example usage: obj.create_read_nodes_from_data_sets(data_sets) and returns: unknown