class_docstr: Abstract class for defining data reader. All other media readers use this
  abstract class. Media readers are expected to return Batch
  in an iterative manner.
  
  Attributes:
      file_url (str): path to read data from
class_docstr_tok: ["Abstract","class","for","defining","data","reader",".","All","other","media","readers","use","this","abstract","class",".","Media","readers","are","expected","to","return","Batch","in","an","iterative","manner",".","Attributes",":","file_url","(","str",")",":","path","to","read","data","from"]
docstr: Every sub class implements it's own logic
  to read the file and yields an object iterator.
docstr_tok: ["Every","sub","class","implements","it","'s","own","logic","to","read","the","file","and","yields","an","object","iterator","."]
code: def _read(self) -> Iterator[Dict]:
      """
      Every sub class implements it's own logic
      to read the file and yields an object iterator.
      """
  
file_path: evadb/evadb/readers/abstract_reader.py
imports: from abc import ABCMeta, abstractmethod
  from pathlib import Path
  from typing import Dict, Iterator
  import pandas
  from evadb.models.storage.batch import Batch
  from evadb.utils.errors import DatasetFileNotFoundError
  from evadb.utils.generic_utils import get_size
label_desc: Use image node_id 3 for calling the AbstractReader obj's underlying member method code with example usage: obj._read() without return types