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: Callback for when a write job completes.
  
  This can be used to "commit" a write output. This method must
  succeed prior to ``write_datasource()`` returning to the user. If this
  method fails, then ``on_write_failed()`` will be called.
  
  Args:
      write_results: The list of the write task results.
      kwargs: Forward-compatibility placeholder.
docstr_tok: ["Callback","for","when","a","write","job","completes",".","This","can","be","used","to","``","commit","''","a","write","output",".","This","method","must","succeed","prior","to","``","write_datasource","(",")","``","returning","to","the","user",".","If","this","method","fails",",","then","``","on_write_failed","(",")","``","will","be","called",".","Args",":","write_results",":","The","list","of","the","write","task","results",".","kwargs",":","Forward-compatibility","placeholder","."]
code: def on_write_complete(
      self, write_results: List[WriteResult], **kwargs
  ) -> None:
      """Callback for when a write job completes.
  
      This can be used to "commit" a write output. This method must
      succeed prior to ``write_datasource()`` returning to the user. If this
      method fails, then ``on_write_failed()`` will be called.
  
      Args:
          write_results: The list of the write task results.
          kwargs: Forward-compatibility placeholder.
      """
      pass
  
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 5 for calling the Datasource obj's underlying member method code with example usage: obj.on_write_complete(write_results) without return types