class_docstr: Data sources are simple components that stream data from somewhere using Python's
  iteration interface. It should expose 3 iterators, "train", "test", and "eval".
  Each of these should be able to be iterated over any number of times, and iterating
  over it should yield dictionaries whose values are deserialized python types.
  
  Simply, these data sources exist as an interface to read through datasets
  in a pythonic way, with pythonic types, and abstract away the form that they are
  stored in.
class_docstr_tok: ["Data","sources","are","simple","components","that","stream","data","from","somewhere","using","Python's","iteration","interface",".","It","should","expose","3","iterators",",","``","train","''",",","``","test","''",",","and","``","eval","''",".","Each","of","these","should","be","able","to","be","iterated","over","any","number","of","times",",","and","iterating","over","it","should","yield","dictionaries","whose","values","are","deserialized","python","types",".","Simply",",","these","data","sources","exist","as","an","interface","to","read","through","datasets","in","a","pythonic","way",",","with","pythonic","types",",","and","abstract","away","the","form","that","they","are","stored","in","."]
code: def __init__(self, schema: Schema):
      self.schema = schema
  
imports: import json
  import logging
  import re
  from typing import Any, Dict, List, Type, TypeVar
  from pytext.config.component import Component, ComponentType
  from pytext.data.utils import shard
  from pytext.utils.data import parse_slot_string, Slot
  from pytext.utils.file_io import PathManager
label_desc: Use image node_id 1 to create a new DataSource object from inherited base classes: Component with example: obj = DataSource(schema)