diff -r aea58e1cae75 Lib/cProfile.py --- a/Lib/cProfile.py Sun Sep 08 14:14:38 2013 +0200 +++ b/Lib/cProfile.py Sun Sep 08 17:47:48 2013 +0300 @@ -121,38 +121,28 @@ # ____________________________________________________________ def main(): - import os, sys - from optparse import OptionParser - usage = "cProfile.py [-o output_file_path] [-s sort] scriptfile [arg] ..." - parser = OptionParser(usage=usage) - parser.allow_interspersed_args = False - parser.add_option('-o', '--outfile', dest="outfile", - help="Save stats to ", default=None) - parser.add_option('-s', '--sort', dest="sort", - help="Sort order when printing to stdout, based on pstats.Stats class", - default=-1) + import argparse, os.path, sys + parser = argparse.ArgumentParser() + parser.add_argument('-o', '--outfile', dest="outfile", + help="Save stats to OUTFILE") + parser.add_argument('-s', '--sort', dest="sort", default=-1, + help="Sort order when printing to stdout, based on pstats.Stats class") + parser.add_argument('scriptfile') + parser.add_argument('args', nargs=argparse.REMAINDER) - if not sys.argv[1:]: - parser.print_usage() - sys.exit(2) - - (options, args) = parser.parse_args() - sys.argv[:] = args - - if len(args) > 0: - progname = args[0] - sys.path.insert(0, os.path.dirname(progname)) - with open(progname, 'rb') as fp: - code = compile(fp.read(), progname, 'exec') - globs = { - '__file__': progname, - '__name__': '__main__', - '__package__': None, - '__cached__': None, - } - runctx(code, globs, None, options.outfile, options.sort) - else: - parser.print_usage() + options = parser.parse_args() + sys.argv[:] = [options.scriptfile] + options.args + progname = options.scriptfile + sys.path.insert(0, os.path.dirname(progname)) + with open(progname, 'rb') as fp: + code = compile(fp.read(), progname, 'exec') + globs = { + '__file__': progname, + '__name__': '__main__', + '__package__': None, + '__cached__': None, + } + runctx(code, globs, None, options.outfile, options.sort) return parser # When invoked as main program, invoke the profiler on a script diff -r aea58e1cae75 Lib/profile.py --- a/Lib/profile.py Sun Sep 08 14:14:38 2013 +0200 +++ b/Lib/profile.py Sun Sep 08 17:47:48 2013 +0300 @@ -25,10 +25,8 @@ import sys -import os import time import marshal -from optparse import OptionParser __all__ = ["run", "runctx", "Profile"] @@ -552,36 +550,28 @@ #**************************************************************************** def main(): - usage = "profile.py [-o output_file_path] [-s sort] scriptfile [arg] ..." - parser = OptionParser(usage=usage) - parser.allow_interspersed_args = False - parser.add_option('-o', '--outfile', dest="outfile", - help="Save stats to ", default=None) - parser.add_option('-s', '--sort', dest="sort", - help="Sort order when printing to stdout, based on pstats.Stats class", - default=-1) + import argparse, os.path + parser = argparse.ArgumentParser() + parser.add_argument('-o', '--outfile', dest="outfile", + help="Save stats to OUTFILE") + parser.add_argument('-s', '--sort', dest="sort", default=-1, + help="Sort order when printing to stdout, based on pstats.Stats class") + parser.add_argument('scriptfile') + parser.add_argument('args', nargs=argparse.REMAINDER) - if not sys.argv[1:]: - parser.print_usage() - sys.exit(2) - - (options, args) = parser.parse_args() - sys.argv[:] = args - - if len(args) > 0: - progname = args[0] - sys.path.insert(0, os.path.dirname(progname)) - with open(progname, 'rb') as fp: - code = compile(fp.read(), progname, 'exec') - globs = { - '__file__': progname, - '__name__': '__main__', - '__package__': None, - '__cached__': None, - } - runctx(code, globs, None, options.outfile, options.sort) - else: - parser.print_usage() + options = parser.parse_args() + sys.argv[:] = [options.scriptfile] + options.args + progname = options.scriptfile + sys.path.insert(0, os.path.dirname(progname)) + with open(progname, 'rb') as fp: + code = compile(fp.read(), progname, 'exec') + globs = { + '__file__': progname, + '__name__': '__main__', + '__package__': None, + '__cached__': None, + } + runctx(code, globs, None, options.outfile, options.sort) return parser # When invoked as main program, invoke the profiler on a script