mini-patch

Tiny diffs using difflib's SequenceMatcher


Keywords
diff, python2, python3
License
MIT
Install
pip install mini-patch==0.0.3

Documentation

Do you have textual (or binary) data that you need to patch?

>>> a = 'you say yes, i say no'
>>> b = 'you say stop, and i say go go go'

But you want a smaller patchfile than what difflib's unified_diff() creates?

>>> diff = '\n'.join(difflib.unified_diff(a, b))
>>> len(diff)
137

mini_patch also uses difflib's SequenceMatcher machinery, but it creates tiny, ASCII-encoded patches:

>>> patch = mini_patch.make_mini_patch(a.encode('utf-8'), b.encode('utf-8'))
>>> patch
'0!d:8,2;i:11,$4$dG9w;i:12,$8$IGFuZA==;r:19,1,$4$Zw==;i:21,$8$IGdvIGdv;'
>>> len(patch)
70