old_contents: # Licensed under a 3-clause BSD style license - see LICENSE.rst
  # -*- coding: utf-8 -*-
  # This file connects ASDF to the astropy.table.Table class
  
  import functools
  
  import asdf
  
  from astropy.io import registry as io_registry
  from astropy.table import Table
  
  
  def read_table(filename, data_key=None, find_table=None, **kwargs):
  
      if data_key and find_table:
          raise ValueError("Options 'data_key' and 'find_table' are not compatible")
  
      with asdf.open(filename, **kwargs) as af:
          if find_table:
              return find_table(af.tree)
          else:
              return af[data_key or 'data']
  
  
  def write_table(table, filename, data_key=None, make_tree=None, **kwargs):
  
      if data_key and make_tree:
          raise ValueError("Options 'data_key' and 'make_tree' are not compatible")
  
      if make_tree:
          tree = make_tree(table)
      else:
          tree = { data_key or 'data' : table }
  
      with asdf.AsdfFile(tree) as af:
          af.write_to(filename, **kwargs)
  
  
  def io_identify(suffix, origin, filepath, fileobj, *args, **kwargs):
      return filepath is not None and filepath.endswith(suffix)
  
  
  asdf_identify = functools.partial(io_identify, '.asdf')
  
  io_registry.register_reader('asdf', Table, read_table)
  io_registry.register_writer('asdf', Table, write_table)
  io_registry.register_identifier('asdf', Table, asdf_identify)
  
new_contents: # Licensed under a 3-clause BSD style license - see LICENSE.rst
  # -*- coding: utf-8 -*-
  # This file connects ASDF to the astropy.table.Table class
  
  import functools
  
  import asdf
  
  from astropy.io import registry as io_registry
  from astropy.table import Table
  
  
  def read_table(filename, data_key=None, find_table=None, **kwargs):
      """
      Read a `~astropy.table.Table` object from an ASDF file
  
      This requires `asdf <https://pypi.org/project/asdf/>`_ to be installed.
      By default, this function will look for a Table object with the key of
      ``data`` in the top-level ASDF tree. The parameters ``data_key`` and
      ``find_key`` can be used to override the default behavior.
  
      This function is registered as the Table reader for ASDF files with the
      unified I/O interface.
  
      Parameters
      ----------
      filename : str or :class:`py.lath:local`
          Name of the file to be read
      data_key : str
          Optional top-level key to use for finding the Table in the tree. If not
          provided, uses ``data`` by default. Use of this parameter is not
          compatible with ``find_table``.
      find_table : function
          Optional function to be used for locating the Table in the tree. The
          function takes a single parameter, which is a dictionary representing
          the top of the ASDF tree. The function must return a
          `~astropy.table.Table` instance.
  
      Returns
      -------
      table : `~astropy.table.Table`
          `~astropy.table.Table` instance
      """
  
      if data_key and find_table:
          raise ValueError("Options 'data_key' and 'find_table' are not compatible")
  
      with asdf.open(filename, **kwargs) as af:
          if find_table:
              return find_table(af.tree)
          else:
              return af[data_key or 'data']
  
  
  def write_table(table, filename, data_key=None, make_tree=None, **kwargs):
      """
      Write a `~astropy.table.Table` object to an ASDF file.
  
      This requires `asdf <https://pypi.org/project/asdf/>`_ to be installed.
      By default, this function will write a Table object in the top-level ASDF
      tree using the key of ``data``. The parameters ``data_key`` and
      ``make_tree`` can be used to override the default behavior.
  
      This function is registered as the Table writer for ASDF files with the
      unified I/O interface.
  
      Parameters
      ----------
      table : `~astropy.table.Table`
          `~astropy.table.Table` instance to be written
      filename : str or :class:`py.path:local`
          Name of the new ASDF file to be created
      data_key : str
          Optional top-level key in the ASDF tree to use when writing the Table.
          If not provided, uses ``data`` by default. Use of this parameter is not
          compatible with ``make_tree``.
      make_tree : function
          Optional function to be used for creating the ASDF tree. The function
          takes a single parameter, which is the `~astropy.table.Table` instance
          to be written. The function must return a `dict` representing the ASDF
          tree to be created.
      """
  
      if data_key and make_tree:
          raise ValueError("Options 'data_key' and 'make_tree' are not compatible")
  
      if make_tree:
          tree = make_tree(table)
      else:
          tree = { data_key or 'data' : table }
  
      with asdf.AsdfFile(tree) as af:
          af.write_to(filename, **kwargs)
  
  
  def io_identify(suffix, origin, filepath, fileobj, *args, **kwargs):
      return filepath is not None and filepath.endswith(suffix)
  
  
  asdf_identify = functools.partial(io_identify, '.asdf')
  
  io_registry.register_reader('asdf', Table, read_table)
  io_registry.register_writer('asdf', Table, write_table)
  io_registry.register_identifier('asdf', Table, asdf_identify)
  
subject: Add docstrings for ASDF read_table/write_table