diff -r d14eac872a46 Lib/difflib.py --- a/Lib/difflib.py Tue Apr 05 02:29:30 2011 +0200 +++ b/Lib/difflib.py Tue Apr 05 15:50:32 2011 +0800 @@ -1194,7 +1194,8 @@ yield '+++ %s%s%s' % (tofile, todate, lineterm) started = True i1, i2, j1, j2 = group[0][1], group[-1][2], group[0][3], group[-1][4] - yield "@@ -%d,%d +%d,%d @@%s" % (i1+1, i2-i1, j1+1, j2-j1, lineterm) + yield "@@ -%d,%d +%d,%d @@%s" % (i1 + 1 if (i1, i2) != (0, 0) else 0, + i2-i1, j1+1, j2-j1, lineterm) for tag, i1, i2, j1, j2 in group: if tag == 'equal': for line in a[i1:i2]: diff -r d14eac872a46 Lib/test/test_difflib.py --- a/Lib/test/test_difflib.py Tue Apr 05 02:29:30 2011 +0200 +++ b/Lib/test/test_difflib.py Tue Apr 05 15:50:32 2011 +0800 @@ -236,6 +236,11 @@ cd = difflib.context_diff(*args, lineterm='') self.assertEqual(list(cd)[0:2], ["*** Original", "--- Current"]) + def test_one_file_empty(self): + ud = difflib.unified_diff([], ['a\n', 'b\n']) + self.assertEqual(list(ud), ['--- \n', '+++ \n', '@@ -0,0 +1,2 @@\n', + '+a\n', '+b\n']) + def test_main(): difflib.HtmlDiff._default_prefix = 0