Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-133722: Add Difflib theme to_colorize and 'color' option todifflib.unified_diff#133725

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
dougthor42 wants to merge21 commits intopython:main
base:main
Choose a base branch
Loading
fromdougthor42:difflib-color-gh133722
Open
Changes from1 commit
Commits
Show all changes
21 commits
Select commitHold shift + click to select a range
5c5b248
Add test case
dougthor42May 9, 2025
fdc0fa0
Add 'color' arg to difflib.unified_diff.
dougthor42May 9, 2025
fcdd7ab
Update docs and ACKs
dougthor42May 9, 2025
0e9b070
blurb
dougthor42May 9, 2025
7c31749
fixup to follow convention
dougthor42May 9, 2025
66475a2
Add 'Difflib' theme
dougthor42May 11, 2025
dbf0547
fixup tests
dougthor42May 11, 2025
a72012e
Switch to using themes. So easy!
dougthor42May 11, 2025
2a3d818
use 'next' in versionchanged docs
dougthor42May 11, 2025
252982e
turns out 'git diff' adds reset to the start and end of context lines
dougthor42May 11, 2025
3422fa7
Use GNU unified diff terms
dougthor42May 14, 2025
bffdd71
move class
dougthor42May 14, 2025
3255866
kw-only the 'color' arg
dougthor42May 14, 2025
c48a6ac
Doc formatting updates
dougthor42May 14, 2025
8ca50fa
Sort the things that are safe to sort without kw_only=True
dougthor42May 14, 2025
eb0e81e
Update what's new
dougthor42May 14, 2025
f7b34c3
Merge remote-tracking branch 'upstream/main' into difflib-color-gh133722
dougthor42May 14, 2025
fb092b0
fixup docs
dougthor42May 14, 2025
734b0bc
fixup docs
dougthor42May 20, 2025
8a10e40
Code review: docs, whatsnew, f-strings, news
dougthor42May 20, 2025
57b80d1
force_colorized
dougthor42May 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
PrevPrevious commit
NextNext commit
Switch to using themes. So easy!
  • Loading branch information
@dougthor42
dougthor42 committedMay 11, 2025
commita72012e17f7da6de0156a9f684963b2623c99edf
28 changes: 10 additions & 18 deletionsLib/difflib.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -30,6 +30,7 @@
'Differ','IS_CHARACTER_JUNK', 'IS_LINE_JUNK', 'context_diff',
'unified_diff', 'diff_bytes', 'HtmlDiff', 'Match']

from _colorize import can_colorize, get_theme
from heapq import nlargest as _nlargest
from collections import namedtuple as _namedtuple
from types import GenericAlias
Expand DownExpand Up@@ -1137,14 +1138,10 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='',
four
"""

# {tag: ANSI color escape code}
colors = {
"delete": "\033[31m", # red
"insert": "\033[32m", # green
"header": "\033[1m", # bold / increased intensity
"hunk": "\033[36m", # cyan
}
reset = "\033[m"
if color and can_colorize():
t = get_theme(force_color=True).difflib
else:
t = get_theme(force_no_color=True).difflib

_check_types(a, b, fromfile, tofile, fromfiledate, tofiledate, lineterm)
started = False
Expand All@@ -1153,16 +1150,13 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='',
started = True
fromdate = '\t{}'.format(fromfiledate) if fromfiledate else ''
todate = '\t{}'.format(tofiledate) if tofiledate else ''
_line = '--- {}{}{}'.format(fromfile, fromdate, lineterm)
yield colors["header"] + _line + reset if color else _line
_line = '+++ {}{}{}'.format(tofile, todate, lineterm)
yield colors["header"] + _line + reset if color else _line
yield '{}--- {}{}{}{}'.format(t.header, fromfile, fromdate, lineterm, t.reset)
yield '{}+++ {}{}{}{}'.format(t.header, tofile, todate, lineterm, t.reset)

first, last = group[0], group[-1]
file1_range = _format_range_unified(first[1], last[2])
file2_range = _format_range_unified(first[3], last[4])
_line = '@@ -{} +{} @@{}'.format(file1_range, file2_range, lineterm)
yield colors["hunk"] + _line + reset if color else _line
yield '{}@@ -{} +{} @@{}{}'.format(t.hunk, file1_range, file2_range, lineterm, t.reset)

for tag, i1, i2, j1, j2 in group:
if tag == 'equal':
Expand All@@ -1171,12 +1165,10 @@ def unified_diff(a, b, fromfile='', tofile='', fromfiledate='',
continue
if tag in {'replace', 'delete'}:
for line in a[i1:i2]:
_line = '-' + line
yield colors["delete"] + _line + reset if color else _line
yield f'{t.delete}-{line}{t.reset}'
if tag in {'replace', 'insert'}:
for line in b[j1:j2]:
_line = '+' + line
yield colors["insert"] + _line + reset if color else _line
yield f'{t.insert}+{line}{t.reset}'


########################################################################
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp