.. currentmodule:: astropy.io.fits

Miscellaneous Features
**********************

This section describes some of the miscellaneous features of :mod:`astropy.io.fits`.

.. _io-fits-differs:

Differs
=======

The :mod:`astropy.io.fits.diff` module contains several facilities for
generating and reporting the differences between two FITS files, or two
components of a FITS file.

The :class:`FITSDiff` class can be used to generate and represent the
differences between either two FITS files on disk, or two existing
:class:`HDUList` objects (or some combination thereof).

Likewise, the :class:`HeaderDiff` class can be used to find the differences
just between two :class:`Header` objects. Other available differs include
:class:`HDUDiff`, :class:`ImageDataDiff`, :class:`TableDataDiff`, and
:class:`RawDataDiff`.

Each of these classes are instantiated with two instances of the objects that
they diff. The returned diff instance has a number of attributes starting with
``.diff_`` that describe differences between the two objects.

Example
-------

..
  EXAMPLE START
  Generating Differences Between FITS Files Using astropy.io.fits.diff

The :class:`HeaderDiff` class can be used to find the differences
between two :class:`Header` objects like so::

    >>> from astropy.io import fits
    >>> header1 = fits.Header([('KEY_A', 1), ('KEY_B', 2)])
    >>> header2 = fits.Header([('KEY_A', 3), ('KEY_C', 4)])
    >>> diff = fits.diff.HeaderDiff(header1, header2)
    >>> diff.identical
    False
    >>> diff.diff_keywords
    (['KEY_B'], ['KEY_C'])
    >>> diff.diff_keyword_values
    defaultdict(..., {'KEY_A': [(1, 3)]})

See the API documentation for details on the different differ classes.

..
  EXAMPLE END
