=======================================================
bsdiff4: binary diff and patch using the BSDIFF4-format
=======================================================

The code is mostly derived from cx_bsdiff (written by Anthony Tuininga,
http://cx-bsdiff.sourceforge.net/).  The cx_bsdiff code in turn was derived
from bsdiff, the standalone utility produced for BSD which can be found
at http://www.daemonology.net/bsdiff.
In addition to the two functions (diff and patch) cx_bsdiff provides, this
package includes:

* an interface to the BSDIFF4-format
* command line interfaces: bsdiff4 and bspatch4
* tests


The bsdiff4 package defines the following high level functions:

``diff(src_bytes, dst_bytes)`` -> bytes
   Return a BSDIFF4-format patch (from ``src_bytes`` to ``dst_bytes``) as
   bytes.

``patch(src_bytes, patch_bytes)`` -> bytes
   Apply the BSDIFF4-format ``patch_bytes`` to ``src_bytes`` and return
   the bytes.

``file_diff(src_path, dst_path, patch_path)``
   Write a BSDIFF4-format patch (from the file ``src_path`` to the
   file ``dst_path``) to the file ``patch_path``.

``file_patch(src_path, dst_path, patch_path)``
   Apply the BSDIFF4-format file ``patch_path`` to the file ``src_path``
   and write the result to the file ``dst_path``.

``file_patch_inplace(path, patch_path)``
   Apply the BSDIFF4-format file ``patch_path`` to the file ``path``
   in place.


Example:

.. code-block:: python

   >>> import bsdiff4
   >>> a = 100000 * b'a'
   >>> b = bytearray(a)
   >>> b[100:106] = b' diff '
   >>> p = bsdiff4.diff(a, bytes(b))
   >>> len(p)
   154
   >>> bsdiff4.patch(a, p) == b
   True
