Exemplo n.º 1
0
def make_parser():
    """Make parser for command line args.

  Returns:
    A Parser object.
  """

    parser = argparse.ArgumentParser()
    parser.add_argument('filenames',
                        metavar='filename',
                        type=str,
                        nargs='*',
                        help='input file(s)')
    modes = parser.add_mutually_exclusive_group()
    modes.add_argument('--tree',
                       dest='tree',
                       action='store_true',
                       default=False,
                       help='Display import tree.')
    modes.add_argument('--unresolved',
                       dest='unresolved',
                       action='store_true',
                       default=False,
                       help='Display unresolved dependencies.')
    modes.add_argument('--generate-config',
                       dest='generate_config',
                       type=str,
                       action='store',
                       default='',
                       help='Write out a dummy configuration file.')
    parser.add_argument(
        '-v',
        '--verbosity',
        dest='verbosity',
        type=int,
        action='store',
        default=1,
        help='Set logging level: 0=ERROR, 1 =WARNING (default), 2=INFO.')
    parser.add_argument('--config',
                        dest='config',
                        type=str,
                        action='store',
                        default='',
                        help='Configuration file.')
    # Adds options from the config file.
    types = config.make_converters()
    for short_arg, arg, dest in [('-V', '--python-version', 'python_version'),
                                 ('-o', '--output', 'output'),
                                 ('-P', '--pythonpath', 'pythonpath')]:
        parser.add_argument(short_arg,
                            arg,
                            dest=dest,
                            type=types.get(dest),
                            action='store',
                            default=config.ITEMS[dest].default,
                            help=config.ITEMS[dest].comment)
    # Adds options from pytype-single.
    wrapper = ParserWrapper(parser)
    pytype_config.add_basic_options(wrapper)
    return Parser(parser, wrapper.names)
Exemplo n.º 2
0
def make_parser():
    """Make parser for command line args.

  Returns:
    A Parser object.
  """
    def add_kythe_field(parser, field):
        parser.add_argument("--" + field,
                            dest=field,
                            type=str,
                            action="store",
                            default="",
                            help="Part of kythe's file-level vname proto.")

    parser = argparse.ArgumentParser(usage="%(prog)s [options] input")
    add_kythe_field(parser, "kythe_corpus")
    add_kythe_field(parser, "kythe_root")
    parser.add_argument("inputs",
                        metavar="input",
                        nargs=1,
                        help="A .py file to index")
    parser.add_argument("--debug",
                        action="store_true",
                        dest="debug",
                        default=None,
                        help="Display debug output.")
    # Add options from pytype-single.
    wrapper = arg_parser.ParserWrapper(parser)
    pytype_config.add_basic_options(wrapper)
    return arg_parser.Parser(parser, wrapper.actions)
Exemplo n.º 3
0
def make_parser():
  """Make parser for command line args.

  Returns:
    A Parser object.
  """

  parser = argparse.ArgumentParser(usage='%(prog)s [options] input [input ...]')
  parser.register('action', 'flatten', _FlattenAction)
  modes = parser.add_mutually_exclusive_group()
  modes.add_argument(
      '--tree', dest='tree', action='store_true', default=False,
      help='Display import tree.')
  modes.add_argument(
      '--unresolved', dest='unresolved', action='store_true', default=False,
      help='Display unresolved dependencies.')
  modes.add_argument(
      '--generate-config', dest='generate_config', type=str, action='store',
      default='',
      help='Write out a dummy configuration file.')
  parser.add_argument(
      '-v', '--verbosity', dest='verbosity', type=int, action='store',
      default=1,
      help='Set logging level: 0=ERROR, 1=WARNING (default), 2=INFO.')
  parser.add_argument(
      '--config', dest='config', type=str, action='store', default='',
      help='Configuration file.')
  parser.add_argument(
      '--version', action='store_true', dest='version', default=None,
      help=('Display pytype version and exit.'))

  # Adds options from the config file.
  types = config.make_converters()
  # For nargs=*, argparse calls type() on each arg individually, so
  # _FlattenAction flattens the list of sets of paths as we go along.
  for option in [
      (('-x', '--exclude'), {'nargs': '*', 'action': 'flatten'}),
      (('inputs',), {'metavar': 'input', 'nargs': '*', 'action': 'flatten'}),
      (('-k', '--keep-going'), {'action': 'store_true', 'type': None}),
      (('-j', '--jobs'), {'action': 'store', 'type': parse_jobs,
                          'metavar': 'N'}),
      (('-P', '--pythonpath'),),
      (('-V', '--python-version'),)
  ]:
    _add_file_argument(parser, types, *option)
  output = parser.add_mutually_exclusive_group()
  _add_file_argument(output, types, ('-o', '--output'))
  output.add_argument(
      '-n', '--no-cache', dest='no_cache', action='store_true', default=False,
      help='Send pytype output to a temporary directory.')

  # Adds options from pytype-single.
  wrapper = datatypes.ParserWrapper(parser)
  pytype_config.add_basic_options(wrapper)
  pytype_config.add_feature_flags(wrapper)
  return Parser(parser, wrapper.actions)
