bsdiff4 1.2.6


pip install bsdiff4

  Latest version

Released: Feb 19, 2025

Project Links

Meta
Author: Ilan Schnell

Classifiers

Development Status
  • 5 - Production/Stable

Intended Audience
  • Developers

Operating System
  • OS Independent

Programming Language
  • C
  • Python :: 2
  • Python :: 2.7
  • Python :: 3
  • Python :: 3.5
  • Python :: 3.6
  • Python :: 3.7
  • Python :: 3.8
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13

Topic
  • Utilities

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:

>>> 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

Wheel compatibility matrix

Platform CPython 3.6 CPython 3.7 CPython 3.8 CPython 3.9 CPython 3.10 CPython 3.11 CPython 3.12 CPython 3.13 PyPy 3.7 (pp73) PyPy 3.8 (pp73) PyPy 3.9 (pp73) PyPy 3.10 (pp73)
macosx_10_13_x86_64
macosx_10_15_x86_64
macosx_10_9_x86_64
macosx_11_0_arm64
manylinux1_i686
manylinux2014_aarch64
manylinux2014_i686
manylinux2014_ppc64le
manylinux2014_s390x
manylinux2014_x86_64
manylinux_2_17_aarch64
manylinux_2_17_i686
manylinux_2_17_ppc64le
manylinux_2_17_s390x
manylinux_2_17_x86_64
manylinux_2_5_i686
musllinux_1_2_aarch64
musllinux_1_2_i686
musllinux_1_2_ppc64le
musllinux_1_2_s390x
musllinux_1_2_x86_64
win32
win_amd64

Files in release

