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: Write blocks out to the datasource. This is used by a single write task.
  
  Args:
      blocks: List of data blocks.
      ctx: ``TaskContext`` for the write task.
      write_args: Additional kwargs to pass to the datasource impl.
  
  Returns:
      The output of the write task.
docstr_tok: ["Write","blocks","out","to","the","datasource",".","This","is","used","by","a","single","write","task",".","Args",":","blocks",":","List","of","data","blocks",".","ctx",":","``","TaskContext","``","for","the","write","task",".","write_args",":","Additional","kwargs","to","pass","to","the","datasource","impl",".","Returns",":","The","output","of","the","write","task","."]
code: def write(
      self,
      blocks: Iterable[Block],
      ctx: TaskContext,
      **write_args,
  ) -> WriteResult:
      """Write blocks out to the datasource. This is used by a single write task.
  
      Args:
          blocks: List of data blocks.
          ctx: ``TaskContext`` for the write task.
          write_args: Additional kwargs to pass to the datasource impl.
  
      Returns:
          The output of the write task.
      """
      raise NotImplementedError
  
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 4 for calling the Datasource obj's underlying member method code with example usage: obj.write(blocks, ctx) without return types