[Python-checkins] r73840 - in sandbox/trunk/2to3/lib2to3: main.py refactor.py
benjamin.peterson
python-checkins at python.org
Sat Jul 4 16:52:28 CEST 2009
Author: benjamin.peterson
Date: Sat Jul 4 16:52:28 2009
New Revision: 73840
Log:
don't print diffs by default; it's annoying
Modified:
sandbox/trunk/2to3/lib2to3/main.py
sandbox/trunk/2to3/lib2to3/refactor.py
Modified: sandbox/trunk/2to3/lib2to3/main.py
==============================================================================
--- sandbox/trunk/2to3/lib2to3/main.py (original)
+++ sandbox/trunk/2to3/lib2to3/main.py Sat Jul 4 16:52:28 2009
@@ -4,19 +4,31 @@
import sys
import os
+import difflib
import logging
import shutil
import optparse
from . import refactor
+
+def diff_texts(a, b, filename):
+ """Return a unified diff of two strings."""
+ a = a.splitlines()
+ b = b.splitlines()
+ return difflib.unified_diff(a, b, filename, filename,
+ "(original)", "(refactored)",
+ lineterm="")
+
+
class StdoutRefactoringTool(refactor.MultiprocessRefactoringTool):
"""
Prints output to stdout.
"""
- def __init__(self, fixers, options, explicit, nobackups):
+ def __init__(self, fixers, options, explicit, nobackups, show_diffs):
self.nobackups = nobackups
+ self.show_diffs = show_diffs
super(StdoutRefactoringTool, self).__init__(fixers, options, explicit)
def log_error(self, msg, *args, **kwargs):
@@ -42,9 +54,14 @@
if not self.nobackups:
shutil.copymode(backup, filename)
- def print_output(self, lines):
- for line in lines:
- print line
+ def print_output(self, old, new, filename, equal):
+ if equal:
+ self.log_message("No changes to %s", filename)
+ else:
+ self.log_message("Refactored %s", filename)
+ if self.show_diffs:
+ for line in diff_texts(old, new, filename):
+ print line
def main(fixer_pkg, args=None):
@@ -73,6 +90,8 @@
help="Modify the grammar so that print() is a function")
parser.add_option("-v", "--verbose", action="store_true",
help="More verbose logging")
+ parser.add_option("-s", "--show-diffs", action="store_true",
+ help="Show diffs of the refactored file")
parser.add_option("-w", "--write", action="store_true",
help="Write back modified files")
parser.add_option("-n", "--nobackups", action="store_true", default=False,
@@ -120,7 +139,7 @@
requested = avail_fixes.union(explicit)
fixer_names = requested.difference(unwanted_fixes)
rt = StdoutRefactoringTool(sorted(fixer_names), rt_opts, sorted(explicit),
- options.nobackups)
+ options.nobackups, options.show_diffs)
# Refactor all files and directories passed as arguments
if not rt.errors:
Modified: sandbox/trunk/2to3/lib2to3/refactor.py
==============================================================================
--- sandbox/trunk/2to3/lib2to3/refactor.py (original)
+++ sandbox/trunk/2to3/lib2to3/refactor.py Sat Jul 4 16:52:28 2009
@@ -14,7 +14,6 @@
# Python imports
import os
import sys
-import difflib
import logging
import operator
from collections import defaultdict
@@ -196,8 +195,9 @@
msg = msg % args
self.logger.debug(msg)
- def print_output(self, lines):
- """Called with lines of output to give to the user."""
+ def print_output(self, old_text, new_text, filename, equal):
+ """Called with the old version, new version, and filename of a
+ refactored file."""
pass
def refactor(self, items, write=False, doctests_only=False):
@@ -357,10 +357,11 @@
old_text = self._read_python_source(filename)[0]
if old_text is None:
return
- if old_text == new_text:
+ equal = old_text == new_text
+ self.print_output(old_text, new_text, filename, equal)
+ if equal:
self.log_debug("No changes to %s", filename)
return
- self.print_output(diff_texts(old_text, new_text, filename))
if write:
self.write_file(new_text, filename, old_text, encoding)
else:
@@ -582,12 +583,3 @@
else:
return super(MultiprocessRefactoringTool, self).refactor_file(
*args, **kwargs)
-
-
-def diff_texts(a, b, filename):
- """Return a unified diff of two strings."""
- a = a.splitlines()
- b = b.splitlines()
- return difflib.unified_diff(a, b, filename, filename,
- "(original)", "(refactored)",
- lineterm="")
More information about the Python-checkins
mailing list