Exemplo n.º 4
0
def add_pytype_and_parse(parser, argv):
    """Add basic pytype options and parse args.

  Useful to generate a quick CLI for a library.

  Args:
    parser: An argparse.ArgumentParser
    argv: Raw command line args, typically sys.argv[1:]

  Returns:
    A tuple of (
      parsed_args: argparse.Namespace,
      pytype_options: pytype.config.Options)
  """
    # Add default --debug and input arguments.
    parser.add_argument("--debug",
                        action="store_true",
                        dest="debug",
                        default=None,
                        help="Display debug output.")
    parser.add_argument("inputs",
                        metavar="input",
                        nargs=1,
                        help="A .py file to index")

    # Add options from pytype-single.
    wrapper = datatypes.ParserWrapper(parser)
    pytype_config.add_basic_options(wrapper)
    pytype_config.add_feature_flags(wrapper)
    parser = Parser(parser, wrapper.actions)

    # Parse argv
    args = parser.parse_args(argv)
    cli_args = args.inputs.copy()

    # Make sure we have a valid set of CLI options to pytype

    ## If we are passed an imports map we should look for pickled files as well.
    if getattr(args, "imports_info", None):
        cli_args += [
            "--imports_info", args.imports_info, "--use-pickled-files"
        ]

    ## We need to set this when creating Options (b/128032570)
    if args.python_version:
        cli_args += ["-V", pytype_utils.format_version(args.python_version)]

    pytype_options = pytype_config.Options(cli_args, command_line=True)
    pytype_options.tweak(**parser.get_pytype_kwargs(args))
    return (args, pytype_options)
Exemplo n.º 5
0
def make_parser():
    """Construct a parser to run tests against."""

    parser = argparse.ArgumentParser()
    parser.add_argument('-v',
                        '--verbosity',
                        dest='verbosity',
                        type=int,
                        action='store',
                        default=1)
    parser.add_argument('--config',
                        dest='config',
                        type=str,
                        action='store',
                        default='')

    # Add options from pytype-single.
    wrapper = datatypes.ParserWrapper(parser)
    pytype_config.add_basic_options(wrapper)
    return arg_parser.Parser(parser, wrapper.actions)
Exemplo n.º 6
0
def make_parser():
    """Make parser for command line args.

  Returns:
    A Parser object.
  """
    def add_kythe_field(parser, field):
        parser.add_argument("--" + field,
                            dest=field,
                            type=str,
                            action="store",
                            default="",
                            help="Part of kythe's file-level vname proto.")

    parser = argparse.ArgumentParser(usage="%(prog)s [options] input")
    add_kythe_field(parser, "kythe_corpus")
    add_kythe_field(parser, "kythe_root")
    add_kythe_field(parser, "kythe_path")
    parser.add_argument("inputs",
                        metavar="input",
                        nargs=1,
                        help="A .py file to index")
    parser.add_argument("--debug",
                        action="store_true",
                        dest="debug",
                        default=None,
                        help="Display debug output.")
    # TODO(b/124802213): There should be a cleaner way to do this.
    parser.add_argument("--imports_info",
                        type=str,
                        action="store",
                        dest="imports_info",
                        default=None,
                        help="Information for mapping import .pyi to files. ")
    # Add options from pytype-single.
    wrapper = datatypes.ParserWrapper(parser)
    pytype_config.add_basic_options(wrapper)
    return arg_parser.Parser(parser, wrapper.actions)