class_docstr: Abstract base class for feature processor data sources.
  
  Provides a skeleton for customization requiring the overriding of the method to read data from
  data source and return the specified type.
class_docstr_tok: ["Abstract","base","class","for","feature","processor","data","sources",".","Provides","a","skeleton","for","customization","requiring","the","overriding","of","the","method","to","read","data","from","data","source","and","return","the","specified","type","."]
docstr: Read data from data source and return the specified type.
  
  Args:
      args: Arguments for reading the data.
      kwargs: Keyword argument for reading the data.
  Returns:
      T: The specified abstraction of data source.
docstr_tok: ["Read","data","from","data","source","and","return","the","specified","type",".","Args",":","args",":","Arguments","for","reading","the","data",".","kwargs",":","Keyword","argument","for","reading","the","data",".","Returns",":","T",":","The","specified","abstraction","of","data","source","."]
code: def read_data(self, *args, **kwargs) -> T:
      """Read data from data source and return the specified type.
  
      Args:
          args: Arguments for reading the data.
          kwargs: Keyword argument for reading the data.
      Returns:
          T: The specified abstraction of data source.
      """
  
file_path: sagemaker-python-sdk/src/sagemaker/feature_store/feature_processor/_data_source.py
imports: from __future__ import absolute_import
  from typing import Optional, Dict, Union, TypeVar, Generic
  from abc import ABC, abstractmethod
  from pyspark.sql import DataFrame, SparkSession
  import attr
label_desc: Use image node_id 1 for calling the BaseDataSource obj's underlying member method code with example usage: obj.read_data() without return types