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
- improved error handling for malformed patches
- functions for creating and applying patches directly to files
- command line interfaces:
bsdiff4andbspatch4 - tests
The bsdiff4 package defines the following high level functions:
diff(src_bytes, dst_bytes)-> bytes- Return a BSDIFF4-format patch (from
src_bytestodst_bytes) as bytes. patch(src_bytes, patch_bytes)-> bytes- Apply the BSDIFF4-format
patch_bytestosrc_bytesand return the bytes. file_diff(src_path, dst_path, patch_path)- Write a BSDIFF4-format patch (from the file
src_pathto the filedst_path) to the filepatch_path. file_patch(src_path, dst_path, patch_path)- Apply the BSDIFF4-format file
patch_pathto the filesrc_pathand write the result to the filedst_path. file_patch_inplace(path, patch_path)- Apply the BSDIFF4-format file
patch_pathto the filepathin place.
Example:
>>> import bsdiff4
>>> a = 100_000 * 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