Changeset 7341:8d7d8174368c in orange


Ignore:
Timestamp:
02/03/11 21:52:58 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
5d090e250fa1950344f5301315cb1bc3019868ae
Message:
  • added fix_changed_names_aggressive fix
  • added -a –aggressive command line argument
Location:
orange
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • orange/orange2to25.py

    r7330 r7341  
    77#fixes = refactor.get_fixers_from_package("lib2to3.fixes")     
    88 
    9 dir = os.path.dirname(__file__) 
    10 if dir not in sys.path: 
    11     sys.path.insert(0, dir) 
    12 sys.exit(main.main("fixes", sys.argv)) 
     9import optparse 
     10import logging 
     11 
     12def main(fixer_pkg, args=None): 
     13    """Main program. 
     14 
     15    Args: 
     16        fixer_pkg: the name of a package where the fixers are located. 
     17        args: optional; a list of command line arguments. If omitted, 
     18              sys.argv[1:] is used. 
     19 
     20    Returns a suggested exit status (0, 1, 2). 
     21    """ 
     22    # Set up option parser 
     23    parser = optparse.OptionParser(usage="orange2to25 [options] file|dir ...") 
     24    parser.add_option("-d", "--doctests_only", action="store_true", 
     25                      help="Fix up doctests only") 
     26    parser.add_option("-f", "--fix", action="append", default=[], 
     27                      help="Each FIX specifies a transformation; default: all") 
     28    parser.add_option("-j", "--processes", action="store", default=1, 
     29                      type="int", help="Run orange2to25 concurrently") 
     30    parser.add_option("-x", "--nofix", action="append", default=[], 
     31                      help="Prevent a fixer from being run.") 
     32    parser.add_option("-l", "--list-fixes", action="store_true", 
     33                      help="List available transformations") 
     34#    parser.add_option("-p", "--print-function", action="store_true", 
     35#                      help="Modify the grammar so that print() is a function") 
     36    parser.add_option("-v", "--verbose", action="store_true", 
     37                      help="More verbose logging") 
     38    parser.add_option("--no-diffs", action="store_true", 
     39                      help="Don't show diffs of the refactoring") 
     40    parser.add_option("-w", "--write", action="store_true", 
     41                      help="Write back modified files") 
     42    parser.add_option("-n", "--nobackups", action="store_true", default=False, 
     43                      help="Don't write backups for modified files.") 
     44    parser.add_option("-a", "--aggressive", action="store_true", default=False, 
     45                      help="Aggressive name replace (without a module qualifier, e.g. replace ExampleTable with even if not preceded by orange.* )") 
     46#    parser.add_option("-o: --output", action="store_string", default = None, 
     47#                      help="Output file (Ignore -w and write output to file)") 
     48 
     49    # Parse command line arguments 
     50    refactor_stdin = False 
     51    flags = {} 
     52    options, args = parser.parse_args(args) 
     53    if not options.write and options.no_diffs: 
     54        warn("not writing files and not printing diffs; that's not very useful") 
     55    if not options.write and options.nobackups: 
     56        parser.error("Can't use -n without -w") 
     57    if options.list_fixes: 
     58        print "Available transformations for the -f/--fix option:" 
     59        for fixname in refactor.get_all_fix_names(fixer_pkg): 
     60            print fixname 
     61        if not args: 
     62            return 0 
     63    if not args: 
     64        print >> sys.stderr, "At least one file or directory argument required." 
     65        print >> sys.stderr, "Use --help to show usage." 
     66        return 2 
     67    if "-" in args: 
     68        refactor_stdin = True 
     69        if options.write: 
     70            print >> sys.stderr, "Can't write to stdin." 
     71            return 2 
     72    if options.print_function: 
     73        flags["print_function"] = True 
     74 
     75    # Set up logging handler 
     76    level = logging.DEBUG if options.verbose else logging.INFO 
     77    logging.basicConfig(format='%(name)s: %(message)s', level=level) 
     78 
     79    # Initialize the refactoring tool 
     80    avail_fixes = set(refactor.get_fixers_from_package(fixer_pkg)) 
     81    # Remove aggressive fixes if not requested 
     82    if not options.aggressive: 
     83        avail_fixes = set([fix for fix in avail_fixes if not fix.endswith("_aggressive")]) 
     84        print avail_fixes 
     85         
     86    unwanted_fixes = set(fixer_pkg + ".fix_" + fix for fix in options.nofix) 
     87    explicit = set() 
     88    if options.fix: 
     89        all_present = False 
     90        for fix in options.fix: 
     91            if fix == "all": 
     92                all_present = True 
     93            else: 
     94                explicit.add(fixer_pkg + ".fix_" + fix) 
     95        requested = avail_fixes.union(explicit) if all_present else explicit 
     96    else: 
     97        requested = avail_fixes.union(explicit) 
     98    fixer_names = requested.difference(unwanted_fixes) 
     99    print fixer_names 
     100    rt = StdoutRefactoringTool(sorted(fixer_names), flags, sorted(explicit), 
     101                               options.nobackups, not options.no_diffs) 
     102 
     103    # Refactor all files and directories passed as arguments 
     104    if not rt.errors: 
     105        if refactor_stdin: 
     106            rt.refactor_stdin() 
     107        else: 
     108            try: 
     109                rt.refactor(args, options.write, options.doctests_only, 
     110                            options.processes) 
     111            except refactor.MultiprocessingUnsupported: 
     112                assert options.processes > 1 
     113                print >> sys.stderr, "Sorry, -j isn't " \ 
     114                    "supported on this platform." 
     115                return 1 
     116        rt.summarize() 
     117 
     118    # Return error status (0 if rt.errors is zero) 
     119    return int(bool(rt.errors)) 
     120 
     121sys.exit(main("fixes", sys.argv)) 
    13122 
    14123 
Note: See TracChangeset for help on using the changeset viewer.