Skip to main content
https://secure.travis-ci.org/kilink/ghdiff.png?branch=master https://coveralls.io/repos/kilink/ghdiff/badge.png

ghdiff

Generate Github-style HTML for unified diffs.

Changes

0.4 (2014-06-13)

  • Add iPython magic (mgaitan)

0.3 (2014-04-06)

  • Fix Python 3 issue when running as a command-line script.

0.2

  • Detect character encoding when reading files (Nyoroon)

  • PEP-8 clean up (laulaz)

  • Fix display problem when text line is too long (laulaz)

0.1

  • initial release.

diff

Generate a diff and output Github-style HTML for it.

>>> import ghdiff
>>> from six import print_
>>> print_(ghdiff.diff("a\nb", "b\nb"))
<style type="text/css">
...
</style>
<div class="diff">
    <div class="control">@@&nbsp;-1,2&nbsp;+1,2&nbsp;@@
    </div>
    <div class="delete">-a</div>
    <div class="">&nbsp;b</div>
    <div class="insert">+b</div>
</div>

The css option controls whether or not the output includes CSS.

>>> print_(ghdiff.diff("blah blah blah\nb", "blah zxqq blah\nb", css=False))
<div class="diff">
    <div class="control">@@&nbsp;-1,2&nbsp;+1,2&nbsp;@@
    </div>
    <div class="delete">-blah&nbsp;<span class="highlight">blah</span>&nbsp;blah</div>
    <div class="insert">+blah&nbsp;<span class="highlight">zxqq</span>&nbsp;blah</div>
    <div class="">&nbsp;b</div>
</div>

diff accepts lists of strings representing lines as well.

>>> print_(ghdiff.diff(["blah blah blah", "b"], ["blah zxqq blah", "b"]))
<style type="text/css">
...
</style>
<div class="diff">
    <div class="control">@@&nbsp;-1,2&nbsp;+1,2&nbsp;@@
    </div>
    <div class="delete">-blah&nbsp;<span class="highlight">blah</span>&nbsp;blah</div>
    <div class="insert">+blah&nbsp;<span class="highlight">zxqq</span>&nbsp;blah</div>
    <div class="">&nbsp;b</div>
</div>

IPython magic

ghdiff also works as an IPython magic:

In[1]: %load_ext ghdiff

In[2]: %ghdiff var1 var2

See a notebook example

colorize

colorize takes an existing unified diff and outputs Github-style markup.

>>> print_(ghdiff.colorize("""\
... index 921100e..8b177e1 100755
... --- a/src/ghdiff.py
... +++ b/src/ghdiff.py
... @@ -10,20 +10,24 @@ def escape(text):
...  default_css = \"\"\"\
...  <style type="text/css">
...  %s
... -</style>\"\"\" % (open(os.path.join(os.path.dirname(__file__), "default.css")).read(),)
... +</style>
... +\"\"\" % (open(os.path.join(os.path.dirname(__file__), "default.css")).read(),)
... +"""))
<style type="text/css">
...
</style>
<div class="diff">
<div class="control">@@&nbsp;-10,20&nbsp;+10,24&nbsp;@@&nbsp;def&nbsp;escape(text):</div>
<div class="">&nbsp;default_css&nbsp;=&nbsp;"""&nbsp;&lt;style&nbsp;type="text/css"&gt;</div>
<div class="">&nbsp;%s</div>
<div class="delete">-&lt;/style&gt;"""&nbsp;%&nbsp;(open(os.path.join(os.path.dirname(__file__),&nbsp;"default.css")).read(),)</div>
<div class="insert">+&lt;/style&gt;</div>
<div class="insert">+"""&nbsp;%&nbsp;(open(os.path.join(os.path.dirname(__file__),&nbsp;"default.css")).read(),)</div>
<div class="insert">+</div>
</div>

Release files for ghdiff 0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ghdiff 0.4
File Size Uploaded
ghdiff-0.4.tar.gz 5.7 kB Details

Release files / ghdiff-0.4.tar.gz

Download URL ghdiff-0.4.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
13cf6a4fa6d7b7137e0734c69ed22ff1ca76108350ce8cb03d0124ac4584ad9e
BLAKE2b-256 checksum
How to use checksums
305b68b45b8fc943d851bdc2bff5f0c686d75340432b60ff042ab5f8399ed2f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.4 This release

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page