mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	 002252c4ad
			
		
	
	
		002252c4ad
		
			
		
	
	
	
	
		
			
			Remove diff.py and ndiff.py scripts of Tools/scripts/: move them to
Doc/includes/.
* diff.py and ndiff.py files are no longer executable. Remove also
  their shebang ("#!/usr/bin/env python3").
* Remove the -profile command from ndiff.py to simply the code.
* Remove ndiff.py copyright and history command. The Python
  documentation examples are distributed under the "Zero Clause BSD
  License".
		
	
			
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """ Command line interface to difflib.py providing diffs in four formats:
 | |
| 
 | |
| * ndiff:    lists every line and highlights interline changes.
 | |
| * context:  highlights clusters of changes in a before/after format.
 | |
| * unified:  highlights clusters of changes in an inline format.
 | |
| * html:     generates side by side comparison with change highlights.
 | |
| 
 | |
| """
 | |
| 
 | |
| import sys, os, difflib, argparse
 | |
| from datetime import datetime, timezone
 | |
| 
 | |
| def file_mtime(path):
 | |
|     t = datetime.fromtimestamp(os.stat(path).st_mtime,
 | |
|                                timezone.utc)
 | |
|     return t.astimezone().isoformat()
 | |
| 
 | |
| def main():
 | |
| 
 | |
|     parser = argparse.ArgumentParser()
 | |
|     parser.add_argument('-c', action='store_true', default=False,
 | |
|                         help='Produce a context format diff (default)')
 | |
|     parser.add_argument('-u', action='store_true', default=False,
 | |
|                         help='Produce a unified format diff')
 | |
|     parser.add_argument('-m', action='store_true', default=False,
 | |
|                         help='Produce HTML side by side diff '
 | |
|                              '(can use -c and -l in conjunction)')
 | |
|     parser.add_argument('-n', action='store_true', default=False,
 | |
|                         help='Produce a ndiff format diff')
 | |
|     parser.add_argument('-l', '--lines', type=int, default=3,
 | |
|                         help='Set number of context lines (default 3)')
 | |
|     parser.add_argument('fromfile')
 | |
|     parser.add_argument('tofile')
 | |
|     options = parser.parse_args()
 | |
| 
 | |
|     n = options.lines
 | |
|     fromfile = options.fromfile
 | |
|     tofile = options.tofile
 | |
| 
 | |
|     fromdate = file_mtime(fromfile)
 | |
|     todate = file_mtime(tofile)
 | |
|     with open(fromfile) as ff:
 | |
|         fromlines = ff.readlines()
 | |
|     with open(tofile) as tf:
 | |
|         tolines = tf.readlines()
 | |
| 
 | |
|     if options.u:
 | |
|         diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
 | |
|     elif options.n:
 | |
|         diff = difflib.ndiff(fromlines, tolines)
 | |
|     elif options.m:
 | |
|         diff = difflib.HtmlDiff().make_file(fromlines,tolines,fromfile,tofile,context=options.c,numlines=n)
 | |
|     else:
 | |
|         diff = difflib.context_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
 | |
| 
 | |
|     sys.stdout.writelines(diff)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 |