@@ -207,6 +207,16 @@ class Unittest(ThemeSection):
207
207
reset : str = ANSIColors .RESET
208
208
209
209
210
+ @dataclass (frozen = True )
211
+ class Difflib (ThemeSection ):
212
+ """A 'git diff'-like theme for `difflib.unified_diff`."""
213
+ header : str = ANSIColors .BOLD # eg "---" and "+++" lines
214
+ hunk : str = ANSIColors .CYAN # the "@@" lines
215
+ insert : str = ANSIColors .GREEN
216
+ delete : str = ANSIColors .RED
217
+ reset : str = ANSIColors .RESET
218
+
219
+
210
220
@dataclass (frozen = True )
211
221
class Theme :
212
222
"""A suite of themes for all sections of Python.
@@ -218,6 +228,7 @@ class Theme:
218
228
syntax : Syntax = field (default_factory = Syntax )
219
229
traceback : Traceback = field (default_factory = Traceback )
220
230
unittest : Unittest = field (default_factory = Unittest )
231
+ difflib : Difflib = field (default_factory = Difflib )
221
232
222
233
def copy_with (
223
234
self ,
@@ -226,6 +237,7 @@ def copy_with(
226
237
syntax : Syntax | None = None ,
227
238
traceback : Traceback | None = None ,
228
239
unittest : Unittest | None = None ,
240
+ difflib : Difflib | None = None ,
229
241
) -> Self :
230
242
"""Return a new Theme based on this instance with some sections replaced.
231
243
@@ -237,6 +249,7 @@ def copy_with(
237
249
syntax = syntax or self .syntax ,
238
250
traceback = traceback or self .traceback ,
239
251
unittest = unittest or self .unittest ,
252
+ difflib = difflib or self .difflib ,
240
253
)
241
254
242
255
@classmethod
@@ -252,6 +265,7 @@ def no_colors(cls) -> Self:
252
265
syntax = Syntax .no_colors (),
253
266
traceback = Traceback .no_colors (),
254
267
unittest = Unittest .no_colors (),
268
+ difflib = Difflib .no_colors (),
255
269
)
256
270
257
271
0 commit comments