297 def parse(legacy_args=False):
 
  298     """parses command line arguments and returns an ``Options`` instance""" 
  304         dashpos = sys.argv.index(
"-")
 
  309         args = sys.argv[1:dashpos]
 
  310         user_opts = sys.argv[dashpos+1:]
 
  320     doHelp = any(a 
in (
'-h', 
'--help') 
or a.startswith(
'--help=') 
for a 
in args)
 
  323         unrequiredActions = []
 
  324         for a 
in parser._actions:
 
  326                 unrequiredActions.append(a)
 
  330         helpActions = {
'-h' : parser._option_string_actions.pop(
'-h'),
 
  331                        '--help' : parser._option_string_actions.pop(
'--help')}
 
  334         opts, leftover = parser.parse_known_args(args)
 
  337         parser._option_string_actions.update(helpActions)
 
  338         for a 
in unrequiredActions:
 
  343             opts, leftover = parser.parse_known_args(args)
 
  345         opts, leftover = parser.parse_known_args(args)
 
  347     opts.user_opts = user_opts
 
  351     if not (opts.scripts 
or opts.fromdb) 
and leftover:
 
  352         JobOptAction([], 
'scripts')(parser, opts, leftover)
 
  354     if not (opts.scripts 
or opts.fromdb) 
and not opts.interactive:
 
  355         parser.error(
"the following arguments are required: scripts")