class_docstr: Interface for defining a custom :class:`~ray.data.Dataset` datasource.
  
  To read a datasource into a dataset, use :meth:`~ray.data.read_datasource`.
class_docstr_tok: ["Interface","for","defining","a","custom",":","class",":","`","~ray.data.Dataset","`","datasource",".","To","read","a","datasource","into","a","dataset",",","use",":","meth",":","`","~ray.data.read_datasource","`","."]
docstr: Return a Reader for the given read arguments.
  
  The reader object will be responsible for querying the read metadata, and
  generating the actual read tasks to retrieve the data blocks upon request.
  
  Args:
      read_args: Additional kwargs to pass to the datasource impl.
docstr_tok: ["Return","a","Reader","for","the","given","read","arguments",".","The","reader","object","will","be","responsible","for","querying","the","read","metadata",",","and","generating","the","actual","read","tasks","to","retrieve","the","data","blocks","upon","request",".","Args",":","read_args",":","Additional","kwargs","to","pass","to","the","datasource","impl","."]
code: def create_reader(self, **read_args) -> "Reader":
      """Return a Reader for the given read arguments.
  
      The reader object will be responsible for querying the read metadata, and
      generating the actual read tasks to retrieve the data blocks upon request.
  
      Args:
          read_args: Additional kwargs to pass to the datasource impl.
      """
      warnings.warn(
          "`create_reader` has been deprecated in Ray 2.9. Instead of creating a "
          "`Reader`, implement `Datasource.get_read_tasks` and "
          "`Datasource.estimate_inmemory_data_size`.",
          DeprecationWarning,
      )
      return _LegacyDatasourceReader(self, **read_args)
  
imports: import warnings
  from typing import Any, Callable, Iterable, List, Optional
  import numpy
  import ray
  from ray.data._internal.execution.interfaces import TaskContext
  from ray.data._internal.util import _check_pyarrow_version
  from ray.data.block import Block, BlockAccessor, BlockMetadata
  from ray.data.context import DataContext
  from ray.types import ObjectRef
  from ray.util.annotations import Deprecated, DeveloperAPI, PublicAPI
label_desc: Use image node_id 1 for calling the Datasource obj's underlying member method code with example usage: obj.create_reader() and returns: _LegacyDatasourceReader