bsdiff4-1.2.6-cp310-cp310-macosx_10_9_x86_64.whl (15.8KiB)
bsdiff4-1.2.6-cp310-cp310-macosx_11_0_arm64.whl (15.7KiB)
bsdiff4-1.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (31.3KiB)
bsdiff4-1.2.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (33.3KiB)
bsdiff4-1.2.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (31.2KiB)
bsdiff4-1.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30.7KiB)
bsdiff4-1.2.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (33.5KiB)
bsdiff4-1.2.6-cp310-cp310-musllinux_1_2_aarch64.whl (31.3KiB)
bsdiff4-1.2.6-cp310-cp310-musllinux_1_2_i686.whl (34.8KiB)
bsdiff4-1.2.6-cp310-cp310-musllinux_1_2_ppc64le.whl (33.3KiB)
bsdiff4-1.2.6-cp310-cp310-musllinux_1_2_s390x.whl (32.8KiB)
bsdiff4-1.2.6-cp310-cp310-musllinux_1_2_x86_64.whl (30.5KiB)
bsdiff4-1.2.6-cp310-cp310-win32.whl (17.8KiB)
bsdiff4-1.2.6-cp310-cp310-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-cp311-cp311-macosx_10_9_x86_64.whl (15.8KiB)
bsdiff4-1.2.6-cp311-cp311-macosx_11_0_arm64.whl (15.7KiB)
bsdiff4-1.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.0KiB)
bsdiff4-1.2.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (34.9KiB)
bsdiff4-1.2.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (33.0KiB)
bsdiff4-1.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.5KiB)
bsdiff4-1.2.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (35.1KiB)
bsdiff4-1.2.6-cp311-cp311-musllinux_1_2_aarch64.whl (32.9KiB)
bsdiff4-1.2.6-cp311-cp311-musllinux_1_2_i686.whl (36.5KiB)
bsdiff4-1.2.6-cp311-cp311-musllinux_1_2_ppc64le.whl (35.0KiB)
bsdiff4-1.2.6-cp311-cp311-musllinux_1_2_s390x.whl (34.6KiB)
bsdiff4-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl (32.2KiB)
bsdiff4-1.2.6-cp311-cp311-win32.whl (17.8KiB)
bsdiff4-1.2.6-cp311-cp311-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-cp312-cp312-macosx_10_13_x86_64.whl (15.9KiB)
bsdiff4-1.2.6-cp312-cp312-macosx_11_0_arm64.whl (15.7KiB)
bsdiff4-1.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (32.9KiB)
bsdiff4-1.2.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (34.8KiB)
bsdiff4-1.2.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (33.0KiB)
bsdiff4-1.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.5KiB)
bsdiff4-1.2.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (35.0KiB)
bsdiff4-1.2.6-cp312-cp312-musllinux_1_2_aarch64.whl (32.8KiB)
bsdiff4-1.2.6-cp312-cp312-musllinux_1_2_i686.whl (36.3KiB)
bsdiff4-1.2.6-cp312-cp312-musllinux_1_2_ppc64le.whl (34.9KiB)
bsdiff4-1.2.6-cp312-cp312-musllinux_1_2_s390x.whl (34.5KiB)
bsdiff4-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl (32.1KiB)
bsdiff4-1.2.6-cp312-cp312-win32.whl (17.9KiB)
bsdiff4-1.2.6-cp312-cp312-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-cp313-cp313-macosx_10_13_x86_64.whl (15.9KiB)
bsdiff4-1.2.6-cp313-cp313-macosx_11_0_arm64.whl (15.7KiB)
bsdiff4-1.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (32.9KiB)
bsdiff4-1.2.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (34.8KiB)
bsdiff4-1.2.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (33.0KiB)
bsdiff4-1.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32.5KiB)
bsdiff4-1.2.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (35.0KiB)
bsdiff4-1.2.6-cp313-cp313-musllinux_1_2_aarch64.whl (32.9KiB)
bsdiff4-1.2.6-cp313-cp313-musllinux_1_2_i686.whl (36.4KiB)
bsdiff4-1.2.6-cp313-cp313-musllinux_1_2_ppc64le.whl (35.0KiB)
bsdiff4-1.2.6-cp313-cp313-musllinux_1_2_s390x.whl (34.6KiB)
bsdiff4-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl (32.1KiB)
bsdiff4-1.2.6-cp313-cp313-win32.whl (17.9KiB)
bsdiff4-1.2.6-cp313-cp313-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-cp36-cp36m-macosx_10_9_x86_64.whl (15.6KiB)
bsdiff4-1.2.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (31.2KiB)
bsdiff4-1.2.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (33.1KiB)
bsdiff4-1.2.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl (31.2KiB)
bsdiff4-1.2.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30.6KiB)
bsdiff4-1.2.6-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (33.3KiB)
bsdiff4-1.2.6-cp36-cp36m-musllinux_1_2_aarch64.whl (30.7KiB)
bsdiff4-1.2.6-cp36-cp36m-musllinux_1_2_i686.whl (34.2KiB)
bsdiff4-1.2.6-cp36-cp36m-musllinux_1_2_ppc64le.whl (32.6KiB)
bsdiff4-1.2.6-cp36-cp36m-musllinux_1_2_s390x.whl (32.3KiB)
bsdiff4-1.2.6-cp36-cp36m-musllinux_1_2_x86_64.whl (29.8KiB)
bsdiff4-1.2.6-cp36-cp36m-win32.whl (17.8KiB)
bsdiff4-1.2.6-cp36-cp36m-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-cp37-cp37m-macosx_10_9_x86_64.whl (15.8KiB)
bsdiff4-1.2.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (32.2KiB)
bsdiff4-1.2.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (34.0KiB)
bsdiff4-1.2.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (32.2KiB)
bsdiff4-1.2.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (31.6KiB)
bsdiff4-1.2.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (34.3KiB)
bsdiff4-1.2.6-cp37-cp37m-musllinux_1_2_aarch64.whl (31.7KiB)
bsdiff4-1.2.6-cp37-cp37m-musllinux_1_2_i686.whl (35.2KiB)
bsdiff4-1.2.6-cp37-cp37m-musllinux_1_2_ppc64le.whl (33.6KiB)
bsdiff4-1.2.6-cp37-cp37m-musllinux_1_2_s390x.whl (33.3KiB)
bsdiff4-1.2.6-cp37-cp37m-musllinux_1_2_x86_64.whl (30.9KiB)
bsdiff4-1.2.6-cp37-cp37m-win32.whl (17.8KiB)
bsdiff4-1.2.6-cp37-cp37m-win_amd64.whl (19.0KiB)
bsdiff4-1.2.6-cp38-cp38-macosx_10_9_x86_64.whl (15.8KiB)
bsdiff4-1.2.6-cp38-cp38-macosx_11_0_arm64.whl (15.6KiB)
bsdiff4-1.2.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (31.7KiB)
bsdiff4-1.2.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (33.7KiB)
bsdiff4-1.2.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (31.7KiB)
bsdiff4-1.2.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (31.2KiB)
bsdiff4-1.2.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (33.9KiB)
bsdiff4-1.2.6-cp38-cp38-musllinux_1_2_aarch64.whl (31.2KiB)
bsdiff4-1.2.6-cp38-cp38-musllinux_1_2_i686.whl (34.7KiB)
bsdiff4-1.2.6-cp38-cp38-musllinux_1_2_ppc64le.whl (33.2KiB)
bsdiff4-1.2.6-cp38-cp38-musllinux_1_2_s390x.whl (32.7KiB)
bsdiff4-1.2.6-cp38-cp38-musllinux_1_2_x86_64.whl (30.3KiB)
bsdiff4-1.2.6-cp38-cp38-win32.whl (17.8KiB)
bsdiff4-1.2.6-cp38-cp38-win_amd64.whl (19.0KiB)
bsdiff4-1.2.6-cp39-cp39-macosx_10_9_x86_64.whl (15.8KiB)
bsdiff4-1.2.6-cp39-cp39-macosx_11_0_arm64.whl (15.6KiB)
bsdiff4-1.2.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (31.1KiB)
bsdiff4-1.2.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (33.1KiB)
bsdiff4-1.2.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (31.0KiB)
bsdiff4-1.2.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30.5KiB)
bsdiff4-1.2.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (33.3KiB)
bsdiff4-1.2.6-cp39-cp39-musllinux_1_2_aarch64.whl (31.1KiB)
bsdiff4-1.2.6-cp39-cp39-musllinux_1_2_i686.whl (34.6KiB)
bsdiff4-1.2.6-cp39-cp39-musllinux_1_2_ppc64le.whl (33.1KiB)
bsdiff4-1.2.6-cp39-cp39-musllinux_1_2_s390x.whl (32.6KiB)
bsdiff4-1.2.6-cp39-cp39-musllinux_1_2_x86_64.whl (30.2KiB)
bsdiff4-1.2.6-cp39-cp39-win32.whl (17.8KiB)
bsdiff4-1.2.6-cp39-cp39-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (15.8KiB)
bsdiff4-1.2.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl (15.5KiB)
bsdiff4-1.2.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (17.1KiB)
bsdiff4-1.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.5KiB)
bsdiff4-1.2.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (17.0KiB)
bsdiff4-1.2.6-pp310-pypy310_pp73-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (15.7KiB)
bsdiff4-1.2.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (17.1KiB)
bsdiff4-1.2.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.5KiB)
bsdiff4-1.2.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (17.0KiB)
bsdiff4-1.2.6-pp37-pypy37_pp73-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (15.7KiB)
bsdiff4-1.2.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl (15.5KiB)
bsdiff4-1.2.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (17.1KiB)
bsdiff4-1.2.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.5KiB)
bsdiff4-1.2.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (17.0KiB)
bsdiff4-1.2.6-pp38-pypy38_pp73-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (15.8KiB)
bsdiff4-1.2.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl (15.5KiB)
bsdiff4-1.2.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (17.1KiB)
bsdiff4-1.2.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.5KiB)
bsdiff4-1.2.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (17.0KiB)
bsdiff4-1.2.6-pp39-pypy39_pp73-win_amd64.whl (19.1KiB)
bsdiff4-1.2.6.tar.gz (12.9KiB)
No dependencies